CollisionShapeProcessor

@param target_positions: Dictionary to merge...

sort Weight: 10

@param target_positions: Dictionary to merge into (modified in-place) @param source_positions: Dictionary to merge from

Version: v5.0.0

STABLE

Inherits: RefCounted
Source: collision_shape_processor.gd
Parsing: AST-based for maximum accuracy with symbol typing


Constants

GeometryCacheManager

Value: preload("uid://d0cdgiqycnh43")


Variables

_cache_manager:


Methods

_init

Signature: _init(cache_manager: GeometryCacheManager) -> void

  • cache_manager: GeometryCacheManager for polygon bounds caching[br]

Returns: void

Parameters:

  • cache_manager: GeometryCacheManager

get_tile_offsets_for_collision_object

Signature: get_tile_offsets_for_collision_object(test_data: CollisionTestSetup2D, map: TileMapLayer, positioner: Node2D) -> Dictionary

Returns: Dictionary[Vector2i, Array] mapping tile offsets to collision objects

Returns: Dictionary

Parameters:

  • test_data: CollisionTestSetup2D
  • map: TileMapLayer
  • positioner: Node2D

_initialize_collision_mapping

Signature: _initialize_collision_mapping(positioner: Node2D, collision_positions: Dictionary[Vector2i: Variant, Array]: Variant) -> bool

Validates that required dependencies are available for collision mapping.

Returns: bool

Parameters:

  • positioner: Node2D
  • collision_positions: Dictionary[Vector2i: Variant
  • Array]: Variant

_process_shape_offsets

Signature: _process_shape_offsets(rect_test_setup: Variant, test_data: CollisionTestSetup2D, map: TileMapLayer, center_tile: Vector2i, tile_size: Vector2, shape_epsilon: float, col_obj: Node2D) -> Dictionary

@returns Dictionary[Vector2i, Array] mapping tile offsets to collision objects for this shape setup

Returns: Dictionary

Parameters:

  • rect_test_setup: Variant
  • test_data: CollisionTestSetup2D
  • map: TileMapLayer
  • center_tile: Vector2i
  • tile_size: Vector2
  • shape_epsilon: float
  • col_obj: Node2D

_calculate_tile_range

Signature: _calculate_tile_range(shape: Shape2D, bounds: Rect2, map: TileMapLayer, tile_size: Vector2, shape_transform: Transform2D, start_tile: Vector2i, end_exclusive: Vector2i, shape_polygon: PackedVector2Array) -> void

@param shape_polygon: Transformed polygon vertices (rotation/scale/skew already applied)

Returns: void

Parameters:

  • shape: Shape2D
  • bounds: Rect2
  • map: TileMapLayer
  • tile_size: Vector2
  • shape_transform: Transform2D
  • start_tile: Vector2i
  • end_exclusive: Vector2i
  • shape_polygon: PackedVector2Array

_compute_shape_tile_offsets

Signature: _compute_shape_tile_offsets(shape: Shape2D, shape_transform: Transform2D, map: TileMapLayer, tile_size: Vector2, shape_epsilon: float, start_tile: Vector2i, end_exclusive: Vector2i, center_tile: Vector2i, shape_polygon: PackedVector2Array) -> Array

@returns Array of Vector2i offsets relative to center_tile

Returns: Array

Parameters:

  • shape: Shape2D
  • shape_transform: Transform2D
  • map: TileMapLayer
  • tile_size: Vector2
  • shape_epsilon: float
  • start_tile: Vector2i
  • end_exclusive: Vector2i
  • center_tile: Vector2i
  • shape_polygon: PackedVector2Array

_enforce_horizontal_symmetry

Signature: _enforce_horizontal_symmetry(shape_offsets: Array[Vector2i]: Variant) -> void

@param shape_offsets: Array of tile offsets to make symmetric (modified in-place)

Returns: void

Parameters:

  • shape_offsets: Array[Vector2i]: Variant

_merge_offsets_into_positions

Signature: _merge_offsets_into_positions(shape_offsets: Array[Vector2i]: Variant, collision_positions: Dictionary[Vector2i: Variant, Array]: Variant, col_obj: Node2D, center_tile: Vector2i) -> void

@param col_obj: Collision object being processed

Returns: void

Parameters:

  • shape_offsets: Array[Vector2i]: Variant
  • collision_positions: Dictionary[Vector2i: Variant
  • Array]: Variant
  • col_obj: Node2D
  • center_tile: Vector2i

_merge_collision_positions

Signature: _merge_collision_positions(target_positions: Dictionary[Vector2i: Variant, Array]: Variant, source_positions: Dictionary[Vector2i: Variant, Array]: Variant) -> void

@param source_positions: Dictionary to merge from

Returns: void

Parameters:

  • target_positions: Dictionary[Vector2i: Variant
  • Array]: Variant
  • source_positions: Dictionary[Vector2i: Variant
  • Array]: Variant