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); } }