BsScriptPhysicsQueryHit.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  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 PhysicsQueryHit. */
  10. struct ScriptPhysicsQueryHit // Must match C# PhysicsQueryHit struct layout
  11. {
  12. Vector3 point;
  13. Vector3 normal;
  14. Vector2 uv;
  15. float distance;
  16. UINT32 triangleIdx;
  17. MonoObject* collider;
  18. };
  19. /** Helper class for dealing with PhysicsQueryHit structure. */
  20. class BS_SCR_BE_EXPORT ScriptPhysicsQueryHitHelper : public ScriptObject<ScriptPhysicsQueryHitHelper>
  21. {
  22. SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "PhysicsQueryHit")
  23. public:
  24. /** Converts native physics query hit to its managed counterpart. */
  25. static ScriptPhysicsQueryHit create(const PhysicsQueryHit& data);
  26. /** Unboxes a boxed managed ScriptPhysicsQueryHit struct and returns the native version of the structure. */
  27. static ScriptPhysicsQueryHit unbox(MonoObject* obj);
  28. /** Boxes a native ScriptPhysicsQueryHit struct and returns a managed object containing it. */
  29. static MonoObject* box(const ScriptPhysicsQueryHit& value);
  30. private:
  31. ScriptPhysicsQueryHitHelper(MonoObject* instance);
  32. };
  33. }