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
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_tilep_positionerp_source
Returns
move_to_tile
func move_to_tile(p_node: Node3D, p_tile: Vector3) -> Error:
Parameters
p_nodep_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_positionp_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: