private IEnumerator loadStructureRenderData(StructureRenderParams param, GameObject structureGameObject) { AssetRequest <StructureRenderData> renderDataRequest = null; try { renderDataRequest = Content.LoadAsync(param.Definition.RenderData); } catch (Exception) { Log.LogErrorFormatted(this, "Could not load the render data for structure {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(structureGameObject); } else { yield return(renderDataRequest); StructureRenderData structureRenderData = renderDataRequest.Asset; yield return(renderToTexture(param, structureGameObject, structureRenderData)); } }
private IEnumerator renderToTexture(RenderParams param, GameObject decorationGameObject, StructureRenderData 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; } ModelRenderer modelRenderer = new ModelRenderer(config); modelRenderer.RotateCamera(decorationRenderData.CameraRotation.eulerAngles); yield return(new WaitForEndOfFrame()); param.OutputTexture = modelRenderer.Image; modelRenderer.Destroy(); }