Optimized Renderer
This commit is contained in:
@ -24,6 +24,8 @@ namespace ia::iae
|
||||
BOOL InputManager::s_keys[256];
|
||||
BOOL InputManager::s_prevKeys[256];
|
||||
Vec2 InputManager::s_pointerPosition{};
|
||||
BOOL InputManager::s_pointerState{};
|
||||
BOOL InputManager::s_pointerPrevState{};
|
||||
InputManager::KeyboardGamePadMapping InputManager::s_keyboardGamePadMapping{};
|
||||
|
||||
BOOL InputManager::s_buttonA{};
|
||||
@ -48,6 +50,7 @@ namespace ia::iae
|
||||
|
||||
VOID InputManager::OnSDLEvent(IN SDL_Event *event)
|
||||
{
|
||||
s_pointerPrevState = s_pointerState;
|
||||
memcpy(s_prevKeys, s_keys, sizeof(s_prevKeys));
|
||||
switch (event->type)
|
||||
{
|
||||
@ -59,10 +62,21 @@ namespace ia::iae
|
||||
s_keys[event->key.scancode] = false;
|
||||
break;
|
||||
|
||||
case SDL_EVENT_FINGER_MOTION:
|
||||
case SDL_EVENT_MOUSE_MOTION:
|
||||
s_pointerPosition = {event->motion.x, event->motion.y};
|
||||
break;
|
||||
|
||||
case SDL_EVENT_MOUSE_BUTTON_DOWN:
|
||||
case SDL_EVENT_FINGER_DOWN:
|
||||
s_pointerState = true;
|
||||
break;
|
||||
|
||||
case SDL_EVENT_MOUSE_BUTTON_UP:
|
||||
case SDL_EVENT_FINGER_UP:
|
||||
s_pointerState = false;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -78,6 +92,11 @@ namespace ia::iae
|
||||
SDL_StopTextInput(g_windowHandle);
|
||||
}
|
||||
|
||||
BOOL InputManager::IsPointerDown()
|
||||
{
|
||||
return s_pointerState;
|
||||
}
|
||||
|
||||
Vec2 InputManager::GetPointerPosition()
|
||||
{
|
||||
return s_pointerPosition;
|
||||
@ -178,16 +197,16 @@ namespace ia::iae
|
||||
{
|
||||
if (s_onScreenGamePadEnabled)
|
||||
{
|
||||
//Engine::SetRenderState_Texture(0);
|
||||
//Engine::SetRenderState_FlippedH(false);
|
||||
//Engine::SetRenderState_FlippedV(false);
|
||||
//Engine::SetRenderState_ColorOverlay({0xFF, 0xFF, 0xFF, 0xFF});
|
||||
//Engine::SetRenderState_TextureOffset({0, 0});
|
||||
//Engine::SetRenderState_CameraRelative(false);
|
||||
//Engine::SetRenderState_Transform({300.0f, 500.0f},
|
||||
// {100.0f, 100.0f},
|
||||
// 0);
|
||||
//Engine::DrawGeometry(Engine::GetGeometry_Circle(), 0xFF, 0);
|
||||
// Engine::SetRenderState_Texture(0);
|
||||
// Engine::SetRenderState_FlippedH(false);
|
||||
// Engine::SetRenderState_FlippedV(false);
|
||||
// Engine::SetRenderState_ColorOverlay({0xFF, 0xFF, 0xFF, 0xFF});
|
||||
// Engine::SetRenderState_TextureOffset({0, 0});
|
||||
// Engine::SetRenderState_CameraRelative(false);
|
||||
// Engine::SetRenderState_Transform({300.0f, 500.0f},
|
||||
// {100.0f, 100.0f},
|
||||
// 0);
|
||||
// Engine::DrawGeometry(Engine::GetGeometry_Circle(), 0xFF, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -216,6 +235,18 @@ namespace ia::iae
|
||||
IsKeyDown(s_keyboardGamePadMapping.AxisRight) + IsKeyDown(s_keyboardGamePadMapping.AxisLeft) * -1;
|
||||
}
|
||||
}
|
||||
|
||||
BOOL InputManager::IsPointerDown(IN CONST Vec2 &start, IN CONST Vec2 &end)
|
||||
{
|
||||
if(!s_pointerState) return false;
|
||||
return (s_pointerPosition.x >= start.x) && (s_pointerPosition.x <= end.x) && (s_pointerPosition.y >= start.y) &&
|
||||
(s_pointerPosition.y <= end.y);
|
||||
}
|
||||
|
||||
BOOL InputManager::DidPointerClick(IN CONST Vec2 &start, IN CONST Vec2 &end)
|
||||
{
|
||||
return IsPointerDown(start, end) && !s_pointerPrevState;
|
||||
}
|
||||
} // namespace ia::iae
|
||||
|
||||
namespace ia::iae
|
||||
@ -235,6 +266,21 @@ namespace ia::iae
|
||||
return InputManager::GetPointerPosition();
|
||||
}
|
||||
|
||||
BOOL Engine::Input_IsPointerDown()
|
||||
{
|
||||
return InputManager::IsPointerDown();
|
||||
}
|
||||
|
||||
BOOL Engine::Input_IsPointerDown(IN CONST Vec2 &start, IN CONST Vec2 &end)
|
||||
{
|
||||
return InputManager::IsPointerDown(start, end);
|
||||
}
|
||||
|
||||
BOOL Engine::Input_DidPointerClick(IN CONST Vec2 &start, IN CONST Vec2 &end)
|
||||
{
|
||||
return InputManager::DidPointerClick(start, end);
|
||||
}
|
||||
|
||||
BOOL Engine::Input_IsKeyDown(IN InputKey key)
|
||||
{
|
||||
return InputManager::IsKeyDown(key);
|
||||
|
||||
Reference in New Issue
Block a user