Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
debcb5c
feat: Video component + system
Sauterelle57 Sep 7, 2025
afcea7c
fix: compilation
Sauterelle57 Sep 7, 2025
451a3f0
fix: crash when asset manager is not render
Sauterelle57 Sep 8, 2025
027b0fe
fix: errors messages + add test video
Sauterelle57 Sep 8, 2025
837dd9e
fix: error message and add debug for video system
Sauterelle57 Sep 8, 2025
204bbb5
feat: working video component + system
Sauterelle57 Sep 9, 2025
410e8cc
fix: code style + norm
Sauterelle57 Sep 10, 2025
357233b
fix: play video only if scene is played
Sauterelle57 Sep 10, 2025
ae5f558
fix: Load first frame of video
Sauterelle57 Sep 11, 2025
9d55f37
feat(nexo-vdeo): shortcut to play and pause game sim
ThomasParenteau Sep 11, 2025
1f47f72
fix: clean resources folder + fix cube texture indices
Sauterelle57 Sep 11, 2025
4c3ee28
feat: add example scenes
Sauterelle57 Sep 12, 2025
94154ff
feat(demo/scenes): add moving lights
Sauterelle57 Sep 12, 2025
ef76225
feat(demo/scenes): add all scene
Sauterelle57 Sep 12, 2025
04b2350
feat(keyframe-video): add video keyframe hendling with shortcuts
ThomasParenteau Sep 11, 2025
facc075
feat(keyframe-video): bool for show toolbar
ThomasParenteau Sep 12, 2025
d8af7e3
fix(demo): init cpp scene
ThomasParenteau Sep 12, 2025
8ec6e27
fix(demo): init scene
ThomasParenteau Sep 12, 2025
d327ea0
feat(demo): accurate keyframe for warmup pres
Sauterelle57 Sep 12, 2025
55a94c6
feat(demo): camera in front of the video
Sauterelle57 Sep 12, 2025
a0b41de
feat(demo): physics ball spawn by pressing L
Sauterelle57 Sep 12, 2025
3b9f3e8
fix(demo): placement of light scripting scene
Sauterelle57 Sep 12, 2025
f223a05
fix(demo/scenes): code style + sonar / clang tidy errors and warnings…
Sauterelle57 Sep 16, 2025
e27d88d
fix(demo/scenes): code style + sonar / clang tidy errors and warnings…
Sauterelle57 Sep 17, 2025
5b6b375
fix(demo/scenes): code style + sonar + doc + clang tidy errors and wa…
Sauterelle57 Sep 17, 2025
4028006
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 17, 2025
f56218f
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 17, 2025
5c5ef43
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 17, 2025
44f720c
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 17, 2025
cfffdeb
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 17, 2025
6aa6628
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 17, 2025
4d2602a
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 17, 2025
2837e22
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 17, 2025
bcfceac
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 17, 2025
76fc5bf
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 17, 2025
c1bb9bc
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 17, 2025
59a7b94
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 17, 2025
609f8a5
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 17, 2025
418407f
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 17, 2025
1d7160a
fix(demo/scenes): compilation on Windows
Sauterelle57 Sep 17, 2025
67d8bdd
fix(demo/scenes): compilation on Windows
Sauterelle57 Sep 17, 2025
aa7dcdd
ci(demo/scenes): fix compilation on Ubuntu CI
Thyodas Sep 18, 2025
6d8dbce
fix(demo/scenes): include in FileSystem.cpp needed for Linux
Sauterelle57 Sep 26, 2025
1a4d02d
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 26, 2025
5270eca
fix(demo/scenes): include in FileSystem.cpp needed for Linux
Sauterelle57 Sep 26, 2025
0c272ce
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 26, 2025
faadd79
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 28, 2025
0bb267e
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 28, 2025
050f7e6
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 28, 2025
08d9627
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 28, 2025
3db2970
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 28, 2025
e7176ee
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 28, 2025
31e57d8
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 29, 2025
2804182
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Sep 29, 2025
68a7b6a
fix(demo/scenes): compilation on ubuntu
Sauterelle57 Oct 2, 2025
4281a7a
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Oct 3, 2025
6a57b6d
fix(demo/scenes): clean files + code style + sonar errors + documenta…
Sauterelle57 Oct 3, 2025
ca90fa2
fix(sonar-errors): clean files + fix sonar issues
Sauterelle57 Oct 10, 2025
bbdac15
fix(sonar-errors): compilation on ubuntu
Sauterelle57 Oct 10, 2025
813d719
fix(sonar-errors): compilation on ubuntu
Sauterelle57 Oct 10, 2025
985d965
fix(sonar-errors): compilation on ubuntu
Sauterelle57 Oct 10, 2025
f3b2fe3
fix(sonar-errors): compilation on ubuntu and windows
Sauterelle57 Oct 12, 2025
4024a68
fix(sonar-errors): warnings
Sauterelle57 Oct 16, 2025
a012df6
fix(sonar-errors): compilation
Sauterelle57 Oct 17, 2025
bbc4fa4
fix(sonar-errors): security hotspot
Sauterelle57 Oct 17, 2025
4869c8e
fix(sonar-errors): add libltdl-dev in package of github action workflow
Sauterelle57 Oct 26, 2025
92140a3
feat: physics inscpector
ThomasParenteau Nov 6, 2025
94b9284
tests(physics-inspector): fix tests
iMeaNz Feb 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,8 @@ jobs:
libxcb-icccm4-dev libxcb-keysyms1-dev libxcb-dri2-0-dev libxcb-dri3-dev
libxcb-glx0-dev libx11-xcb-dev libglu1-mesa-dev
libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
libegl1-mesa-dev mono-complete
version: 1.0
libegl1-mesa-dev mono-complete libxtst-dev libltdl-dev
version: 1.1
execute_install_scripts: true

- name: Install .NET SDK 9.0
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@ jobs:
libxcb-icccm4-dev libxcb-keysyms1-dev libxcb-dri2-0-dev libxcb-dri3-dev
libxcb-glx0-dev libx11-xcb-dev libglu1-mesa-dev
libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
libegl1-mesa-dev mono-complete
version: 1.0
libegl1-mesa-dev mono-complete libxtst-dev libltdl-dev
version: 1.1
execute_install_scripts: true

- name: Install .NET SDK 9.0
Expand Down
15 changes: 8 additions & 7 deletions common/Logger.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,16 @@ namespace nexo {

inline std::string toString(const LogLevel level)
{
using enum LogLevel;
switch (level)
{
case LogLevel::FATAL: return "FATAL";
case LogLevel::ERR: return "ERROR";
case LogLevel::WARN: return "WARN";
case LogLevel::INFO: return "INFO";
case LogLevel::USER: return "USER";
case LogLevel::DEBUG: return "DEBUG";
case LogLevel::DEV: return "DEV";
case FATAL: return "FATAL";
case ERR: return "ERROR";
case WARN: return "WARN";
case INFO: return "INFO";
case USER: return "USER";
case DEBUG: return "DEBUG";
case DEV: return "DEV";
}
return "UNKNOWN";
}
Expand Down
1 change: 1 addition & 0 deletions editor/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ set(SRCS
editor/src/DocumentWindows/EditorScene/Shortcuts.cpp
editor/src/DocumentWindows/EditorScene/Show.cpp
editor/src/DocumentWindows/EditorScene/Shutdown.cpp
editor/src/DocumentWindows/EditorScene/Timecode.cpp
editor/src/DocumentWindows/EditorScene/Toolbar.cpp
editor/src/DocumentWindows/EditorScene/Update.cpp
editor/src/DocumentWindows/EditorScene/DragDrop.cpp
Expand Down
26 changes: 13 additions & 13 deletions editor/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,51 +16,51 @@
//
///////////////////////////////////////////////////////////////////////////////

#include "src/Editor.hpp"
#include "src/DocumentWindows/AssetManager/AssetManagerWindow.hpp"
#include "src/DocumentWindows/ConsoleWindow/ConsoleWindow.hpp"
#include "src/DocumentWindows/EditorScene/EditorScene.hpp"
#include "src/DocumentWindows/SceneTreeWindow/SceneTreeWindow.hpp"
#include "src/DocumentWindows/InspectorWindow/InspectorWindow.hpp"
#include "src/DocumentWindows/AssetManager/AssetManagerWindow.hpp"
#include "src/DocumentWindows/MaterialInspector/MaterialInspector.hpp"
#include "src/DocumentWindows/PrimitiveWindow/PrimitiveWindow.hpp"
#include "src/DocumentWindows/GameWindow/GameWindow.hpp"
#include "src/DocumentWindows/SceneTreeWindow/SceneTreeWindow.hpp"
#include "src/Editor.hpp"

#include <thread>
#include <loguru.hpp>
#include <core/exceptions/Exceptions.hpp>
#include <loguru.hpp>
#include <thread>

#include "scripting/native/ManagedTypedef.hpp"
#include "scripting/native/Scripting.hpp"

int main(int argc, char **argv)
try {
loguru::init(argc, argv);
loguru::g_stderr_verbosity = loguru::Verbosity_3;
loguru::g_stderr_verbosity = loguru::Verbosity_3;
nexo::editor::Editor &editor = nexo::editor::Editor::getInstance();

editor.registerWindow<nexo::editor::EditorScene>(
std::format("Default Scene{}{}", NEXO_WND_USTRID_DEFAULT_SCENE, 0)
);
std::format("Default Scene{}{}", NEXO_WND_USTRID_DEFAULT_SCENE, 0));
editor.registerWindow<nexo::editor::SceneTreeWindow>(NEXO_WND_USTRID_SCENE_TREE);
editor.registerWindow<nexo::editor::InspectorWindow>(NEXO_WND_USTRID_INSPECTOR);
editor.registerWindow<nexo::editor::ConsoleWindow>(NEXO_WND_USTRID_CONSOLE);
editor.registerWindow<nexo::editor::MaterialInspector>(NEXO_WND_USTRID_MATERIAL_INSPECTOR);
editor.registerWindow<nexo::editor::PrimitiveWindow>(NEXO_WND_USTRID_PRIMITIVE_WINDOW);
editor.registerWindow<nexo::editor::AssetManagerWindow>(NEXO_WND_USTRID_ASSET_MANAGER);

if (const auto defaultScene = editor.getWindow<nexo::editor::EditorScene>(std::format("Default Scene{}{}", NEXO_WND_USTRID_DEFAULT_SCENE, 0)).lock())
if (const auto defaultScene = editor
.getWindow<nexo::editor::EditorScene>(
std::format("Default Scene{}{}", NEXO_WND_USTRID_DEFAULT_SCENE, 0))
.lock())
defaultScene->setDefault();

editor.init();

while (editor.isOpen())
{
while (editor.isOpen()) {
auto start = std::chrono::high_resolution_clock::now();
editor.render();
editor.update();

auto end = std::chrono::high_resolution_clock::now();
auto end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double, std::milli> elapsed = end - start;

std::this_thread::sleep_for(std::chrono::milliseconds(16) - elapsed);
Expand Down
39 changes: 18 additions & 21 deletions editor/src/ADocumentWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,51 +21,48 @@

namespace nexo::editor {

void ADocumentWindow::beginRender(const std::string &windowName)
void ADocumentWindow::beginRender(const std::string& windowName)
{
dockingUpdate(windowName);
visibilityUpdate();
sizeUpdate();
}

void ADocumentWindow::dockingUpdate(const std::string &windowName)
void ADocumentWindow::dockingUpdate(const std::string& windowName)
{
if (const ImGuiWindow* currentWindow = ImGui::GetCurrentWindow(); currentWindow)
{
const bool isDocked = currentWindow->DockIsActive;
if (const ImGuiWindow* currentWindow = ImGui::GetCurrentWindow(); currentWindow) {
const bool isDocked = currentWindow->DockIsActive;
const ImGuiID currentDockID = currentWindow->DockId;
const auto dockId = m_windowRegistry.getDockId(windowName);
const auto dockId = m_windowRegistry.getDockId(windowName);

// If it's the first time opening the window and we have a dock id saved in the registry, then we force set it
// If it's the first time opening the window and we have a dock id saved in the registry, then we force set
// it
if (m_firstOpened && (dockId && currentDockID != *dockId))
ImGui::DockBuilderDockWindow(windowName.c_str(), *dockId);
// If the docks ids differ, it means the window got rearranged in the global layout
// If we are docked but we dont have a dock id saved in the registry, it means the user moved the window
// If we are docked, but we don't have a dock id saved in the registry, it means the user moved the window
// In both cases, we update our docking registry with the new dock id
else if ((dockId && currentDockID != *dockId) || (isDocked && !dockId))
m_windowRegistry.setDockId(windowName, currentDockID);


// If it is not docked anymore, we have a floating window without docking node,
// So we erase it from the docking registry
if (!m_firstOpened && !isDocked)
m_windowRegistry.resetDockId(windowName);
if (!m_firstOpened && !isDocked) m_windowRegistry.resetDockId(windowName);
m_firstOpened = false;
}
}

void ADocumentWindow::visibilityUpdate()
{
m_focused = ImGui::IsWindowFocused();
const bool isDocked = ImGui::IsWindowDocked();
m_focused = ImGui::IsWindowFocused();
const bool isDocked = ImGui::IsWindowDocked();
const ImGuiWindow* window = ImGui::GetCurrentWindow();

if (isDocked) {
// If the window is currently being rendered with normal content,
// and not hidden or set to skip items, then it is visible
m_isVisibleInDock = !window->Hidden && !window->SkipItems && window->Active;
}
else {
} else {
// Not docked windows are visible if we've reached this point
m_isVisibleInDock = true;
}
Expand All @@ -75,10 +72,10 @@ namespace nexo::editor {
void ADocumentWindow::sizeUpdate()
{
const ImGuiWindow* window = ImGui::GetCurrentWindow();
m_windowPos = window->Pos;
m_windowSize = window->Size;
m_contentSizeMin = ImGui::GetWindowContentRegionMin();
m_contentSizeMax = ImGui::GetWindowContentRegionMax();
m_contentSize = ImGui::GetContentRegionAvail();
m_windowPos = window->Pos;
m_windowSize = window->Size;
m_contentSizeMin = ImGui::GetWindowContentRegionMin();
m_contentSizeMax = ImGui::GetWindowContentRegionMax();
m_contentSize = ImGui::GetContentRegionAvail();
}
}
} // namespace nexo::editor
Loading
Loading