Skip to content

Commit ac8fcfa

Browse files
authored
Marking Methods with Async and Completed the MessengerRegister Macro (#290)
* messengerRegister * Marking Methods with Async * update readme
1 parent 3e1fa48 commit ac8fcfa

9 files changed

+95
-86
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Before building, make sure your setup is correct :
2020

2121
- Install Visual Studio 2019 or 2022 Community or Professional, make sure to add "Desktop development with C++".
2222
- Install [PowerShell Core](https://github.com/PowerShell/PowerShell/releases)
23-
- Install [Vulkan SDK](https://sdk.lunarg.com/sdk/download/1.3.250.1/windows/VulkanSDK-1.3.250.1-Installer.exe)
23+
- Install [Vulkan SDK](https://sdk.lunarg.com/sdk/download/1.3.250.1/windows/VulkanSDK-1.3.250.1-Installer.exe) (uncheck the GLM headers component when installing)
2424

2525
## Building
2626

Tetragrama/src/Components/InspectorViewUIComponent.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace Tetragrama::Components
2525
return false;
2626
}
2727

28-
std::future<void> InspectorViewUIComponent::SceneAvailableMessageHandler(Messengers::GenericMessage<ZEngine::Ref<ZEngine::Rendering::Scenes::GraphicScene>>& message)
28+
std::future<void> InspectorViewUIComponent::SceneAvailableMessageHandlerAsync(Messengers::GenericMessage<ZEngine::Ref<ZEngine::Rendering::Scenes::GraphicScene>>& message)
2929
{
3030
{
3131
std::unique_lock lock(m_mutex);
@@ -34,7 +34,7 @@ namespace Tetragrama::Components
3434
co_return;
3535
}
3636

37-
std::future<void> InspectorViewUIComponent::SceneEntitySelectedMessageHandler(Messengers::PointerValueMessage<ZEngine::Rendering::Entities::GraphicSceneEntity>& message)
37+
std::future<void> InspectorViewUIComponent::SceneEntitySelectedMessageHandlerAsync(Messengers::PointerValueMessage<ZEngine::Rendering::Entities::GraphicSceneEntity>& message)
3838
{
3939
{
4040
std::unique_lock lock(m_mutex);
@@ -43,7 +43,7 @@ namespace Tetragrama::Components
4343
co_return;
4444
}
4545

46-
std::future<void> InspectorViewUIComponent::SceneEntityUnSelectedMessageHandler(Messengers::EmptyMessage& message)
46+
std::future<void> InspectorViewUIComponent::SceneEntityUnSelectedMessageHandlerAsync(Messengers::EmptyMessage& message)
4747
{
4848
{
4949
std::unique_lock lock(m_mutex);
@@ -52,7 +52,7 @@ namespace Tetragrama::Components
5252
co_return;
5353
}
5454

55-
std::future<void> InspectorViewUIComponent::SceneEntityDeletedMessageHandler(Messengers::EmptyMessage&)
55+
std::future<void> InspectorViewUIComponent::SceneEntityDeletedMessageHandlerAsync(Messengers::EmptyMessage&)
5656
{
5757
{
5858
std::unique_lock lock(m_mutex);
@@ -61,7 +61,7 @@ namespace Tetragrama::Components
6161
co_return;
6262
}
6363

64-
std::future<void> InspectorViewUIComponent::RequestStartOrPauseRenderMessageHandler(Messengers::GenericMessage<bool>& message)
64+
std::future<void> InspectorViewUIComponent::RequestStartOrPauseRenderMessageHandlerAsync(Messengers::GenericMessage<bool>& message)
6565
{
6666
{
6767
std::unique_lock lock(m_mutex);

Tetragrama/src/Components/InspectorViewUIComponent.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ namespace Tetragrama::Components
1717
virtual void Render() override;
1818

1919
public:
20-
std::future<void> SceneAvailableMessageHandler(Messengers::GenericMessage<ZEngine::Ref<ZEngine::Rendering::Scenes::GraphicScene>>&);
21-
std::future<void> SceneEntitySelectedMessageHandler(Messengers::PointerValueMessage<ZEngine::Rendering::Entities::GraphicSceneEntity>&);
22-
std::future<void> SceneEntityUnSelectedMessageHandler(Messengers::EmptyMessage&);
23-
std::future<void> SceneEntityDeletedMessageHandler(Messengers::EmptyMessage&);
24-
std::future<void> RequestStartOrPauseRenderMessageHandler(Messengers::GenericMessage<bool>&);
20+
std::future<void> SceneAvailableMessageHandlerAsync(Messengers::GenericMessage<ZEngine::Ref<ZEngine::Rendering::Scenes::GraphicScene>>&);
21+
std::future<void> SceneEntitySelectedMessageHandlerAsync(Messengers::PointerValueMessage<ZEngine::Rendering::Entities::GraphicSceneEntity>&);
22+
std::future<void> SceneEntityUnSelectedMessageHandlerAsync(Messengers::EmptyMessage&);
23+
std::future<void> SceneEntityDeletedMessageHandlerAsync(Messengers::EmptyMessage&);
24+
std::future<void> RequestStartOrPauseRenderMessageHandlerAsync(Messengers::GenericMessage<bool>&);
2525

2626
protected:
2727
virtual bool OnUIComponentRaised(ZEngine::Components::UI::Event::UIComponentEvent&) override;

Tetragrama/src/Components/SceneViewportUIComponent.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,20 +117,20 @@ namespace Tetragrama::Components
117117
ImGui::PopStyleVar();
118118
}
119119

120-
std::future<void> SceneViewportUIComponent::SceneViewportClickedMessageHandler(Messengers::ArrayValueMessage<int, 2>& e)
120+
std::future<void> SceneViewportUIComponent::SceneViewportClickedMessageHandlerAsync(Messengers::ArrayValueMessage<int, 2>& e)
121121
{
122122
// Messengers::IMessenger::Send<ZEngine::Layers::Layer, Messengers::GenericMessage<std::pair<int, int>>>(
123123
// EDITOR_RENDER_LAYER_SCENE_REQUEST_SELECT_ENTITY_FROM_PIXEL, Messengers::GenericMessage<std::pair<int, int>>{e});
124124
co_return;
125125
}
126126

127-
std::future<void> SceneViewportUIComponent::SceneViewportFocusedMessageHandler(Messengers::GenericMessage<bool>& e)
127+
std::future<void> SceneViewportUIComponent::SceneViewportFocusedMessageHandlerAsync(Messengers::GenericMessage<bool>& e)
128128
{
129129
co_await Messengers::IMessenger::SendAsync<ZEngine::Layers::Layer, Messengers::GenericMessage<bool>>(
130130
EDITOR_RENDER_LAYER_SCENE_REQUEST_FOCUS, Messengers::GenericMessage<bool>{e});
131131
}
132132

133-
std::future<void> SceneViewportUIComponent::SceneViewportUnfocusedMessageHandler(Messengers::GenericMessage<bool>& e)
133+
std::future<void> SceneViewportUIComponent::SceneViewportUnfocusedMessageHandlerAsync(Messengers::GenericMessage<bool>& e)
134134
{
135135
co_await Messengers::IMessenger::SendAsync<ZEngine::Layers::Layer, Messengers::GenericMessage<bool>>(
136136
EDITOR_RENDER_LAYER_SCENE_REQUEST_UNFOCUS, Messengers::GenericMessage<bool>{e});

Tetragrama/src/Components/SceneViewportUIComponent.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ namespace Tetragrama::Components
2424
}
2525

2626
public:
27-
std::future<void> SceneViewportClickedMessageHandler(Messengers::ArrayValueMessage<int, 2>&);
28-
std::future<void> SceneViewportFocusedMessageHandler(Messengers::GenericMessage<bool>&);
29-
std::future<void> SceneViewportUnfocusedMessageHandler(Messengers::GenericMessage<bool>&);
27+
std::future<void> SceneViewportClickedMessageHandlerAsync(Messengers::ArrayValueMessage<int, 2>&);
28+
std::future<void> SceneViewportFocusedMessageHandlerAsync(Messengers::GenericMessage<bool>&);
29+
std::future<void> SceneViewportUnfocusedMessageHandlerAsync(Messengers::GenericMessage<bool>&);
3030

3131
private:
3232
bool m_is_window_focused{false};

Tetragrama/src/Editor.cpp

Lines changed: 53 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -35,55 +35,64 @@ namespace Tetragrama
3535
{
3636
ZEngine::Engine::Initialize(m_engine_configuration);
3737

38-
// Register components
39-
IMessenger::Register<ZEngine::Layers::Layer, GenericMessage<std::pair<float, float>>>(
40-
m_render_layer.get(), EDITOR_RENDER_LAYER_SCENE_REQUEST_RESIZE, [this](void* const message) -> std::future<void> {
41-
auto message_ptr = reinterpret_cast<GenericMessage<std::pair<float, float>>*>(message);
42-
return m_render_layer->SceneRequestResizeMessageHandler(*message_ptr);
43-
});
44-
45-
IMessenger::Register<ZEngine::Layers::Layer, GenericMessage<bool>>(
46-
m_render_layer.get(), EDITOR_RENDER_LAYER_SCENE_REQUEST_FOCUS, [this](void* const message) -> std::future<void> {
47-
auto message_ptr = reinterpret_cast<GenericMessage<bool>*>(message);
48-
return m_render_layer->SceneRequestFocusMessageHandler(*message_ptr);
49-
});
50-
51-
IMessenger::Register<ZEngine::Layers::Layer, GenericMessage<bool>>(
52-
m_render_layer.get(), EDITOR_RENDER_LAYER_SCENE_REQUEST_UNFOCUS, [this](void* const message) -> std::future<void> {
53-
auto message_ptr = reinterpret_cast<GenericMessage<bool>*>(message);
54-
return m_render_layer->SceneRequestUnfocusMessageHandler(*message_ptr);
55-
});
56-
57-
IMessenger::Register<ZEngine::Layers::Layer, GenericMessage<std::string>>(
58-
m_render_layer.get(), EDITOR_RENDER_LAYER_SCENE_REQUEST_SERIALIZATION, [this](void* const message) -> std::future<void> {
59-
auto message_ptr = reinterpret_cast<GenericMessage<std::string>*>(message);
60-
return m_render_layer->SceneRequestSerializationMessageHandler(*message_ptr);
61-
});
38+
using PairFloat = std::pair<float, float>;
39+
MESSENGER_REGISTER(
40+
ZEngine::Layers::Layer,
41+
GenericMessage<PairFloat>,
42+
EDITOR_RENDER_LAYER_SCENE_REQUEST_RESIZE,
43+
m_render_layer.get(),
44+
return m_render_layer->SceneRequestResizeMessageHandlerAsync(*message_ptr))
6245

63-
IMessenger::Register<ZEngine::Layers::Layer, Messengers::GenericMessage<std::string>>(
64-
m_render_layer.get(), EDITOR_RENDER_LAYER_SCENE_REQUEST_DESERIALIZATION, [this](void* const message) -> std::future<void> {
65-
auto message_ptr = reinterpret_cast<GenericMessage<std::string>*>(message);
66-
return m_render_layer->SceneRequestDeserializationMessageHandler(*message_ptr);
67-
});
46+
MESSENGER_REGISTER(
47+
ZEngine::Layers::Layer,
48+
GenericMessage<bool>,
49+
EDITOR_RENDER_LAYER_SCENE_REQUEST_FOCUS,
50+
m_render_layer.get(),
51+
return m_render_layer->SceneRequestFocusMessageHandlerAsync(*message_ptr))
6852

69-
IMessenger::Register<ZEngine::Layers::Layer, EmptyMessage>(
70-
m_render_layer.get(), EDITOR_RENDER_LAYER_SCENE_REQUEST_NEWSCENE, [this](void* const message) -> std::future<void> {
71-
auto message_ptr = reinterpret_cast<EmptyMessage*>(message);
72-
return m_render_layer->SceneRequestNewSceneMessageHandler(*message_ptr);
73-
});
53+
MESSENGER_REGISTER(
54+
ZEngine::Layers::Layer,
55+
GenericMessage<bool>,
56+
EDITOR_RENDER_LAYER_SCENE_REQUEST_UNFOCUS,
57+
m_render_layer.get(),
58+
return m_render_layer->SceneRequestUnfocusMessageHandlerAsync(*message_ptr))
7459

75-
IMessenger::Register<ZEngine::Layers::Layer, GenericMessage<std::string>>(
76-
m_render_layer.get(), EDITOR_RENDER_LAYER_SCENE_REQUEST_OPENSCENE, [this](void* const message) -> std::future<void> {
77-
auto message_ptr = reinterpret_cast<GenericMessage<std::string>*>(message);
78-
return m_render_layer->SceneRequestOpenSceneMessageHandler(*message_ptr);
79-
});
60+
MESSENGER_REGISTER(
61+
ZEngine::Layers::Layer,
62+
GenericMessage<std::string>,
63+
EDITOR_RENDER_LAYER_SCENE_REQUEST_SERIALIZATION,
64+
m_render_layer.get(),
65+
return m_render_layer->SceneRequestSerializationMessageHandlerAsync(*message_ptr))
66+
67+
MESSENGER_REGISTER(
68+
ZEngine::Layers::Layer,
69+
GenericMessage<std::string>,
70+
EDITOR_RENDER_LAYER_SCENE_REQUEST_DESERIALIZATION,
71+
m_render_layer.get(),
72+
return m_render_layer->SceneRequestDeserializationMessageHandlerAsync(*message_ptr))
8073

81-
IMessenger::Register<ZEngine::Layers::Layer, GenericMessage<std::pair<int, int>>>(
82-
m_render_layer.get(), EDITOR_RENDER_LAYER_SCENE_REQUEST_SELECT_ENTITY_FROM_PIXEL, [this](void* const message) -> std::future<void> {
83-
auto message_ptr = reinterpret_cast<GenericMessage<std::pair<int, int>>*>(message);
84-
return m_render_layer->SceneRequestSelectEntityFromPixelMessageHandler(*message_ptr);
85-
});
74+
MESSENGER_REGISTER(
75+
ZEngine::Layers::Layer,
76+
EmptyMessage,
77+
EDITOR_RENDER_LAYER_SCENE_REQUEST_NEWSCENE,
78+
m_render_layer.get(),
79+
return m_render_layer->SceneRequestNewSceneMessageHandlerAsync(*message_ptr))
8680

81+
MESSENGER_REGISTER(
82+
ZEngine::Layers::Layer,
83+
GenericMessage<std::string>,
84+
EDITOR_RENDER_LAYER_SCENE_REQUEST_OPENSCENE,
85+
m_render_layer.get(),
86+
return m_render_layer->SceneRequestOpenSceneMessageHandlerAsync(*message_ptr))
87+
88+
using PairInt = std::pair<int, int>;
89+
MESSENGER_REGISTER(
90+
ZEngine::Layers::Layer,
91+
GenericMessage<PairInt>,
92+
EDITOR_RENDER_LAYER_SCENE_REQUEST_SELECT_ENTITY_FROM_PIXEL,
93+
m_render_layer.get(),
94+
return m_render_layer->SceneRequestSelectEntityFromPixelMessageHandlerAsync(*message_ptr))
95+
8796
MESSENGER_REGISTER(
8897
ZEngine::Layers::Layer,
8998
GenericMessage<std::string>,

Tetragrama/src/Layers/RenderLayer.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ namespace Tetragrama::Layers
5353

5454
}
5555

56-
std::future<void> RenderLayer::SceneRequestResizeMessageHandler(Messengers::GenericMessage<std::pair<float, float>>& message)
56+
std::future<void> RenderLayer::SceneRequestResizeMessageHandlerAsync(Messengers::GenericMessage<std::pair<float, float>>& message)
5757
{
5858
std::unique_lock lock(m_message_handler_mutex);
5959

@@ -62,21 +62,21 @@ namespace Tetragrama::Layers
6262
co_return;
6363
}
6464

65-
std::future<void> RenderLayer::SceneRequestFocusMessageHandler(Messengers::GenericMessage<bool>& message)
65+
std::future<void> RenderLayer::SceneRequestFocusMessageHandlerAsync(Messengers::GenericMessage<bool>& message)
6666
{
6767
// std::unique_lock lock(m_message_handler_mutex);
6868
// GraphicScene::SetShouldReactToEvent(message.GetValue());
6969
co_return;
7070
}
7171

72-
std::future<void> RenderLayer::SceneRequestUnfocusMessageHandler(Messengers::GenericMessage<bool>& message)
72+
std::future<void> RenderLayer::SceneRequestUnfocusMessageHandlerAsync(Messengers::GenericMessage<bool>& message)
7373
{
7474
// std::unique_lock lock(m_message_handler_mutex);
7575
// GraphicScene::SetShouldReactToEvent(message.GetValue());
7676
co_return;
7777
}
7878

79-
std::future<void> RenderLayer::SceneRequestSerializationMessageHandler(Messengers::GenericMessage<std::string>& message)
79+
std::future<void> RenderLayer::SceneRequestSerializationMessageHandlerAsync(Messengers::GenericMessage<std::string>& message)
8080
{
8181
// std::unique_lock lock(m_message_handler_mutex);
8282
//// Todo: We need to replace this whole part by using system FileDialog API
@@ -103,7 +103,7 @@ namespace Tetragrama::Layers
103103
co_return;
104104
}
105105

106-
std::future<void> RenderLayer::SceneRequestDeserializationMessageHandler(Messengers::GenericMessage<std::string>& message)
106+
std::future<void> RenderLayer::SceneRequestDeserializationMessageHandlerAsync(Messengers::GenericMessage<std::string>& message)
107107
{
108108
//{
109109
// std::unique_lock lock(m_message_handler_mutex);
@@ -124,7 +124,7 @@ namespace Tetragrama::Layers
124124
co_return;
125125
}
126126

127-
std::future<void> RenderLayer::SceneRequestNewSceneMessageHandler(Messengers::EmptyMessage& message)
127+
std::future<void> RenderLayer::SceneRequestNewSceneMessageHandlerAsync(Messengers::EmptyMessage& message)
128128
{
129129
//{
130130
// std::unique_lock lock(m_message_handler_mutex);
@@ -140,7 +140,7 @@ namespace Tetragrama::Layers
140140
co_return;
141141
}
142142

143-
std::future<void> RenderLayer::SceneRequestOpenSceneMessageHandler(Messengers::GenericMessage<std::string>& message)
143+
std::future<void> RenderLayer::SceneRequestOpenSceneMessageHandlerAsync(Messengers::GenericMessage<std::string>& message)
144144
{
145145
//{
146146
// std::unique_lock lock(m_message_handler_mutex);
@@ -162,7 +162,7 @@ namespace Tetragrama::Layers
162162
co_return co_await GraphicScene::ImportAssetAsync(value);
163163
}
164164

165-
std::future<void> RenderLayer::SceneRequestSelectEntityFromPixelMessageHandler(Messengers::GenericMessage<std::pair<int, int>>& mouse_position)
165+
std::future<void> RenderLayer::SceneRequestSelectEntityFromPixelMessageHandlerAsync(Messengers::GenericMessage<std::pair<int, int>>& mouse_position)
166166
{
167167
// const auto& value = mouse_position.GetValue();
168168
// auto entity = m_scene->GetEntity(value.first, value.second);

Tetragrama/src/Layers/RenderLayer.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,17 @@ namespace Tetragrama::Layers
2828
virtual bool OnEvent(ZEngine::Event::CoreEvent& e) override;
2929

3030
public:
31-
std::future<void> SceneRequestResizeMessageHandler(Messengers::GenericMessage<std::pair<float, float>>&);
32-
std::future<void> SceneRequestFocusMessageHandler(Messengers::GenericMessage<bool>&);
33-
std::future<void> SceneRequestUnfocusMessageHandler(Messengers::GenericMessage<bool>&);
34-
std::future<void> SceneRequestSerializationMessageHandler(Messengers::GenericMessage<std::string>&);
35-
std::future<void> SceneRequestDeserializationMessageHandler(Messengers::GenericMessage<std::string>&);
36-
37-
std::future<void> SceneRequestNewSceneMessageHandler(Messengers::EmptyMessage&);
38-
std::future<void> SceneRequestOpenSceneMessageHandler(Messengers::GenericMessage<std::string>&);
31+
std::future<void> SceneRequestResizeMessageHandlerAsync(Messengers::GenericMessage<std::pair<float, float>>&);
32+
std::future<void> SceneRequestFocusMessageHandlerAsync(Messengers::GenericMessage<bool>&);
33+
std::future<void> SceneRequestUnfocusMessageHandlerAsync(Messengers::GenericMessage<bool>&);
34+
std::future<void> SceneRequestSerializationMessageHandlerAsync(Messengers::GenericMessage<std::string>&);
35+
std::future<void> SceneRequestDeserializationMessageHandlerAsync(Messengers::GenericMessage<std::string>&);
36+
37+
std::future<void> SceneRequestNewSceneMessageHandlerAsync(Messengers::EmptyMessage&);
38+
std::future<void> SceneRequestOpenSceneMessageHandlerAsync(Messengers::GenericMessage<std::string>&);
3939
std::future<void> SceneRequestImportAssetModelAsync(Messengers::GenericMessage<std::string>&);
4040

41-
std::future<void> SceneRequestSelectEntityFromPixelMessageHandler(Messengers::GenericMessage<std::pair<int, int>>&);
41+
std::future<void> SceneRequestSelectEntityFromPixelMessageHandlerAsync(Messengers::GenericMessage<std::pair<int, int>>&);
4242

4343
private:
4444
ZEngine::Ref<ZEngine::Serializers::GraphicSceneSerializer> m_scene_serializer;

0 commit comments

Comments
 (0)