use mvp
Switch from MVC (Model-View-Controller) pattern to a modified MVP (Model-View-Presenter) pattern, to toss out the inconvenient Controller
This commit is contained in:
@ -26,6 +26,8 @@
|
||||
#else
|
||||
#endif
|
||||
|
||||
#include <glfw/glfw3.h>
|
||||
|
||||
static bool GetTestName(void* userData, int idx, const char** name)
|
||||
{
|
||||
assert(u32(idx) < g_testCount);
|
||||
@ -109,7 +111,7 @@ static inline void ImGui_GLFW_GL_RenderDrawData(ImDrawData* draw_data)
|
||||
|
||||
}
|
||||
|
||||
View::View(GLFWwindow* window, Model* model)
|
||||
View::View(GLFWwindow* window, Model* model) : m_presenter(model, this)
|
||||
{
|
||||
m_window = window;
|
||||
m_model = model;
|
||||
@ -125,6 +127,11 @@ View::View(GLFWwindow* window, Model* model)
|
||||
ImGui_GLFW_GL_Init(m_window, false);
|
||||
|
||||
ImGui::StyleColorsDark();
|
||||
|
||||
m_leftDown = false;
|
||||
m_rightDown = false;
|
||||
m_shiftDown = false;
|
||||
m_ps0.SetZero();
|
||||
}
|
||||
|
||||
View::~View()
|
||||
@ -135,6 +142,75 @@ View::~View()
|
||||
ImGui::DestroyContext();
|
||||
}
|
||||
|
||||
void View::Event_SetWindowSize(int w, int h)
|
||||
{
|
||||
m_presenter.Event_SetWindowSize(float32(w), float32(h));
|
||||
}
|
||||
|
||||
void View::Event_Press_Key(int button)
|
||||
{
|
||||
if (button == GLFW_KEY_LEFT_SHIFT)
|
||||
{
|
||||
m_shiftDown = true;
|
||||
}
|
||||
|
||||
m_presenter.Event_Press_Key(button);
|
||||
}
|
||||
|
||||
void View::Event_Release_Key(int button)
|
||||
{
|
||||
if (button == GLFW_KEY_LEFT_SHIFT)
|
||||
{
|
||||
m_shiftDown = false;
|
||||
}
|
||||
|
||||
m_presenter.Event_Release_Key(button);
|
||||
}
|
||||
|
||||
void View::Event_Press_Mouse(int button)
|
||||
{
|
||||
if (button == GLFW_MOUSE_BUTTON_LEFT)
|
||||
{
|
||||
m_leftDown = true;
|
||||
}
|
||||
|
||||
if (button == GLFW_MOUSE_BUTTON_RIGHT)
|
||||
{
|
||||
m_rightDown = true;
|
||||
}
|
||||
|
||||
m_presenter.Event_Press_Mouse(button);
|
||||
}
|
||||
|
||||
void View::Event_Release_Mouse(int button)
|
||||
{
|
||||
if (button == GLFW_MOUSE_BUTTON_LEFT)
|
||||
{
|
||||
m_leftDown = false;
|
||||
}
|
||||
|
||||
if (button == GLFW_MOUSE_BUTTON_RIGHT)
|
||||
{
|
||||
m_rightDown = false;
|
||||
}
|
||||
|
||||
m_presenter.Event_Release_Mouse(button);
|
||||
}
|
||||
|
||||
void View::Event_Move_Cursor(float x, float y)
|
||||
{
|
||||
b3Vec2 ps(x, y);
|
||||
|
||||
m_presenter.Event_Move_Cursor(ps.x, ps.y);
|
||||
|
||||
m_ps0 = ps;
|
||||
}
|
||||
|
||||
void View::Event_Scroll(float dx, float dy)
|
||||
{
|
||||
m_presenter.Event_Scroll(dx, dy);
|
||||
}
|
||||
|
||||
void View::Command_PreDraw()
|
||||
{
|
||||
ImGui_GLFW_GL_NewFrame();
|
||||
|
Reference in New Issue
Block a user