BsRigidbody.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "BsRigidbody.h"
  4. #include "BsPhysics.h"
  5. #include "BsFCollider.h"
  6. #include "BsSceneObject.h"
  7. #include "BsUtility.h"
  8. namespace BansheeEngine
  9. {
  10. Rigidbody::Rigidbody(const HSceneObject& linkedSO)
  11. :mLinkedSO(linkedSO)
  12. {
  13. mPriority = Utility::getSceneObjectDepth(linkedSO);
  14. gPhysics().registerRigidbody(this, mPriority);
  15. }
  16. Rigidbody::~Rigidbody()
  17. {
  18. gPhysics().unregisterRigidbody(mPhysicsId, mPriority);
  19. }
  20. void Rigidbody::_setPriority(UINT32 priority)
  21. {
  22. gPhysics().updatePriority(mPhysicsId, mPriority, priority);
  23. mPriority = priority;
  24. }
  25. void Rigidbody::_setTransform(const Vector3& position, const Quaternion& rotation)
  26. {
  27. mLinkedSO->setWorldPosition(position);
  28. mLinkedSO->setWorldRotation(rotation);
  29. }
  30. SPtr<Rigidbody> Rigidbody::create(const HSceneObject& linkedSO)
  31. {
  32. return gPhysics().createRigidbody(linkedSO);
  33. }
  34. }