MCPcopy Create free account
hub / github.com/OpenDungeons/OpenDungeons / move

Method move

source/camera/CameraManager.cpp:462–581  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

460}
461
462void CameraManager::move(const Direction direction, double aux)
463{
464 // NOTE : The camera loses the desired sense of left, right, top, down
465 // when the camera pitch is more than 90 degrees.
466 // So we invert the panning in that case.
467 Ogre::Real currentPitch = getActiveCameraNode()->getOrientation().getPitch().valueDegrees();
468 currentPitch = std::fmod(currentPitch, 90);
469
470 switch (direction)
471 {
472 case moveRight:
473 if (currentPitch <= 0.0)
474 mTranslateVectorAccel.x += MOVE_SPEED_ACCELERATION;
475 else
476 mTranslateVectorAccel.x -= MOVE_SPEED_ACCELERATION;
477 break;
478
479 case stopRight:
480 mTranslateVectorAccel.x = 0;
481 break;
482
483 case moveLeft:
484 if (currentPitch <= 0.0)
485 mTranslateVectorAccel.x -= MOVE_SPEED_ACCELERATION;
486 else
487 mTranslateVectorAccel.x += MOVE_SPEED_ACCELERATION;
488 break;
489
490 case stopLeft:
491 mTranslateVectorAccel.x = 0;
492 break;
493
494 case moveBackward:
495 if (currentPitch <= 0.0)
496 mTranslateVectorAccel.y -= MOVE_SPEED_ACCELERATION;
497 else
498 mTranslateVectorAccel.y += MOVE_SPEED_ACCELERATION;
499 break;
500
501 case stopBackward:
502 mTranslateVectorAccel.y = 0;
503 break;
504
505 case moveForward:
506 if (currentPitch <= 0.0)
507 mTranslateVectorAccel.y += MOVE_SPEED_ACCELERATION;
508 else
509 mTranslateVectorAccel.y -= MOVE_SPEED_ACCELERATION;
510 break;
511
512 case stopForward:
513 mTranslateVectorAccel.y = 0;
514 break;
515
516 case moveUp:
517 mZChange += MOVE_SPEED_ACCELERATION;
518 break;
519

Callers 1

moveCameraMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected