|
From: julien r. <jul...@us...> - 2004-09-27 16:19:15
|
Update of /cvsroot/epfl/tgengine-0.1 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6929 Modified Files: Changelog physicengine.cc Log Message: monte les escaliers Index: physicengine.cc =================================================================== RCS file: /cvsroot/epfl/tgengine-0.1/physicengine.cc,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** physicengine.cc 27 Sep 2004 15:17:28 -0000 1.6 --- physicengine.cc 27 Sep 2004 16:18:40 -0000 1.7 *************** *** 71,74 **** --- 71,75 ---- */ #define PLAYER_HEIGHT 80 + #define STEPSIZE 10 void PhysicEngine::Move (float eTime) { *************** *** 99,144 **** if (pLevel && !n->bNoClip) { ! /*vVeloc1 = n->vVelocity; ! vVeloc2 = n->vVelocity; ! pos2.y += PLAYER_HEIGHT; ! StepSlideMove(n, eTime, vVeloc1, pos1); ! //StepSlideMove(n, eTime, vVeloc2, pos2); ! //if (sqrt((vVeloc1.x-pos.x)*(vVeloc1.x-pos.x)+(vVeloc1.z-pos.z)*(vVeloc1.z-pos.z)) >= sqrt((vVeloc2.x-pos.x)*(vVeloc2.x-pos.x)+(vVeloc2.z-pos.z)*(vVeloc2.z-pos.z))) ! n->SetPosition(n->GetPosition()+vVeloc1*eTime);*/ ! //else ! //n->SetPosition(n->GetPosition()+vVeloc2*eTime); ! Vector3 vVelocity = n->vVelocity; Vector3 vUpVelocity = n->vVelocity; Vector3 vPos = n->GetPosition(); ! Vector3 vUpPos = n->GetPosition() + (Vector3::UNIT_Y*50); float distx, distz; StepSlideMove (n, eTime, vVelocity, vPos); ! distx = (vVelocity.x - vPos.x); distx *= distx; ! distz = (vVelocity.z - vPos.z); distz *= distz; float dist = sqrt(distx+distz); ! ! StepSlideMove (n, eTime, vVelocity, vUpPos); ! distx = (vVelocity.x - vPos.x); distx *= distx; ! distz = (vVelocity.z - vPos.z); distz *= distz; float updist = sqrt(distx+distz); ! //FIXME: ON DOIT CALCULER LA DISTANCE SUR LES X ET Z, ___SANS___ Y ! if (updist > dist) ! n->SetPosition(vUpPos + vUpVelocity*eTime); ! else ! n->SetPosition(vPos + vVelocity*eTime); ! ! ! ! //StepSlideMove(n, eTime, n->vVelocity, n->GetPosition()); ! //n->SetPosition(n->GetPosition()+n->vVelocity*eTime); if (pLevel->CheckRayMove(n->GetPosition(), n->GetPosition()+Vector3::NEGATIVE_UNIT_Y*PLAYER_HEIGHT, TRACE_RAY, 0).Fraction < 1.0f) n->bOnGround = true; --- 100,138 ---- if (pLevel && !n->bNoClip) { ! //on essaie de faire monter les petits obstacles sur les y (escaliers, rebords) au joueur. Pour cela, on test si lorsqu'on monte ! //le joueur de STEPSIZE, il arrive à avancer plus sur les x et les z (mais _pas_ les y) ! ////TODO: lorsqu'on monte les escaliers, ça se fait par petit saut (normal, on ajoute 10 a la position en un coup. ! //Il faudrait faire ça de manière à ce qu'on ait l'impression de glisser sur les escaliers Vector3 vVelocity = n->vVelocity; Vector3 vUpVelocity = n->vVelocity; Vector3 vPos = n->GetPosition(); ! Vector3 vNewPos = vPos; ! Vector3 vUpPos = n->GetPosition() + (Vector3::UNIT_Y*STEPSIZE); ! Vector3 vUpNewPos = vUpPos; float distx, distz; StepSlideMove (n, eTime, vVelocity, vPos); ! vNewPos += vVelocity*eTime; ! distx = (vNewPos.x - vPos.x); distx *= distx; ! distz = (vNewPos.z - vPos.z); distz *= distz; float dist = sqrt(distx+distz); ! ! StepSlideMove (n, eTime, vUpVelocity, vUpPos); ! vUpNewPos += vUpVelocity*eTime; ! distx = (vUpNewPos.x - vUpPos.x); distx *= distx; ! distz = (vUpNewPos.z - vUpPos.z); distz *= distz; float updist = sqrt(distx+distz); ! if (updist > dist) //on passe l'obstacle ! n->SetPosition(vUpNewPos); ! else //l'obstacle est trop haut ! n->SetPosition(vNewPos); + //Classification de la position if (pLevel->CheckRayMove(n->GetPosition(), n->GetPosition()+Vector3::NEGATIVE_UNIT_Y*PLAYER_HEIGHT, TRACE_RAY, 0).Fraction < 1.0f) n->bOnGround = true; Index: Changelog =================================================================== RCS file: /cvsroot/epfl/tgengine-0.1/Changelog,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Changelog 27 Sep 2004 15:17:28 -0000 1.2 --- Changelog 27 Sep 2004 16:18:40 -0000 1.3 *************** *** 1,34 **** --------------- 27 septembre 2004 - Silver - Krtek --------------- ! * code cleaning (plus de warnings à la compilation) --------------- 26 septembre 2004 - Silver --------------- ! * gestion little/big endian via des classes LittleEndian/BigEndian (fichier endian.h) --------------- 24 septembre 2004 - Silver --------------- ! * update du cvs avec les dernieres sources ! * en vrac, support du bsp, des md5 version 10 (finale) de doom3 --------------- 23 juin 2004 - Silver --------------- ! * ajout d'un TextureManager. Evite qu'il y ait plusieurs fois la même texture chargée en mémoire. De même, si ladite texture ne peut pas être chargée, met une texture blanche à la place ! * debut du projet ! * support des textures au format TGA et BMP ! * support du MD5 (DOOM III) ! * support du dot3 bump-mapping ! * debut du support pour gui --- 1,37 ---- --------------- 27 septembre 2004 --------------- ! Krtek, Silver: ! * code cleaning (plus de warnings à la compilation) ! ! Silver: ! * le moteur physique tente de faire monter les petits obstacles ! (escaliers & autres) --------------- 26 septembre 2004 --------------- ! Silver: ! * gestion little/big endian via des classes LittleEndian/BigEndian (fichier endian.h) --------------- 24 septembre 2004 --------------- ! Silver: ! * update du cvs avec les dernieres sources ! * en vrac, support du bsp, des md5 version 10 (finale) de doom3 --------------- 23 juin 2004 --------------- ! Silver ! * ajout d'un TextureManager. Evite qu'il y ait plusieurs fois la même texture chargée en mémoire. De même, si ladite texture ne peut pas être chargée, met une texture blanche à la place ! * debut du projet ! * support des textures au format TGA et BMP ! * support du MD5 (DOOM III) ! * support du dot3 bump-mapping ! * debut du support pour gui |