BsFPhysXCollider.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsPhysXPrerequisites.h"
  5. #include "BsPhysicsCommon.h"
  6. #include "BsFCollider.h"
  7. #include "PxRigidStatic.h"
  8. namespace BansheeEngine
  9. {
  10. /** @addtogroup PhysX
  11. * @{
  12. */
  13. /** PhysX implementation of FCollider. */
  14. class FPhysXCollider : public FCollider
  15. {
  16. public:
  17. explicit FPhysXCollider(physx::PxShape* shape);
  18. ~FPhysXCollider();
  19. /** @copydoc FCollider::getPosition */
  20. Vector3 getPosition() const override;
  21. /** @copydoc FCollider::getRotation */
  22. Quaternion getRotation() const override;
  23. /** @copydoc FCollider::setTransform */
  24. void setTransform(const Vector3& pos, const Quaternion& rotation) override;
  25. /** @copydoc FCollider::setIsTrigger */
  26. void setIsTrigger(bool value) override;
  27. /** @copydoc FCollider::getIsTrigger */
  28. bool getIsTrigger() const override;
  29. /** @copydoc FCollider::setIsStatic */
  30. void setIsStatic(bool value) override;
  31. /** @copydoc FCollider::getIsStatic */
  32. bool getIsStatic() const override;
  33. /** @copydoc FCollider::setContactOffset */
  34. void setContactOffset(float value) override;
  35. /** @copydoc FCollider::getContactOffset */
  36. float getContactOffset() const override;
  37. /** @copydoc FCollider::setRestOffset */
  38. void setRestOffset(float value) override;
  39. /** @copydoc FCollider::getRestOffset */
  40. float getRestOffset() const override;
  41. /** @copydoc FCollider::setMaterial */
  42. void setMaterial(const HPhysicsMaterial& material) override;
  43. /** @copydoc FCollider::getLayer */
  44. UINT64 getLayer() const override;
  45. /** @copydoc FCollider::setLayer */
  46. void setLayer(UINT64 layer) override;
  47. /** @copydoc FCollider::getCollisionReportMode */
  48. CollisionReportMode getCollisionReportMode() const override;
  49. /** @copydoc FCollider::setCollisionReportMode */
  50. void setCollisionReportMode(CollisionReportMode mode) override;
  51. /** @copydoc FCollider::_setCCD */
  52. void _setCCD(bool enabled) override;
  53. /** Gets the internal PhysX shape that represents the collider. */
  54. physx::PxShape* _getShape() const { return mShape; }
  55. /**
  56. * Assigns a new shape the the collider. Old shape is released, and the new shape inherits any properties from the
  57. * old shape, including parent, transform, flags and other.
  58. */
  59. void _setShape(physx::PxShape* shape);
  60. protected:
  61. /** Updates shape filter data from stored values. */
  62. void updateFilter();
  63. physx::PxShape* mShape = nullptr;
  64. physx::PxRigidStatic* mStaticBody = nullptr;
  65. bool mIsTrigger = false;
  66. bool mIsStatic = true;
  67. UINT64 mLayer = 1;
  68. bool mCCD = false;
  69. CollisionReportMode mCollisionReportMode = CollisionReportMode::None;
  70. };
  71. /** @} */
  72. }