Changeset 6693 in orxonox.OLD for branches/network/src/world_entities/space_ships/space_ship.cc
- Timestamp:
- Jan 25, 2006, 2:19:46 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/network/src/world_entities/space_ships/space_ship.cc
r6688 r6693 128 128 this->addWeapon(cannon, 0, 6); 129 129 130 //this->addWeapon(turret, 3, 0);131 132 130 this->getWeaponManager()->changeWeaponConfig(1); 133 131 … … 137 135 bFire = false; 138 136 xMouse = yMouse = 0; 137 yInvert = 1; 139 138 mouseSensitivity = 0.001; 140 airViscosity = 1.0; 141 cycle = 0.0; 139 airViscosity = 0.05; 140 controlVelocityX = 25; 141 controlVelocityY = 150; 142 shipInertia = 0.5 ; 143 // cycle = 0.0; 142 144 143 145 this->setMaxEnergy(100); 144 146 this->setEnergy(80); 145 147 146 travelSpeed = 15.0; 147 this->velocity = Vector(0.0,0.0,0.0); 148 travelSpeed = 40.0; 149 acceleration = 3; 150 this->velocity = this->getAbsDirX()*travelSpeed; 148 151 this->mouseDir = this->getAbsDir(); 152 this->pitchDir = this->getAbsDir(); 149 153 150 154 // GLGuiButton* button = new GLGuiPushButton(); … … 160 164 161 165 //add events to the eventlist 162 registerEvent( SDLK_w);163 registerEvent( SDLK_s);164 registerEvent( SDLK_a);165 registerEvent( SDLK_d);166 registerEvent(SDLK_q);167 registerEvent(SDLK_e);166 registerEvent(KeyMapper::PEV_UP); 167 registerEvent(KeyMapper::PEV_DOWN); 168 registerEvent(KeyMapper::PEV_LEFT); 169 registerEvent(KeyMapper::PEV_RIGHT); 170 //registerEvent(SDLK_q); 171 //registerEvent(SDLK_e); 168 172 registerEvent(KeyMapper::PEV_FIRE1); 169 173 registerEvent(KeyMapper::PEV_NEXT_WEAPON); 170 174 registerEvent(KeyMapper::PEV_PREVIOUS_WEAPON); 171 registerEvent(SDLK_PAGEUP);172 registerEvent(SDLK_PAGEDOWN);175 //registerEvent(SDLK_PAGEUP); 176 //registerEvent(SDLK_PAGEDOWN); 173 177 registerEvent(EV_MOUSE_MOTION); 174 178 … … 285 289 this->weaponAction(); 286 290 291 if( xMouse != 0 || yMouse != 0) 292 { 293 if (xMouse > controlVelocityX) xMouse = controlVelocityX; 294 else if (xMouse < -controlVelocityX) xMouse = -controlVelocityX; 295 if (yMouse > controlVelocityY) yMouse = controlVelocityY; 296 else if (yMouse < -controlVelocityY) yMouse = -controlVelocityY; 297 298 pitchDir = (Quaternion(xMouse*mouseSensitivity*0.5, Vector(1,0,0))); 299 300 mouseDir *= (Quaternion(-M_PI/4*xMouse*mouseSensitivity, Vector(0,1,0))*Quaternion(-M_PI/4*yMouse*mouseSensitivity*yInvert, Vector(0,0,1))*pitchDir); 301 xMouse = yMouse = 0; 302 } 303 304 287 305 // if( this != State::getPlayer()->getControllable()) 288 306 // return; … … 291 309 this->calculateVelocity(time); 292 310 293 Vector move = (velocity)*time;311 Vector move = velocity*time; 294 312 295 313 //orient the velocity in the direction of the spaceship. … … 299 317 300 318 //orient the spaceship in direction of the mouse 301 rotQuat = Quaternion::quatSlerp( this->getAbsDir(), mouseDir, fabsf(time)* 3.0);319 rotQuat = Quaternion::quatSlerp( this->getAbsDir(), mouseDir, fabsf(time)*shipInertia); 302 320 if (this->getAbsDir().distance(rotQuat) > 0.00000000000001) 303 321 this->setAbsDir( rotQuat); … … 305 323 306 324 // this is the air friction (necessary for a smooth control) 307 if(velocity.len() != 0) velocity -= velocity*0.01; 325 if(travelSpeed >= 120) velocity -= velocity.getNormalized()*travelSpeed*travelSpeed*0.0001; 326 else if (travelSpeed <= 80) velocity -= velocity.getNormalized()*travelSpeed*0.001; 327 328 //other physics (gravity) 329 //if(travelSpeed < 120) 330 //move += Vector(0,-1,0)*60*time + Vector(0,1,0)*travelSpeed/2*time; 308 331 309 332 //hoover effect … … 312 335 313 336 //readjust 314 315 /*316 In the game "Yager" the spaceship gets readjusted when the player moves the mouse.317 I (bknecht) go and check it out how they do it, we could probably use this also in Orxonox.318 */319 //if (xMouse != 0 && yMouse != 0)320 321 337 //if (this->getAbsDirZ().y > 0.1) this->shiftDir(Quaternion(time*0.3, Vector(1,0,0))); 322 338 //else if (this->getAbsDirZ().y < -0.1) this->shiftDir(Quaternion(-time*0.3, Vector(1,0,0))); … … 324 340 //SDL_WarpMouse(GraphicsEngine::getInstance()->getResolutionX()/2, GraphicsEngine::getInstance()->getResolutionY()/2); 325 341 326 this->shiftCoor 342 this->shiftCoor(move); 327 343 328 344 … … 343 359 /* calculate the direction in which the craft is heading */ 344 360 345 Plane plane(Vector(0,1,0), Vector(0,0,0));361 //Plane plane(Vector(0,1,0), Vector(0,0,0)); 346 362 347 363 if( this->bUp ) 348 364 { 349 365 //this->shiftCoor(this->getAbsDirX()); 350 accel += (this->getAbsDirX())*2; 351 352 /* Heli-Steuerung 353 accel += (this->getAbsDirX()*2; 354 if( 355 */ 366 //accel += (this->getAbsDirX())*2; 367 accel += (this->getAbsDirX())*acceleration; 368 356 369 } 357 370 … … 359 372 { 360 373 //this->shiftCoor((this->getAbsDirX())*-1); 361 accel -= (this->getAbsDirX())*2; 374 //accel -= (this->getAbsDirX())*2; 375 accel -= (this->getAbsDirX())*0.5*acceleration; 362 376 } 363 377 … … 383 397 if( this->bRollL /* > -this->getRelCoor().z*2*/) 384 398 { 385 mouseDir *= Quaternion(-time , Vector(1,0,0));399 mouseDir *= Quaternion(-time*2, Vector(1,0,0)); 386 400 // accel -= rightDirection; 387 401 //velocityDir.normalize(); … … 391 405 if( this->bRollR /* > this->getRelCoor().z*2*/) 392 406 { 393 mouseDir *= Quaternion(time , Vector(1,0,0));407 mouseDir *= Quaternion(time*2, Vector(1,0,0)); 394 408 395 409 // accel += rightDirection; … … 438 452 void SpaceShip::process(const Event &event) 439 453 { 440 441 442 if( event.type == SDLK_a) 454 if( event.type == KeyMapper::PEV_LEFT) 443 455 this->bRollL = event.bPressed; 444 else if( event.type == SDLK_d)456 else if( event.type == KeyMapper::PEV_RIGHT) 445 457 this->bRollR = event.bPressed; 446 458 else if( event.type == KeyMapper::PEV_FIRE1) … … 452 464 else if ( event.type == KeyMapper::PEV_PREVIOUS_WEAPON && event.bPressed) 453 465 this->previousWeaponConfig(); 454 else if( event.type == SDLK_w)466 else if( event.type == KeyMapper::PEV_UP) 455 467 this->bUp = event.bPressed; //this->shiftCoor(0,.1,0); 456 else if( event.type == SDLK_s)468 else if( event.type == KeyMapper::PEV_DOWN) 457 469 this->bDown = event.bPressed; //this->shiftCoor(0,-.1,0); 458 470 else if( event.type == EV_MOUSE_MOTION) 459 471 { 460 this->xMouse = event.xRel; 461 this->yMouse = event.yRel; 462 mouseDir *= (Quaternion(-M_PI/4*xMouse*mouseSensitivity, Vector(0,1,0))*Quaternion(-M_PI/4*yMouse*mouseSensitivity, Vector(0,0,1))); 463 // if( xMouse*xMouse + yMouse*yMouse < 0.9) 464 //this->setAbsDir(mouseDir); 472 this->xMouse += event.xRel; 473 this->yMouse += event.yRel; 465 474 } 466 475 }
Note: See TracChangeset
for help on using the changeset viewer.