BsCSphericalJoint.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. CSphericalJoint::CSphericalJoint(const HSceneObject& parent)
  12. : CJoint(parent, mDesc)
  13. {
  14. setName("SphericalJoint");
  15. }
  16. LimitConeRange CSphericalJoint::getLimit() const
  17. {
  18. return mDesc.limit;
  19. }
  20. void CSphericalJoint::setLimit(const LimitConeRange& limit)
  21. {
  22. if (limit == mDesc.limit)
  23. return;
  24. mDesc.limit = limit;
  25. if (mInternal != nullptr)
  26. _getInternal()->setLimit(limit);
  27. }
  28. void CSphericalJoint::setFlag(SphericalJointFlag flag, bool enabled)
  29. {
  30. bool isEnabled = ((UINT32)mDesc.flag & (UINT32)flag) != 0;
  31. if (isEnabled == enabled)
  32. return;
  33. if (enabled)
  34. mDesc.flag = (SphericalJointFlag)((UINT32)mDesc.flag | (UINT32)flag);
  35. else
  36. mDesc.flag = (SphericalJointFlag)((UINT32)mDesc.flag & ~(UINT32)flag);
  37. if (mInternal != nullptr)
  38. _getInternal()->setFlag(flag, enabled);
  39. }
  40. bool CSphericalJoint::hasFlag(SphericalJointFlag flag) const
  41. {
  42. return ((UINT32)mDesc.flag & (UINT32)flag) != 0;
  43. }
  44. SPtr<Joint> CSphericalJoint::createInternal()
  45. {
  46. SPtr<Joint> joint = SphericalJoint::create(mDesc);
  47. joint->_setOwner(PhysicsOwnerType::Component, this);
  48. return joint;
  49. }
  50. RTTITypeBase* CSphericalJoint::getRTTIStatic()
  51. {
  52. return CSphericalJointRTTI::instance();
  53. }
  54. RTTITypeBase* CSphericalJoint::getRTTI() const
  55. {
  56. return CSphericalJoint::getRTTIStatic();
  57. }
  58. }