Exemple #1
0
        //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));
        }
Exemple #2
0
        public bool CheckNeedRealize(Vector3 center)
        {
            if (indexXY == null)
            {
                return(true);
            }

            Vector3 pos = getPos(center);

            return(IndexXY.CheckAndRenew(pos, this.Settings.FieldSize, ref indexXY));
        }
Exemple #3
0
            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);
            }
Exemple #4
0
        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);
        }