Manual_Physics2D.h 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // Copyright (c) 2008-2023 the Urho3D project
  2. // License: MIT
  3. #pragma once
  4. #ifdef URHO3D_PHYSICS2D
  5. #include "../Physics2D/CollisionChain2D.h"
  6. #include "../Physics2D/CollisionPolygon2D.h"
  7. #include "../Physics2D/PhysicsWorld2D.h"
  8. #include "../Physics2D/RigidBody2D.h"
  9. namespace Urho3D
  10. {
  11. // RigidBody2D* PhysicsRaycastResult2D::body_ | File: ../Urho2D/PhysicsWorld2D.h
  12. template <class T> RigidBody2D* PhysicsRaycastResult2D_GetBody(T* ptr)
  13. {
  14. return ptr->body_;
  15. }
  16. #define REGISTER_MEMBERS_MANUAL_PART_PhysicsRaycastResult2D() \
  17. /* RigidBody2D* PhysicsRaycastResult2D::body_ | File: ../Urho2D/PhysicsWorld2D.h */ \
  18. engine->RegisterObjectMethod(className, "RigidBody2D@+ get_body() const", AS_FUNCTION_OBJLAST(PhysicsRaycastResult2D_GetBody<T>), AS_CALL_CDECL_OBJLAST);
  19. // ========================================================================================
  20. // void PhysicsWorld2D::Raycast(Vector<PhysicsRaycastResult2D>& results, const Vector2& startPoint, const Vector2& endPoint, u16 collisionMask = M_U16_MASK_ALL_BITS) | File: ../Physics2D/PhysicsWorld2D.h
  21. template <class T> CScriptArray* PhysicsWorld2D_Raycast(const Vector2& startPoint, const Vector2& endPoint, u16 collisionMask, T* ptr)
  22. {
  23. Vector<PhysicsRaycastResult2D> result;
  24. ptr->Raycast(result, startPoint, endPoint, collisionMask);
  25. return VectorToArray<PhysicsRaycastResult2D>(result, "Array<PhysicsRaycastResult2D>");
  26. }
  27. // void PhysicsWorld2D::RaycastSingle(PhysicsRaycastResult2D& result, const Vector2& startPoint, const Vector2& endPoint, u16 collisionMask = M_U16_MASK_ALL_BITS) | File: ../Physics2D/PhysicsWorld2D.h
  28. template <class T> PhysicsRaycastResult2D PhysicsWorld2D_RaycastSingle(const Vector2& startPoint, const Vector2& endPoint, u16 collisionMask, T* ptr)
  29. {
  30. PhysicsRaycastResult2D result;
  31. ptr->RaycastSingle(result, startPoint, endPoint, collisionMask);
  32. return result;
  33. }
  34. // void PhysicsWorld2D::GetRigidBodies(Vector<RigidBody2D*>& results, const Rect& aabb, u16 collisionMask = M_U16_MASK_ALL_BITS) | File: ../Physics2D/PhysicsWorld2D.h
  35. template <class T> CScriptArray* PhysicsWorld2D_GetRigidBodies(const Rect& aabb, u16 collisionMask, T* ptr)
  36. {
  37. Vector<RigidBody2D*> results;
  38. ptr->GetRigidBodies(results, aabb, collisionMask);
  39. return VectorToHandleArray<RigidBody2D>(results, "Array<RigidBody2D@>");
  40. }
  41. #define REGISTER_MEMBERS_MANUAL_PART_PhysicsWorld2D() \
  42. /* void PhysicsWorld2D::Raycast(Vector<PhysicsRaycastResult2D>& results, const Vector2& startPoint, const Vector2& endPoint, u16 collisionMask = M_U16_MASK_ALL_BITS) | File: ../Physics2D/PhysicsWorld2D.h */ \
  43. engine->RegisterObjectMethod(className, "Array<PhysicsRaycastResult2D>@ Raycast(const Vector2&, const Vector2&, uint16 = 0xffff)", AS_FUNCTION_OBJLAST(PhysicsWorld2D_Raycast<T>), AS_CALL_CDECL_OBJLAST); \
  44. \
  45. /* void PhysicsWorld2D::RaycastSingle(PhysicsRaycastResult2D& result, const Vector2& startPoint, const Vector2& endPoint, u16 collisionMask = M_U16_MASK_ALL_BITS) | File: ../Physics2D/PhysicsWorld2D.h */ \
  46. engine->RegisterObjectMethod(className, "PhysicsRaycastResult2D RaycastSingle(const Vector2&, const Vector2&, uint16 = 0xffff)", AS_FUNCTION_OBJLAST(PhysicsWorld2D_RaycastSingle<T>), AS_CALL_CDECL_OBJLAST); \
  47. \
  48. /* void PhysicsWorld2D::GetRigidBodies(Vector<RigidBody2D*>& results, const Rect& aabb, u16 collisionMask = M_U16_MASK_ALL_BITS) | File: ../Physics2D/PhysicsWorld2D.h */ \
  49. engine->RegisterObjectMethod(className, "Array<RigidBody2D@>@ GetRigidBodies(const Rect&in, uint16 = 0xffff)", AS_FUNCTION_OBJLAST(PhysicsWorld2D_GetRigidBodies<T>), AS_CALL_CDECL_OBJLAST);
  50. }
  51. #endif // def URHO3D_PHYSICS2D