Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jun 22, 2006, 2:32:46 AM (19 years ago)
Author:
patrick
Message:

bsp: the collision reaction now is adjusted to the object size

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/bsp_model/src/lib/collision_reaction/cr_physics_ground_walk.cc

    r8693 r8699  
    2323#include "world_entity.h"
    2424#include "cr_physics_ground_walk.h"
     25
     26#include "aabb.h"
     27
     28#include "debug.h"
    2529
    2630#include <vector>
     
    5660  Vector normal = ce->getGroundNormal();
    5761
     62  AABB* box = ce->getEntityB()->getModelAABB();
    5863
    59   Vector height = ce->getCollisionPosition() - collision->getEntityB()->getAbsCoor();
    60   if(ce->getGroundNormal().len() <= 0.1f)
     64  Vector center = ce->getEntityB()->getAbsCoor() /*+ box->center*/;
     65  Vector collisionPos = ce->getCollisionPosition() - center;
     66
     67  float objSize = box->halfLength[1];
     68
     69  if( normal.len() <= 0.1f)
    6170  {
    6271    collision->getEntityB()->setAbsCoor(collision->getEntityB()->getLastAbsCoor());
    6372    return;
    6473  }
    65   if(height.y < -3.6)
     74
     75  if( collisionPos.y <= -(objSize + 0.1f))
    6676  {
    6777    downspeed++;
    68     collision->getEntityB()->setAbsCoor(collision->getEntityB()->getAbsCoor() + Vector(0.0,-0.03*downspeed,0.0));
    69 
     78    collision->getEntityB()->setAbsCoor(collision->getEntityB()->getAbsCoor() + Vector(0.0, -0.03 * downspeed, 0.0));
    7079  }
    7180  else
    7281  {
    73     if(height.y > -3.5  && height.y <    3.9)
     82    if( collisionPos.y > -objSize  &&
     83        collisionPos.y < (objSize + 0.4))
    7484    {
    7585      //if(downspeed <= 0) downspeed =1;
    76       collision->getEntityB()->setAbsCoor(collision->getEntityB()->getAbsCoor() + Vector(0.0,height.y+3.55,0.0));
    77       //collision->getEntityB()->setVelocity(Vector(0.0,0.0,0.0));
     86      collision->getEntityB()->setAbsCoor(collision->getEntityB()->getAbsCoor() +
     87                                          Vector(0.0, collisionPos.y + objSize + 0.1, 0.0));
    7888    }
    7989      downspeed = 0;
     
    8191
    8292
    83   /*
    84   PRINTF(0)("Collision with Ground: \n");
    85   collision->getEntityB()->getAbsCoor().debug();
    86   collision->getEntityB()->setVelocity(Vector());
    87   collision->getEntityB()->setAbsCoor(this->lastPositions[1]);
    88 
    89   */
    9093}
    9194
Note: See TracChangeset for help on using the changeset viewer.