IndicatorManager

Handles manipulation cancellation by cleaning...

sort Weight: 10

Handles manipulation cancellation by cleaning up all active indicators. This ensures indicators are properly freed when manipulation ends unexpectedly (e.g., source object deleted, user cancels, etc.). [param _data] The manipulation data (unused, but required by signal signature).

Version: v5.0.0

STABLE

Inherits: GBNode2D
Source: indicator_manager.gd
Parsing: AST-based for maximum accuracy with symbol typing


Constants

DEFAULT_NAME

Value: "IndicatorManager"


Variables

initialized: bool

Whether the manager has been initalized yet or not

Type: bool

Default: false


_indicator_context:

Dependencies injected via resolve_gb_dependencies or _init


_owner_context: GBOwnerContext

Type: GBOwnerContext


_logger:


_indicator_template:


_targeting_state:


_manipulation_state:


_indicator_service:


_placement_validator:


_test_setup_factory:


_last_setup_test_object:


Signals

indicators_changed(indicators: Array[RuleCheckIndicator]: Variant)

Emitted when the active placement indicators are updated.

Parameters:

  • indicators: Array[RuleCheckIndicator]: Variant

Methods

create_with_injection

Signature: static create_with_injection(container: GBCompositionContainer, parent: Node = null) -> IndicatorManager

[returns] A configured IndicatorManager instance.

Returns: IndicatorManager

Static: true

Parameters:

  • container: GBCompositionContainer
  • parent: Node (optional, default: null)

get_runtime_issues

Signature: get_runtime_issues() -> Array

[returns] An array of issue strings (empty if valid).

Returns: Array


_init

Signature: _init() -> void

Returns: void


resolve_gb_dependencies

Signature: resolve_gb_dependencies(p_container: GBCompositionContainer) -> void

[param p_container] The dependency injection container.

Returns: void

Parameters:

  • p_container: GBCompositionContainer

setup_indicators

Signature: setup_indicators(p_test_object: Node2D, p_tile_check_rules: Array[TileCheckRule]: Variant) -> IndicatorSetupReport

[returns] An IndicatorSetupReport with indicators and diagnostic information.

Returns: IndicatorSetupReport

Parameters:

  • p_test_object: Node2D
  • p_tile_check_rules: Array[TileCheckRule]: Variant

get_indicator_count

Signature: get_indicator_count(p_test_object: Node2D, p_tile_check_rules: Array[TileCheckRule]: Variant) -> int

[returns] The number of indicators that would be created, or -1 if calculation fails.

Returns: int

Parameters:

  • p_test_object: Node2D
  • p_tile_check_rules: Array[TileCheckRule]: Variant

get_indicators

Signature: get_indicators() -> Array

[returns] An array of RuleCheckIndicator instances.

Returns: Array


get_colliding_indicators

Signature: get_colliding_indicators() -> Array

[returns] An array of colliding RuleCheckIndicator instances.

Returns: Array


get_colliding_nodes

Signature: get_colliding_nodes() -> Array

[returns] An array of Node2D instances in collision.

Returns: Array


try_setup

Signature: try_setup(p_placeable_rules: Array[PlacementRule]: Variant, p_gts : GridTargetingState: Variant, p_ignore_base := false: Variant) -> PlacementReport

[returns] A PlacementReport with setup results.

Returns: PlacementReport

Parameters:

  • p_placeable_rules: Array[PlacementRule]: Variant
  • p_gts : GridTargetingState: Variant
  • p_ignore_base := false: Variant

_log_target_diagnostics

Signature: _log_target_diagnostics(target: Node) -> void

Returns: void

Parameters:

  • target: Node

_log_indicator_report

Signature: _log_indicator_report(indicators_report: IndicatorSetupReport) -> void

detect collision nodes

Returns: void

Parameters:

  • indicators_report: IndicatorSetupReport

_build_failed_report

Signature: _build_failed_report(validator_issues: Dictionary, target: Node) -> PlacementReport

Helper: Build a PlacementReport for failed validation with detailed issues

Returns: PlacementReport

Parameters:

  • validator_issues: Dictionary
  • target: Node

clear

Signature: clear() -> void

Returns: void


tear_down

Signature: tear_down() -> void

Resets the manager, clearing indicators and validation state.

Returns: void


apply_rules

Signature: apply_rules() -> void

Applies placement rules through the validator.

Returns: void


validate_placement

Signature: validate_placement() -> ValidationResults

[returns] A ValidationResults object with validation outcome.

Returns: ValidationResults


inject_collision_mapper_dependencies

Signature: inject_collision_mapper_dependencies(container: GBCompositionContainer) -> bool

[returns bool] Whether the injection was successful or not

Returns: bool

Parameters:

  • container: GBCompositionContainer

get_or_create_testing_indicator

Signature: get_or_create_testing_indicator(parent_node: Node) -> RuleCheckIndicator

[returns] The testing indicator instance.

Returns: RuleCheckIndicator

Parameters:

  • parent_node: Node

setup_collision_mapper

Signature: setup_collision_mapper(testing_indicator: RuleCheckIndicator, setups: Dictionary) -> void

[param setups] The collision test setups.

Returns: void

Parameters:

  • testing_indicator: RuleCheckIndicator
  • setups: Dictionary

get_collision_mapper

Signature: get_collision_mapper() -> CollisionMapper

[returns] The collision mapper instance.

Returns: CollisionMapper


get_placement_validator

Signature: get_placement_validator() -> PlacementValidator

Tests use this to drive validation directly when needed.

Returns: PlacementValidator


force_shapecast_update

Signature: force_shapecast_update() -> void

[method force_indicators_validity_evaluation] instead.

Returns: void


force_indicators_validity_evaluation

Signature: force_indicators_validity_evaluation() -> int

[returns] The number of indicators that were updated.

Returns: int


_on_manipulation_canceled

Signature: _on_manipulation_canceled(_data: ManipulationData) -> void

[param _data] The manipulation data (unused, but required by signal signature).

Returns: void

Parameters:

  • _data: ManipulationData