- Timestamp:
- Nov 29, 2008, 12:45:19 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.h
r2296 r2298 46 46 class _OrxonoxExport WorldEntity : public BaseObject, public network::Synchronisable, public btMotionState 47 47 { 48 public:49 enum CollisionType50 {51 Dynamic,52 Kinematic,53 Static54 };55 56 48 public: 57 49 WorldEntity(BaseObject* creator); … … 135 127 { this->node_->scale(scale, scale, scale); } 136 128 137 bool hasPhysics() { return this->physicalBody_; }138 bool isKinematic() { return this->physicalBody_ && this->physicalBody_->isKinematicObject(); }139 bool isDynamic() { return this->physicalBody_ && !this->physicalBody_->isStaticOrKinematicObject(); }140 141 129 void attach(WorldEntity* object); 142 130 void detach(WorldEntity* object); … … 159 147 { return this->parent_; } 160 148 161 void setCollisionRadius(float radius);162 float getCollisionRadius();163 164 void setCollisionTypeStr(const std::string& type);165 std::string getCollisionTypeStr();166 167 void setMass(float mass);168 float getMass();169 170 CollisionType getCollisionType();171 172 149 protected: 173 //virtual btCollisionShape* getCollisionShape() = 0;174 175 void createPhysicalBody();176 //virtual void attachPhysicalObject(WorldEntity* object);177 virtual void setCollisionType(CollisionType type);178 179 150 Ogre::SceneNode* node_; 180 btRigidBody* physicalBody_;181 151 182 152 private: … … 197 167 unsigned int parentID_; 198 168 std::set<WorldEntity*> children_; 169 170 ///////////// 171 // Physics // 172 ///////////// 173 174 public: 175 enum CollisionType 176 { 177 Dynamic, 178 Kinematic, 179 Static, 180 None 181 }; 182 183 bool hasPhysics() { return getCollisionType() != None; } 184 185 CollisionType getCollisionType() { return this->collisionType_; } 186 void setCollisionType(CollisionType type); 187 188 void setCollisionTypeStr(const std::string& type); 189 std::string getCollisionTypeStr(); 190 191 bool isStatic() { return getCollisionType() == Static ; } 192 bool isKinematic() { return getCollisionType() == Kinematic; } 193 bool isDynamic() { return getCollisionType() == Dynamic ; } 194 195 void setMass(float mass); 196 float getMass(); 197 198 void setCollisionRadius(float radius); 199 float getCollisionRadius(); 200 201 protected: 202 //virtual btCollisionShape* getCollisionShape() = 0; 203 //virtual void attachPhysicalObject(WorldEntity* object); 204 205 virtual bool isCollisionTypeLegal(CollisionType type) = 0; 206 bool checkPhysics(); 207 void updateCollisionType(); 208 209 btRigidBody* physicalBody_; 210 211 private: 212 CollisionType collisionType_; 213 199 214 }; 200 215 }
Note: See TracChangeset
for help on using the changeset viewer.