PhysicsWorld.pkg 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. struct DelayedWorldTransform
  11. {
  12. RigidBody* rigidBody_ @ rigidBody;
  13. RigidBody* parentRigidBody_ @ parentRigidBody;
  14. Vector3 worldPosition_ @ worldPosition;
  15. Quaternion worldRotation_ @ worldRotation;
  16. };
  17. class PhysicsWorld : public Component
  18. {
  19. void Update(float timeStep);
  20. void UpdateCollisions();
  21. void SetFps(int fps);
  22. void SetGravity(Vector3 gravity);
  23. void SetNumIterations(int num);
  24. void SetInterpolation(bool enable);
  25. void SetInternalEdge(bool enable);
  26. void SetSplitImpulse(bool enable);
  27. void SetMaxNetworkAngularVelocity(float velocity);
  28. // void RaycastSingle(PhysicsRaycastResult& result, const Ray& ray, float maxDistance, unsigned collisionMask = M_MAX_UNSIGNED);
  29. tolua_outside PhysicsRaycastResult PhysicsWorldRaycastSingle @ RaycastSingle(const Ray& ray, float maxDistance, unsigned collisionMask = M_MAX_UNSIGNED);
  30. // void SphereCast(PhysicsRaycastResult& result, const Ray& ray, float radius, float maxDistance, unsigned collisionMask = M_MAX_UNSIGNED);
  31. tolua_outside PhysicsRaycastResult PhysicsWorldSphereCast @ SphereCast(const Ray& ray, float radius, float maxDistance, unsigned collisionMask = M_MAX_UNSIGNED);
  32. void RemoveCachedGeometry(Model* model);
  33. Vector3 GetGravity() const;
  34. int GetNumIterations() const;
  35. bool GetInterpolation() const;
  36. bool GetInternalEdge() const;
  37. bool GetSplitImpulse() const;
  38. int GetFps() const;
  39. float GetMaxNetworkAngularVelocity() const;
  40. tolua_property__get_set Vector3 gravity;
  41. tolua_property__get_set int numIterations;
  42. tolua_property__get_set bool interpolation;
  43. tolua_property__get_set bool internalEdge;
  44. tolua_property__get_set bool splitImpulse;
  45. tolua_property__get_set int fps;
  46. tolua_property__get_set float maxNetworkAngularVelocity;
  47. tolua_property__is_set bool applyingTransforms;
  48. };
  49. ${
  50. static PhysicsRaycastResult PhysicsWorldRaycastSingle(PhysicsWorld* physicsWorld, const Ray& ray, float maxDistance, unsigned collisionMask = M_MAX_UNSIGNED)
  51. {
  52. PhysicsRaycastResult result;
  53. physicsWorld->RaycastSingle(result, ray, maxDistance, collisionMask);
  54. return result;
  55. }
  56. PhysicsRaycastResult PhysicsWorldSphereCast(PhysicsWorld* physicsWorld, const Ray& ray, float radius, float maxDistance, unsigned collisionMask = M_MAX_UNSIGNED)
  57. {
  58. PhysicsRaycastResult result;
  59. physicsWorld->SphereCast(result, ray, radius, maxDistance, collisionMask);
  60. return result;
  61. }
  62. $}