BsScriptCollisionData.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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 "BsPhysicsCommon.h"
  7. namespace BansheeEngine
  8. {
  9. /** Interop struct between C++ & CLR for CollisionData. */
  10. struct ScriptCollisionData // Must match C# ScriptCollisionData struct layout
  11. {
  12. MonoObject* colliderA;
  13. MonoObject* colliderB;
  14. MonoArray* contactPoints;
  15. };
  16. /** Helper class for dealing with CollisionData structure. */
  17. class BS_SCR_BE_EXPORT ScriptCollisionDataHelper : public ScriptObject<ScriptCollisionDataHelper>
  18. {
  19. SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "ScriptCollisionData")
  20. public:
  21. /** Converts native collision data to its managed counterpart. */
  22. static ScriptCollisionData create(const CollisionData& data);
  23. /** Unboxes a boxed managed ScriptCollisionData struct and returns the native version of the structure. */
  24. static ScriptCollisionData unbox(MonoObject* obj);
  25. /** Boxes a native ScriptCollisionData struct and returns a managed object containing it. */
  26. static MonoObject* box(const ScriptCollisionData& value);
  27. private:
  28. ScriptCollisionDataHelper(MonoObject* instance);
  29. };
  30. /** Helper class for dealing with ContactPoint structure. */
  31. class BS_SCR_BE_EXPORT ScriptContactPointHelper : public ScriptObject<ScriptContactPointHelper>
  32. {
  33. SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "ContactPoint")
  34. public:
  35. /** Unboxes a boxed managed ContactPoint struct and returns the native version of the structure. */
  36. static ContactPoint unbox(MonoObject* obj);
  37. /** Boxes a native ContactPoint struct and returns a managed object containing it. */
  38. static MonoObject* box(const ContactPoint& value);
  39. private:
  40. ScriptContactPointHelper(MonoObject* instance);
  41. };
  42. }