11#include "evan/glfw/IDesktopPlatform.hpp"
16 <<
"Destroying IDesktopPlatform and releasing associated resources...";
29std::shared_ptr<evan::ADeviceBackend>
33 <<
"Creating device backend for Desktop platform...";
34 return std::make_shared<DesktopBackend>(*
this);
37std::shared_ptr<evan::ASwapchainContext>
42 <<
"Creating swapchain context for Desktop platform...";
44 std::make_shared<DesktopSwapchainContext>(deviceContext, _window);
50 utility::graphic::ViewF view;
52 view.setClippingPlanes(1.0f, 4000.0f);
55 <<
"Setting up view for Desktop platform with viewport size: "
58 this->
getLogger().info() <<
"Created view for Desktop platform: " << view;
64std::vector<std::shared_ptr<utility::event::Event>>
67 this->
getLogger().info() <<
"Polling events for Desktop platform...";
68 _lastError = Error::Ok;
77 _lastError = Error::RuntimeError;
80 std::vector<std::shared_ptr<utility::event::Event>>
events;
84 <<
"Polling keyboard state for continuous movement...";
91 <<
"Processing keyboard events for Desktop platform...";
93 std::make_move_iterator(_keyboardEvents.begin()),
94 std::make_move_iterator(_keyboardEvents.end()));
96 _keyboardEvents.clear();
99 <<
"Processing mouse button events for Desktop platform...";
101 std::make_move_iterator(_mouseButtonEvents.begin()),
102 std::make_move_iterator(_mouseButtonEvents.end()));
105 _mouseButtonEvents.clear();
108 <<
"Processing mouse motion events for Desktop platform...";
110 std::make_move_iterator(_mouseMotionEvents.begin()),
111 std::make_move_iterator(_mouseMotionEvents.end()));
114 _mouseMotionEvents.clear();
117 <<
"Processing mouse wheel events for Desktop platform...";
119 std::make_move_iterator(_mouseWheelEvents.begin()),
120 std::make_move_iterator(_mouseWheelEvents.end()));
123 _mouseWheelEvents.clear();
126 <<
"Processing cursor enter/leave events for Desktop platform...";
128 std::make_move_iterator(_cursorEnterEvents.begin()),
129 std::make_move_iterator(_cursorEnterEvents.end()));
132 _cursorEnterEvents.clear();
135 <<
"Processing file drop events for Desktop platform...";
137 std::make_move_iterator(_fileDropEvents.begin()),
138 std::make_move_iterator(_fileDropEvents.end()));
141 _fileDropEvents.clear();
144 <<
"Processing text input events for Desktop platform...";
146 std::make_move_iterator(_textInputEvents.begin()),
147 std::make_move_iterator(_textInputEvents.end()));
150 _textInputEvents.clear();
155std::vector<std::string>
159 <<
"Getting required instance extensions for Desktop platform...";
168 if (enableValidationLayers ==
true) {
169 this->
getLogger().info() <<
"Validation layers are enabled. Adding "
170 "VK_EXT_DEBUG_UTILS_EXTENSION_NAME to "
171 "required instance extensions.";
179 this->
getLogger().info() <<
"Checking if Desktop window should close...";
183utility::event::KeyboardEvent::KeyCode
186 return static_cast<utility::event::KeyboardEvent::KeyCode
>(
glfwKey);
189utility::event::MouseButtonEvent::Button
193 <<
"Converting GLFW mouse button to event button...";
196 return utility::event::MouseButtonEvent::Button::Left;
198 return utility::event::MouseButtonEvent::Button::Right;
200 return utility::event::MouseButtonEvent::Button::Middle;
202 return utility::event::MouseButtonEvent::Button::X1;
204 return utility::event::MouseButtonEvent::Button::X2;
206 return utility::event::MouseButtonEvent::Button::Unknown;
210utility::event::KeyboardEvent::KeyModifiers
216 result |=
static_cast<std::uint16_t
>(
217 utility::event::KeyboardEvent::KeyModifiers::Shift);
220 result |=
static_cast<std::uint16_t
>(
221 utility::event::KeyboardEvent::KeyModifiers::Ctrl);
224 result |=
static_cast<std::uint16_t
>(
225 utility::event::KeyboardEvent::KeyModifiers::Alt);
228 result |=
static_cast<std::uint16_t
>(
229 utility::event::KeyboardEvent::KeyModifiers::Gui);
232 return static_cast<utility::event::KeyboardEvent::KeyModifiers
>(
result);
235utility::event::MouseMotionEvent::MousePosition
242 return convertCursorPosition(
xPos,
yPos);
245utility::event::MouseMotionEvent::MousePosition
267 return utility::event::MouseMotionEvent::MousePosition {
272std::vector<std::shared_ptr<utility::event::KeyboardEvent>>
275 std::vector<std::shared_ptr<utility::event::KeyboardEvent>>
events;
283 auto event = std::make_shared<utility::event::KeyboardEvent>();
284 event->setKeycode(convertGlfwKeyToKeyCode(
key));
285 event->setIsDownEvent(
true);
Abstract base class for Vulkan device backends.
static void updateViewForExtent(utility::graphic::ViewF &view, VkExtent2D extent)
Updates a view's viewport size and perspective for a new swapchain extent.
Represents the device context for the engine, managing Vulkan-related resources and operations.
Small result wrapper used by helpers that must return both a status and a value (e....