Skip to content

Commit c6f39b3

Browse files
first iteration - engine runs on Arena
1 parent 6a1b6f4 commit c6f39b3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1423
-1371
lines changed

Tetragrama/Components/DockspaceUIComponent.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ namespace Tetragrama::Components
144144
auto ctx = reinterpret_cast<EditorContext*>(ParentLayer->ParentContext);
145145
if (ctx->CurrentScenePtr && ctx->CurrentScenePtr->RenderScene->IsDrawDataDirty)
146146
{
147-
ctx->CurrentScenePtr->RenderScene->InitOrResetDrawBuffer(renderer->Device, renderer->RenderGraph.get(), renderer->AsyncLoader.get());
147+
ctx->CurrentScenePtr->RenderScene->InitOrResetDrawBuffer(renderer->Device, renderer->RenderGraph, renderer->AsyncLoader);
148148
}
149149
}
150150

Tetragrama/Components/LogUIComponent.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ namespace Tetragrama::Components
1616
void LogUIComponent::Initialize(Layers::ImguiLayer* parent, const char* name, bool visibility, bool closed)
1717
{
1818
UIComponent::Initialize(parent, name, visibility, closed);
19-
Logger::AddEventHandler(std::bind(&LogUIComponent::OnLog, this, std::placeholders::_1));
19+
// Logger::AddEventHandler(std::bind(&LogUIComponent::OnLog, this, std::placeholders::_1));
2020
}
2121

2222
void LogUIComponent::Update(ZEngine::Core::TimeStep dt) {}

Tetragrama/Editor.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ namespace Tetragrama
1717
{
1818
Editor::~Editor()
1919
{
20-
// ZEngine::Engine::Dispose();
20+
ZEngine::Engine::Dispose();
2121
}
2222

2323
void Editor::Initialize(ArenaAllocator* arena, const char* file)
2424
{
2525
Context = ZPushStruct(arena, EditorContext);
2626

27-
arena->CreateSubArena(ZMega(10), &(Context->Arena));
27+
arena->CreateSubArena(ZMega(50), &(Context->Arena));
2828

2929
Context->ConfigurationPtr = ZPushStructCtor(&(Context->Arena), EditorConfiguration);
3030
Context->CameraControllerPtr = ZPushStructCtor(&(Context->Arena), EditorCameraController);
@@ -59,12 +59,12 @@ namespace Tetragrama
5959

6060
Context->CameraControllerPtr->Initialize(&(Context->Arena), Window, 150.0, 0.f, 45.f);
6161

62-
// ZEngine::Engine::Initialize(arena, {}, Window);
62+
ZEngine::Engine::Initialize(arena, {}, Window);
6363
}
6464

6565
void Editor::Run()
6666
{
67-
// ZEngine::Engine::Run();
67+
ZEngine::Engine::Run();
6868
}
6969

7070
void EditorScene::Initialize(ZEngine::Core::Memory::ArenaAllocator* arena, const char* name)

Tetragrama/EntryPoint.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ int applicationEntryPoint(int argc, char* argv[])
1717

1818
CLI11_PARSE(app, argc, argv);
1919

20-
MemoryConfiguration config = {.DefaultSize = ZMega(15)};
20+
MemoryConfiguration config = {.DefaultSize = ZGiga(1)};
2121
MemoryManager manager;
2222
manager.Initialize(config);
2323
auto arena = &(manager.ArenaAllocator);
@@ -26,6 +26,7 @@ int applicationEntryPoint(int argc, char* argv[])
2626
editor->Initialize(arena, json_config_file.c_str());
2727
editor->Run();
2828

29+
editor->~Editor();
2930
manager.Shutdowm();
3031

3132
return 0;

Tetragrama/Inputs/Keyboard.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ namespace Tetragrama::Inputs
1111
Keyboard(const char* name = "keyboard_device") : ZEngine::Windows::Inputs::IDevice(name) {}
1212
~Keyboard() = default;
1313

14-
virtual bool IsKeyPressed(ZENGINE_KEYCODE key, const ZEngine::Helpers::Ref<ZEngine::Windows::CoreWindow>& window) const override
14+
virtual bool IsKeyPressed(ZENGINE_KEYCODE key, ZEngine::Windows::CoreWindow* const window) const override
1515
{
1616
auto state = glfwGetKey(reinterpret_cast<GLFWwindow*>(window->GetNativeWindow()), (int) key);
1717
return state == GLFW_PRESS;
1818
}
1919

20-
virtual bool IsKeyReleased(ZENGINE_KEYCODE key, const ZEngine::Helpers::Ref<ZEngine::Windows::CoreWindow>& window) const override
20+
virtual bool IsKeyReleased(ZENGINE_KEYCODE key, ZEngine::Windows::CoreWindow* const window) const override
2121
{
2222
auto state = glfwGetKey(reinterpret_cast<GLFWwindow*>(window->GetNativeWindow()), (int) key);
2323
return state == GLFW_RELEASE;

Tetragrama/Inputs/Mouse.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,19 @@ namespace Tetragrama::Inputs
1111
public:
1212
Mouse(const char* name = "mouse_device") : ZEngine::Windows::Inputs::IDevice(name) {}
1313

14-
virtual bool IsKeyPressed(ZENGINE_KEYCODE key, const ZEngine::Helpers::Ref<ZEngine::Windows::CoreWindow>& window) const override
14+
virtual bool IsKeyPressed(ZENGINE_KEYCODE key, ZEngine::Windows::CoreWindow* const window) const override
1515
{
1616

1717
auto state = glfwGetMouseButton(reinterpret_cast<GLFWwindow*>(window->GetNativeWindow()), (int) key);
1818
return state == GLFW_PRESS;
1919
}
2020

21-
virtual bool IsKeyReleased(ZENGINE_KEYCODE key, const ZEngine::Helpers::Ref<ZEngine::Windows::CoreWindow>& window) const override
21+
virtual bool IsKeyReleased(ZENGINE_KEYCODE key, ZEngine::Windows::CoreWindow* const window) const override
2222
{
2323
return !IsKeyPressed(key, window);
2424
}
2525

26-
std::array<double, 2> GetMousePosition(const ZEngine::Helpers::Ref<ZEngine::Windows::CoreWindow>& window) const
26+
std::array<double, 2> GetMousePosition(ZEngine::Windows::CoreWindow* const window) const
2727
{
2828
double x, y;
2929
glfwGetCursorPos(reinterpret_cast<GLFWwindow*>(window->GetNativeWindow()), &x, &y);

Tetragrama/Layers/ImguiLayer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,10 @@ namespace Tetragrama::Layers
2727

2828
void ImguiLayer::Initialize(ZEngine::Core::Memory::ArenaAllocator* arena)
2929
{
30-
arena->CreateSubArena(ZMega(5), &LayerArena);
30+
arena->CreateSubArena(ZMega(10), &LayerArena);
3131

3232
NodeHierarchies.init(&LayerArena, 10, 0);
33+
NodeToRender.init(&LayerArena, 10);
3334

3435
auto dockspace_cmp = ZPushStructCtor(&LayerArena, Components::DockspaceUIComponent);
3536
auto scene_cmp = ZPushStructCtor(&LayerArena, Components::SceneViewportUIComponent);
@@ -158,7 +159,6 @@ namespace Tetragrama::Layers
158159
int size = roots.size() + children.size() + siblings.size();
159160
if (NodeToRender.capacity() < size)
160161
{
161-
NodeToRender.reserve(size);
162162
}
163163

164164
for (auto r : roots)

ZEngine/ZEngine/Engine.cpp

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,25 @@
66

77
namespace ZEngine
88
{
9-
static bool s_request_terminate = false;
10-
static std::shared_mutex g_mutex = {};
11-
static ZRawPtr(Windows::CoreWindow) g_current_window = nullptr;
12-
static Helpers::Scope<Rendering::Renderers::GraphicRenderer> g_renderer = Helpers::CreateScope<Rendering::Renderers::GraphicRenderer>();
13-
static Helpers::Scope<Hardwares::VulkanDevice> g_device = Helpers::CreateScope<Hardwares::VulkanDevice>();
14-
static ZEngine::Core::Memory::ArenaAllocator g_engine_arena = {};
15-
16-
void Engine::Initialize(ZEngine::Core::Memory::ArenaAllocator* arena, const EngineConfiguration& engine_configuration, ZRawPtr(ZEngine::Windows::CoreWindow) const window)
9+
static bool s_request_terminate = false;
10+
static std::shared_mutex g_mutex = {};
11+
static ZRawPtr(Windows::CoreWindow) g_current_window = nullptr;
12+
static ZRawPtr(Rendering::Renderers::GraphicRenderer) g_renderer = nullptr;
13+
static ZRawPtr(Hardwares::VulkanDevice) g_device = nullptr;
14+
static ZEngine::Core::Memory::ArenaAllocator g_engine_arena = {};
15+
16+
void Engine::Initialize(ZEngine::Core::Memory::ArenaAllocator* arena, const EngineConfiguration& engine_configuration, ZRawPtr(ZEngine::Windows::CoreWindow) const window)
1717
{
18-
arena->CreateSubArena(ZMega(2), &g_engine_arena);
19-
2018
g_current_window = window;
21-
Logging::Logger::Initialize(engine_configuration.LoggerConfiguration);
22-
g_device->Initialize(g_current_window);
23-
g_renderer->Initialize(g_device.get());
19+
20+
arena->CreateSubArena(ZMega(800), &g_engine_arena);
21+
22+
g_device = ZPushStructCtor(&g_engine_arena, Hardwares::VulkanDevice);
23+
g_renderer = ZPushStructCtor(&g_engine_arena, Rendering::Renderers::GraphicRenderer);
24+
25+
Logging::Logger::Initialize(&g_engine_arena, engine_configuration.LoggerConfiguration);
26+
g_device->Initialize(&g_engine_arena, window);
27+
g_renderer->Initialize(g_device);
2428

2529
ZENGINE_CORE_INFO("Engine initialized")
2630
}
@@ -33,7 +37,6 @@ namespace ZEngine
3337
g_current_window->Deinitialize();
3438
}
3539
g_renderer->Deinitialize();
36-
g_renderer.reset();
3740

3841
g_device->Deinitialize();
3942
}
@@ -44,7 +47,7 @@ namespace ZEngine
4447

4548
Logging::Logger::Dispose();
4649
g_device->Dispose();
47-
g_device.reset();
50+
4851
ZENGINE_CORE_INFO("Engine destroyed")
4952
}
5053

@@ -93,7 +96,7 @@ namespace ZEngine
9396
auto buffer = g_device->GetCommandBuffer();
9497
{
9598

96-
g_current_window->Render(g_renderer.get(), buffer);
99+
g_current_window->Render(g_renderer, buffer);
97100

98101
g_renderer->ImguiRenderer->DrawFrame(g_device->CurrentFrameIndex, buffer);
99102
}
@@ -107,7 +110,7 @@ namespace ZEngine
107110
}
108111
}
109112

110-
Helpers::Ref<Windows::CoreWindow> Engine::GetWindow()
113+
Windows::CoreWindow* Engine::GetWindow()
111114
{
112115
std::shared_lock l(g_mutex);
113116
return g_current_window;

ZEngine/ZEngine/Engine.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ namespace ZEngine
88
{
99
struct Engine
1010
{
11-
static void Initialize(ZEngine::Core::Memory::ArenaAllocator* arena, const EngineConfiguration&, ZRawPtr(ZEngine::Windows::CoreWindow) const);
12-
static void Run();
13-
static Helpers::Ref<Windows::CoreWindow> GetWindow();
14-
static void Deinitialize();
15-
static void Dispose();
16-
static bool OnEngineClosed(Event::EngineClosedEvent&);
11+
static void Initialize(ZEngine::Core::Memory::ArenaAllocator* arena, const EngineConfiguration&, ZRawPtr(ZEngine::Windows::CoreWindow) const);
12+
static void Run();
13+
static Windows::CoreWindow* GetWindow();
14+
static void Deinitialize();
15+
static void Dispose();
16+
static bool OnEngineClosed(Event::EngineClosedEvent&);
1717

1818
private:
1919
Engine() = delete;

0 commit comments

Comments
 (0)