better mouse camera navigation ( missing win32 implementation )
This commit is contained in:
parent
844ca894b4
commit
147447b638
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -126,6 +126,8 @@ protected:
|
|||
|
||||
public:
|
||||
static bool handleEvent();
|
||||
static void revertMousePos();
|
||||
|
||||
|
||||
Window();
|
||||
virtual ~Window();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue