Troubleshooting

GridBuilding 5.0.3 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:

5.0.3-specific checks

Move fails with “not movable”

In 5.0.3, try_move() enforces is_movable() before move starts.

  • Verify the target has a valid Manipulatable component.
  • Verify its settings allow movement (movable = true).
  • If needed, customize ManipulationSettings.failed_object_not_movable for clearer UX.

Rotation / flip not preserved after move

5.0.3 preserves accumulated transform on successful placement. If this still appears broken:

  • Verify your placement flow uses try_move(...) followed by try_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.3, preview/manipulation copies are marked with gb_preview metadata on the parent node.

  • When saving, skip any placed object whose parent/root has gb_preview metadata.
  • Query placed components by PlaceableInstance.group_name.
1
2
3
func should_skip_preview(placed_component: Node) -> bool:
    var parent_node = placed_component.get_parent()
    return parent_node != null and parent_node.has_meta("gb_preview")

Validated By

This guide’s troubleshooting patterns are validated by diagnostic logs and test scenarios found in:

  • res://addons/grid_building/test/e2e/all_systems_integration_tests.gd - General troubleshooting for wiring and system interactions.
  • res://addons/grid_building/test/integration/grid_positioner_rotation_integration_test.gd - Troubleshooting transform/rotation persistence issues.
  • res://addons/grid_building/test/utilities/data/composition_container_subresources_test.gd - Troubleshooting configuration and resource loading errors.