Autopilote sur la touche 'E'.

This commit is contained in:
Georges Dupéron 2012-01-20 12:31:17 +01:00
parent d56b058c87
commit dd6f6e30a0
3 changed files with 22 additions and 2 deletions

View File

@ -164,7 +164,7 @@ void QuartierTri::getBoundingBoxPoints() {
} }
bool QuartierTri::split() { bool QuartierTri::split() {
bool small = c.minLength() < 5000; bool small = c.minLength() < 6000;
bool big = c.maxLength() >= 10000; bool big = c.maxLength() >= 10000;
float minAngle = c.minAngle(); float minAngle = c.minAngle();
float maxAngle = c.maxAngle(); float maxAngle = c.maxAngle();

View File

@ -219,7 +219,7 @@ Camera::Camera(Vertex _cameraCenter, float _xAngle, float _yAngle, int _moveSens
moveSensitivity(_moveSensitivity), moveSensitivity(_moveSensitivity),
mouseSensitivity(_mouseSensitivity), mouseSensitivity(_mouseSensitivity),
up(false), down(false), left(false), right(false), up(false), down(false), left(false), right(false),
pageUp(false), pageDown(false) pageUp(false), pageDown(false), autoPilot(false)
{ {
} }
@ -299,7 +299,11 @@ void Camera::keyboard(const SDL_KeyboardEvent &eventKey) {
if (moveSensitivity == 0) moveSensitivity = 300; if (moveSensitivity == 0) moveSensitivity = 300;
up = true; up = true;
break; break;
case 'e' :
autoPilot = true;
break;
case 'z' : case 'z' :
autoPilot = false;
up = false; up = false;
break; break;
case 's': case 's':
@ -341,8 +345,23 @@ void Camera::keyboard(const SDL_KeyboardEvent &eventKey) {
} }
void Camera::animation(int elapsedTime) { void Camera::animation(int elapsedTime) {
static unsigned int frame = 0;
frame++;
float diff = ((float)(elapsedTime+1)/1000.f)*(float)moveSensitivity; float diff = ((float)(elapsedTime+1)/1000.f)*(float)moveSensitivity;
if (autoPilot) {
moveSensitivity = 1500;
float dx = floatInRange(frame/16, 42, -0.5, 0.5);
float olddx = floatInRange(frame/16 - 1, 42, -0.5, 0.5);
float mix = ((float)(frame % 16) / 16.f);
xAngle += dx * mix + olddx * (1-mix);
float oldz = cameraCenter.z;
cameraCenter = cameraCenter + Vertex::fromSpherical(diff, yAngle, xAngle);
cameraCenter.z = oldz;
cameraCenter.z += std::min(20.f, std::max(-20.f, 1750 - cameraCenter.z));
return;
}
if(up) if(up)
cameraCenter = cameraCenter + Vertex::fromSpherical(diff, yAngle, xAngle); cameraCenter = cameraCenter + Vertex::fromSpherical(diff, yAngle, xAngle);
if(down) if(down)

View File

@ -19,6 +19,7 @@ private :
bool right; bool right;
bool pageUp; bool pageUp;
bool pageDown; bool pageDown;
bool autoPilot;
public : public :
Camera(Vertex pos, float xA, float yA, int moveSensitivity, float mouseSensitivity); Camera(Vertex pos, float xA, float yA, int moveSensitivity, float mouseSensitivity);