BsScriptCharacterController.h 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsScriptEnginePrerequisites.h"
  5. #include "BsScriptObject.h"
  6. #include "BsCharacterController.h"
  7. #include "BsScriptControllerCollision.h"
  8. namespace BansheeEngine
  9. {
  10. /** @addtogroup ScriptInteropEngine
  11. * @{
  12. */
  13. /** Interop class between C++ & CLR for CharacterController. */
  14. class BS_SCR_BE_EXPORT ScriptCharacterController : public ScriptObject<ScriptCharacterController>
  15. {
  16. public:
  17. SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "NativeCharacterController")
  18. /** Returns the native CharacterController object. */
  19. CharacterController* getCharController() const { return mCharacterController.get(); }
  20. private:
  21. friend class ScriptColliderBase;
  22. ScriptCharacterController(MonoObject* instance, const SPtr<CharacterController>& controller);
  23. /** Triggered when the controller hits a collider. */
  24. static void onColliderHit(MonoObject* instance, const ControllerColliderCollision& collisionData);
  25. /** Triggered when the controller hits another controller. */
  26. static void onControllerHit(MonoObject* instance, const ControllerControllerCollision& collisionData);
  27. SPtr<CharacterController> mCharacterController;
  28. /************************************************************************/
  29. /* CLR HOOKS */
  30. /************************************************************************/
  31. static void internal_CreateInstance(MonoObject* instance, CHAR_CONTROLLER_DESC* initData);
  32. static void internal_Destroy(ScriptCharacterController* thisPtr);
  33. static CharacterCollisionFlags internal_Move(ScriptCharacterController* thisPtr, Vector3* displacement);
  34. static void internal_GetPosition(ScriptCharacterController* thisPtr, Vector3* position);
  35. static void internal_SetPosition(ScriptCharacterController* thisPtr, Vector3* position);
  36. static void internal_GetFootPosition(ScriptCharacterController* thisPtr, Vector3* position);
  37. static void internal_SetFootPosition(ScriptCharacterController* thisPtr, Vector3* position);
  38. static void internal_SetRadius(ScriptCharacterController* thisPtr, float radius);
  39. static void internal_SetHeight(ScriptCharacterController* thisPtr, float height);
  40. static void internal_SetUp(ScriptCharacterController* thisPtr, Vector3* up);
  41. static void internal_SetClimbingMode(ScriptCharacterController* thisPtr, CharacterClimbingMode mode);
  42. static void internal_SetNonWalkableMode(ScriptCharacterController* thisPtr, CharacterNonWalkableMode mode);
  43. static void internal_SetMinMoveDistance(ScriptCharacterController* thisPtr, float value);
  44. static void internal_SetContactOffset(ScriptCharacterController* thisPtr, float value);
  45. static void internal_SetStepOffset(ScriptCharacterController* thisPtr, float value);
  46. static void internal_SetSlopeLimit(ScriptCharacterController* thisPtr, float value);
  47. static void internal_SetLayer(ScriptCharacterController* thisPtr, UINT64 layer);
  48. typedef void(__stdcall *OnHitThunkDef) (MonoObject*, MonoObject*, MonoException**);
  49. static OnHitThunkDef onColliderHitThunk;
  50. static OnHitThunkDef onControllerHitThunk;
  51. };
  52. /** @} */
  53. }