示例#1
0
        private IEnumerator loadDecorationRenderData(DecorationRenderParams param, GameObject decorationGameObject)
        {
            AssetRequest <DecorationRenderData> renderDataRequest = null;

            try
            {
                renderDataRequest = Content.LoadAsync(param.Definition.RenderData);
            }
            catch (Exception)
            {
                Log.LogErrorFormatted(this, "Could not load the render data for decation {0} with key {1}", param.Definition.Name, param.Definition.RenderData.Key);
            }
            if (renderDataRequest == null)
            {
                Log.LogErrorFormatted(this, "Something went wrong loading render data {0}.", param.Definition.RenderData);
                UnityEngine.Object.Destroy(decorationGameObject);
            }
            else
            {
                yield return(renderDataRequest);

                DecorationRenderData decorationRenderData = renderDataRequest.Asset;
                yield return(renderToTexture(param, decorationGameObject, decorationRenderData));
            }
        }
示例#2
0
        private IEnumerator renderToTexture(RenderParams param, GameObject decorationGameObject, DecorationRenderData decorationRenderData)
        {
            ModelRendererConfig config = new ModelRendererConfig(decorationGameObject.transform, decorationRenderData.ItemPosition, new Vector2(256f, 256f))
            {
                FieldOfView               = decorationRenderData.CameraFOV,
                FrameObjectInCamera       = false,
                UseOcclusionCulling       = false,
                AutoDestroyObjectToRender = true
            };

            if (param.BackgroundColor != Color.clear)
            {
                config.CameraBackgroundColor = param.BackgroundColor;
                config.UseSolidBackground    = true;
            }
            decorationGameObject.transform.rotation = decorationRenderData.ItemRotation;
            ModelRenderer modelRenderer = new ModelRenderer(config);

            modelRenderer.RotateCamera(decorationRenderData.CameraRotation.eulerAngles);
            yield return(new WaitForEndOfFrame());

            param.OutputTexture = modelRenderer.Image;
            modelRenderer.Destroy();
        }