Changeset 8796 in orxonox.OLD for trunk/src/lib/collision_reaction
- Timestamp:
- Jun 26, 2006, 3:43:40 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/collision_reaction/cr_physics_ground_walk.cc
r8724 r8796 25 25 26 26 #include <vector> 27 28 #include "aabb.h" 27 29 28 30 using namespace std; … … 62 64 // collision->getEntityB()->getAbsCoor().debug(); 63 65 66 Vector height; 67 AABB* box = collision->getEntityB()->getModelAABB(); 68 69 70 71 if(box!=NULL) 72 height = ( ce->getCollisionPosition() - collision->getEntityB()->getAbsCoor() )*(-1.0f) ; 73 else 74 height = ce->getCollisionPosition() - collision->getEntityB()->getAbsCoor() ; 64 75 65 Vector height = ce->getCollisionPosition() - collision->getEntityB()->getAbsCoor(); 66 67 if(ce->getCollisionPosition().x <= 0.9 && ce->getGroundNormal().len() <= 1.4f) { 68 collision->getEntityB()->setAbsCoor(collision->getEntityB()->getLastAbsCoor()); 69 return; 70 } 71 if(ce->getGroundNormal().len() <= 0.1f) { 72 collision->getEntityB()->setAbsCoor(collision->getEntityB()->getLastAbsCoor()); 73 return; 74 } 75 if(ce->getGroundNormal().len() >= 1.4f) { 76 downspeed++; 77 collision->getEntityB()->setAbsCoor(collision->getEntityB()->getAbsCoor() + Vector(0.0,-0.08*downspeed,0.0)); 78 return; 79 } 76 if(box!=NULL) { 80 77 81 78 82 if(height.y < -3.510001 + 10.0) // Above ground 83 { 84 if(height.y > -15.6) // Snap in 85 { 86 downspeed = 0; 87 collision->getEntityB()->setAbsCoor(collision->getEntityB()->getAbsCoor() + Vector(0.0,height.y+3.500005 + 10.0,0.0)); 88 } else 89 { 79 if(ce->getCollisionPosition().x <= 0.9 && ce->getGroundNormal().len() <= 1.4f) { 80 collision->getEntityB()->setAbsCoor(collision->getEntityB()->getLastAbsCoor()); 81 return; 82 } 83 if(ce->getCollisionPosition().z <= 0.9 && ce->getGroundNormal().len() <= 1.4f) { 84 collision->getEntityB()->setAbsCoor(collision->getEntityB()->getLastAbsCoor()); 85 return; 86 } 87 88 if(ce->getGroundNormal().len() <= 0.1f) { 89 collision->getEntityB()->setAbsCoor(collision->getEntityB()->getLastAbsCoor()); 90 return; 91 } 92 93 94 if(ce->getGroundNormal().len() >= 1.4f) { 90 95 downspeed++; 91 96 collision->getEntityB()->setAbsCoor(collision->getEntityB()->getAbsCoor() + Vector(0.0,-0.08*downspeed,0.0)); 97 return; 92 98 } 93 99 94 } 95 else { 96 if(height.y > -3.50000 + 10.0 && height.y < 9.9+ 10.0) // below ground 100 101 if(height.y > box->halfLength[1] + 0.0f ) // Above ground 97 102 { 98 //if(downspeed <= 0) downspeed =1; 99 collision->getEntityB()->setAbsCoor(collision->getEntityB()->getAbsCoor() + Vector(0.0, 0.00001 /*height.y+3.500005 + 10.0*/,0.0)); 100 //collision->getEntityB()->setVelocity(Vector(0.0,0.0,0.0)); 101 downspeed = 0; 103 if(height.y < box->halfLength[1] + 1.3f) // Snap in 104 { 105 downspeed = 0; 106 collision->getEntityB()->setAbsCoor(collision->getEntityB()->getAbsCoor() - Vector(0.0,height.y - box->halfLength[1] - 0.0f,0.0)); 107 } else 108 { 109 downspeed++; 110 collision->getEntityB()->setAbsCoor(collision->getEntityB()->getAbsCoor() + Vector(0.0,-0.08*downspeed,0.0)); 111 } 112 113 } 114 else { 115 if(height.y < box->halfLength[1] + 0.0f /* && height.y > - 55.0f*/) // below ground 116 { 117 //if(downspeed <= 0) downspeed =1; 118 collision->getEntityB()->setAbsCoor(collision->getEntityB()->getAbsCoor() + Vector(0.0, -height.y + box->halfLength[1] + 2.0f/* 0.00001 *//*height.y+3.500005 + 10.0*/,0.0)); 119 //collision->getEntityB()->setVelocity(Vector(0.0,0.0,0.0)); 120 downspeed = 0; 121 } 122 102 123 } 103 124 104 } 105 106 125 }// if(box!= NULL) 107 126 /* 108 127 PRINTF(0)("Collision with Ground: \n");
Note: See TracChangeset
for help on using the changeset viewer.