BsScriptPhysicsQueryHit.h 1.5 KB

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