Table of Contents

Interface IIndicatorCalculationService

Namespace
MoonBark.GridPlacement.Core.Interfaces.Placement
Assembly
MoonBark.GridPlacement.Core.dll

Core service interface for calculating placement indicators. This interface contains pure business logic without Godot dependencies.

public interface IIndicatorCalculationService

Methods

CalculateIndicatorCount(FootprintData, CoreVector2I, IEnumerable<PlacementRuleData>, IGridOccupancy)

Calculates the number of indicators that would be created without creating them. Useful for performance optimization and UI preview.

int CalculateIndicatorCount(FootprintData footprint, CoreVector2I gridPosition, IEnumerable<PlacementRuleData> rules, IGridOccupancy existingOccupancy)

Parameters

footprint FootprintData

The footprint data

gridPosition CoreVector2I

The grid position

rules IEnumerable<PlacementRuleData>

List of placement rules to apply

existingOccupancy IGridOccupancy

Current grid occupancy data

Returns

int

Number of indicators that would be created

CalculateIndicators(FootprintData, CoreVector2I, IEnumerable<PlacementRuleData>, IGridOccupancy)

Calculates indicator positions and validity for a given footprint.

IndicatorCalculationResult CalculateIndicators(FootprintData footprint, CoreVector2I gridPosition, IEnumerable<PlacementRuleData> rules, IGridOccupancy existingOccupancy)

Parameters

footprint FootprintData

The footprint data to calculate indicators for

gridPosition CoreVector2I

The grid position where the footprint is placed

rules IEnumerable<PlacementRuleData>

List of placement rules to apply

existingOccupancy IGridOccupancy

Current grid occupancy data

Returns

IndicatorCalculationResult

Calculation result with indicator positions and validity

GetFootprintPositions(FootprintData, CoreVector2I)

Gets the footprint positions for a given footprint at a grid position.

List<CoreVector2I> GetFootprintPositions(FootprintData footprint, CoreVector2I gridPosition)

Parameters

footprint FootprintData

The footprint data

gridPosition CoreVector2I

The grid position

Returns

List<CoreVector2I>

List of grid positions occupied by the footprint

ValidatePlacement(FootprintData, CoreVector2I, IEnumerable<PlacementRuleData>, IGridOccupancy)

Validates that a footprint can be placed at the given position.

bool ValidatePlacement(FootprintData footprint, CoreVector2I gridPosition, IEnumerable<PlacementRuleData> rules, IGridOccupancy existingOccupancy)

Parameters

footprint FootprintData

The footprint data to validate

gridPosition CoreVector2I

The grid position to validate

rules IEnumerable<PlacementRuleData>

List of placement rules to apply

existingOccupancy IGridOccupancy

Current grid occupancy data

Returns

bool

True if placement is valid