public Task <BakeResult> BakeAsync(IBakeContent content, Quality quality, CancellationToken token) { if (content == null) { throw new ArgumentNullException(nameof(content)); } throw new NotImplementedException(); }
public BakeResult Bake(IBakeContent content, Quality quality) { if (content == null) { throw new ArgumentNullException(nameof(content)); } var coroutine = BakeInCoroutine(content, quality, CancellationToken.None); while (coroutine.MoveNext()) { } return(coroutine.Current); }
private void PrepareScene(IBakeContent content) { if (bakeNodes == null) { bakeNodes = GetBakeNodes(); } foreach (var bakeNode in bakeNodes) { var coord = content.Target + bakeNode.Offset; var info = content.GetInfo(coord); bakeNode.DrawingBoard.transform.rotation = Quaternion.Euler(0, info.Angle, 0); bakeNode.LandformTextures = info.Textures; } }
private IEnumerator <BakeResult> BakeInCoroutine(IBakeContent content, Quality quality, CancellationToken token) { token.ThrowIfCancellationRequested(); RenderTexture diffuseRT = RenderTexture.GetTemporary(quality.DiffuseMapWidth, quality.DiffuseMapHeight); DisplayDiffuse(); CameraRender(diffuseRT); var diffuseMap = CreateTexture(diffuseRT, quality.DiffuseMapWidth, quality.DiffuseMapHeight); RenderTexture.ReleaseTemporary(diffuseRT); yield return(default(BakeResult)); if (token.IsCancellationRequested) { GameObject.Destroy(diffuseMap); throw new OperationCanceledException(); } RenderTexture heightRT = RenderTexture.GetTemporary(quality.HeightMapWidth, quality.HeightMapHeight); DisplayHeight(); CameraRender(heightRT); var heightMap = CreateTexture(heightRT, quality.HeightMapWidth, quality.HeightMapHeight); RenderTexture.ReleaseTemporary(heightRT); yield return(default(BakeResult)); if (token.IsCancellationRequested) { GameObject.Destroy(diffuseMap); GameObject.Destroy(heightMap); throw new OperationCanceledException(); } BakeResult result = new BakeResult() { DiffuseMap = diffuseMap, HeightMap = heightMap, }; yield return(result); }