using System.Collections.Generic;
using UnityEngine;
namespace InfiniteWorld.VoxelWorld.Contracts
{
///
/// Provides chunk-level nav build inputs without exposing the internal runtime representation of the voxel world.
///
public interface IChunkNavSourceReader
{
///
/// Returns the world-space edge length of one chunk so nav coverage and source collection can reason in chunk units.
///
float ChunkWorldSize { get; }
///
/// Copies the coordinates of chunks that currently have usable nav geometry into the provided list.
///
void GetLoadedChunkCoords(List results);
///
/// Retrieves the current nav source snapshot for a loaded chunk so sidecar systems can rebuild coverage from stable descriptors.
///
bool TryGetChunkNavSourceSnapshot(Vector2Int coord, out ChunkNavSourceSnapshot snapshot);
}
///
/// Exposes the current gameplay-relevant interest points that should influence world streaming or nav coverage planning.
///
public interface IWorldInterestReader
{
///
/// Increments when the logical set of interest points changes and downstream systems should invalidate cached plans.
///
int InterestVersion { get; }
///
/// Appends the currently active interest points into the provided list.
///
void GetInterestPoints(List results);
}
///
/// Exposes the currently built nav coverage so gameplay systems can query whether a world-space area is ready for pathing.
///
public interface INavCoverageReader
{
///
/// Returns whether the supplied world position lies inside ready nav coverage, not merely inside generated terrain.
///
bool IsPositionCovered(Vector3 worldPosition);
///
/// Copies the currently active coverage windows so diagnostics and higher-level systems can inspect the coverage topology.
///
void GetCoverageWindows(List results);
}
///
/// Lets callers inject short-lived route hints that bias nav coverage planning toward an upcoming movement corridor.
///
public interface INavCoverageHintRegistry
{
///
/// Registers or refreshes a temporary linear hint for the given owner so coverage can prewarm along a route before pathing starts.
///
void SetLinearHint(int ownerId, Vector3 from, Vector3 to, float priority, float ttlSeconds);
///
/// Removes the temporary hint owned by the caller when the route is no longer relevant.
///
void ClearHint(int ownerId);
}
///
/// Exposes the current set of transient nav coverage hints as read-only interest points for the nav coverage scheduler.
///
public interface INavCoverageHintReader
{
///
/// Increments whenever the effective hint set changes so dependent planners can invalidate cached coverage windows.
///
int HintVersion { get; }
///
/// Appends the currently active transient hint points into the provided list.
///
void GetHintPoints(List results);
}
}