BsCBoxCollider.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "BsCBoxCollider.h"
  4. #include "BsSceneObject.h"
  5. #include "BsCRigidbody.h"
  6. #include "BsCBoxColliderRTTI.h"
  7. namespace BansheeEngine
  8. {
  9. CBoxCollider::CBoxCollider(const HSceneObject& parent, const Vector3& extents)
  10. : CCollider(parent), mExtents(extents)
  11. {
  12. setName("BoxCollider");
  13. }
  14. void CBoxCollider::setExtents(const Vector3& extents)
  15. {
  16. if (mExtents == extents)
  17. return;
  18. mExtents = extents;
  19. if (mInternal != nullptr)
  20. {
  21. _getInternal()->setExtents(extents);
  22. if (mParent != nullptr)
  23. mParent->_updateMassDistribution();
  24. }
  25. }
  26. void CBoxCollider::setCenter(const Vector3& center)
  27. {
  28. if (mLocalPosition == center)
  29. return;
  30. mLocalPosition = center;
  31. if (mInternal != nullptr)
  32. updateTransform();
  33. }
  34. SPtr<Collider> CBoxCollider::createInternal()
  35. {
  36. SPtr<Collider> collider = BoxCollider::create(mExtents, SO()->getWorldPosition(), SO()->getWorldRotation());
  37. collider->_setOwner(PhysicsOwnerType::Component, this);
  38. return collider;
  39. }
  40. RTTITypeBase* CBoxCollider::getRTTIStatic()
  41. {
  42. return CBoxColliderRTTI::instance();
  43. }
  44. RTTITypeBase* CBoxCollider::getRTTI() const
  45. {
  46. return CBoxCollider::getRTTIStatic();
  47. }
  48. }