30 #ifndef RIOENGINE_CENGINE_CGAMEOBJECT_H_
31 #define RIOENGINE_CENGINE_CGAMEOBJECT_H_
39 #include "bullet/btbulletdynamicscommon.h"
40 #include "bullet/btbulletcollisioncommon.h"
48 Q_PROPERTY(QList<QProperty>
DynamicProperties READ dynamicProperties WRITE setDynamicProperties DESIGNABLE
false)
50 Q_PROPERTY(
int CObjectType READ CObjectType WRITE setCObjectType )
51 Q_PROPERTY(
int Tag READ tag WRITE setTag )
52 Q_CLASSINFO("CObjectType", "CustomEnum=CClasses")
53 Q_PROPERTY(btVector3 Position READ position WRITE setPosition)
54 Q_PROPERTY(btQuaternion RotationQuat READ rotationQuat WRITE setRotation DESIGNABLE false )
55 Q_PROPERTY(btVector3 Rotation READ rotation WRITE setRotation STORED false )
56 Q_PROPERTY(btVector3 Scale READ scale WRITE setScale )
57 Q_PROPERTY(QString CObjectTypeName READ CObjectTypeName WRITE setCObjectTypeName DESIGNABLE false )
60 Q_PROPERTY(
CBulletProperties::ActivationState ActivationState READ activationState WRITE setActivationState )
61 Q_PROPERTY(
bool PhysicsEnabled READ bPhysicsEnabled WRITE setbPhysicsEnabled )
62 Q_PROPERTY(
float Mass READ bMass WRITE setbMass )
63 Q_PROPERTY(
float Restitution READ bRestitution WRITE setbRestitution )
64 Q_PROPERTY(
float Friction READ bFriction WRITE setbFriction )
65 Q_PROPERTY(btVector3 LinearFactor READ bLinearFactor WRITE setbLinearFactor )
66 Q_PROPERTY(btVector3 AngularFactor READ bAngularFactor WRITE setbAngularFactor )
67 Q_PROPERTY(
CBulletProperties::ShapeTypes ShapeType READ shapeType WRITE setShapeType )
68 Q_PROPERTY(
float ShapeType_Radius READ bShapeTypeRadius WRITE setbShapeTypeRadius )
69 Q_PROPERTY(
float ShapeType_Height READ bShapeTypeHeight WRITE setbShapeTypeHeight )
70 Q_PROPERTY(btVector3 ShapeType_Size READ bShapeTypeSize WRITE setbShapeTypeSize )
71 Q_PROPERTY(QString ShapeType_Vertices READ bShapeTypeVertices WRITE setbShapeTypeVertices )
72 Q_PROPERTY(btVector3 ShapeType_PlaneNormal READ bShapeTypePlaneNormal WRITE setbShapeTypePlaneNormal )
73 Q_PROPERTY(
float ShapeType_PlaneConstant READ bShapeTypePlaneConstant WRITE setbShapeTypePlaneConstant )
78 CGameObject(const CGameObject& game_object);
79 const CGameObject& operator=(const CGameObject& game_object);
81 int CObjectType() const;
82 void setCObjectType(
int type);
84 const QString& CObjectTypeName() const;
85 void setCObjectTypeName(const QString& name);
87 void setName(const std::
string& name);
88 std::
string name() const;
93 const
bool bPhysicsEnabled() const;
94 void setbPhysicsEnabled(
bool enable_physics);
96 const
float bMass() const;
97 void setbMass(
float mass);
99 const
float bRestitution() const;
100 void setbRestitution(
float restitution);
102 const
float bFriction() const;
103 void setbFriction(
float friction);
105 const btVector3& bLinearFactor() const;
106 void setbLinearFactor(const btVector3& linear_factor);
108 const btVector3& bAngularFactor() const;
109 void setbAngularFactor(const btVector3& angular_factor);
121 btCollisionShape* collisionShape();
126 unsigned int uid() const;
128 void addChild(CGameObject* child);
135 virtual
void remove();
137 void deployIntoDynamicsWorld();
138 void removeFromDynamicsWorld();
143 virtual
void start();
148 virtual
void preUpdate();
153 virtual
void update();
155 virtual
void postWorldUpdate();
156 virtual
void postUpdate();
161 virtual
void onCollisionWithObject(CGameObject*
object);
166 virtual
void aboutToBeRemoved();
171 virtual const btVector3& calcSize();
175 void setPosition(const btVector3 &value);
176 void setPosition(
float x,
float y,
float z);
178 const btVector3 scale();
179 void setScale(btVector3 &scale);
180 void setScale(
float x,
float y,
float z);
181 void setScale(
float scale);
183 btVector3 rotation();
184 btQuaternion rotationQuat();
185 void setRotation(const btVector3& rotation);
186 void setRotation(const btQuaternion& rotation);
187 void setRotation(
float x,
float y,
float z);
188 void setRotation(
float w,
float x,
float y,
float z);
190 const QList<
QProperty> dynamicProperties() const;
191 void setDynamicProperties(QList<
QProperty> dynamic_properties);
193 const
float bShapeTypeRadius() const;
194 void setbShapeTypeRadius(
float radius);
196 const
float bShapeTypeHeight() const;
197 void setbShapeTypeHeight(
float height);
199 const btVector3 bShapeTypeSize() const;
200 void setbShapeTypeSize(btVector3&
size);
202 const QString bShapeTypeVertices() const;
203 void setbShapeTypeVertices(QString vertices);
205 const btVector3 bShapeTypePlaneNormal() const;
206 void setbShapeTypePlaneNormal(btVector3& normal);
208 const
float bShapeTypePlaneConstant() const;
209 void setbShapeTypePlaneConstant(
float plane_constant);
216 void runAction(
CAction* action);
221 void stopAllActions();
226 void stopAction(
CAction* action);
231 void stopActionByTag(
unsigned int tag);
237 CAction* getActionByTag(
unsigned int tag);
245 unsigned int numberOfRunningActions();
259 void updateBulletProperties();
264 Q_DECLARE_METATYPE(CGameObject)
266 #endif // RIOENGINE_CENGINE_CGAMEOBJECT_H_
virtual void copyValuesFromObject(const CGameObject &game_object)
const btVector3 & size() const
CActionManager * m_actionManager
QList< QProperty > DynamicProperties