better mouse camera navigation ( missing win32 implementation )

This commit is contained in:
Titus Tscharntke 2010-03-25 00:19:49 +00:00
parent 844ca894b4
commit 147447b638
5 changed files with 21 additions and 8 deletions

View File

@ -1,7 +1,7 @@
// ==============================================================
// This file is part of Glest (www.glest.org)
//
// Copyright (C) 2001-2008 Martiño Figueroa
// Copyright (C) 2001-2008 Marti<EFBFBD>o Figueroa
//
// You can redistribute this code and/or modify it under
// the terms of the GNU General Public License as published
@ -434,6 +434,10 @@ void Game::mouseMove(int x, int y, const MouseState *ms){
float xmult = 0.2f;
gameCamera.transitionVH(-(y - lastMousePos.y) * ymult, (lastMousePos.x - x) * xmult);
mouseX=lastMousePos.x;
mouseY=lastMousePos.y;
Window::revertMousePos();
return;
}
}
else {
@ -479,8 +483,8 @@ void Game::mouseMove(int x, int y, const MouseState *ms){
}
}
lastMousePos.x = x;
lastMousePos.y = y;
lastMousePos.x = mouseX;
lastMousePos.y = mouseY;
}
void Game::eventMouseWheel(int x, int y, int zDelta) {

View File

@ -1,7 +1,7 @@
// ==============================================================
// This file is part of Glest (www.glest.org)
//
// Copyright (C) 2001-2008 Martiño Figueroa
// Copyright (C) 2001-2008 Marti<EFBFBD>o Figueroa
//
// You can redistribute this code and/or modify it under
// the terms of the GNU General Public License as published
@ -232,9 +232,9 @@ void GameCamera::transitionXYZ(float x, float y, float z) {
}
void GameCamera::transitionVH(float v, float h) {
destAng.x += v;
destPos.y -= v * destPos.y / 100.f;
destAng.y += h;
destAng.x -= v;
//destPos.y -= v * destPos.y / 100.f;
destAng.y -= h;
clampAng();
}

View File

@ -126,6 +126,8 @@ protected:
public:
static bool handleEvent();
static void revertMousePos();
Window();
virtual ~Window();

View File

@ -1,7 +1,7 @@
// ==============================================================
// This file is part of Glest Shared Library (www.glest.org)
//
// Copyright (C) 2001-2008 Martiño Figueroa
// Copyright (C) 2001-2008 Marti<EFBFBD>o Figueroa
//
// You can redistribute this code and/or modify it under
// the terms of the GNU General Public License as published
@ -136,6 +136,7 @@ protected:
public:
static bool handleEvent();
static void revertMousePos();
//contructor & destructor
Window();

View File

@ -32,6 +32,7 @@ namespace Shared{ namespace Platform{
// Matze: hack for now...
static Window* global_window = 0;
static int oldX=0,oldY=0;
unsigned int Window::lastMouseEvent = 0; /** for use in mouse hover calculations */
Vec2i Window::mousePos;
MouseState Window::mouseState;
@ -57,6 +58,7 @@ Window::~Window() {
bool Window::handleEvent() {
SDL_Event event;
SDL_GetMouseState(&oldX,&oldY);
while(SDL_PollEvent(&event)) {
try {
//printf("START [%d]\n",event.type);
@ -138,6 +140,10 @@ bool Window::handleEvent() {
return true;
}
void Window::revertMousePos() {
SDL_WarpMouse(oldX, oldY);
}
string Window::getText() {
char* c = 0;
SDL_WM_GetCaption(&c, 0);