Exemplo n.º 1
0
        public void DestroyChildren()
        {
            if (_loadCubeRequest != null)
            {
                _loadCubeRequest.Cancelled = true;
            }

            if (_cubes != null)
            {
                foreach (var cube in _cubes)
                {
                    Destroy(cube);
                }
                _cubes.Clear();
            }

            if (_cube != null)
            {
                _cube.GameObject = null;
                _cube = null;
            }

            foreach (var detector in _childDetectors)
            {
                detector.GetComponent<IsRendered>().DestroyChildren();
                Destroy(detector);
            }
            _childDetectors.Clear();
        }
Exemplo n.º 2
0
        public void AddToQueue(Cube cube)
        {
            if (_cubeCount == -1)
                _cubeCount = 0;

            _cubeCount++;
            _loadingQueue.Enqueue(cube);
        }
Exemplo n.º 3
0
        private void ProcessObj(string eboPath, Cube cube)
        {
            var objpath = eboPath + "?fmt=obj";
            GeometryBuffer buffer = new GeometryBuffer();
            cube.MaterialData = new List<MaterialData>();

            RestClient client = new RestClient(objpath);
            RestRequest request = new RestRequest(Method.GET);
            request.AddHeader("Accept-Encoding", "gzip, deflate");
            client.ExecuteAsync(request, (r, h) =>
            {
                if (r.Content != null)
                {
                    CubeBuilderHelpers.SetGeometryData(r.Content, buffer);
                    cube.Buffer = buffer;

                    _buildingQueue.Enqueue(cube);
                    _textureQueue.Enqueue(cube);
                }
            });
        }
Exemplo n.º 4
0
        private void ProcessEbo(string eboPath, Cube cube)
        {
            GeometryBuffer buffer = new GeometryBuffer();
            cube.MaterialData = new List<MaterialData>();

            RestClient client = new RestClient(eboPath);
            RestRequest request = new RestRequest(Method.GET);
            request.AddHeader("Accept-Encoding", "gzip, deflate");
            client.ExecuteAsync(request, (r, h) =>
            {
                if (r.RawBytes != null)
                {
                    buffer.EboBuffer = r.RawBytes;
                    cube.Buffer = buffer;

                    _buildingQueue.Enqueue(cube);
                    _textureQueue.Enqueue(cube);
                }
            });
        }
Exemplo n.º 5
0
        private IEnumerator BuildCube(Cube cube)
        {
            GameObject[] ms = new GameObject[cube.Buffer.NumObjects];

            for (int i = 0; i < cube.Buffer.NumObjects; i++)
            {
                GameObject go = new GameObject();
                go.name = String.Format("cube_{0}_{1}_{2}.{3}", cube.MapPosition.x, cube.MapPosition.y,
                    cube.MapPosition.z, i);
                go.transform.parent = gameObject.transform;
                go.AddComponent(typeof (MeshFilter));
                go.AddComponent(typeof (MeshRenderer));
                ms[i] = go;
            }

            cube.GameObject = ms[0];
            cube.Buffer.PopulateMeshes(ms);
            yield return null;
        }
Exemplo n.º 6
0
        private IEnumerator OnRenderRoutine()
        {
            if (_manager != null)
            {
                _loadCubeRequest = new LoadCubeRequest(_x, _y, _z, _lod, _pyriteQuery, createdObjects =>
                        {
                            if (!_loadCubeRequest.Cancelled)
                            {
                                _cubes.AddRange(createdObjects);
                                StartCoroutine(StopRenderCheck(Camera.main));
                            }
                            else
                            {
                                foreach (var createdObject in createdObjects)
                                {
                                    Destroy(createdObject);
                                }
                            }
                        });

                _manager.EnqueueLoadCubeRequest(_loadCubeRequest);
            }
            else if (_cubeLoader != null)
            {
                _cube = new Cube {MapPosition = new Vector3(_x, _y, _z), Query = _pyriteQuery, Lod = _lod};
                _cubeLoader.AddToQueue(_cube);
                while (_cube.GameObject == null)
                {
                    yield return null;
                }
                _cubes.AddRange(new[] {_cube.GameObject});
                yield return StartCoroutine(StopRenderCheck(Camera.main));
            }
        }
Exemplo n.º 7
0
 public void MapTextures(Cube cube)
 {
     GameObject gameObject = cube.GameObject;
     if (gameObject != null)
     {
         var textureCoord = DetailLevel.TextureCoordinatesForCube(cube.MapPosition.x,
             cube.MapPosition.y);
         Renderer renderer = gameObject.GetComponent<Renderer>();
         renderer.materials =
             _materialCache[
                 "materialData_L" + DetailLevel.Value + "_" + (int) textureCoord.x + "_" + (int) textureCoord.y];
     }
 }