Esempio n. 1
0
        public Task <BakeResult> BakeAsync(IBakeContent content, Quality quality, CancellationToken token)
        {
            if (content == null)
            {
                throw new ArgumentNullException(nameof(content));
            }

            throw new NotImplementedException();
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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;
            }
        }
Esempio n. 4
0
        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);
        }