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(); }
public void AddToQueue(Cube cube) { if (_cubeCount == -1) _cubeCount = 0; _cubeCount++; _loadingQueue.Enqueue(cube); }
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); } }); }
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); } }); }
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; }
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)); } }
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]; } }