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)); } }
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(); }