Class CollisionsCheckRule
- Namespace
- GridPlacement.GDScript
- Assembly
- MoonBark.GridPlacement.GDScript.dll
Rule that validates placement based on collision detection.\n\nThis rule checks for physics collisions at indicator positions and validates based on the [member pass_on_collision] setting: - [code]false[/code] (default): Placement FAILS if collision detected ("must have clear space") - [code]true[/code]: Placement FAILS if NO collision detected ("must overlap with existing objects")
class CollisionsCheckRule extends TileCheckRule
Properties
pass_on_collision
Controls collision validation behavior: - [code]false[/code]: Rule PASSES when no collision (placement requires clear space) - [code]true[/code]: Rule PASSES when collision detected (placement requires overlap)\n\nCommon use cases: - [code]false[/code]: Building placement (needs empty space) - [code]true[/code]: Attachment mechanics (must connect to existing structures)
@export var pass_on_collision = false
collision_mask
Physics layers to scan for collisions.
@export_flags_2d_physics() var collision_mask = 1
messages
Modular message configuration resource
@export var messages: CollisionRuleSettings
issues
var issues: Array[String] = []
issue_message
var issue_message: String = ""
reason_message
var reason_message: String = ""
failing_indicators
var failing_indicators = get_failing_indicators(indicators)
failing_count
var failing_count = failing_indicators.size()
is_successful
var is_successful = failing_count == 0
issues
var issues: Array[String] = []
failed_indicators
var failed_indicators: Array[RuleCheckIndicator] = []
null_count
var null_count = 0
valid_count
var valid_count = 0
collision_count
var collision_count = 0
excluded_bodies
var excluded_bodies: Array[CollisionObject2D] = []
target_node
var target_node = _grid_targeting_state.target
indicator
var indicator = p_indicators[i]
original_mask
var original_mask: int = indicator.collision_mask
use_cache
var use_cache = false
is_colliding
var is_colliding = indicator.cached_is_colliding if use_cache else indicator.is_colliding()
has_real_collision
var has_real_collision = false
colliders
var colliders: Array[Node] = []
expected_collisions
var expected_collisions = "collisions" if pass_on_collision else "no collisions"
passed_count
var passed_count = valid_count - failed_indicators.size()
bodies
var bodies: Array[CollisionObject2D] = []
target_node
var target_node = _grid_targeting_state.target
body_names
var body_names = []
issues
var issues: Array[String] = []
issues
var issues: Array[String] = []
Methods
setup
func setup(p_gts : GridTargetingState) -> Array[String]:
Parameters
p_gts
Returns
validate_placement
func validate_placement() -> RuleResult:
Returns
get_failing_indicators
func get_failing_indicators(p_indicators : Array[RuleCheckIndicator]) -> Array[RuleCheckIndicator]:
Parameters
p_indicators
Returns
get_editor_issues
func get_editor_issues() -> Array[String]:
Returns
get_runtime_issues
func get_runtime_issues() -> Array[String]: