BsScriptControllerCollision.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. namespace BansheeEngine
  8. {
  9. /** Interop struct between C++ & CLR for ControllerCollision. */
  10. struct ScriptControllerCollision // Note: Must match C++ struct ScriptControllerCollision
  11. {
  12. Vector3 position;
  13. Vector3 normal;
  14. Vector3 motionDir;
  15. float motionAmount;
  16. MonoObject* collider;
  17. int triangleIndex;
  18. MonoObject* controller;
  19. bool isControllerCollision;
  20. };
  21. /** Helper class for dealing with ControllerCollision structure. */
  22. class BS_SCR_BE_EXPORT ScriptControllerCollisionHelper : public ScriptObject<ScriptControllerCollisionHelper>
  23. {
  24. SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "ScriptControllerCollision")
  25. public:
  26. /** Converts native collision data to its managed counterpart. */
  27. static ScriptControllerCollision create(const ControllerColliderCollision& data);
  28. /** Converts native collision data to its managed counterpart. */
  29. static ScriptControllerCollision create(const ControllerControllerCollision& data);
  30. /** Unboxes a boxed managed ScriptControllerCollision struct and returns the native version of the structure. */
  31. static ScriptControllerCollision unbox(MonoObject* obj);
  32. /** Boxes a native ScriptControllerCollision struct and returns a managed object containing it. */
  33. static MonoObject* box(const ScriptControllerCollision& value);
  34. private:
  35. ScriptControllerCollisionHelper(MonoObject* instance);
  36. };
  37. }