Interface IPreviewCalculationService
- Namespace
- MoonBark.GridPlacement.Core.Interfaces.Placement
- Assembly
- MoonBark.GridPlacement.Core.dll
Core service interface for calculating placement preview data. This interface contains pure business logic without Godot dependencies.
public interface IPreviewCalculationService
Methods
CalculatePreview(FootprintData, CoreVector2I, IGridOccupancy, bool)
Calculates preview data for a building at the given grid position.
PreviewCalculationResult CalculatePreview(FootprintData footprintData, CoreVector2I gridPosition, IGridOccupancy existingOccupancy, bool validityCheck = true)
Parameters
footprintDataFootprintDataThe footprint data to create preview for
gridPositionCoreVector2IThe grid position for the preview
existingOccupancyIGridOccupancyCurrent grid occupancy data
validityCheckboolWhether to perform placement validity check
Returns
- PreviewCalculationResult
Preview calculation result with visual and validity data
CalculateShapeConfiguration(FootprintData)
Calculates shape configuration for a building footprint.
PreviewShapeData CalculateShapeConfiguration(FootprintData footprint)
Parameters
footprintFootprintDataThe footprint data
Returns
- PreviewShapeData
Shape configuration data
CalculateVisualAppearance(bool, float, CoreColor, CoreColor)
Calculates the visual appearance of the preview based on validity.
PreviewVisualSettings CalculateVisualAppearance(bool isValid, float baseTransparency, CoreColor validColor, CoreColor invalidColor)
Parameters
isValidboolWhether the placement is valid
baseTransparencyfloatBase transparency value
validColorCoreColorCoreColor for valid placement
invalidColorCoreColorCoreColor for invalid placement
Returns
- PreviewVisualSettings
Visual settings for the preview
CheckGridBounds(FootprintData, CoreVector2I, CoreVector2I)
Checks if a building fits within grid bounds at the given position.
bool CheckGridBounds(FootprintData footprintData, CoreVector2I gridPosition, CoreVector2I gridSize)
Parameters
footprintDataFootprintDataThe footprint data to check
gridPositionCoreVector2IThe grid position
gridSizeCoreVector2ISize of the grid
Returns
- bool
True if the building fits within bounds
UpdatePreviewPosition(PreviewCalculationResult, CoreVector2I, IGridOccupancy)
Updates preview data when the grid position changes.
PreviewCalculationResult UpdatePreviewPosition(PreviewCalculationResult previousResult, CoreVector2I newGridPosition, IGridOccupancy existingOccupancy)
Parameters
previousResultPreviewCalculationResultPrevious preview calculation result
newGridPositionCoreVector2INew grid position
existingOccupancyIGridOccupancyCurrent grid occupancy data
Returns
- PreviewCalculationResult
Updated preview calculation result