Changeset 6637 in orxonox.OLD for trunk/src/world_entities/space_ships
- Timestamp:
- Jan 21, 2006, 1:27:29 AM (19 years ago)
- Location:
- trunk/src/world_entities/space_ships
- Files:
-
- 4 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/world_entities/space_ships/helicopter.cc
r6512 r6637 117 117 bFire = false; 118 118 xMouse = yMouse = 0; 119 mouseSensitivity = 0.0 01;120 rotorspeed = 1;121 tailrotorspeed = 0;122 123 cycle = 0.0;124 125 126 travelSpeed = 15.0;119 mouseSensitivity = 0.05; 120 //rotorspeed = 1; 121 //tailrotorspeed = 0; 122 123 //cycle = 0.0; 124 125 126 //travelSpeed = 15.0; 127 127 this->velocity = Vector(0.0,0.0,0.0); 128 128 this->velocityDir = Vector(1.0,0.0,0.0); … … 134 134 135 135 //add events to the eventlist 136 registerEvent( SDLK_w);137 registerEvent( SDLK_s);138 registerEvent( SDLK_a);139 registerEvent( SDLK_d);140 registerEvent(SDLK_q);136 registerEvent(KeyMapper::PEV_UP); 137 registerEvent(KeyMapper::PEV_DOWN); 138 registerEvent(KeyMapper::PEV_LEFT); 139 registerEvent(KeyMapper::PEV_RIGHT); 140 //registerEvent(SDLK_q); 141 141 registerEvent(SDLK_e); 142 142 registerEvent(SDLK_c); … … 144 144 registerEvent(KeyMapper::PEV_NEXT_WEAPON); 145 145 registerEvent(KeyMapper::PEV_PREVIOUS_WEAPON); 146 registerEvent(SDLK_PAGEUP);147 registerEvent(SDLK_PAGEDOWN);146 //registerEvent(SDLK_PAGEUP); 147 //registerEvent(SDLK_PAGEDOWN); 148 148 registerEvent(EV_MOUSE_MOTION); 149 149 … … 249 249 void Helicopter::tick (float time) 250 250 { 251 /* 251 252 tailrotorspeed += xMouse/20; 252 253 if (tailrotorspeed >= 0.07) tailrotorspeed = 0.07; … … 256 257 else if (tailrotorspeed < -0.0008) tailrotorspeed += 0.001; 257 258 if (tailrotorspeed <= 0.001 && tailrotorspeed >= -0.001) tailrotorspeed = 0; 258 259 */ 260 259 261 // spaceship controlled movement 260 262 this->calculateVelocity(time); 261 263 262 Vector move = (velocity) ;264 Vector move = (velocity)*time; 263 265 264 266 // this is the air friction (necessary for a smooth control) 265 267 if(velocity.len() != 0) velocity -= velocity*0.1; 268 269 //travelSpeed = velocity.len(); 266 270 267 271 //physics: Gravity 268 this->shiftCoor(Vector(0,-1,0));272 /*this->shiftCoor(Vector(0,-1,0)); 269 273 270 274 this->shiftCoor(getAbsDirY()*rotorspeed); 271 275 */ 276 277 /* 272 278 //hoover effect 273 279 cycle += time; 274 280 this->shiftCoor(Vector(0,1,0)*cos(this->cycle*2.0)*0.02); 281 */ 275 282 276 283 //readjust … … 281 288 282 289 this->shiftCoor (move); 283 this->shiftDir(Quaternion(-M_PI/4*tailrotorspeed, Vector(0,1,0)));290 //this->shiftDir(Quaternion(-M_PI/4*tailrotorspeed, Vector(0,1,0))); 284 291 285 292 this->getWeaponManager()->tick(time); … … 295 302 { 296 303 Vector accel(0.0, 0.0, 0.0); 297 Vector rot(0.0, 0.0, 0.0);298 float rotVal = 0.0;304 float rotValX = 0.0; 305 float rotValZ = 0.0; 299 306 /* FIXME: calculating the direction and orthDirection every timeSlice is redundant! save it somewhere */ 300 307 /* calculate the direction in which the craft is heading */ … … 304 311 //this->shiftCoor(this->getAbsDirX()); 305 312 //accel -= this->getAbsDirY(); 306 rot += Vector (0,0,1); 307 rotVal -= time/5; 313 314 accel += Vector((this->getAbsDirX()).x,0,(this->getAbsDirX()).z); 315 if((this->getAbsDirX()).y >= -0.1) rotValZ -= time; 308 316 } 309 317 else 310 318 { 311 if(this->getAbsDirX().y < -.02) this->shiftDir(Quaternion(time /8, Vector(0,0,1)));319 if(this->getAbsDirX().y < -.02) this->shiftDir(Quaternion(time, Vector(0,0,1))); 312 320 } 313 321 … … 316 324 //this->shiftCoor((this->getAbsDirX())*-1); 317 325 //accel -= this->getAbsDirY(); 318 rot += Vector (0,0,1); 319 rotVal += time/5; 326 327 accel -= Vector((this->getAbsDirX()).x,0,(this->getAbsDirX()).z); 328 rotValZ += time; 320 329 } 321 330 else 322 331 { 323 if(this->getAbsDirX().y > 0.02) this->shiftDir(Quaternion(-time /8, Vector(0,0,1)));332 if(this->getAbsDirX().y > 0.02) this->shiftDir(Quaternion(-time, Vector(0,0,1))); 324 333 } 325 334 … … 329 338 //accel -= this->getAbsDirY(); 330 339 //velocityDir.normalize(); 331 rot += Vector(1,0,0); 332 rotVal -= time/5; 340 341 accel -= Vector((this->getAbsDirZ()).x,0,(this->getAbsDirZ()).z); 342 rotValX -= time; 333 343 } 334 344 else 335 345 { 336 if(this->getAbsDirZ().y > 0.02) this->shiftDir(Quaternion(time /5, Vector(1,0,0)));346 if(this->getAbsDirZ().y > 0.02) this->shiftDir(Quaternion(time, Vector(1,0,0))); 337 347 } 338 348 … … 340 350 { 341 351 //this->shiftDir(Quaternion(-time, Vector(0,1,0))); 342 accel += this->getAbsDirY();352 //accel += this->getAbsDirY(); 343 353 //velocityDir.normalize(); 344 rot += Vector(1,0,0); 345 rotVal += time/5; 354 355 accel += Vector((this->getAbsDirZ()).x,0,(this->getAbsDirZ()).z); 356 rotValX += time; 346 357 } 347 358 else 348 359 { 349 if(this->getAbsDirZ().y < -0.02) this->shiftDir(Quaternion(-time /5, Vector(1,0,0)));360 if(this->getAbsDirZ().y < -0.02) this->shiftDir(Quaternion(-time, Vector(1,0,0))); 350 361 } 351 362 … … 371 382 //this->shiftDir(Quaternion(time, Vector(0,0,1))); 372 383 373 rotorspeed += 0.05; 374 if (rotorspeed >= 2) rotorspeed = 2; 384 accel += this->getAbsDirY(); 385 //rotorspeed += 0.05; 386 //if (rotorspeed >= 2) rotorspeed = 2; 375 387 //velocityDir.normalize(); 376 388 //rot += Vector(0,0,1); … … 379 391 else 380 392 { 381 if(rotorspeed >= 1.05) rotorspeed -= 0.05;393 //if(rotorspeed >= 1.05) rotorspeed -= 0.05; 382 394 } 383 395 … … 386 398 //this->shiftDir(Quaternion(-time, Vector(0,0,1))); 387 399 388 rotorspeed -= 0.05; 389 if (rotorspeed <= 0) rotorspeed = 0; 400 accel -= this->getAbsDirY(); 401 //rotorspeed -= 0.05; 402 //if (rotorspeed <= 0) rotorspeed = 0; 390 403 //velocityDir.normalize(); 391 404 //rot += Vector(0,0,1); … … 394 407 else 395 408 { 396 if(rotorspeed <= 0.05) rotorspeed += 0.05;397 } 398 399 //velocity += accel;400 rot.normalize();401 this->shiftDir(Quaternion(rotVal, rot));409 //if(rotorspeed <= 0.05) rotorspeed += 0.05; 410 } 411 412 velocity += accel*3; 413 if((this->getAbsDirX()).y <= 0.3 && (this->getAbsDirX()).y >= -0.3) this->shiftDir(Quaternion(rotValZ, Vector(0,0,1))); 414 if((this->getAbsDirZ()).y <= 0.3 && (this->getAbsDirZ()).y >= -0.3) this->shiftDir(Quaternion(rotValX, Vector(1,0,0))); 402 415 } 403 416 … … 429 442 430 443 431 if( event.type == SDLK_a)444 if( event.type == KeyMapper::PEV_LEFT) 432 445 this->bLeft = event.bPressed; 433 else if( event.type == SDLK_d)446 else if( event.type == KeyMapper::PEV_RIGHT) 434 447 this->bRight = event.bPressed; 435 448 else if( event.type == KeyMapper::PEV_FIRE1) … … 443 456 else if( event.type == SDLK_c) 444 457 this->bDescend = event.bPressed; //this->shiftCoor(0,-.1,0); 445 else if( event.type == SDLK_w)458 else if( event.type == KeyMapper::PEV_UP) 446 459 this->bUp = event.bPressed; //this->shiftCoor(0,.1,0); 447 else if( event.type == SDLK_s)460 else if( event.type == KeyMapper::PEV_DOWN) 448 461 this->bDown = event.bPressed; //this->shiftCoor(0,-.1,0); 449 462 else if( event.type == EV_MOUSE_MOTION) … … 452 465 this->yMouse = event.yRel*mouseSensitivity; 453 466 454 //this->shiftDir(Quaternion(-M_PI/4*xMouse*mouseSensitivity, Vector(0,1,0))*Quaternion(-M_PI/4*yMouse*mouseSensitivity, Vector(0,0,1)));467 this->shiftDir(Quaternion(-M_PI/4*xMouse*mouseSensitivity, Vector(0,1,0))/*Quaternion(-M_PI/4*yMouse*mouseSensitivity, Vector(0,0,1))*/); 455 468 } 456 469 } -
trunk/src/world_entities/space_ships/helicopter.h
r6512 r6637 57 57 float xMouse; //!< mouse moved in x-Direction 58 58 float yMouse; //!< mouse moved in y-Direction 59 int yInvert; 59 60 float mouseSensitivity; //!< the mouse sensitivity 60 float cycle; //!< hovercycle61 //float cycle; //!< hovercycle 61 62 62 63 Vector velocity; //!< the velocity of the player. … … 64 65 float travelSpeed; //!< the current speed of the player (to make soft movement) 65 66 float acceleration; //!< the acceleration of the player. 66 float rotorspeed; //!< the speed of the rotor.67 float tailrotorspeed; //!< the relativ speed ot the tail rotor67 //float rotorspeed; //!< the speed of the rotor. 68 //float tailrotorspeed; //!< the relativ speed ot the tail rotor 68 69 69 70 float airViscosity; -
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 } -
trunk/src/world_entities/space_ships/space_ship.h
r6634 r6637 65 65 float yMouse; //!< mouse moved in y-Direction 66 66 float mouseSensitivity; //!< the mouse sensitivity 67 float cycle; //!< hovercycle 67 int yInvert; 68 int controlVelocityX; 69 int controlVelocityY; 70 // float cycle; //!< hovercycle 68 71 69 72 Vector velocity; //!< the velocity of the player. 70 73 Quaternion mouseDir; //!< the direction where the player wants to fly 74 float shipInertia; //!< the inertia of the ship(how fast the ship reacts to a mouse input) 71 75 Quaternion rotQuat; 76 Quaternion pitchDir; 72 77 float travelSpeed; //!< the current speed of the player (to make soft movement) 73 78 float acceleration; //!< the acceleration of the player.
Note: See TracChangeset
for help on using the changeset viewer.