BsCSphericalJoint.cpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "BsCSphericalJoint.h"
  4. #include "BsSceneObject.h"
  5. #include "BsCSphericalJointRTTI.h"
  6. namespace BansheeEngine
  7. {
  8. CSphericalJoint::CSphericalJoint(const HSceneObject& parent)
  9. : CJoint(parent)
  10. {
  11. setName("SphericalJoint");
  12. }
  13. LimitConeRange CSphericalJoint::getLimit() const
  14. {
  15. return mLimit;
  16. }
  17. void CSphericalJoint::setLimit(const LimitConeRange& limit)
  18. {
  19. if (limit == mLimit)
  20. return;
  21. mLimit = limit;
  22. if (mInternal != nullptr)
  23. _getInternal()->setLimit(limit);
  24. }
  25. void CSphericalJoint::setFlag(SphericalJoint::Flag flag, bool enabled)
  26. {
  27. bool isEnabled = ((UINT32)mFlag & (UINT32)flag) != 0;
  28. if (isEnabled == enabled)
  29. return;
  30. if (enabled)
  31. mFlag = (SphericalJoint::Flag)((UINT32)mFlag | (UINT32)flag);
  32. else
  33. mFlag = (SphericalJoint::Flag)((UINT32)mFlag & ~(UINT32)flag);
  34. if (mInternal != nullptr)
  35. _getInternal()->setFlag(flag, enabled);
  36. }
  37. bool CSphericalJoint::hasFlag(SphericalJoint::Flag flag) const
  38. {
  39. return ((UINT32)mFlag & (UINT32)flag) != 0;
  40. }
  41. SPtr<Joint> CSphericalJoint::createInternal()
  42. {
  43. SPtr<Joint> joint = SphericalJoint::create();
  44. joint->_setOwner(PhysicsOwnerType::Component, this);
  45. return joint;
  46. }
  47. RTTITypeBase* CSphericalJoint::getRTTIStatic()
  48. {
  49. return CSphericalJointRTTI::instance();
  50. }
  51. RTTITypeBase* CSphericalJoint::getRTTI() const
  52. {
  53. return CSphericalJoint::getRTTIStatic();
  54. }
  55. }