Interface IPlaceable
- Namespace
- MoonBark.GridPlacement.Core.Interfaces
- Assembly
- MoonBark.GridPlacement.Core.dll
Common interface for all placeable implementations.
Provides a contract that both engine-agnostic (POCS) and engine-specific implementations must follow, enabling interchangeability while maintaining clean separation between core logic and engine-specific functionality.
Implementation pattern: - Core.Placeable: Pure C# implementation for UI and logic - Godot.GodotPlaceableWrapper: Wraps core + adds Godot-specific methods - Future engines can add their own wrappers
public interface IPlaceable
Properties
CanMirror
Whether this placeable can be mirrored/flipped during placement Affects UI controls and available placement options
bool CanMirror { get; }
Property Value
CanRotate
Whether this placeable can be rotated during placement Affects UI controls and placement validation
bool CanRotate { get; }
Property Value
Category
Category identifier for grouping and filtering String-based to allow game-specific categories and runtime customization
string Category { get; }
Property Value
Description
Detailed description of the placeable Used for UI tooltips, help text, and contextual information
string Description { get; }
Property Value
FilePath
File path to the scene or resource file this placeable represents. The format is defined by the engine-specific layer that instantiates it.
string FilePath { get; }
Property Value
Id
Unique identifier for the placeable Used as primary key in data structures and lookup operations
string Id { get; }
Property Value
IsValid
Whether this placeable is currently valid/available Used by UI to enable/disable interactions and placement
bool IsValid { get; }
Property Value
Name
Human-readable display name Primary label shown in UI components (menus, tooltips, etc.)
string Name { get; }
Property Value
ResourceCost
Resource cost required to place this object Used by UI for cost display and placement validation
PlaceableCosts ResourceCost { get; }
Property Value
Size
Size dimensions in grid units Used for collision detection, placement validation, and UI layout
CoreVector2I Size { get; }
Property Value
- CoreVector2I
Variants
Visual variants available for this placeable Multiple visual representations while sharing core gameplay logic
IEnumerable<PlaceableVariant> Variants { get; }