Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 8323 in orxonox.OLD for branches/bsp_model/src/lib


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
Files:
4 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
  • branches/bsp_model/src/lib/math/vector.h

    r8145 r8323  
    4646  /** @param v: the Vecor to compare with this one @returns true, if the Vecors are the same, false otherwise */
    4747  inline bool operator== (const Vector& v) const { return (this->x==v.x&&this->y==v.y&&this->z==v.z)?true:false; };
     48  /** @param v: the Vecor to compare with this one @returns true, if the Vecors are different, false otherwise */
     49  inline bool operator!= (const Vector& v) const { return (this->x!=v.x&&this->y!=v.y&&this->z!=v.z)?true:false; };
    4850  /** @param index The index of the "array" @returns the x/y/z coordinate */
    4951  inline float operator[] (float index) const {if( index == 0) return this->x; if( index == 1) return this->y; if( index == 2) return this->z; }
Note: See TracChangeset for help on using the changeset viewer.