| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
- //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
- #pragma once
- #include "BsPhysXPrerequisites.h"
- #include "BsPhysicsCommon.h"
- #include "BsFCollider.h"
- #include "PxRigidStatic.h"
- namespace BansheeEngine
- {
- /** @addtogroup PhysX
- * @{
- */
- /** PhysX implementation of FCollider. */
- class FPhysXCollider : public FCollider
- {
- public:
- explicit FPhysXCollider(physx::PxShape* shape);
- ~FPhysXCollider();
- /** @copydoc FCollider::getPosition */
- Vector3 getPosition() const override;
- /** @copydoc FCollider::getRotation */
- Quaternion getRotation() const override;
- /** @copydoc FCollider::setTransform */
- void setTransform(const Vector3& pos, const Quaternion& rotation) override;
- /** @copydoc FCollider::setIsTrigger */
- void setIsTrigger(bool value) override;
- /** @copydoc FCollider::getIsTrigger */
- bool getIsTrigger() const override;
- /** @copydoc FCollider::setIsStatic */
- void setIsStatic(bool value) override;
- /** @copydoc FCollider::getIsStatic */
- bool getIsStatic() const override;
- /** @copydoc FCollider::setContactOffset */
- void setContactOffset(float value) override;
- /** @copydoc FCollider::getContactOffset */
- float getContactOffset() const override;
- /** @copydoc FCollider::setRestOffset */
- void setRestOffset(float value) override;
- /** @copydoc FCollider::getRestOffset */
- float getRestOffset() const override;
- /** @copydoc FCollider::setMaterial */
- void setMaterial(const HPhysicsMaterial& material) override;
- /** @copydoc FCollider::getLayer */
- UINT64 getLayer() const override;
- /** @copydoc FCollider::setLayer */
- void setLayer(UINT64 layer) override;
- /** @copydoc FCollider::getCollisionReportMode */
- CollisionReportMode getCollisionReportMode() const override;
- /** @copydoc FCollider::setCollisionReportMode */
- void setCollisionReportMode(CollisionReportMode mode) override;
- /** @copydoc FCollider::_setCCD */
- void _setCCD(bool enabled) override;
- /** Gets the internal PhysX shape that represents the collider. */
- physx::PxShape* _getShape() const { return mShape; }
- /**
- * Assigns a new shape the the collider. Old shape is released, and the new shape inherits any properties from the
- * old shape, including parent, transform, flags and other.
- */
- void _setShape(physx::PxShape* shape);
- protected:
- /** Updates shape filter data from stored values. */
- void updateFilter();
- physx::PxShape* mShape = nullptr;
- physx::PxRigidStatic* mStaticBody = nullptr;
- bool mIsTrigger = false;
- bool mIsStatic = true;
- UINT64 mLayer = 1;
- bool mCCD = false;
- CollisionReportMode mCollisionReportMode = CollisionReportMode::None;
- };
- /** @} */
- }
|