|
From: Yohann C. <pl...@us...> - 2004-11-01 08:57:34
|
Update of /cvsroot/epfl/tgengine-0.1 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3681 Modified Files: Makefile physicengine.cc soundmanager.cc Log Message: qq lignes commentees.... Index: physicengine.cc =================================================================== RCS file: /cvsroot/epfl/tgengine-0.1/physicengine.cc,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** physicengine.cc 31 Oct 2004 22:15:40 -0000 1.16 --- physicengine.cc 1 Nov 2004 08:57:10 -0000 1.17 *************** *** 9,13 **** //pNodes.clear(); fOverBounce = 1.00f; ! Engine::pVarManager->AddVar("gravity", 800); pGravity = &Engine::pVarManager->GetVar("gravity")->floatValue; --- 9,13 ---- //pNodes.clear(); fOverBounce = 1.00f; ! Engine::pVarManager->AddVar("gravity", 800); pGravity = &Engine::pVarManager->GetVar("gravity")->floatValue; *************** *** 22,34 **** int bumpcount = 0; //Vector3 origin = n->pBBox->vWorldOrigin; ! float time_left = eTime; trace.Fraction = 0.0f; ! ! while ((trace.Fraction < (1.0f - EPSILON)) && (bumpcount < MAXBUMPS)) //a chaque fois qu'on rencontre un plan, on relance un trace avec comme origine le Endpoint sur le plan précédent et on ajuste la vitesse de notre objet. MAXBUMPS permet simplement d'éviter des boucles infinies { trace = pLevel->CheckRayMove(origin, origin+vVelocity*time_left, n->GetBBox()->vMin, n->GetBBox()->vMax); ! if (trace.AllSolid) { --- 22,34 ---- int bumpcount = 0; //Vector3 origin = n->pBBox->vWorldOrigin; ! float time_left = eTime; trace.Fraction = 0.0f; ! ! while ((trace.Fraction < (1.0f - EPSILON)) && (bumpcount < MAXBUMPS)) //a chaque fois qu'on rencontre un plan, on relance un trace avec comme origine le Endpoint sur le plan précédent et on ajuste la vitesse de notre objet. MAXBUMPS permet simplement d'éviter des boucles infinies { trace = pLevel->CheckRayMove(origin, origin+vVelocity*time_left, n->GetBBox()->vMin, n->GetBBox()->vMax); ! if (trace.AllSolid) { *************** *** 44,48 **** break; } ! time_left -= time_left*trace.Fraction; ClipVelocity (vVelocity, trace.CollisionNormal); --- 44,48 ---- break; } ! time_left -= time_left*trace.Fraction; ClipVelocity (vVelocity, trace.CollisionNormal); *************** *** 83,87 **** Vector3 pos1 = n->GetPosition(); Vector3 pos2 = n->GetPosition();*/ ! for (unsigned int i=0; i<pNodes.size(); i++) { --- 83,87 ---- Vector3 pos1 = n->GetPosition(); Vector3 pos2 = n->GetPosition();*/ ! for (unsigned int i=0; i<pNodes.size(); i++) { *************** *** 94,98 **** veloc.y = 0; n->SetVelocity(veloc); ! n->SetPosition(n->GetPosition()+n->GetVelocity()*eTime); //n->SetRotation(n->GetRotation()+n->GetRotationVelocity()*eTime); --- 94,98 ---- veloc.y = 0; n->SetVelocity(veloc); ! n->SetPosition(n->GetPosition()+n->GetVelocity()*eTime); //n->SetRotation(n->GetRotation()+n->GetRotationVelocity()*eTime); *************** *** 100,105 **** q.Normalize(); n->SetRotation(n->GetRotation()*q); ! ! n->UpdatePosition(); continue; --- 100,105 ---- q.Normalize(); n->SetRotation(n->GetRotation()*q); ! ! n->UpdatePosition(); continue; *************** *** 107,118 **** //on a un objet qui doit subir les forces et les collisions ! ! if (!n->OnGround()) n->AddYAccel(-(*pGravity)); else if (n->GetYAccel() < 0) //si l'objet touche le sol, il faut ramener la gravité à zéro, sinon, l'objet va se retrouver avec une gravité négative très grande (ça l'empeche de sauter notamment) n->SetYAccel(0.0f); /*std::cout << n << "\t" ;*/ ! std::cout << "OnGround : " << n->OnGround(); ! std::cout << "Accel : \t" << n->GetAccel() << std::endl; //int red[]={1,0,0}; //Engine::pEngine->pRenderer->drawDebugArrow(n->vPosition, n->vPosition+n->vAccel*5, red); --- 107,118 ---- //on a un objet qui doit subir les forces et les collisions ! ! if (!n->OnGround()) n->AddYAccel(-(*pGravity)); else if (n->GetYAccel() < 0) //si l'objet touche le sol, il faut ramener la gravité à zéro, sinon, l'objet va se retrouver avec une gravité négative très grande (ça l'empeche de sauter notamment) n->SetYAccel(0.0f); /*std::cout << n << "\t" ;*/ ! //std::cout << "OnGround : " << n->OnGround(); ! //std::cout << "Accel : \t" << n->GetAccel() << std::endl; //int red[]={1,0,0}; //Engine::pEngine->pRenderer->drawDebugArrow(n->vPosition, n->vPosition+n->vAccel*5, red); *************** *** 122,131 **** n->CalculateBoundingVolume(); //on test les collisions avec le monde ! if (pLevel) { ! //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->GetVelocity(); --- 122,131 ---- n->CalculateBoundingVolume(); //on test les collisions avec le monde ! if (pLevel) { ! //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->GetVelocity(); *************** *** 144,148 **** distz *= distz; float dist = sqrt(distx+distz); ! StepSlideMove (n, eTime, vUpVelocity, vUpPos); vUpNewPos += vUpVelocity*eTime; --- 144,148 ---- distz *= distz; float dist = sqrt(distx+distz); ! StepSlideMove (n, eTime, vUpVelocity, vUpPos); vUpNewPos += vUpVelocity*eTime; *************** *** 152,156 **** distz *= distz; float updist = sqrt(distx+distz); ! if (updist > dist) //on passe l'obstacle { --- 152,156 ---- distz *= distz; float updist = sqrt(distx+distz); ! if (updist > dist) //on passe l'obstacle { *************** *** 162,166 **** //ce ne sont pas les memes, donc il y a eu collision -> appelle de la callback n->GetPhysicCallBack()->Collide(NULL, Vector3(0,0,0), Vector3(0,0,0)); ! } } else //l'obstacle est trop haut --- 162,166 ---- //ce ne sont pas les memes, donc il y a eu collision -> appelle de la callback n->GetPhysicCallBack()->Collide(NULL, Vector3(0,0,0), Vector3(0,0,0)); ! } } else //l'obstacle est trop haut *************** *** 173,181 **** //ce ne sont pas les memes, donc il y a eu collision -> appelle de la callback n->GetPhysicCallBack()->Collide(NULL, Vector3(0,0,0), Vector3(0,0,0)); ! } } ! //Classification de la position ! BspCollisionResult col = pLevel->CheckRayMove(n->GetPosition(), n->GetPosition()+Vector3::NEGATIVE_UNIT_Y*BASE_HEIGHT, n->GetBBox()->vMin, n->GetBBox()->vMax); //si on met le allsolid, ca foire les mouvements sur les y --- 173,181 ---- //ce ne sont pas les memes, donc il y a eu collision -> appelle de la callback n->GetPhysicCallBack()->Collide(NULL, Vector3(0,0,0), Vector3(0,0,0)); ! } } ! //Classification de la position ! BspCollisionResult col = pLevel->CheckRayMove(n->GetPosition(), n->GetPosition()+Vector3::NEGATIVE_UNIT_Y*BASE_HEIGHT, n->GetBBox()->vMin, n->GetBBox()->vMax); //si on met le allsolid, ca foire les mouvements sur les y *************** *** 188,193 **** q.Normalize(); n->SetRotation(n->GetRotation()*q); ! ! n->UpdatePosition(); } } --- 188,193 ---- q.Normalize(); n->SetRotation(n->GetRotation()*q); ! ! n->UpdatePosition(); } } *************** *** 200,205 **** CollisionResult result; result.pNode = NULL; ! ! BspCollisionResult mapResult = pLevel->CheckRayMove(Begin, End, TRACE_RAY, 0); result.EndPoint = mapResult.EndPoint; result.Normal = mapResult.CollisionNormal; --- 200,205 ---- CollisionResult result; result.pNode = NULL; ! ! BspCollisionResult mapResult = pLevel->CheckRayMove(Begin, End, TRACE_RAY, 0); result.EndPoint = mapResult.EndPoint; result.Normal = mapResult.CollisionNormal; *************** *** 240,244 **** } while((m=m->GetNext()) != NULL); }*/ ! return result; } --- 240,244 ---- } while((m=m->GetNext()) != NULL); }*/ ! return result; } Index: Makefile =================================================================== RCS file: /cvsroot/epfl/tgengine-0.1/Makefile,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** Makefile 22 Oct 2004 19:39:04 -0000 1.11 --- Makefile 1 Nov 2004 08:57:10 -0000 1.12 *************** *** 6,9 **** --- 6,10 ---- clean: + rm -Rf out/* rm -f *.o rm -f *~ Index: soundmanager.cc =================================================================== RCS file: /cvsroot/epfl/tgengine-0.1/soundmanager.cc,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** soundmanager.cc 30 Oct 2004 08:38:27 -0000 1.14 --- soundmanager.cc 1 Nov 2004 08:57:10 -0000 1.15 *************** *** 21,27 **** cout << "[OpenAL] Starting SoundManager" << endl; #endif ! Init(); ! LoopThread = SDL_CreateThread(SoundManager::MainLoop,NULL); } --- 21,27 ---- cout << "[OpenAL] Starting SoundManager" << endl; #endif [...980 lines suppressed...] ! case ALC_INVALID_CONTEXT: ! return string("ALC_INVALID_CONTEXT"); ! break; ! case ALC_INVALID_ENUM: ! return string("ALC_INVALID_ENUM"); ! break; ! case ALC_INVALID_VALUE: ! return string("ALC_INVALID_VALUE"); ! break; ! case ALC_OUT_OF_MEMORY: ! return string("ALC_OUT_OF_MEMORY"); ! break; ! ! default: return string("UNKNOW_ALC_ERROR"); break; |