using System.Collections; using System.Collections.Generic; using System.Runtime.CompilerServices; using UnityEngine; namespace XericLibrary.Runtime.MacroLibrary { public static class NeighborGridExtend { /// /// 世界空间变换为网格系统本地坐标空间 /// /// /// /// 网格目标 /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 WorldToSimulation(this Vector3 world, NeighborGrid grid) => grid.WorldToSimulation(world); /// /// 网格系统本地坐标空间变换为世界空间 /// /// /// /// 网格目标 /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 SimulationToWorld(this Vector3 simulation, NeighborGrid grid) => grid.SimulationToWorld(simulation); /// /// 网格系统本地坐标空间转为网格系统本地单位空间 /// /// /// /// 网格目标 /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 SimulationToUnit(this Vector3 simulation, NeighborGrid grid) => grid.SimulationToUnit(simulation); /// /// 网格系统本地坐标空间转为网格系统本地单位空间 /// /// /// /// 网格目标 /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 UnitToSimulation(this Vector3 unit, NeighborGrid grid) => grid.UnitToSimulation(unit); /// /// 网格系统本地单位空间转为三维索引 /// /// /// /// 网格目标 /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3Int UnitToIndex(this Vector3 unit, NeighborGrid grid) => grid.UnitToIndex(unit); /// /// 三维索引转为网格系统本地单位空间 /// /// /// /// 网格目标 /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 IndexToUnit(this Vector3Int index, NeighborGrid grid) => grid.IndexToUnit(index); /// /// 网格系统本地单位空间转为线性索引 /// /// /// 网格系统本地坐标空间 /// 网格目标 /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int UnitToLinear(this Vector3 unit, NeighborGrid grid) => grid.UnitToLinear(unit); /// /// 三维索引转为线性索引 /// /// /// 三维索引 /// 网格目标 /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int IndexToLinear(this Vector3Int index, NeighborGrid grid) => grid.IndexToLinear(index); /// /// 网格系统本地单位空间转为线性索引 /// /// /// 网格系统本地坐标空间 /// 网格目标 /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3Int LinearToIndex(this int Linear, NeighborGrid grid) => grid.LinearToIndex(Linear); /// /// 三维索引转为线性索引 /// /// /// 三维索引 /// 网格目标 /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 LinearToUnit(this int Linear, NeighborGrid grid) => grid.LinearToUnit(Linear); /// /// 从世界坐标获取到索引 /// /// /// /// /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int WorldToLinear(this Vector3 Linear, NeighborGrid grid) => Linear.WorldToSimulation(grid).SimulationToUnit(grid).UnitToLinear(grid); } }