| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | using System.Collections.Generic;using Fort23.UTool;using UnityEngine;using Utility;namespace GameLogic.Combat.CombatTool.SceneTool{    public class RandomAllMap    {        private Transform root;        private SceneMonoConfig sceneMonoConfig;        private Map<int, GameObjectPool> _allGameObjectPools = new Map<int, GameObjectPool>();        public void Init(Transform root, SceneMonoConfig sceneMonoConfig)        {            this.root = root;            this.sceneMonoConfig = sceneMonoConfig;        }        public void Update()        {            Vector3 pos = root.position;            List<int> removeKey = new List<int>();            for (_allGameObjectPools.Begin(); _allGameObjectPools.Next();)            {                Vector3 objetcPos = _allGameObjectPools.Value.own.transform.position;                if (Vector3.Distance(pos, objetcPos) > 300)                {                    removeKey.Add(_allGameObjectPools.Key);                    GObjectPool.Instance.Recycle(_allGameObjectPools.Value);                    // _allGameObjectPools.Value.SetActive(false);                }            }            for (int i = 0; i < removeKey.Count; i++)            {                _allGameObjectPools.Remove(removeKey[i]);            }            float radius = sceneMonoConfig.radius;            int x = (int)(pos.x / radius);            int z = (int)(pos.z / radius);            float xStartInit = x;            float zStartInit = z;            for (int i = -3; i <= 3; i++)            {                for (int j = -3; j <= 4; j++)                {                    // if (i == 0 && j == 0)                    // {                    //     continue;                    // }                    float currX = (xStartInit + i) * radius;                    float currZ = (zStartInit + j) * radius;                    int key = (int)(currX * 1000 + currZ);                    if (_allGameObjectPools.ContainsKey(key))                    {                        continue;                    }                    GameObjectPool gameObjectPool = GetObejct();                    float y = Random.Range(-2, 0);                    gameObjectPool.own.transform.position = new Vector3(currX, y, currZ);                    _allGameObjectPools.Add(key, gameObjectPool);                }            }        }        private GameObjectPool GetObejct()        {            int index = Random.Range(0, sceneMonoConfig.allObject.Length);            GameObject gameObject = sceneMonoConfig.allObject[index];            // GameObject go = GameObject.Instantiate(gameObject);            GameObjectPool gameObjectPool =                GObjectPool.Instance.FetchAsyncForGameObject<GameObjectPool>(gameObject, gameObject.name);            return gameObjectPool;        }    }}
 |