Add ImGui Scene Explorer (F4) for runtime object inspection (#136)
New Features: - Scene Explorer window (F4) displays hierarchical tree of all scenes - Shows UIDrawable hierarchy with type, name, and visibility status - Click scene name to switch active scene - Double-click drawables to toggle visibility - Displays Python repr() for cached objects, enabling custom class debugging - Entity display within Grid nodes Bug Fixes: - Fix PythonObjectCache re-registration: when retrieving objects from collections, newly created Python wrappers are now re-registered in the cache. Previously, inline-created objects (e.g., scene.children.append(Frame(...))) would lose their cache entry when the temporary Python object was GC'd, causing repeated wrapper allocation on each access. - Fix console focus stealing: removed aggressive focus reclaim that caused title bar flashing when clicking in Scene Explorer Infrastructure: - Add GameEngine::getSceneNames() to expose scene list for explorer - Scene Explorer uses same enabled flag as console (ImGuiConsole::isEnabled()) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
4be2502a10
commit
5e45ab015c
7 changed files with 378 additions and 3 deletions
|
|
@ -11,6 +11,7 @@
|
|||
#include "SceneTransition.h"
|
||||
#include "Profiler.h"
|
||||
#include "ImGuiConsole.h"
|
||||
#include "ImGuiSceneExplorer.h"
|
||||
#include <memory>
|
||||
#include <sstream>
|
||||
#include <mutex>
|
||||
|
|
@ -191,6 +192,7 @@ private:
|
|||
|
||||
// ImGui console overlay
|
||||
ImGuiConsole console;
|
||||
ImGuiSceneExplorer sceneExplorer;
|
||||
bool imguiInitialized = false;
|
||||
|
||||
// #219 - Thread synchronization for background Python threads
|
||||
|
|
@ -214,6 +216,7 @@ public:
|
|||
~GameEngine();
|
||||
Scene* currentScene();
|
||||
Scene* getScene(const std::string& name); // #118: Get scene by name
|
||||
std::vector<std::string> getSceneNames() const; // #136: Get all scene names for explorer
|
||||
void changeScene(std::string);
|
||||
void changeScene(std::string sceneName, TransitionType transitionType, float duration);
|
||||
void createScene(std::string);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue