BsRigidbody.cpp 1013 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include "BsRigidbody.h"
  2. #include "BsPhysics.h"
  3. #include "BsFCollider.h"
  4. #include "BsSceneObject.h"
  5. #include "BsUtility.h"
  6. namespace BansheeEngine
  7. {
  8. Rigidbody::Rigidbody(const HSceneObject& linkedSO)
  9. :mLinkedSO(linkedSO)
  10. {
  11. mPriority = Utility::getSceneObjectDepth(linkedSO);
  12. gPhysics().registerRigidbody(this, mPriority);
  13. }
  14. Rigidbody::~Rigidbody()
  15. {
  16. // It is assumed that child colliders will keep the parent Rigidbody alive, so we don't need to clear their parents
  17. gPhysics().unregisterRigidbody(mPhysicsId, mPriority);
  18. }
  19. void Rigidbody::_setPriority(UINT32 priority)
  20. {
  21. gPhysics().updatePriority(mPhysicsId, mPriority, priority);
  22. mPriority = priority;
  23. }
  24. void Rigidbody::_setTransform(const Vector3& position, const Quaternion& rotation)
  25. {
  26. mLinkedSO->setWorldPosition(position);
  27. mLinkedSO->setWorldRotation(rotation);
  28. }
  29. SPtr<Rigidbody> Rigidbody::create(const HSceneObject& linkedSO)
  30. {
  31. return gPhysics().createRigidbody(linkedSO);
  32. }
  33. }