- Timestamp:
- May 29, 2006, 12:02:04 AM (18 years ago)
- Location:
- branches/cr/src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/cr/src/lib/collision_detection/obb_tree_node.cc
r7736 r7944 506 506 (treeNode->nodeRight == NULL || treeNode->nodeLeft == NULL)) ) 507 507 { 508 nodeA->collidesWith(nodeB, treeNode->bvElement->center); 509 nodeB->collidesWith(nodeA, this->bvElement->center); 508 // nodeA->collidesWith(nodeB, treeNode->bvElement->center); 509 // nodeB->collidesWith(nodeA, this->bvElement->center); 510 nodeA->registerCollision(nodeA, nodeB, (BoundingVolume*)this->bvElement, (BoundingVolume*)treeNode->bvElement); 510 511 } 511 512 -
branches/cr/src/lib/collision_reaction/cr_engine.cc
r7940 r7944 57 57 Collision* collisions = new Collision[CR_MAX_COLLISIONS]; 58 58 for( int i = 0; i < CR_MAX_COLLISIONS; i++) 59 this->cachedCollisions.push_back( collisions[i]);59 this->cachedCollisions.push_back(&collisions[i]); 60 60 } 61 61 -
branches/cr/src/lib/collision_reaction/cr_engine.h
r7940 r7944 50 50 bool unsubscribeReaction(CollisionHandle* collisionHandle); 51 51 52 53 52 void handleCollisions(); 54 53 55 54 /** @returns an instance to a collision object. instead of creating new object this ones can be resycled */ 56 inline Collision* getCollisionObject() { /* return the first element of the cache list*/}55 inline Collision* popCollisionObject() { if(!this->cachedCollisions.empty()) { this->cachedCollisions.back(); this->cachedCollisions.pop_back();} else return NULL; } 57 56 /** @param collision: returns the Collision object back to the cache list */ 58 inline void pu tCollisionObject(Collision* collision) { this->cachedCollisions.push_back(collision); }57 inline void pushCollisionObject(Collision* collision) { this->cachedCollisions.push_back(collision); } 59 58 60 59 -
branches/cr/src/world_entities/world_entity.cc
r7937 r7944 254 254 255 255 /** 256 * registers a new collision to this world entity 257 * @param collisionEvent the event 258 */ 259 void WorldEntity::registerCollision(WorldEntity* entityA, WorldEntity* entityB, BouningVolume* bvA, BoundingVolume* bvB) 260 { 261 // create a collision event 262 Collision* c = CREngine::getInstance()->popCollisionObject(); 263 c->collide(entityA, entityB, bvA, bvB); 264 265 for(int i = 0; i < CREngine::CR_NUMBER; ++i) 266 if( this->collisionHandles[i] != NULL) 267 this->collisionHandles[i]->registerCollision(c); 268 } 269 270 271 /** 256 272 * @brief moves this entity to the List OM_List 257 273 * @param list the list to set this Entity to. -
branches/cr/src/world_entities/world_entity.h
r7933 r7944 24 24 25 25 class BVTree; 26 class BoundingVolume; 26 27 class Model; 27 28 class CollisionHandle; 29 class Collision; 28 30 29 31 … … 69 71 /* --- Collision Reaction Block --- */ 70 72 void subscribeReaction(CREngine::CRType type, int nrOfTargets, long target, ...); 73 void registerCollision(WorldEntity* entityA, WorldEntity* entityB, BoundingVolume* bvA, BoundingVolume* bvB); 71 74 72 75
Note: See TracChangeset
for help on using the changeset viewer.