PhysicsWorld.pkg 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. $#include "PhysicsWorld.h"
  2. struct PhysicsRaycastResult
  3. {
  4. PhysicsRaycastResult();
  5. Vector3 position_ @ position;
  6. Vector3 normal_ @ normal;
  7. float distance_ @ distance;
  8. RigidBody* body_ @ body;
  9. };
  10. class PhysicsWorld : public Component
  11. {
  12. void Update(float timeStep);
  13. void UpdateCollisions();
  14. void SetFps(int fps);
  15. void SetGravity(Vector3 gravity);
  16. void SetNumIterations(int num);
  17. void SetInterpolation(bool enable);
  18. void SetInternalEdge(bool enable);
  19. void SetSplitImpulse(bool enable);
  20. void SetMaxNetworkAngularVelocity(float velocity);
  21. // void Raycast(const Ray& ray, float maxDistance, unsigned collisionMask = M_MAX_UNSIGNED);
  22. tolua_outside const PODVector<PhysicsRaycastResult>& PhysicsWorldRaycast @ Raycast(const Ray& ray, float maxDistance, unsigned collisionMask = M_MAX_UNSIGNED);
  23. // void RaycastSingle(PhysicsRaycastResult& result, const Ray& ray, float maxDistance, unsigned collisionMask = M_MAX_UNSIGNED);
  24. tolua_outside PhysicsRaycastResult PhysicsWorldRaycastSingle @ RaycastSingle(const Ray& ray, float maxDistance, unsigned collisionMask = M_MAX_UNSIGNED);
  25. // void SphereCast(PhysicsRaycastResult& result, const Ray& ray, float radius, float maxDistance, unsigned collisionMask = M_MAX_UNSIGNED);
  26. tolua_outside PhysicsRaycastResult PhysicsWorldSphereCast @ SphereCast(const Ray& ray, float radius, float maxDistance, unsigned collisionMask = M_MAX_UNSIGNED);
  27. void DrawDebugGeometry(bool depthTest);
  28. void RemoveCachedGeometry(Model* model);
  29. Vector3 GetGravity() const;
  30. int GetNumIterations() const;
  31. bool GetInterpolation() const;
  32. bool GetInternalEdge() const;
  33. bool GetSplitImpulse() const;
  34. int GetFps() const;
  35. float GetMaxNetworkAngularVelocity() const;
  36. tolua_property__get_set Vector3 gravity;
  37. tolua_property__get_set int numIterations;
  38. tolua_property__get_set bool interpolation;
  39. tolua_property__get_set bool internalEdge;
  40. tolua_property__get_set bool splitImpulse;
  41. tolua_property__get_set int fps;
  42. tolua_property__get_set float maxNetworkAngularVelocity;
  43. tolua_property__is_set bool applyingTransforms;
  44. };
  45. ${
  46. static const PODVector<PhysicsRaycastResult>& PhysicsWorldRaycast(PhysicsWorld* physicsWorld, const Ray& ray, float maxDistance, unsigned collisionMask = M_MAX_UNSIGNED)
  47. {
  48. static PODVector<PhysicsRaycastResult> result;
  49. result.Clear();
  50. physicsWorld->Raycast(result, ray, maxDistance, collisionMask);
  51. return result;
  52. }
  53. static PhysicsRaycastResult PhysicsWorldRaycastSingle(PhysicsWorld* physicsWorld, const Ray& ray, float maxDistance, unsigned collisionMask = M_MAX_UNSIGNED)
  54. {
  55. PhysicsRaycastResult result;
  56. physicsWorld->RaycastSingle(result, ray, maxDistance, collisionMask);
  57. return result;
  58. }
  59. PhysicsRaycastResult PhysicsWorldSphereCast(PhysicsWorld* physicsWorld, const Ray& ray, float radius, float maxDistance, unsigned collisionMask = M_MAX_UNSIGNED)
  60. {
  61. PhysicsRaycastResult result;
  62. physicsWorld->SphereCast(result, ray, radius, maxDistance, collisionMask);
  63. return result;
  64. }
  65. $}