You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.2 KiB
C++
49 lines
1.2 KiB
C++
#ifndef OPENMW_MWPHYSICS_OBJECT_H
|
|
#define OPENMW_MWPHYSICS_OBJECT_H
|
|
|
|
#include "ptrholder.hpp"
|
|
|
|
#include <osg/Node>
|
|
|
|
#include <map>
|
|
#include <memory>
|
|
|
|
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<Resource::BulletShapeInstance> 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<btCollisionObject> mCollisionObject;
|
|
osg::ref_ptr<Resource::BulletShapeInstance> mShapeInstance;
|
|
std::map<int, osg::NodePath> mRecIndexToNodePath;
|
|
bool mSolid;
|
|
};
|
|
}
|
|
|
|
#endif
|