CollisionShapeProcessor
@param target_positions: Dictionary to merge...
@param target_positions: Dictionary to merge into (modified in-place) @param source_positions: Dictionary to merge from
Version: v5.0.0
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: CollisionTestSetup2Dmap: TileMapLayerpositioner: 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: Node2Dcollision_positions: Dictionary[Vector2i: VariantArray]: 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: Varianttest_data: CollisionTestSetup2Dmap: TileMapLayercenter_tile: Vector2itile_size: Vector2shape_epsilon: floatcol_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: Shape2Dbounds: Rect2map: TileMapLayertile_size: Vector2shape_transform: Transform2Dstart_tile: Vector2iend_exclusive: Vector2ishape_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: Shape2Dshape_transform: Transform2Dmap: TileMapLayertile_size: Vector2shape_epsilon: floatstart_tile: Vector2iend_exclusive: Vector2icenter_tile: Vector2ishape_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]: Variantcollision_positions: Dictionary[Vector2i: VariantArray]: Variantcol_obj: Node2Dcenter_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: VariantArray]: Variantsource_positions: Dictionary[Vector2i: VariantArray]: Variant