BsScriptPhysics.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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 "BsScriptPhysicsQueryHit.h"
  7. namespace BansheeEngine
  8. {
  9. /** Interop class between C++ & CLR for Physics. */
  10. class BS_SCR_BE_EXPORT ScriptPhysics : public ScriptObject<ScriptPhysics>
  11. {
  12. public:
  13. SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "Physics")
  14. private:
  15. ScriptPhysics(MonoObject* instance);
  16. /************************************************************************/
  17. /* CLR HOOKS */
  18. /************************************************************************/
  19. static void internal_GetGravity(Vector3* gravity);
  20. static void internal_SetGravity(Vector3* gravity);
  21. static int internal_AddPhysicsRegion(AABox* region);
  22. static void internal_RemovePhysicsRegion(int handle);
  23. static void internal_ClearPhysicsRegions();
  24. static void internal_ToggleCollision(UINT64 layerA, UINT64 layerB, bool enabled);
  25. static bool internal_IsCollisionEnabled(UINT64 layerA, UINT64 layerB);
  26. static bool internal_IsUpdateInProgress();
  27. static bool internal_RayCast(Vector3* origin, Vector3* unitDir, ScriptPhysicsQueryHit* hit, UINT64 layer, float max);
  28. static bool internal_BoxCast(AABox* box, Quaternion* rotation, Vector3* unitDir, ScriptPhysicsQueryHit* hit, UINT64 layer, float max);
  29. static bool internal_SphereCast(Sphere* sphere, Vector3* unitDir, ScriptPhysicsQueryHit* hit, UINT64 layer, float max);
  30. static bool internal_CapsuleCast(Capsule* capsule, Quaternion* rotation, Vector3* unitDir, ScriptPhysicsQueryHit* hit, UINT64 layer, float max);
  31. static bool internal_ConvexCast(ScriptPhysicsMesh* mesh, Vector3* position, Quaternion* rotation, Vector3* unitDir, ScriptPhysicsQueryHit* hit, UINT64 layer, float max);
  32. static MonoArray* internal_RayCastAll(Vector3* origin, Vector3* unitDir, UINT64 layer, float max);
  33. static MonoArray* internal_BoxCastAll(AABox* box, Quaternion* rotation, Vector3* unitDir, UINT64 layer, float max);
  34. static MonoArray* internal_SphereCastAll(Sphere* sphere, Vector3* unitDir, UINT64 layer, float max);
  35. static MonoArray* internal_CapsuleCastAll(Capsule* capsule, Quaternion* rotation, Vector3* unitDir, UINT64 layer, float max);
  36. static MonoArray* internal_ConvexCastAll(ScriptPhysicsMesh* mesh, Vector3* position, Quaternion* rotation, Vector3* unitDir, UINT64 layer, float max);
  37. static bool internal_RayCastAny(Vector3* origin, Vector3* unitDir, UINT64 layer, float max);
  38. static bool internal_BoxCastAny(AABox* box, Quaternion* rotation, Vector3* unitDir, UINT64 layer, float max);
  39. static bool internal_SphereCastAny(Sphere* sphere, Vector3* unitDir, UINT64 layer, float max);
  40. static bool internal_CapsuleCastAny(Capsule* capsule, Quaternion* rotation, Vector3* unitDir, UINT64 layer, float max);
  41. static bool internal_ConvexCastAny(ScriptPhysicsMesh* mesh, Vector3* position, Quaternion* rotation, Vector3* unitDir, UINT64 layer, float max);
  42. static MonoArray* internal_BoxOverlap(AABox* box, Quaternion* rotation, UINT64 layer);
  43. static MonoArray* internal_SphereOverlap(Sphere* sphere, UINT64 layer);
  44. static MonoArray* internal_CapsuleOverlap(Capsule* capsule, Quaternion* rotation, UINT64 layer);
  45. static MonoArray* internal_ConvexOverlap(ScriptPhysicsMesh* mesh, Vector3* position, Quaternion* rotation, UINT64 layer);
  46. static bool internal_BoxOverlapAny(AABox* box, Quaternion* rotation, UINT64 layer);
  47. static bool internal_SphereOverlapAny(Sphere* sphere, UINT64 layer);
  48. static bool internal_CapsuleOverlapAny(Capsule* capsule, Quaternion* rotation, UINT64 layer);
  49. static bool internal_ConvexOverlapAny(ScriptPhysicsMesh* mesh, Vector3* position, Quaternion* rotation, UINT64 layer);
  50. };
  51. }