Table of Contents

Class DragManager

Namespace
GridPlacement.GDScript
Assembly
MoonBark.GridPlacement.GDScript.dll

Self-contained drag manager for tile-based drag operations.\n\nReads confirm_build input action directly and monitors GridTargetingState for tile changes. When both conditions are met (physics frame + new tile), calls PlacementSystem.try_build().\n\nArchitecture (v5.0.0): - One-way dependency: DragManager → PlacementSystem (calls try_build API) - PlacementSystem has NO knowledge of DragManager - Reads input directly via _input() to monitor confirm_build action state - Monitors GridTargetingState tile changes in _physics_process() - Physics-gated to prevent multiple builds per frame - Calls PlacementSystem.try_build() when conditions met\n\nUsage: - Add DragManager as a child of your World/Systems node in the scene - Call resolve_gb_dependencies(container) to inject dependencies - DragManager automatically handles input, drag lifecycle, and building

class DragManager extends GBSystemsComponent
DragManager

Fields

DEFAULT_NAME

const DEFAULT_NAME = "DragManager"

Properties

drag_data

var drag_data: DragPathData = null

tile

var tile: Vector2i = drag_data.target_tile if drag_data else Vector2i.ZERO

pos

var pos: Vector2 = drag_data.positioner.global_position if drag_data and drag_data.positioner else Vector2.ZERO

dragging

var dragging: bool = drag_data.is_dragging if drag_data else false

old_tile

var old_tile = drag_data.target_tile

positioner_pos

var positioner_pos = drag_data.positioner.global_position if drag_data.positioner else Vector2.ZERO

current_physics_frame

var current_physics_frame = Engine.get_physics_frames()

mode_state

var mode_state = _building_system._states.mode if _building_system._states else null

building_state

var building_state = _building_system._states.building if _building_system._states else null

drag_data_id

var drag_data_id = drag_data.get_instance_id() if drag_data else 0

drag_data_is_dragging

var drag_data_is_dragging = drag_data.is_dragging if drag_data else false

start_tile

var start_tile = drag_data.target_tile

start_pos

var start_pos = drag_data.positioner.global_position

Methods

set_test_mode

func set_test_mode(enabled: bool) -> void:

Parameters

enabled

Returns

reset_physics_frame_gate

func reset_physics_frame_gate() -> void:

Returns

start_drag

func start_drag() -> DragPathData:

Returns

stop_drag

func stop_drag() -> void:

Returns

format_drag_state

static func format_drag_state(drag_data: DragPathData) -> String:

Parameters

drag_data

Returns

update_drag_state

func update_drag_state(delta: float) -> void:

Parameters

delta

Returns

resolve_gb_dependencies

func resolve_gb_dependencies(p_container: PlacementContainer) -> void:

Parameters

p_container

Returns

is_dragging

func is_dragging() -> bool:

Returns