Table of Contents

Class GridTargetingService3D

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

Scene-free 3D grid targeting service. 3D mirror of [GridTargetingService] (6.0.0-S Phase 1, AStar-less for Wave B1).\n\n6.0.0-3D-Surface (Wave B1.2): handles tile<->world coordinate mapping, closest-valid-tile resolution, and targeting readiness validation for [GridMap]. AStarGrid3D integration is a follow-up (the 2D service's AStar integration is a 2026-06-13 hardening pass; the 3D path-manager mirror can land in Wave B1.5 or as a separate sub-task).\n\nDifferences from the 2D service: - [Vector2i] / [Vector2] → [Vector3i] / [Vector3] - [TileMapLayer] → [GridMap] - [AStarGrid2D] / [PlacementAStarPathManager] deferred to a follow-up (3D path manager mirror not in Wave B1 scope) - [GridTargetingSettings] is reused as-is (the boolean toggles are dimension-agnostic; the 2D-specific AStar fields are simply not consulted in the 3D service)\n\nSignal emission + input handling stay on the hosting Node (the positioner). The service is pure logic over injectable state, parallel to the 2D service's contract.

class GridTargetingService3D extends RefCounted
GridTargetingService3D

Properties

grid

var grid: GridMap = _targeting_state.target_map_3d

resolved_tile

var resolved_tile: Vector3i = p_target_tile

tile

var tile = Vector3i(int(round(p_tile.x)), int(round(p_tile.y)), int(round(p_tile.z)))

grid

var grid: GridMap = _targeting_state.target_map_3d

issues

var issues: Array[String] = []

issues

var issues: Array[String] = []

state_issues

var state_issues = _targeting_state.get_runtime_issues()

grid

var grid: GridMap = _targeting_state.target_map_3d

issues

var issues: Array[String] = []

editor_issues

var editor_issues: Array[String] = _targeting_settings.get_editor_issues()

source_tile

var source_tile = GBPositioning3DUtils.get_tile_from_node_position(p_source, p_grid)

delta

var delta = p_target_tile - source_tile

manhattan

var manhattan: int = abs(delta.x) + abs(delta.y) + abs(delta.z)

step_x

var step_x = _signum(delta.x)

step_y

var step_y = _signum(delta.y)

step_z

var step_z = _signum(delta.z)

remaining

var remaining = max_steps

result

var result = source_tile

Methods

configure

func configure( p_targeting_state: GridTargetingState,

move_node_to_closest_valid_tile

func move_node_to_closest_valid_tile(p_target_tile: Vector3i, p_positioner: Node3D, p_source: Node3D) -> Error:

Parameters

p_target_tile
p_positioner
p_source

Returns

move_to_tile

func move_to_tile(p_node: Node3D, p_tile: Vector3) -> Error:

Parameters

p_node
p_tile

Returns

get_tile_from_global_position

static func get_tile_from_global_position(p_global_position: Vector3, p_grid: GridMap) -> Vector3i:

Parameters

p_global_position
p_grid

Returns

validate_ready

func validate_ready() -> bool:

Returns

get_targeting_issues

func get_targeting_issues() -> Array[String]:

Returns

get_runtime_issues

func get_runtime_issues() -> Array[String]:

Returns

get_target_map

func get_target_map() -> GridMap:

Returns