Moved BaseScene::ProcessEvents() to Application::ProcessEvents()
This is so that events can interact with the window more easily (i.e. logical resizing).
This commit is contained in:
+42
-1
@@ -94,7 +94,11 @@ void Application::Proc() {
|
||||
if (simTime < realTime) {
|
||||
while(simTime < realTime) {
|
||||
//call the user defined functions
|
||||
activeScene->RunFrame();
|
||||
activeScene->FrameStart();
|
||||
ProcessEvents();
|
||||
activeScene->Update();
|
||||
activeScene->FrameEnd();
|
||||
|
||||
//step to the next frame
|
||||
simTime += frameDelay;
|
||||
}
|
||||
@@ -125,6 +129,43 @@ void Application::Quit() {
|
||||
//Scene management
|
||||
//-------------------------
|
||||
|
||||
void Application::ProcessEvents() {
|
||||
SDL_Event event;
|
||||
while(SDL_PollEvent(&event)) {
|
||||
switch(event.type) {
|
||||
case SDL_QUIT:
|
||||
activeScene->QuitEvent();
|
||||
break;
|
||||
|
||||
case SDL_MOUSEMOTION:
|
||||
activeScene->MouseMotion(event.motion);
|
||||
break;
|
||||
|
||||
case SDL_MOUSEBUTTONDOWN:
|
||||
activeScene->MouseButtonDown(event.button);
|
||||
break;
|
||||
|
||||
case SDL_MOUSEBUTTONUP:
|
||||
activeScene->MouseButtonUp(event.button);
|
||||
break;
|
||||
|
||||
case SDL_MOUSEWHEEL:
|
||||
activeScene->MouseWheel(event.wheel);
|
||||
break;
|
||||
|
||||
case SDL_KEYDOWN:
|
||||
activeScene->KeyDown(event.key);
|
||||
break;
|
||||
|
||||
case SDL_KEYUP:
|
||||
activeScene->KeyUp(event.key);
|
||||
break;
|
||||
|
||||
//TODO: joystick and controller events
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Add the custom scene headers here
|
||||
#include "example_scene.hpp"
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@ public:
|
||||
|
||||
private:
|
||||
//scene management
|
||||
void ProcessEvents();
|
||||
void ProcessSceneSignal(SceneSignal);
|
||||
void ClearScene();
|
||||
|
||||
|
||||
@@ -31,13 +31,6 @@ BaseScene::~BaseScene() {
|
||||
//EMPTY
|
||||
}
|
||||
|
||||
void BaseScene::RunFrame() {
|
||||
FrameStart();
|
||||
ProcessEvents();
|
||||
Update();
|
||||
FrameEnd();
|
||||
}
|
||||
|
||||
void BaseScene::RenderFrame(SDL_Renderer* renderer) {
|
||||
//EMPTY
|
||||
}
|
||||
@@ -66,43 +59,6 @@ void BaseScene::FrameStart() {
|
||||
//EMPTY
|
||||
}
|
||||
|
||||
void BaseScene::ProcessEvents() {
|
||||
SDL_Event event;
|
||||
while(SDL_PollEvent(&event)) {
|
||||
switch(event.type) {
|
||||
case SDL_QUIT:
|
||||
QuitEvent();
|
||||
break;
|
||||
|
||||
case SDL_MOUSEMOTION:
|
||||
MouseMotion(event.motion);
|
||||
break;
|
||||
|
||||
case SDL_MOUSEBUTTONDOWN:
|
||||
MouseButtonDown(event.button);
|
||||
break;
|
||||
|
||||
case SDL_MOUSEBUTTONUP:
|
||||
MouseButtonUp(event.button);
|
||||
break;
|
||||
|
||||
case SDL_MOUSEWHEEL:
|
||||
MouseWheel(event.wheel);
|
||||
break;
|
||||
|
||||
case SDL_KEYDOWN:
|
||||
KeyDown(event.key);
|
||||
break;
|
||||
|
||||
case SDL_KEYUP:
|
||||
KeyUp(event.key);
|
||||
break;
|
||||
|
||||
//TODO: joystick and controller events
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void BaseScene::Update() {
|
||||
//EMPTY
|
||||
}
|
||||
|
||||
+5
-8
@@ -30,20 +30,12 @@ public:
|
||||
BaseScene();
|
||||
virtual ~BaseScene();
|
||||
|
||||
virtual void RunFrame();
|
||||
virtual void RenderFrame(SDL_Renderer*);
|
||||
|
||||
static void SetRenderer(SDL_Renderer*);
|
||||
SceneSignal GetSceneSignal();
|
||||
|
||||
protected:
|
||||
//control
|
||||
static SDL_Renderer* GetRenderer();
|
||||
void SetSceneSignal(SceneSignal);
|
||||
|
||||
//frame phases
|
||||
virtual void FrameStart();
|
||||
virtual void ProcessEvents();
|
||||
virtual void Update();
|
||||
virtual void FrameEnd();
|
||||
|
||||
@@ -58,6 +50,11 @@ protected:
|
||||
|
||||
//TODO: joystick and controller events
|
||||
|
||||
protected:
|
||||
//control
|
||||
static SDL_Renderer* GetRenderer();
|
||||
void SetSceneSignal(SceneSignal);
|
||||
|
||||
private:
|
||||
static SDL_Renderer* rendererHandle;
|
||||
SceneSignal sceneSignal = SceneSignal::CONTINUE;
|
||||
|
||||
Reference in New Issue
Block a user