//private float ChunkRange => this.Settings.FieldSize * FieldDictionary.ChunkRangeRate; FieldRealizer GetRealizer(Vector3 pos, out Vector3 center) { IndexXY.CheckAndRenew(pos, this.Settings.FieldSize, ref indexXY); var x = indexXY.Value.x; var y = indexXY.Value.y; DebugUtils.LogFormatColor(UnityEngine.Color.blue, "realize Indexies :[{0}][{1}] postion:{2}", x, y, pos); return(GetRealizer(x, y, out center)); }
public bool CheckNeedRealize(Vector3 center) { if (indexXY == null) { return(true); } Vector3 pos = getPos(center); return(IndexXY.CheckAndRenew(pos, this.Settings.FieldSize, ref indexXY)); }
public static bool CheckAndRenew(Vector3 pos, float size, ref IndexXY?xy) { int x = Mathf.FloorToInt((pos.x + size / 2) / size); int y = Mathf.FloorToInt((pos.z + size / 2) / size); if (xy == null || xy.Value.x != x || xy.Value.y != y) { xy = new IndexXY(x, y); return(true); } return(false); }
List <FieldRealizer> GetRealizers(Vector3 pos) { IndexXY.CheckAndRenew(pos, this.Settings.FieldSize, ref indexXY); var x = indexXY.Value.x; var y = indexXY.Value.y; list.Clear(); var count = this.Settings.ChunlRangeCount; if (count > 0) { for (var i = x - count; i <= x + count; i++) { for (var j = y - count; j <= y + count; j++) { var realizer = GetRealizer(i, j, out var center); if (realizer == null) { continue; } realizer.SetCenter(center); list.Add(realizer); } } } else { var realizer = GetRealizer(x, y, out var center); if (realizer != null) { realizer.SetCenter(center); list.Add(realizer); } } //DebugUtils.LogFormatColor(UnityEngine.Color.blue, "realize Indexies :[{0}][{1}] postion:{2}", x, y, pos); return(list); }