Skip to content

Client Editor Mode Refactor - #115

Merged
Armored-Dragon merged 29 commits into
Instance-Inspectorfrom
CEM-Refactor
Jul 2, 2026
Merged

Client Editor Mode Refactor#115
Armored-Dragon merged 29 commits into
Instance-Inspectorfrom
CEM-Refactor

Conversation

@Armored-Dragon

Copy link
Copy Markdown
Member

This refactors the entirety of the Client Editor Mode. This includes long-awaited UI enhancements and general code cleanup.

This added extra complexity for not much benefit.
This might be a good idea, but the implementation was bad and is too
much to deal with at this point in development.
Minor changes to buttons to allow direct icon usage.
@Armored-Dragon Armored-Dragon self-assigned this Jun 30, 2026
@Armored-Dragon Armored-Dragon added enhancement New feature or request alpha Issues pertaining to the alpha channel labels Jun 30, 2026
@Armored-Dragon
Armored-Dragon marked this pull request as ready for review July 2, 2026 12:45
@Armored-Dragon
Armored-Dragon merged commit e3c5ad2 into Instance-Inspector Jul 2, 2026
@Armored-Dragon
Armored-Dragon deleted the CEM-Refactor branch July 2, 2026 13:06
Armored-Dragon added a commit that referenced this pull request Jul 2, 2026
* Basic "GodMode"

GodMode will likely be renamed to "ClientEditorMode (CEM)"

* Generic node spawning.

Use a nodes "pretty_name" when available.

* Node selection popup.

Adds the ability to add from a list of valid nodes.

* Added Gizmo3D addon library.

This addon will allow the transformation of nodes in-app.
There is also now a crosshair to help line everything up.

* Select nodes

* Minor networking fix.

* Use spawnablemanager delete node when deleting a node.

Also changes the baseplate to use a MeshInstance3D that has been
subdivided.

* Created schema builder to manage spawnables.

This cleans up a lot of the code in some of the files, and centralizes a
lot of the building.

* Minor networking fixes.

Clients can load in without crashing again.

* Better Gizmo handling

Gizmos are now handled through the spawn manager.
Session wide node_added and node_created signals.

* Spawnable.create abstraction.

This makes the code a touch cleaner as now either the host or a client
can spawn nodes using a single function call.

* Test syncing of node position and rotation.

Testing implimentation of node transform syncing across clients.

* Fix colliders from interacting with eachother on other servers.

Quick fix for colliders being active across sessions.

* Added scale to networked transforms.

Added crosshair.
Fixed node reference for network transformation.

* Removed unused function.

* Removed debug prints.

* Renamed developer functions.

These were originally test functions. These tests were successful so
they were promoted.

* Improved inspector handling.

Fail guards for interacting with invalid nodes.
Interacting with an invalid node forces a refresh of the inspector.

* Updated inspector icons.

Added fallback to try to get the correct type of icon for the node by
its class.

* Subviewport view.

This changes the primary game window to use a subviewport.

* Client Editor Mode.

This adds a start to the Client Editor Mode (CEM) for desktop.

* Destroy node network abstraction.

This abstracts the destroy node similar to the spawn node.

* Move event emitters.

Moves the event emitters to the spawnable manager instead of the cem
inspector.

* Gizmo management for the Client Editor Mode. (#104)

* Gizmo work.

* Hide gizmos when out of CEM.

When you are not in CEM, you can not see gizmos anymore.

* Fixed scale gizmo not reapearing after hiding.

* Light refactoring

* Gizmos parented under root.

Before they were parented under the first selected node, but this caused
selection box issues so the gizmo was moved.

* Single active gizmos.

This changes the gizmos so that you can only have one active gizmo
selection at a time. I think this will prevent confusion.

* Don't allow selecting root.

Also adds a fail-check to see if a node is valid before selecting.

* Better parent/child gizmo support.

When selecting a parent node, the gizmo selection system will target the
parent node instead of the child(ren). If you select the children again,
a new gizmo will be created.

* Fix multi-selection parent-child relationship for gizmos.

I have no idea why this worked, but sure.

* Spawnable saving and loading (#106)

* Basic foundation.

Commit before I go to bed. Adds basic saving functionality and almost
functional loading functionality.
Loading does not preserve scene heierarchy.

* Loading spawnables.

This refactors the loading code to persist the node hierarchy.

* File Browser (#108)

This adds a basic file browser to the "Spawnables" menu. This allows navigating the inventory screen and create or remove folders. 

* Added file traversal through the local spawnables inventory.

* Fixed icon size in CEM.

* Moved local file management to dedicated file lib.

* Rename nodes in CEM.

* Load saved spawnables from files.

* Test externalizing assets before saving to inventory.

* Use file name for imported model.

* Support Skeleton3D node.

* Creating and deleting folders.

* Delete items.

* UI fixes.

* Font adjustments.

* Update view when creating or deleting a file or folder.

* Easily see which files or folders are selected.

* Hide file extension in the file browser.
This removes the trailing `.tscn` at the end of files in the browser
view.

* Use pretty name when spawning node.

* Delete confirmation.
Adds a confirmation window when deleting something.

* Fixed inspector icons.
The fallback code forced Node3D

* Removed leftover print.

* Client Editor Mode Refactor (#115)

* Removed subviewport.
This added extra complexity for not much benefit.

* New blur shader for canvas element.

* Removed gizmo selection groups.
This might be a good idea, but the implementation was bad and is too
much to deal with at this point in development.

* Dashboard uses new blur effect.
Minor changes to buttons to allow direct icon usage.

* Fixed focus issue with the node search in the inspector.

* Adjustable inspector width.

* Remove focus from search area when clicking out of search area.

* Change mouse escape keybind to tab.

* Capture or uncapture mouse when swapping edit mode.

* CEM Toolbar.
Change the gizmo type to toggle translation, rotation, and scale.
Added placeholder counters.

* Toggle translation space between local and global.

* List spawnable count in the toolbar.

* Refactor Inspector.gd work.
Added custom popup menu.

* Basic Gizmo interaction.

* Select node by selecting it in the inspector tree.

* Gizmos respect settings again.

* When renaming a node, start editing immedately.

* Custom Add Node window.

* Spawnable count updating.

* Fixed var name.

* Removed and replace original inspector.gd.
This completes the major refactor.

* Toggle gizmo visibility when toggling CEM.

* Updated icon getter.
Icons are now packed into the metadata of the nodes when they are
created, which is prioritized.

* Hide nodes not intended to be spawned directly.

* Node reparenting.

* Deletion queue: Fix crashes with Gizmo and deleted nodes.

* Better metadata handling.
This will stop some console spam of useless errors.

* Windows can not be dragged out of bounds.

* Only deselect if we have a gizmo.

* Added missing LICENSE file to rpc-await addon.
Moved LICENSE for Godot icons to the Godot folder.
Armored-Dragon added a commit that referenced this pull request Jul 2, 2026
* Added POC physics and physics networking

This is largely how physics and spawnables will be handled. There is
still a lot of syncing issues relating to building a scene after a user
has joined.

* Client join syncing.

Client syncing testing. This will have the host send the server
_database variable and the _id to the joining client so the host and the
client are on the same page.

* Sync all positions to all users when a user joins.

* Debug entity spawn menu initial work

This menu is non-functional beyond being opened and closed.

* Debug spawn menu allow capsule spawning

This is made to test the client handling of spawning different types of
spawnables. Currently this works as expected.

* Test model loading

Reference for spawning in models.

* I could have sworn I fixed this dashboard name issue before?

* Dynamic model drag and dropping

This makes it so that any model can be dragged and dropped onto the
window to load the model into the scene. This breaks multiplayer
syncing, though proper asset handling will need to be created anyways
for the internet.

* Asset handling (#97)

* GLB model handling.

Tear apart a GLB model into base components and reassemble them using a
GLTF file.

* Added placeholder assethandling lib

* Fixed several UI errors.

The Assets page now functions!

* Changed "Assets" dashboard page to "Spawnables"

Assets are defined as parts of a spawnable. This change is to avoid
internal confusion.

* Client Editor Mode (#103)

* Basic "GodMode"

GodMode will likely be renamed to "ClientEditorMode (CEM)"

* Generic node spawning.

Use a nodes "pretty_name" when available.

* Node selection popup.

Adds the ability to add from a list of valid nodes.

* Added Gizmo3D addon library.

This addon will allow the transformation of nodes in-app.
There is also now a crosshair to help line everything up.

* Select nodes

* Minor networking fix.

* Use spawnablemanager delete node when deleting a node.

Also changes the baseplate to use a MeshInstance3D that has been
subdivided.

* Created schema builder to manage spawnables.

This cleans up a lot of the code in some of the files, and centralizes a
lot of the building.

* Minor networking fixes.

Clients can load in without crashing again.

* Better Gizmo handling

Gizmos are now handled through the spawn manager.
Session wide node_added and node_created signals.

* Spawnable.create abstraction.

This makes the code a touch cleaner as now either the host or a client
can spawn nodes using a single function call.

* Test syncing of node position and rotation.

Testing implimentation of node transform syncing across clients.

* Fix colliders from interacting with eachother on other servers.

Quick fix for colliders being active across sessions.

* Added scale to networked transforms.

Added crosshair.
Fixed node reference for network transformation.

* Removed unused function.

* Removed debug prints.

* Renamed developer functions.

These were originally test functions. These tests were successful so
they were promoted.

* Improved inspector handling.

Fail guards for interacting with invalid nodes.
Interacting with an invalid node forces a refresh of the inspector.

* Updated inspector icons.

Added fallback to try to get the correct type of icon for the node by
its class.

* Subviewport view.

This changes the primary game window to use a subviewport.

* Client Editor Mode.

This adds a start to the Client Editor Mode (CEM) for desktop.

* Destroy node network abstraction.

This abstracts the destroy node similar to the spawn node.

* Move event emitters.

Moves the event emitters to the spawnable manager instead of the cem
inspector.

* Gizmo management for the Client Editor Mode. (#104)

* Gizmo work.

* Hide gizmos when out of CEM.

When you are not in CEM, you can not see gizmos anymore.

* Fixed scale gizmo not reapearing after hiding.

* Light refactoring

* Gizmos parented under root.

Before they were parented under the first selected node, but this caused
selection box issues so the gizmo was moved.

* Single active gizmos.

This changes the gizmos so that you can only have one active gizmo
selection at a time. I think this will prevent confusion.

* Don't allow selecting root.

Also adds a fail-check to see if a node is valid before selecting.

* Better parent/child gizmo support.

When selecting a parent node, the gizmo selection system will target the
parent node instead of the child(ren). If you select the children again,
a new gizmo will be created.

* Fix multi-selection parent-child relationship for gizmos.

I have no idea why this worked, but sure.

* Spawnable saving and loading (#106)

* Basic foundation.

Commit before I go to bed. Adds basic saving functionality and almost
functional loading functionality.
Loading does not preserve scene heierarchy.

* Loading spawnables.

This refactors the loading code to persist the node hierarchy.

* File Browser (#108)

This adds a basic file browser to the "Spawnables" menu. This allows navigating the inventory screen and create or remove folders. 

* Added file traversal through the local spawnables inventory.

* Fixed icon size in CEM.

* Moved local file management to dedicated file lib.

* Rename nodes in CEM.

* Load saved spawnables from files.

* Test externalizing assets before saving to inventory.

* Use file name for imported model.

* Support Skeleton3D node.

* Creating and deleting folders.

* Delete items.

* UI fixes.

* Font adjustments.

* Update view when creating or deleting a file or folder.

* Easily see which files or folders are selected.

* Hide file extension in the file browser.
This removes the trailing `.tscn` at the end of files in the browser
view.

* Use pretty name when spawning node.

* Delete confirmation.
Adds a confirmation window when deleting something.

* Fixed inspector icons.
The fallback code forced Node3D

* Removed leftover print.

* Client Editor Mode Refactor (#115)

* Removed subviewport.
This added extra complexity for not much benefit.

* New blur shader for canvas element.

* Removed gizmo selection groups.
This might be a good idea, but the implementation was bad and is too
much to deal with at this point in development.

* Dashboard uses new blur effect.
Minor changes to buttons to allow direct icon usage.

* Fixed focus issue with the node search in the inspector.

* Adjustable inspector width.

* Remove focus from search area when clicking out of search area.

* Change mouse escape keybind to tab.

* Capture or uncapture mouse when swapping edit mode.

* CEM Toolbar.
Change the gizmo type to toggle translation, rotation, and scale.
Added placeholder counters.

* Toggle translation space between local and global.

* List spawnable count in the toolbar.

* Refactor Inspector.gd work.
Added custom popup menu.

* Basic Gizmo interaction.

* Select node by selecting it in the inspector tree.

* Gizmos respect settings again.

* When renaming a node, start editing immedately.

* Custom Add Node window.

* Spawnable count updating.

* Fixed var name.

* Removed and replace original inspector.gd.
This completes the major refactor.

* Toggle gizmo visibility when toggling CEM.

* Updated icon getter.
Icons are now packed into the metadata of the nodes when they are
created, which is prioritized.

* Hide nodes not intended to be spawned directly.

* Node reparenting.

* Deletion queue: Fix crashes with Gizmo and deleted nodes.

* Better metadata handling.
This will stop some console spam of useless errors.

* Windows can not be dragged out of bounds.

* Only deselect if we have a gizmo.

* Added missing LICENSE file to rpc-await addon.
Moved LICENSE for Godot icons to the Godot folder.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

alpha Issues pertaining to the alpha channel enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant