Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UI Refactoring #64

Merged
merged 40 commits into from
Jan 19, 2025
Merged
Changes from 1 commit
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
88b077a
Feat: Roboto font
brenocq Aug 4, 2023
35dd8e9
Merge branch 'dev' into ui-redesign
brenocq Dec 30, 2023
9265138
Refactor: Noto Sans and UI colors
brenocq Jan 2, 2024
d04ccf7
Refactor: ImGui style
brenocq Jan 2, 2024
06cb8e3
Feat: Topbar Atta logo
brenocq Jan 3, 2024
40a0d8e
Feat: Starting grid pipeline
brenocq Jan 3, 2024
e6813b5
Feat: Infinite world grid
brenocq Jan 5, 2024
7c5a8de
Feat: Destroy world grid mesh
brenocq Jan 5, 2024
85a820e
Refactor: Starting widget gizmo
brenocq Mar 3, 2024
d881747
Fix: Viewport compilation
brenocq Jun 12, 2024
c8de137
Fix: Crash when vulkan not supported
brenocq Jun 24, 2024
c79aa8a
Merge branch 'dev' into ui-redesign
brenocq Jan 16, 2025
afba14c
Chore(UI): Upgrade ImGui to version v1.91.7
brenocq Jan 16, 2025
23fac49
Feat(UI): ImPlot3D integration
brenocq Jan 16, 2025
e07a76e
Refactor(UI): ImGui style/colors
brenocq Jan 16, 2025
af97896
Chore: Use ImPlot3D main branch
brenocq Jan 16, 2025
22cc26e
Refactor(UI): ImGui grab rounding
brenocq Jan 16, 2025
dee8723
Chore: Fix web build
brenocq Jan 18, 2025
a0b2467
Refactor: UI colors
brenocq Jan 18, 2025
674a8bc
Chore: Move editor and widgets files
brenocq Jan 18, 2025
9fb1abc
Chore: Move windows files
brenocq Jan 18, 2025
de0611e
Chore: Move module windows files
brenocq Jan 18, 2025
52aa7fd
Chore: Move window file
brenocq Jan 18, 2025
67fccc8
Refactor: Move docking setup to editor class
brenocq Jan 18, 2025
15276bb
Chore: Move time profiler tool to windows folder
brenocq Jan 18, 2025
61ebe80
Chore: Move top/tool bars to panels folder
brenocq Jan 18, 2025
5a7e322
Chore: Move drawers files
brenocq Jan 18, 2025
3c94830
Refactor: Move viewports to UI module
brenocq Jan 19, 2025
25c7249
Feat: Render main viewport
brenocq Jan 19, 2025
b397396
Feat: Create viewports
brenocq Jan 19, 2025
3a76b81
Fix: Remove viewport
brenocq Jan 19, 2025
38d70c9
Fix: Make sure new viewports are docked
brenocq Jan 19, 2025
7fe0be0
Chore: Generate compile commands
brenocq Jan 19, 2025
a8676f0
Fix: Show viewport modals
brenocq Jan 19, 2025
47fb44a
Merge branch 'ui-redesign' of github.com:brenocq/atta into ui-redesign
brenocq Jan 19, 2025
ff49bfe
Refactor: File viewport gfx to ui
brenocq Jan 19, 2025
d74f3d8
Fix: Viewport entity click
brenocq Jan 19, 2025
5edf760
Feat: Show gizmo for selected entity
brenocq Jan 19, 2025
a4ac94f
Fix: Guizmo interaction
brenocq Jan 19, 2025
d1ead43
Chore: Update resources link
brenocq Jan 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Feat: Destroy world grid mesh
brenocq committed Jan 5, 2024

Verified

This commit was signed with the committer’s verified signature.
electrovir electrovir
commit 7c5a8de345894c274197de4a87c972de90e1abdb
22 changes: 22 additions & 0 deletions src/atta/event/events/meshDestroy.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
//--------------------------------------------------
// Atta Event Module
// meshDestroy.h
// Date: 2024-01-05
// By Breno Cunha Queiroz
//--------------------------------------------------
#ifndef ATTA_EVENT_EVENTS_MESH_DESTROY_H
#define ATTA_EVENT_EVENTS_MESH_DESTROY_H
#include <atta/event/event.h>

namespace atta::event {

class MeshDestroy : public EventTyped<SID("MeshDestroy")> {
public:
MeshDestroy(StringId sid_) : sid(sid_) {}

const StringId sid;
};

} // namespace atta::event

#endif // ATTA_EVENT_EVENTS_MESH_DESTROY_H
11 changes: 11 additions & 0 deletions src/atta/graphics/manager.cpp
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@

#include <atta/event/events/imageLoad.h>
#include <atta/event/events/imageUpdate.h>
#include <atta/event/events/meshDestroy.h>
#include <atta/event/events/meshLoad.h>
#include <atta/event/events/meshUpdate.h>
#include <atta/event/interface.h>
@@ -79,6 +80,7 @@ void Manager::startUpImpl() {
//----- Resource sync -----//
event::subscribe<event::MeshLoad>(BIND_EVENT_FUNC(Manager::onMeshLoadEvent));
event::subscribe<event::MeshUpdate>(BIND_EVENT_FUNC(Manager::onMeshUpdateEvent));
event::subscribe<event::MeshDestroy>(BIND_EVENT_FUNC(Manager::onMeshDestroyEvent));
event::subscribe<event::ImageLoad>(BIND_EVENT_FUNC(Manager::onImageLoadEvent));
event::subscribe<event::ImageUpdate>(BIND_EVENT_FUNC(Manager::onImageUpdateEvent));
syncResources();
@@ -93,6 +95,7 @@ void Manager::startUpImpl() {
void Manager::shutDownImpl() {
event::unsubscribe<event::MeshLoad>(BIND_EVENT_FUNC(Manager::onMeshLoadEvent));
event::unsubscribe<event::MeshUpdate>(BIND_EVENT_FUNC(Manager::onMeshUpdateEvent));
event::unsubscribe<event::MeshDestroy>(BIND_EVENT_FUNC(Manager::onMeshDestroyEvent));
event::unsubscribe<event::ImageLoad>(BIND_EVENT_FUNC(Manager::onImageLoadEvent));
event::unsubscribe<event::ImageUpdate>(BIND_EVENT_FUNC(Manager::onImageUpdateEvent));

@@ -372,6 +375,14 @@ void Manager::onMeshUpdateEvent(event::Event& event) {
LOG_WARN("gfx::Manager", "Can not update mesh [w]$0[] that was not created", e.sid);
}

void Manager::onMeshDestroyEvent(event::Event& event) {
event::MeshDestroy& e = reinterpret_cast<event::MeshDestroy&>(event);
if (_meshes.find(e.sid) != _meshes.end())
_meshes[e.sid].reset();
else
LOG_WARN("gfx::Manager", "Can not destroy mesh [w]$0[] that was not created", e.sid);
}

void Manager::onImageLoadEvent(event::Event& event) {
event::ImageLoad& e = reinterpret_cast<event::ImageLoad&>(event);

1 change: 1 addition & 0 deletions src/atta/graphics/manager.h
Original file line number Diff line number Diff line change
@@ -88,6 +88,7 @@ class Manager final {
void syncResources();
void onMeshLoadEvent(event::Event& event);
void onMeshUpdateEvent(event::Event& event);
void onMeshDestroyEvent(event::Event& event);
void onImageLoadEvent(event::Event& event);
void onImageUpdateEvent(event::Event& event);
void createMesh(StringId sid);
5 changes: 1 addition & 4 deletions src/atta/graphics/renderers/common/gridPipeline.cpp
Original file line number Diff line number Diff line change
@@ -22,7 +22,6 @@ GridPipeline::GridPipeline(std::shared_ptr<RenderPass> renderPass) : _numLines(0

// Create line mesh
_gridMeshName = "atta::gfx::GridPipeline[" + std::to_string(_gridId++) + "]";
LOG_DEBUG("GridPipeline", "Mesh id $0", _gridMeshName);
res::Mesh::CreateInfo meshInfo{};
uint8_t* data = (uint8_t*)_lines.data();
size_t size = _lines.size() * sizeof(Line);
@@ -33,9 +32,7 @@ GridPipeline::GridPipeline(std::shared_ptr<RenderPass> renderPass) : _numLines(0
res::create<res::Mesh>(_gridMeshName, meshInfo);
}

GridPipeline::~GridPipeline() {
// TODO Delete grid
}
GridPipeline::~GridPipeline() { res::destroy<res::Mesh>(_gridMeshName); }

void GridPipeline::update(std::shared_ptr<Camera> camera) {
// Update grid
9 changes: 5 additions & 4 deletions src/atta/graphics/renderers/fastRenderer.cpp
Original file line number Diff line number Diff line change
@@ -69,13 +69,13 @@ void FastRenderer::render(std::shared_ptr<Camera> camera) {
return imageGroup;
});

// Update grid data
_gridPipeline->update(camera);

// Update drawer data
if (_renderDrawer)
_drawerPipeline->update();

// Update grid data
_gridPipeline->update(camera);

// Render
_renderQueue->begin();
{
@@ -115,9 +115,10 @@ void FastRenderer::render(std::shared_ptr<Camera> camera) {
}
_geometryPipeline->end();

_gridPipeline->render(camera);

if (_renderDrawer)
_drawerPipeline->render(camera);
_gridPipeline->render(camera);
}
_renderPass->end();
}
8 changes: 7 additions & 1 deletion src/atta/graphics/renderers/pbrRenderer.cpp
Original file line number Diff line number Diff line change
@@ -33,7 +33,7 @@ PbrRenderer::PbrRenderer() : Renderer("PbrRenderer"), _firstRender(true), _wasRe
{
// Framebuffer
Framebuffer::CreateInfo framebufferInfo{};
framebufferInfo.attachments.push_back({Image::Format::RGB});
framebufferInfo.attachments.push_back({Image::Format::RGBA});
framebufferInfo.attachments.push_back({Image::Format::DEPTH24_STENCIL8});
_width = framebufferInfo.width = 500;
_height = framebufferInfo.height = 500;
@@ -56,6 +56,7 @@ PbrRenderer::PbrRenderer() : Renderer("PbrRenderer"), _firstRender(true), _wasRe

//---------- Common pipelines ----------//
//_selectedPipeline = std::make_unique<SelectedPipeline>(_geometryRenderPass);
_gridPipeline = std::make_unique<GridPipeline>(_geometryRenderPass);
_drawerPipeline = std::make_unique<DrawerPipeline>(_geometryRenderPass);

////---------- Create background shader ----------//
@@ -299,6 +300,9 @@ void PbrRenderer::geometryPass(std::shared_ptr<Camera> camera) {
return imageGroup;
});

// Update grid data
_gridPipeline->update(camera);

// Update drawer data
if (_renderDrawer)
_drawerPipeline->update();
@@ -405,6 +409,8 @@ void PbrRenderer::geometryPass(std::shared_ptr<Camera> camera) {
}
_geometryPipeline->end();

_gridPipeline->render(camera);

if (_renderDrawer)
_drawerPipeline->render(camera);
}
4 changes: 3 additions & 1 deletion src/atta/graphics/renderers/pbrRenderer.h
Original file line number Diff line number Diff line change
@@ -10,6 +10,7 @@
#include <atta/graphics/image.h>
#include <atta/graphics/pipeline.h>
#include <atta/graphics/renderers/common/drawerPipeline.h>
#include <atta/graphics/renderers/common/gridPipeline.h>
#include <atta/graphics/renderers/common/selectedPipeline.h>
#include <atta/graphics/renderers/renderer.h>

@@ -37,8 +38,9 @@ class PbrRenderer final : public Renderer {
std::shared_ptr<RenderQueue> _renderQueue;
std::shared_ptr<RenderPass> _geometryRenderPass;
std::shared_ptr<Pipeline> _geometryPipeline;
std::unique_ptr<SelectedPipeline> _selectedPipeline;
std::unique_ptr<DrawerPipeline> _drawerPipeline;
std::unique_ptr<GridPipeline> _gridPipeline;
std::unique_ptr<SelectedPipeline> _selectedPipeline;

std::shared_ptr<Shader> _backgroundShader;
bool _firstRender;
8 changes: 7 additions & 1 deletion src/atta/graphics/renderers/phongRenderer.cpp
Original file line number Diff line number Diff line change
@@ -48,8 +48,9 @@ PhongRenderer::PhongRenderer() : Renderer("PhongRenderer"), _wasResized(false) {
_geometryPipeline = graphics::create<Pipeline>(pipelineInfo);

//---------- Common pipelines ----------//
_selectedPipeline = std::make_unique<SelectedPipeline>(_renderPass);
_drawerPipeline = std::make_unique<DrawerPipeline>(_renderPass);
_gridPipeline = std::make_unique<GridPipeline>(_renderPass);
_selectedPipeline = std::make_unique<SelectedPipeline>(_renderPass);
}

PhongRenderer::~PhongRenderer() {}
@@ -75,6 +76,9 @@ void PhongRenderer::render(std::shared_ptr<Camera> camera) {
return imageGroup;
});

// Update grid data
_gridPipeline->update(camera);

// Update drawer data
if (_renderDrawer)
_drawerPipeline->update();
@@ -158,6 +162,8 @@ void PhongRenderer::render(std::shared_ptr<Camera> camera) {
}
_geometryPipeline->end();

_gridPipeline->render(camera);

if (_renderDrawer)
_drawerPipeline->render(camera);
}
4 changes: 3 additions & 1 deletion src/atta/graphics/renderers/phongRenderer.h
Original file line number Diff line number Diff line change
@@ -10,6 +10,7 @@
#include <atta/graphics/pipeline.h>
#include <atta/graphics/renderPass.h>
#include <atta/graphics/renderers/common/drawerPipeline.h>
#include <atta/graphics/renderers/common/gridPipeline.h>
#include <atta/graphics/renderers/common/selectedPipeline.h>
#include <atta/graphics/renderers/renderer.h>

@@ -30,8 +31,9 @@ class PhongRenderer final : public Renderer {
std::shared_ptr<RenderQueue> _renderQueue;
std::shared_ptr<RenderPass> _renderPass;
std::shared_ptr<Pipeline> _geometryPipeline;
std::unique_ptr<SelectedPipeline> _selectedPipeline;
std::unique_ptr<DrawerPipeline> _drawerPipeline;
std::unique_ptr<GridPipeline> _gridPipeline;
std::unique_ptr<SelectedPipeline> _selectedPipeline;

bool _wasResized;
};
2 changes: 0 additions & 2 deletions src/atta/graphics/shader.cpp
Original file line number Diff line number Diff line change
@@ -50,8 +50,6 @@ const BufferLayout& Shader::getPerFrameImageLayout() const { return _perFrameIma
const BufferLayout& Shader::getPerDrawImageLayout() const { return _perDrawImageLayout; }

void Shader::processASL() {
LOG_DEBUG("gfx::Shader", "Preprocess ASL: [w]$0", _file.string());

// Remove comments
_aslCode = removeComments(_aslCode);

6 changes: 5 additions & 1 deletion src/atta/resource/manager.cpp
Original file line number Diff line number Diff line change
@@ -11,6 +11,7 @@
#include <atta/event/events/materialCreate.h>
#include <atta/event/events/materialDestroy.h>
#include <atta/event/events/materialUpdate.h>
#include <atta/event/events/meshDestroy.h>
#include <atta/event/events/meshLoad.h>
#include <atta/event/events/projectOpen.h>
#include <atta/file/manager.h>
@@ -96,7 +97,10 @@ void Manager::createLoadEvent<Material>(Material* resource, StringId sid) {
}

template <>
void Manager::createDestroyEvent<Mesh>(StringId sid) {}
void Manager::createDestroyEvent<Mesh>(StringId sid) {
event::MeshDestroy e(sid);
event::publish(e);
}
template <>
void Manager::createDestroyEvent<Image>(StringId sid) {}
template <>