Пример #1
0
        public void CacheChunks(Chunk[] chunks)
        {
            for (int j = 0; j < chunks.Length; j++)
            {
                if (chunks[j].hasMesh)
                {
                    chunks[j].gameObject.SetActive(false);
                }
            }

            for (int i = 0; i < triggerObjects.Length; i++)
            {
                float  nearestDist  = Mathf.Infinity;
                Chunk  nearestChunk = null;
                LatLon position     = GeoCoord.GetLatLon(planet, triggerObjects[i].position);

                for (int j = 0; j < chunks.Length; j++)
                {
                    float dist = GeoCoord.GetDistance(position, chunks[j].centre);
                    if (dist < nearestDist)
                    {
                        nearestDist  = dist;
                        nearestChunk = chunks[j];
                    }
                }

                if (nearestChunk != null)
                {
                    ActivateChunk(nearestChunk);
                    Chunk[] connectedChunks = nearestChunk.ConnectedChunks;
                    for (int j = 0; j < connectedChunks.Length; j++)
                    {
                        ActivateChunk(connectedChunks[j]);
                    }
                }
            }
        }