#ifndef OPENMW_MWPHYSICS_OBJECT_H #define OPENMW_MWPHYSICS_OBJECT_H #include "ptrholder.hpp" #include #include #include namespace Resource { class BulletShapeInstance; } class btCollisionObject; class btCollisionWorld; class btQuaternion; class btVector3; namespace MWPhysics { class Object : public PtrHolder { public: Object(const MWWorld::Ptr& ptr, osg::ref_ptr shapeInstance); const Resource::BulletShapeInstance* getShapeInstance() const; void setScale(float scale); void setRotation(const btQuaternion& quat); void setOrigin(const btVector3& vec); btCollisionObject* getCollisionObject(); const btCollisionObject* getCollisionObject() const; /// Return solid flag. Not used by the object itself, true by default. bool isSolid() const; void setSolid(bool solid); bool isAnimated() const; void animateCollisionShapes(btCollisionWorld* collisionWorld); private: std::unique_ptr mCollisionObject; osg::ref_ptr mShapeInstance; std::map mRecIndexToNodePath; bool mSolid; }; } #endif