Changeset 8256 in orxonox.OLD for branches/bsp_model/src
- Timestamp:
- Jun 8, 2006, 3:47:40 PM (18 years ago)
- Location:
- branches/bsp_model/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/bsp_model/src/defs/class_id.h
r8190 r8256 121 121 CL_STATE = 0x00000013, 122 122 CL_FRAMEWORK = 0x00000014, 123 CL_CR_ENGINE = 0x00000015, ///FIXME bensch i just added this id, verify if this is ok :D123 CL_CR_ENGINE = 0x00000015, 124 124 CL_RENDER_2D = 0x00000021, 125 125 CL_NULL_ELEMENT_2D = 0x00000022, … … 252 252 253 253 /// Collision 254 CL_COLLISION = 0x00 000711,254 CL_COLLISION = 0x00780000, 255 255 CL_COLLISION_HANDLE = 0x00000712, 256 256 CL_COLLISION_REACTION = 0X00000713, … … 258 258 CL_CR_PHYSICS_GROUND = 0X00000715, 259 259 CL_CR_PHYSICS_GROUND_WALK = 0X00000716, 260 CL_CR_OBJECT_DAMAGE = 0X00000717,260 CL_CR_OBJECT_DAMAGE = 0X00000717, 261 261 CL_CR_OBJECT_PICKUP = 0X00000718, 262 262 CL_CR_VERTEX_TRAFO = 0X00000719, … … 271 271 CL_OBB = 0x00720000, 272 272 CL_BOUNDING_SPHERE = 0x00740000, 273 273 274 274 275 275 … … 298 298 CL_HEIGHT_MAP = 0x0000090a, 299 299 CL_GRID = 0x0000090b, 300 CL_BSP_MODEL = 0x0000090c, //!FIXME 301 300 CL_BSP_MODEL = 0x0000090c, //!FIXME 301 302 302 CL_MATERIAL = 0x00000810, 303 303 CL_SHADER = 0x00000811, -
branches/bsp_model/src/lib/collision_reaction/collision.h
r8203 r8256 27 27 28 28 /** collides two WorldEntities @param entityA world entity A, @param entityB world entity B, @param bvA volume A @param bvB volumeB */ 29 inline void collide(WorldEntity* entityA, WorldEntity* entityB) { this->entityA = entityA; this->entityB = entityB; }29 inline void collide(WorldEntity* entityA, WorldEntity* entityB) { this->entityA = entityA; this->entityB = entityB; this->bDispatched = false; } 30 30 31 31 -
branches/bsp_model/src/lib/collision_reaction/collision_handle.cc
r8220 r8256 41 41 42 42 this->bCollided = false; 43 this->bDispatched = false;43 this->bDispatched = true; 44 44 45 45 this->collisionReaction = NULL; 46 this->bContinuousPoll = true;46 this->bContinuousPoll = false; 47 47 this->bStopOnFirstCollision = false; 48 48 … … 56 56 case CREngine::CR_PHYSICS_GROUND_WALK: 57 57 this->collisionReaction = new CRPhysicsGroundWalk(); 58 this->bContinuousPoll = true; 58 59 break; 59 60 case CREngine::CR_OBJECT_DAMAGE: … … 191 192 void CollisionHandle::handleCollisions() 192 193 { 194 // if( this->type == CREngine::CR_) 195 193 196 // collision reaction calculations (for every collision there will be a reaction) 194 197 vector<Collision*>::iterator it = this->collisionList.begin(); … … 205 208 this->bCollided = false; 206 209 210 // if continuous poll poll the reaction 211 if( this->bContinuousPoll) 212 this->collisionReaction->update(this->owner); 207 213 this->flushCollisions(); 208 214 } … … 215 221 bool CollisionHandle::filterCollisionEvent(CollisionEvent* collisionEvent) 216 222 { 223 if( this->type == CREngine::CR_PHYSICS_GROUND_WALK) 224 { 225 226 vector<long>::iterator it = this->targetList.begin(); 227 for(; it < this->targetList.end(); it++) 228 { 229 PRINTF(0)("filtering: %i vs EntityA %i, EntityB %i \n", *it, collisionEvent->getEntityA()->getClassID(), collisionEvent->getEntityB()->getClassID()); 230 231 } 232 } 233 217 234 vector<long>::iterator it = this->targetList.begin(); 218 235 for(; it < this->targetList.end(); it++) -
branches/bsp_model/src/lib/collision_reaction/collision_reaction.h
r8190 r8256 12 12 13 13 class Collision; 14 class WorldEntity; 15 14 16 15 17 //! A class representing a simple collision … … 23 25 virtual void reactToCollision(Collision* collision) = 0; 24 26 27 virtual void update(WorldEntity* owner) {} 28 29 /** use this to do some collision offline calculations, only called for bContinuousPoll == true */ 25 30 inline bool isContinuousPoll() const { return this->bContinuousPoll; } 26 31 -
branches/bsp_model/src/lib/collision_reaction/cr_engine.cc
r8234 r8256 143 143 for( it = this->collisionHandles.begin(); it != this->collisionHandles.end(); it++) 144 144 { 145 if( (*it)->isCollided() || (*it)->isContinuousPoll()) //does it have any collisions to report at all145 if( !(*it)->isDispatched() || (*it)->isContinuousPoll()) //does it have any collisions to report at all 146 146 { 147 PRINTF(0)("CREngine: handle %i\n", (*it)->getType());148 147 (*it)->handleCollisions(); 149 148 } -
branches/bsp_model/src/lib/collision_reaction/cr_physics_ground_walk.cc
r8234 r8256 34 34 { 35 35 this->setClassID(CL_CR_PHYSICS_GROUND_WALK, "CRPhysicsGroundWalk"); 36 37 36 } 38 37 … … 54 53 // Vector normal = collision 55 54 PRINTF(0)("Ground\n"); 55 } 56 57 58 59 /** 60 * use this to do some collision offline calculations, only called for bContinuousPoll == true 61 */ 62 void CRPhysicsGroundWalk::update(WorldEntity* owner) 63 { 64 this->lastPosition = owner->getAbsCoor(); 65 this->lastDirection = owner->getAbsDir(); 66 56 67 57 68 } 58 69 70 -
branches/bsp_model/src/lib/collision_reaction/cr_physics_ground_walk.h
r8221 r8256 21 21 virtual void reactToCollision(Collision* collision); 22 22 23 virtual void update(WorldEntity* entity); 24 23 25 private: 24 26 Vector lastPosition; //!< vector with the last valid position 25 Quaternion lastDirec iton; //!< quat with the last valid direction27 Quaternion lastDirection; //!< quat with the last valid direction 26 28 }; 27 29 -
branches/bsp_model/src/lib/coord/p_node.h
r8186 r8256 103 103 /** @returns the absolute position */ 104 104 inline const Vector& getAbsCoor () const { return this->absCoordinate; }; 105 /** @returns the absolute position */ 106 inline const Vector& getLastAbsCoor () const { return this->lastAbsCoordinate; }; 105 107 void shiftCoor (const Vector& shift); 106 108 void shiftCoor (float x, float y, float z) { this->shiftCoor(Vector(x, y, z)); }; … … 238 240 float roty; 239 241 float rotz; 240 242 241 243 private: 242 244 int relCoordinate_handle; … … 244 246 Vector relCoordinate_write; 245 247 Quaternion relDirection_write; 246 248 247 249 public: 248 250 virtual void varChangeHandler( std::list<int> & id );
Note: See TracChangeset
for help on using the changeset viewer.