Source note:This page rendered plugin-owned docs or generated metadata inside unified Astro docs shell.
This page outlines validation utilities for configuration validation at initialization — checking that settings, resources, and dependencies are properly configured when the scene loads.
This guide = Validation of configuration at startup (via GBInjectorSystem or manual setup). Placement Rules = Runtime validation when placing objects (e.g., checking grid bounds).
Configuration Validation with PlacementValidator
In 5.0.8: PlacementValidator handles validation. It uses placement rules to validate potential placements at runtime.
Core Validation Classes
- PlacementValidator: The main class that orchestrates validation. It takes a list of rules and evaluates them against the current placement context.
- ValidationResults: A data container that captures the outcome of validation. It holds
is_successful,issues(errors), andwarnings.
How It Works
- Setup: Create a
PlacementValidatorwith your configured rules. - Validation: Call
validate_placement(context)to check a potential placement. - Results: Get a
ValidationResultsobject with success status and any issues.
ValidationResults
| Property | Type | Description |
|---|---|---|
is_successful |
bool | True if no blocking issues were found. |
issues |
Array[String] | List of critical errors that prevent operation. |
warnings |
Array[String] | List of non-critical observations. |
Usage Example
# Example: Using PlacementValidator
var validator = PlacementValidator.new(rules, logger)
var context = PlacementRuleContext.new()
context.target_cell = Vector2i(5, 3)
context.grid_size = Vector2i(10, 10)
var results = validator.validate_placement(context)
if not results.is_successful:
for issue in results.issues:
print("Validation failed: ", issue)
Add to entity (Component-based)
my_entity.add_child(rule_comp)
By standardizing on `PlacementRule`, the system can transparently inspect, validate, and execute rules without needing to know the specific logic of every single rule type.
## Tips
- Keep configuration validation fast; it runs during entity creation or system startup.
- Differentiate between **Invalid Configuration** (developer error, e.g., missing resource) and **Invalid Placement** (player error, e.g., placing inside a wall).
- Use `ValidationResults` to combine results from multiple rules into a single report.
## Related Guides
* [Placement Rules](/docs/grid-placement/v5-0/guides/placement-rules/)
* [Placement Workflow](/docs/grid-placement/v5-0/guides/placement-workflow/)
## Validated By
The validation architecture is verified by the following test suites, which ensure that validation result containers and rule components behave correctly under various configurations.
* **Configuration Validation**: **res://addons/grid_placement/test/utilities/gb_configuration_validator_test.gd** — Verifies that the injector correctly triggers validation after wiring.
* **Result Management**: **res://addons/grid_placement/test/rules/validation/valid_placement_tile_rule_test.gd** — Tests tile rule validation and placement correctness.
* **System Integration**: **res://addons/grid_placement/test/rules/validation/rule_system_integration_tests.gd** — Validates the full sequence of validation logic within the placement systems.
## Further Tips
Source
docs/v5-0/guides/validation.md
Plugin docs root:gdscript/plugins/grid_placement_dev/docs