GridBuilding 5.0.10 troubleshooting is mostly about understanding the maintenance wiring patterns:
- injector/container composition
- state-first signal flows
- preview/targeting interactions
Start here:
If your issue involves targeting previews being cleared unexpectedly, see:
Selecting a placeable exits build mode
This is the most common first-setup failure on 5.0.10.
What you see: you press 2 to open build mode, click a placeable in the list, and the UI closes as if you pressed Escape. Output shows Mode changed -> 2 then Mode changed -> 0 and Clearing selected placeable on mode change to OFF.
What it is: the list click did call BuildingSystem.enter_build_mode(). Readiness failed, so 5.0.10 forces mode OFF and clears the selection. It is not a broken placeable scene by itself, and it is not a missing LevelBuildingContext node. That name is leftover wording inside GBLevelContext.
Unfilter the Output panel. The warnings from is_ready_to_place() are the useful ones:
| Warning | Fix |
|---|---|
No placer set in _owner_context |
Add GBOwner on the player/controller and assign owner_root |
No placed parent set |
Assign GBLevelContext.objects_parent and make sure that node is injected |
Property [target_map] is NULL / [maps] is empty |
Assign GBLevelContext.target_map and maps |
GBLevelContext can live under a sibling of Systems (for example GB_References). That is fine when Injection Roots is empty (the shipped systems.tscn default). If injection_roots is set to Systems only, the sibling context is never applied.
Do not rearrange a working placeable scene until those warnings are gone. See Getting Started for the required inspector fields.
5.0.10-specific checks
Move fails with “not movable”
In 5.0.10, try_move() enforces is_movable() before move starts.
- Verify the target has a valid
Manipulatablecomponent. - Verify its settings allow movement (
movable = true). - If needed, customize
ManipulationSettings.failed_object_not_movablefor clearer UX.
Rotation / flip not preserved after move
5.0.10 preserves accumulated transform on successful placement. If this still appears broken:
- Verify your placement flow uses
try_move(...)followed bytry_placement(...). - Verify no custom script resets transform after placement.
- Verify your test/object is not being replaced by unrelated scene logic after placement.
Save data contains temporary preview objects
In 5.0.10, preview/manipulation copies are marked with gb_preview metadata on the parent node.
- When saving, skip any placed object whose parent/root has
gb_previewmetadata. - Query placed components by
PlaceableInstance.group_name.
# Skip preview objects when saving
var parent_node= placed_component.get_parent()
if parent_node!= null and parent_node.has_meta("gb_preview"):
continue # Skip this objectValidated By
This guide's troubleshooting patterns are validated by diagnostic logs and test scenarios found in:
- res://addons/grid_placement/test/e2e/all_systems_integration_tests.gd — General troubleshooting for wiring and system interactions.
- res://addons/grid_placement/test/integration/grid_positioner_rotation_integration_test.gd — Troubleshooting transform/rotation persistence issues.
- res://addons/grid_placement/test/utilities/data/composition_container_subresources_test.gd — Troubleshooting configuration and resource loading errors.