Keyboard Controls changed to Win32 API.
This commit is contained in:
63
main.cpp
63
main.cpp
@@ -10,6 +10,8 @@
|
|||||||
|
|
||||||
@author Morgan McGuire, matrix@graphics3d.com
|
@author Morgan McGuire, matrix@graphics3d.com
|
||||||
*/
|
*/
|
||||||
|
#define NO_SDL_MAIN
|
||||||
|
|
||||||
#include <G3DAll.h>
|
#include <G3DAll.h>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
#include "Instance.h"
|
#include "Instance.h"
|
||||||
@@ -87,9 +89,12 @@ class Demo : public GApp {
|
|||||||
virtual void onGraphics(RenderDevice* rd);
|
virtual void onGraphics(RenderDevice* rd);
|
||||||
virtual void onUserInput(UserInput* ui);
|
virtual void onUserInput(UserInput* ui);
|
||||||
virtual void onCleanup();
|
virtual void onCleanup();
|
||||||
|
|
||||||
|
void QuitApp();
|
||||||
private:
|
private:
|
||||||
HWND hWndMain;
|
HWND hWndMain;
|
||||||
SkyRef sky;
|
SkyRef sky;
|
||||||
|
bool quit;
|
||||||
void main();
|
void main();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -133,6 +138,7 @@ HWND App::getMainHWND()
|
|||||||
Demo::Demo(const GAppSettings& settings,Win32Window* window) : GApp(settings,window) {
|
Demo::Demo(const GAppSettings& settings,Win32Window* window) : GApp(settings,window) {
|
||||||
varStatic = VARArea::create(1024 * 1024);
|
varStatic = VARArea::create(1024 * 1024);
|
||||||
hWndMain = window->hwnd();
|
hWndMain = window->hwnd();
|
||||||
|
quit=false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void clearInstances()
|
void clearInstances()
|
||||||
@@ -912,36 +918,36 @@ void Demo::onSimulation(RealTime rdt, SimTime sdt, SimTime idt) {
|
|||||||
|
|
||||||
//User Input
|
//User Input
|
||||||
void Demo::onUserInput(UserInput* ui) {
|
void Demo::onUserInput(UserInput* ui) {
|
||||||
|
if (GetKeyState(VK_ESCAPE) >> 1) {
|
||||||
if (ui->keyPressed(SDLK_ESCAPE)) {
|
|
||||||
// Even when we aren't in debug mode, quit on escape.
|
// Even when we aren't in debug mode, quit on escape.
|
||||||
//endApplet = true;
|
//endApplet = true;
|
||||||
endProgram = true;
|
PostQuitMessage(0);
|
||||||
|
//endProgram = true;
|
||||||
}
|
}
|
||||||
if(mouseMovedBeginMotion)
|
if(mouseMovedBeginMotion)
|
||||||
{
|
{
|
||||||
mouseMovedBeginMotion = false;
|
mouseMovedBeginMotion = false;
|
||||||
debugController.setActive(true);
|
debugController.setActive(true);
|
||||||
}
|
}
|
||||||
if(ui->keyPressed(SDL_RIGHT_MOUSE_KEY))
|
if(GetKeyState(VK_RBUTTON) >> 1)
|
||||||
{
|
{
|
||||||
oldMouse = ui->getMouseXY();
|
oldMouse = ui->getMouseXY();
|
||||||
showMouse = false;
|
showMouse = false;
|
||||||
window()->setRelativeMousePosition(window()->width()/2, window()->height()/2);
|
window()->setRelativeMousePosition(window()->width()/2, window()->height()/2);
|
||||||
mouseMovedBeginMotion = true;
|
mouseMovedBeginMotion = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(ui->keyReleased(SDL_RIGHT_MOUSE_KEY))
|
else
|
||||||
{
|
{
|
||||||
ui->setMouseXY(oldMouse);
|
ui->setMouseXY(oldMouse);
|
||||||
showMouse = true;
|
showMouse = true;
|
||||||
debugController.setActive(false);
|
debugController.setActive(false);
|
||||||
}
|
}
|
||||||
if(ui->keyPressed(SDLK_LSHIFT) || ui->keyPressed(SDLK_RSHIFT))
|
|
||||||
|
if(GetKeyState(VK_RSHIFT) >> 1 || GetKeyState(VK_LSHIFT) >> 1)
|
||||||
{
|
{
|
||||||
moveRate = 1;
|
moveRate = 1;
|
||||||
}
|
}
|
||||||
else if(ui->keyReleased(SDLK_LSHIFT) || ui->keyReleased(SDLK_RSHIFT))
|
else
|
||||||
{
|
{
|
||||||
moveRate = 0.5;
|
moveRate = 0.5;
|
||||||
}
|
}
|
||||||
@@ -959,14 +965,14 @@ void Demo::onUserInput(UserInput* ui) {
|
|||||||
cameraPos = cameraPos - frame.lookVector()*2;
|
cameraPos = cameraPos - frame.lookVector()*2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ui->keyPressed(SDLK_DELETE))
|
if(GetKeyState(VK_DELETE) >> 1)
|
||||||
{
|
{
|
||||||
deleteInstance();
|
deleteInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ui->keyDown(SDLK_LCTRL))
|
if(GetKeyState(VK_LCONTROL) >> 1)
|
||||||
{
|
{
|
||||||
if(ui->keyPressed('d'))
|
if(GetKeyState('D') >> 1)
|
||||||
{
|
{
|
||||||
messageTime = System::time();
|
messageTime = System::time();
|
||||||
if(debugMode())
|
if(debugMode())
|
||||||
@@ -985,25 +991,25 @@ void Demo::onUserInput(UserInput* ui) {
|
|||||||
dataModel->mousex = ui->getMouseX();
|
dataModel->mousex = ui->getMouseX();
|
||||||
dataModel->mousey = ui->getMouseY();
|
dataModel->mousey = ui->getMouseY();
|
||||||
dataModel->mouseButton1Down = ui->keyDown(SDL_LEFT_MOUSE_KEY);
|
dataModel->mouseButton1Down = ui->keyDown(SDL_LEFT_MOUSE_KEY);
|
||||||
if(ui->keyDown(SDLK_UP))
|
if(GetKeyState(VK_UP) >> 1)
|
||||||
{
|
{
|
||||||
forwards = true;
|
forwards = true;
|
||||||
}
|
}
|
||||||
else if(ui->keyDown(SDLK_DOWN))
|
else if(GetKeyState(VK_DOWN) >> 1)
|
||||||
{
|
{
|
||||||
backwards = true;
|
backwards = true;
|
||||||
}
|
}
|
||||||
if(ui->keyDown(SDLK_LEFT))
|
if(GetKeyState(VK_LEFT) >> 1)
|
||||||
{
|
{
|
||||||
left = true;
|
left = true;
|
||||||
}
|
}
|
||||||
else if(ui->keyDown(SDLK_RIGHT))
|
else if(GetKeyState(VK_RIGHT) >> 1)
|
||||||
{
|
{
|
||||||
|
|
||||||
right = true;
|
right = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ui->keyPressed(SDL_LEFT_MOUSE_KEY))
|
if(GetKeyState(SDL_LEFT_MOUSE_KEY))
|
||||||
{
|
{
|
||||||
bool onGUI = false;
|
bool onGUI = false;
|
||||||
std::vector<Instance*> instances_2D = dataModel->getGuiRoot()->getAllChildren();
|
std::vector<Instance*> instances_2D = dataModel->getGuiRoot()->getAllChildren();
|
||||||
@@ -1440,16 +1446,17 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||||||
Demo *app = (Demo *)GetWindowLongPtr(hwnd, GWL_USERDATA);
|
Demo *app = (Demo *)GetWindowLongPtr(hwnd, GWL_USERDATA);
|
||||||
switch(msg)
|
switch(msg)
|
||||||
{
|
{
|
||||||
case WM_CLOSE:
|
case WM_QUIT:
|
||||||
PostQuitMessage(0);
|
app->QuitApp();
|
||||||
break;
|
break;
|
||||||
case WM_DESTROY:
|
case WM_DESTROY:
|
||||||
PostQuitMessage(0);
|
app->QuitApp();
|
||||||
break;
|
break;
|
||||||
case WM_SIZE:
|
case WM_SIZE:
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case WM_MOUSEMOVE:
|
case WM_MOUSEMOVE:
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
@@ -1470,7 +1477,7 @@ void Demo::main() {
|
|||||||
sky = Sky::create(NULL, ExePath() + "/content/sky/");
|
sky = Sky::create(NULL, ExePath() + "/content/sky/");
|
||||||
//run();
|
//run();
|
||||||
|
|
||||||
bool quit=false;
|
|
||||||
RealTime now, lastTime;
|
RealTime now, lastTime;
|
||||||
double simTimeRate = 1.0f;
|
double simTimeRate = 1.0f;
|
||||||
float fps=30.f;
|
float fps=30.f;
|
||||||
@@ -1482,7 +1489,8 @@ void Demo::main() {
|
|||||||
|
|
||||||
//wind->
|
//wind->
|
||||||
MSG messages; /* Here messages to the application are saved */
|
MSG messages; /* Here messages to the application are saved */
|
||||||
while (GetMessage (&messages, NULL, 0, 0))
|
|
||||||
|
while (!quit)
|
||||||
{
|
{
|
||||||
lastTime = now;
|
lastTime = now;
|
||||||
now = System::getTick();
|
now = System::getTick();
|
||||||
@@ -1525,6 +1533,9 @@ void Demo::main() {
|
|||||||
debugText.clear();
|
debugText.clear();
|
||||||
m_graphicsWatch.tock();
|
m_graphicsWatch.tock();
|
||||||
|
|
||||||
|
while (PeekMessage (&messages, NULL, 0, 0,PM_REMOVE))
|
||||||
|
{
|
||||||
|
|
||||||
if (IsDialogMessage(hWndMain, &messages) == 0)
|
if (IsDialogMessage(hWndMain, &messages) == 0)
|
||||||
{
|
{
|
||||||
/* Translate virtual-key messages into character messages */
|
/* Translate virtual-key messages into character messages */
|
||||||
@@ -1532,12 +1543,19 @@ void Demo::main() {
|
|||||||
/* Send message to WindowProcedure */
|
/* Send message to WindowProcedure */
|
||||||
DispatchMessage(&messages);
|
DispatchMessage(&messages);
|
||||||
}
|
}
|
||||||
//onGraphics(renderDevice);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Demo::QuitApp()
|
||||||
|
{
|
||||||
|
PostQuitMessage(0);
|
||||||
|
quit=true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
try{
|
try{
|
||||||
tempPath = ((std::string)getenv("temp")) + "/Dynamica";
|
tempPath = ((std::string)getenv("temp")) + "/Dynamica";
|
||||||
@@ -1600,7 +1618,6 @@ int main(int argc, char** argv) {
|
|||||||
Win32Window* win32Window = Win32Window::create(settings.window,hwndMain);
|
Win32Window* win32Window = Win32Window::create(settings.window,hwndMain);
|
||||||
Demo demo = Demo(settings,win32Window);
|
Demo demo = Demo(settings,win32Window);
|
||||||
demo.run();
|
demo.run();
|
||||||
//app.run();
|
|
||||||
}
|
}
|
||||||
catch(...)
|
catch(...)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user