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