BsScriptControllerCollision.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. };
  20. /** Helper class for dealing with ControllerCollision structure. */
  21. class BS_SCR_BE_EXPORT ScriptControllerCollisionHelper : public ScriptObject<ScriptControllerCollisionHelper>
  22. {
  23. public:
  24. SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "ScriptControllerCollision")
  25. /** Converts native collision data to its managed counterpart. */
  26. static ScriptControllerCollision create(const ControllerColliderCollision& data);
  27. /** Converts native collision data to its managed counterpart. */
  28. static ScriptControllerCollision create(const ControllerControllerCollision& data);
  29. /** Unboxes a boxed managed ScriptControllerCollision struct and returns the native version of the structure. */
  30. static ScriptControllerCollision unbox(MonoObject* obj);
  31. /** Boxes a native ScriptControllerCollision struct and returns a managed object containing it. */
  32. static MonoObject* box(const ScriptControllerCollision& value);
  33. private:
  34. ScriptControllerCollisionHelper(MonoObject* instance);
  35. };
  36. }