Changeset 6637 in orxonox.OLD for trunk/src/world_entities/space_ships/space_ship.cc
- Timestamp:
- Jan 21, 2006, 1:27:29 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/world_entities/space_ships/space_ship.cc
r6634 r6637 132 132 bFire = false; 133 133 xMouse = yMouse = 0; 134 yInvert = 1; 134 135 mouseSensitivity = 0.001; 135 airViscosity = 1.0; 136 cycle = 0.0; 136 airViscosity = 0.01; 137 controlVelocityX = 25; 138 controlVelocityY = 150; 139 shipInertia = 0.5 ; 140 // cycle = 0.0; 137 141 138 142 this->setMaxEnergy(100); 139 143 this->setEnergy(80); 140 144 141 travelSpeed = 15.0; 142 this->velocity = Vector(0.0,0.0,0.0); 145 travelSpeed = 40.0; 146 acceleration = 3; 147 this->velocity = this->getAbsDirX()*travelSpeed; 143 148 this->mouseDir = this->getAbsDir(); 149 this->pitchDir = this->getAbsDir(); 144 150 145 151 // GLGuiButton* button = new GLGuiPushButton(); … … 155 161 156 162 //add events to the eventlist 157 registerEvent( SDLK_w);158 registerEvent( SDLK_s);159 registerEvent( SDLK_a);160 registerEvent( SDLK_d);161 registerEvent(SDLK_q);162 registerEvent(SDLK_e);163 registerEvent(KeyMapper::PEV_UP); 164 registerEvent(KeyMapper::PEV_DOWN); 165 registerEvent(KeyMapper::PEV_LEFT); 166 registerEvent(KeyMapper::PEV_RIGHT); 167 //registerEvent(SDLK_q); 168 //registerEvent(SDLK_e); 163 169 registerEvent(KeyMapper::PEV_FIRE1); 164 170 registerEvent(KeyMapper::PEV_NEXT_WEAPON); 165 171 registerEvent(KeyMapper::PEV_PREVIOUS_WEAPON); 166 registerEvent(SDLK_PAGEUP);167 registerEvent(SDLK_PAGEDOWN);172 //registerEvent(SDLK_PAGEUP); 173 //registerEvent(SDLK_PAGEDOWN); 168 174 registerEvent(EV_MOUSE_MOTION); 169 175 … … 279 285 this->weaponAction(); 280 286 287 if( xMouse != 0 || yMouse != 0) 288 { 289 if (xMouse > controlVelocityX) xMouse = controlVelocityX; 290 else if (xMouse < -controlVelocityX) xMouse = -controlVelocityX; 291 if (yMouse > controlVelocityY) yMouse = controlVelocityY; 292 else if (yMouse < -controlVelocityY) yMouse = -controlVelocityY; 293 294 pitchDir = (Quaternion(xMouse*mouseSensitivity*0.5, Vector(1,0,0))); 295 296 mouseDir *= (Quaternion(-M_PI/4*xMouse*mouseSensitivity, Vector(0,1,0))*Quaternion(-M_PI/4*yMouse*mouseSensitivity*yInvert, Vector(0,0,1))*pitchDir); 297 xMouse = yMouse = 0; 298 } 299 300 281 301 // if( this != State::getPlayer()->getControllable()) 282 302 // return; … … 285 305 this->calculateVelocity(time); 286 306 287 Vector move = (velocity)*time;288 307 Vector move = velocity*time; 308 289 309 //orient the velocity in the direction of the spaceship. 290 310 travelSpeed = velocity.len(); … … 293 313 294 314 //orient the spaceship in direction of the mouse 295 rotQuat = Quaternion::quatSlerp( this->getAbsDir(), mouseDir, fabsf(time)* 3.0);315 rotQuat = Quaternion::quatSlerp( this->getAbsDir(), mouseDir, fabsf(time)*shipInertia); 296 316 if (this->getAbsDir().distance(rotQuat) > 0.00000000000001) 297 317 this->setAbsDir( rotQuat); … … 299 319 300 320 // this is the air friction (necessary for a smooth control) 301 if(velocity.len() != 0) velocity -= velocity*0.01; 302 321 if(travelSpeed >= 120) velocity -= velocity.getNormalized()*travelSpeed*travelSpeed*0.0001; 322 else if (travelSpeed <= 80) velocity -= velocity.getNormalized()*travelSpeed*0.001; 323 324 //other physics (gravity) 325 if(travelSpeed < 120) 326 move += Vector(0,-1,0)*60*time + Vector(0,1,0)*travelSpeed/2*time; 327 303 328 //hoover effect 304 329 //cycle += time; … … 306 331 307 332 //readjust 308 309 /*310 In the game "Yager" the spaceship gets readjusted when the player moves the mouse.311 I (bknecht) go and check it out how they do it, we could probably use this also in Orxonox.312 */313 //if (xMouse != 0 && yMouse != 0)314 315 333 //if (this->getAbsDirZ().y > 0.1) this->shiftDir(Quaternion(time*0.3, Vector(1,0,0))); 316 334 //else if (this->getAbsDirZ().y < -0.1) this->shiftDir(Quaternion(-time*0.3, Vector(1,0,0))); … … 318 336 //SDL_WarpMouse(GraphicsEngine::getInstance()->getResolutionX()/2, GraphicsEngine::getInstance()->getResolutionY()/2); 319 337 320 this->shiftCoor 338 this->shiftCoor(move); 321 339 322 340 … … 337 355 /* calculate the direction in which the craft is heading */ 338 356 339 Plane plane(Vector(0,1,0), Vector(0,0,0));357 //Plane plane(Vector(0,1,0), Vector(0,0,0)); 340 358 341 359 if( this->bUp ) 342 360 { 343 361 //this->shiftCoor(this->getAbsDirX()); 344 accel += (this->getAbsDirX())*2; 345 346 /* Heli-Steuerung 347 accel += (this->getAbsDirX()*2; 348 if( 349 */ 362 //accel += (this->getAbsDirX())*2; 363 accel += (this->getAbsDirX())*acceleration; 364 350 365 } 351 366 … … 353 368 { 354 369 //this->shiftCoor((this->getAbsDirX())*-1); 355 accel -= (this->getAbsDirX())*2; 370 //accel -= (this->getAbsDirX())*2; 371 accel -= (this->getAbsDirX())*0.5*acceleration; 356 372 } 357 373 … … 377 393 if( this->bRollL /* > -this->getRelCoor().z*2*/) 378 394 { 379 mouseDir *= Quaternion(-time , Vector(1,0,0));395 mouseDir *= Quaternion(-time*2, Vector(1,0,0)); 380 396 // accel -= rightDirection; 381 397 //velocityDir.normalize(); … … 385 401 if( this->bRollR /* > this->getRelCoor().z*2*/) 386 402 { 387 mouseDir *= Quaternion(time , Vector(1,0,0));403 mouseDir *= Quaternion(time*2, Vector(1,0,0)); 388 404 389 405 // accel += rightDirection; … … 432 448 void SpaceShip::process(const Event &event) 433 449 { 434 435 436 if( event.type == SDLK_a) 450 if( event.type == KeyMapper::PEV_LEFT) 437 451 this->bRollL = event.bPressed; 438 else if( event.type == SDLK_d)452 else if( event.type == KeyMapper::PEV_RIGHT) 439 453 this->bRollR = event.bPressed; 440 454 else if( event.type == KeyMapper::PEV_FIRE1) … … 446 460 else if ( event.type == KeyMapper::PEV_PREVIOUS_WEAPON && event.bPressed) 447 461 this->previousWeaponConfig(); 448 else if( event.type == SDLK_w)462 else if( event.type == KeyMapper::PEV_UP) 449 463 this->bUp = event.bPressed; //this->shiftCoor(0,.1,0); 450 else if( event.type == SDLK_s)464 else if( event.type == KeyMapper::PEV_DOWN) 451 465 this->bDown = event.bPressed; //this->shiftCoor(0,-.1,0); 452 466 else if( event.type == EV_MOUSE_MOTION) 453 467 { 454 this->xMouse = event.xRel; 455 this->yMouse = event.yRel; 456 mouseDir *= (Quaternion(-M_PI/4*xMouse*mouseSensitivity, Vector(0,1,0))*Quaternion(-M_PI/4*yMouse*mouseSensitivity, Vector(0,0,1))); 457 // if( xMouse*xMouse + yMouse*yMouse < 0.9) 458 //this->setAbsDir(mouseDir); 468 this->xMouse += event.xRel; 469 this->yMouse += event.yRel; 459 470 } 460 471 }
Note: See TracChangeset
for help on using the changeset viewer.