private IEnumerator loadStructurePrefab(StructureRenderParams param)
    {
        AssetRequest <GameObject> structureRequest;

        try
        {
            structureRequest = Content.LoadAsync(param.Definition.Prefab);
        }
        catch (Exception)
        {
            Log.LogErrorFormatted(this, "Could not load structure prefab {0} with prefab key {1}", param.Definition.Name, param.Definition.Prefab.Key);
            yield break;
        }
        if (structureRequest == null)
        {
            Log.LogErrorFormatted(this, "Something went wrong loading structure {0}.", param.Definition.Prefab);
            yield break;
        }
        yield return(structureRequest);

        GameObject structureGameObject = UnityEngine.Object.Instantiate(structureRequest.Asset);

        LightCullingMaskHelper.SetLayerIncludingChildren(structureGameObject.transform, "IconRender");
        yield return(loadStructureRenderData(param, structureGameObject));
    }
    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));
        }
    }
    protected override IEnumerator processRequest(RenderParams renderParam)
    {
        StructureRenderParams param = renderParam as StructureRenderParams;
        StructureDefinition   structureDefinition = null;

        if (!structureList.TryGetValue(param.Definition.Id, out structureDefinition))
        {
            Log.LogErrorFormatted(this, "Unable to locate structure {0} in structure definitions with id {1}.", param.Definition.Name, param.Definition.Id);
        }
        else
        {
            yield return(loadStructurePrefab(param));
        }
    }
    public void RequestImage(long id, StructureDefinition definition, RequestImageCallback callback, Color backgroundColor)
    {
        string        hashedName    = getHashedName(id);
        CallbackToken callbackToken = default(CallbackToken);

        callbackToken.Id           = id;
        callbackToken.DefinitionId = definition.Id;
        StructureRenderParams structureRenderParams = new StructureRenderParams();

        structureRenderParams.CallbackToken   = callbackToken;
        structureRenderParams.Definition      = definition;
        structureRenderParams.BackgroundColor = backgroundColor;
        structureRenderParams.ImageHash       = hashedName;
        StructureRenderParams renderParams = structureRenderParams;

        RequestImage(renderParams, callback);
    }