Table of Contents

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
CollisionsCheckRule

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]:

Returns