BsCSphericalJoint.cpp 1.7 KB

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