feat(new_editor): wire project, inspector, and viewport runtime
This commit is contained in:
@@ -24,6 +24,11 @@ public:
|
||||
m_rightAlt = false;
|
||||
m_leftSuper = false;
|
||||
m_rightSuper = false;
|
||||
m_leftMouse = false;
|
||||
m_rightMouse = false;
|
||||
m_middleMouse = false;
|
||||
m_x1Mouse = false;
|
||||
m_x2Mouse = false;
|
||||
}
|
||||
|
||||
void SyncFromSystemState() {
|
||||
@@ -35,6 +40,11 @@ public:
|
||||
m_rightAlt = (GetKeyState(VK_RMENU) & 0x8000) != 0;
|
||||
m_leftSuper = (GetKeyState(VK_LWIN) & 0x8000) != 0;
|
||||
m_rightSuper = (GetKeyState(VK_RWIN) & 0x8000) != 0;
|
||||
m_leftMouse = (GetKeyState(VK_LBUTTON) & 0x8000) != 0;
|
||||
m_rightMouse = (GetKeyState(VK_RBUTTON) & 0x8000) != 0;
|
||||
m_middleMouse = (GetKeyState(VK_MBUTTON) & 0x8000) != 0;
|
||||
m_x1Mouse = (GetKeyState(VK_XBUTTON1) & 0x8000) != 0;
|
||||
m_x2Mouse = (GetKeyState(VK_XBUTTON2) & 0x8000) != 0;
|
||||
}
|
||||
|
||||
::XCEngine::UI::UIInputModifiers GetCurrentModifiers() const {
|
||||
@@ -43,11 +53,25 @@ public:
|
||||
|
||||
::XCEngine::UI::UIInputModifiers BuildPointerModifiers(std::size_t wParam) const {
|
||||
::XCEngine::UI::UIInputModifiers modifiers = BuildModifiers();
|
||||
modifiers.shift = modifiers.shift || (wParam & MK_SHIFT) != 0;
|
||||
modifiers.control = modifiers.control || (wParam & MK_CONTROL) != 0;
|
||||
ApplyPointerWParam(modifiers, wParam);
|
||||
return modifiers;
|
||||
}
|
||||
|
||||
::XCEngine::UI::UIInputModifiers ApplyPointerMessage(
|
||||
::XCEngine::UI::UIInputEventType type,
|
||||
::XCEngine::UI::UIPointerButton button,
|
||||
std::size_t wParam) {
|
||||
::XCEngine::UI::UIInputModifiers modifiers = BuildPointerModifiers(wParam);
|
||||
if (type == ::XCEngine::UI::UIInputEventType::PointerButtonDown) {
|
||||
SetPointerButton(modifiers, button, true);
|
||||
} else if (type == ::XCEngine::UI::UIInputEventType::PointerButtonUp) {
|
||||
SetPointerButton(modifiers, button, false);
|
||||
}
|
||||
|
||||
ApplyPointerState(modifiers);
|
||||
return BuildModifiers();
|
||||
}
|
||||
|
||||
::XCEngine::UI::UIInputModifiers ApplyKeyMessage(
|
||||
::XCEngine::UI::UIInputEventType type,
|
||||
WPARAM wParam,
|
||||
@@ -119,6 +143,52 @@ private:
|
||||
}
|
||||
}
|
||||
|
||||
static void ApplyPointerWParam(
|
||||
::XCEngine::UI::UIInputModifiers& modifiers,
|
||||
std::size_t wParam) {
|
||||
modifiers.shift = modifiers.shift || (wParam & MK_SHIFT) != 0;
|
||||
modifiers.control = modifiers.control || (wParam & MK_CONTROL) != 0;
|
||||
modifiers.leftMouse = (wParam & MK_LBUTTON) != 0;
|
||||
modifiers.rightMouse = (wParam & MK_RBUTTON) != 0;
|
||||
modifiers.middleMouse = (wParam & MK_MBUTTON) != 0;
|
||||
modifiers.x1Mouse = (wParam & MK_XBUTTON1) != 0;
|
||||
modifiers.x2Mouse = (wParam & MK_XBUTTON2) != 0;
|
||||
}
|
||||
|
||||
static void SetPointerButton(
|
||||
::XCEngine::UI::UIInputModifiers& modifiers,
|
||||
::XCEngine::UI::UIPointerButton button,
|
||||
bool pressed) {
|
||||
switch (button) {
|
||||
case ::XCEngine::UI::UIPointerButton::Left:
|
||||
modifiers.leftMouse = pressed;
|
||||
break;
|
||||
case ::XCEngine::UI::UIPointerButton::Right:
|
||||
modifiers.rightMouse = pressed;
|
||||
break;
|
||||
case ::XCEngine::UI::UIPointerButton::Middle:
|
||||
modifiers.middleMouse = pressed;
|
||||
break;
|
||||
case ::XCEngine::UI::UIPointerButton::X1:
|
||||
modifiers.x1Mouse = pressed;
|
||||
break;
|
||||
case ::XCEngine::UI::UIPointerButton::X2:
|
||||
modifiers.x2Mouse = pressed;
|
||||
break;
|
||||
case ::XCEngine::UI::UIPointerButton::None:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ApplyPointerState(const ::XCEngine::UI::UIInputModifiers& modifiers) {
|
||||
m_leftMouse = modifiers.leftMouse;
|
||||
m_rightMouse = modifiers.rightMouse;
|
||||
m_middleMouse = modifiers.middleMouse;
|
||||
m_x1Mouse = modifiers.x1Mouse;
|
||||
m_x2Mouse = modifiers.x2Mouse;
|
||||
}
|
||||
|
||||
void SetModifierState(ModifierKey key, bool pressed) {
|
||||
switch (key) {
|
||||
case ModifierKey::LeftShift:
|
||||
@@ -157,6 +227,11 @@ private:
|
||||
modifiers.control = m_leftControl || m_rightControl;
|
||||
modifiers.alt = m_leftAlt || m_rightAlt;
|
||||
modifiers.super = m_leftSuper || m_rightSuper;
|
||||
modifiers.leftMouse = m_leftMouse;
|
||||
modifiers.rightMouse = m_rightMouse;
|
||||
modifiers.middleMouse = m_middleMouse;
|
||||
modifiers.x1Mouse = m_x1Mouse;
|
||||
modifiers.x2Mouse = m_x2Mouse;
|
||||
return modifiers;
|
||||
}
|
||||
|
||||
@@ -168,6 +243,11 @@ private:
|
||||
bool m_rightAlt = false;
|
||||
bool m_leftSuper = false;
|
||||
bool m_rightSuper = false;
|
||||
bool m_leftMouse = false;
|
||||
bool m_rightMouse = false;
|
||||
bool m_middleMouse = false;
|
||||
bool m_x1Mouse = false;
|
||||
bool m_x2Mouse = false;
|
||||
};
|
||||
|
||||
} // namespace XCEngine::Tests::CoreUI::Host
|
||||
|
||||
Reference in New Issue
Block a user