CollisionProcessor

Merge two collision position dictionaries

sort Weight: 10

Merge two collision position dictionaries

Version: v5.0.0

STABLE

Inherits: GBInjectable
Source: collision_processor.gd
Parsing: AST-based for maximum accuracy with symbol typing


Constants

GeometryCacheManager

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


Variables

_cache_manager:


_logger:


Methods

_init

Signature: _init(p_logger: GBLogger) -> void

Returns: void

Parameters:

  • p_logger: GBLogger

invalidate_cache

Signature: invalidate_cache() -> void

Invalidate all cached geometry data

Returns: void


resolve_gb_dependencies

Signature: resolve_gb_dependencies(container: GBCompositionContainer) -> bool

Resolve dependencies from composition container

Returns: bool

Parameters:

  • container: GBCompositionContainer

get_runtime_issues

Signature: get_runtime_issues() -> Array

Get runtime validation issues

Returns: Array


get_tile_offsets_for_collision

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

@return Dictionary[Vector2i, Array] containing RELATIVE tile offsets as keys and collision objects as values

Returns: Dictionary

Parameters:

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

_get_tile_offsets_for_collision_polygon

Signature: _get_tile_offsets_for_collision_polygon(polygon_node: CollisionPolygon2D, map: TileMapLayer, positioner: Node2D) -> Dictionary

Uses positioner as coordinate reference for consistent positioning behavior

Returns: Dictionary

Parameters:

  • polygon_node: CollisionPolygon2D
  • map: TileMapLayer
  • positioner: Node2D

_get_tile_offsets_for_collision_object

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

See positioning-regression-fix-guide.mdx for coordinate system details.

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

Initialize collision mapping with validation

Returns: bool

Parameters:

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

process_shape_offsets

Signature: process_shape_offsets(rect_test_setup: RectCollisionTestingSetup, test_data: CollisionTestSetup2D, map: TileMapLayer, center_tile: Vector2i, tile_size: Vector2, shape_epsilon: float, col_obj: CollisionObject2D) -> Dictionary

  • These offsets will be added to positioner position by IndicatorFactory

Returns: Dictionary

Parameters:

  • rect_test_setup: RectCollisionTestingSetup
  • test_data: CollisionTestSetup2D
  • map: TileMapLayer
  • center_tile: Vector2i
  • tile_size: Vector2
  • shape_epsilon: float
  • col_obj: CollisionObject2D

calculate_tile_range

Signature: calculate_tile_range(shape: Shape2D, bounds: Rect2, map: TileMapLayer, tile_size: Vector2, shape_transform: Transform2D) -> Dictionary

Returns a dictionary with ‘start’ and ’end_exclusive’ Vector2i values

Returns: Dictionary

Parameters:

  • shape: Shape2D
  • bounds: Rect2
  • map: TileMapLayer
  • tile_size: Vector2
  • shape_transform: Transform2D

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

Compute which tiles a shape overlaps with, returning offset positions

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

_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

to convert back to world positions as: positioner_position + (offset * tile_size)

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

Merge two collision position dictionaries

Returns: void

Parameters:

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