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