Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jun 12, 2006, 12:10:51 AM (18 years ago)
Author:
patrick
Message:

bsp_model: new collision reaction for the ground. not yet working completle

Location:
branches/bsp_model/src/lib/collision_reaction
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/bsp_model/src/lib/collision_reaction/collision_event.h

    r8219 r8323  
    4141  inline Vector getGroundNormal() { return this->groundNormal; }
    4242
     43  /** @return position of the position, only accurate if this is a collision with the ground!!! */
     44  inline Vector getCollisionPosition() { return this->position; }
    4345
    4446 private:
  • branches/bsp_model/src/lib/collision_reaction/collision_handle.cc

    r8288 r8323  
    192192void CollisionHandle::handleCollisions()
    193193{
    194 //   if( this->type == CREngine::CR_)
     194  // if continuous poll poll the reaction
     195  if( this->bContinuousPoll && !this->bCollided)
     196  {
     197    this->collisionReaction->update(this->owner);
     198    return;
     199  }
    195200
    196201  // collision reaction calculations (for every collision there will be a reaction)
     
    204209  }
    205210
    206   // if continuous poll poll the reaction
    207   if( this->bContinuousPoll && this->bCollided)
    208     this->collisionReaction->update(this->owner);
    209 
    210211  // now set state to dispatched
    211212  this->bDispatched = true;
  • branches/bsp_model/src/lib/collision_reaction/cr_physics_ground_walk.cc

    r8288 r8323  
    5353void CRPhysicsGroundWalk::reactToCollision(Collision* collision)
    5454{
    55   CollisionEvent* ce = collision->getCollisionEvents().front();
    56   Vector normal = ce->getGroundNormal();
    57   normal.normalize();
    58 
    59   // put it back
    60   PRINTF(0)("putting it back\n");
    61   collision->getEntityB()->setVelocity(Vector());
    62 //  collision->getEntityB()->setAbsCoorSoft(this->lastPosition, 0.1);
    63 //   collision->getEntityB()->setAbsCoor(this->lastPosition/* + normal * (-5.0f)*/);
     55//   CollisionEvent* ce = collision->getCollisionEvents().front();
     56//   Vector normal = ce->getGroundNormal();
     57//   normal.normalize();
     58//
     59//   Vector position = ce->getCollisionPosition();
    6460
    6561
     62  if( this->lastPosition != collision->getEntityB()->getAbsCoor())
     63  {
     64  // put it back
     65    PRINTF(0)("putting it back to: \n");
     66    this->lastPosition.debug();
    6667
     68    collision->getEntityB()->setVelocity(Vector());
     69//  collision->getEntityB()->setAbsCoorSoft(this->lastPosition, 0.1);
     70    collision->getEntityB()->setAbsCoor(this->lastPosition);
     71  }
    6772}
    6873
     
    7681  this->lastPosition = owner->getAbsCoor();
    7782  this->lastDirection = owner->getAbsDir();
     83  PRINTF(0)("no collision: saving location: \n");
     84  this->lastPosition.debug();
    7885}
    7986
Note: See TracChangeset for help on using the changeset viewer.