private IEnumerator renderSprite(string unlockID)
    {
        AssetRequest <GameObject> assetRequest = Content.LoadAsync <GameObject>(unlockID);

        yield return(assetRequest);

        GameObject itemModel = Object.Instantiate(assetRequest.Asset);

        itemModel.transform.rotation = Quaternion.Euler(ITEM_MODEL_ROTATION);
        CameraCullingMaskHelper.SetLayerIncludingChildren(itemModel.transform, "IconRender");
        if (unlitTextureShader == null)
        {
            unlitTextureShader = Shader.Find("Unlit/Texture");
        }
        Material mat = new Material(unlitTextureShader)
        {
            mainTexture = itemModel.GetComponent <Renderer>().sharedMaterial.mainTexture
        };

        itemModel.GetComponent <Renderer>().material = mat;
        itemModel.AddComponent <ResourceCleaner>();
        ModelRenderer modelRenderer = new ModelRenderer(new ModelRendererConfig(itemModel.transform, MODEL_RENDER_OFFSET, new Vector2(256f, 256f))
        {
            FrameObjectInCamera = true
        });

        yield return(new WaitForEndOfFrame());

        callback(Sprite.Create(modelRenderer.Image, new Rect(0f, 0f, modelRenderer.Image.width, modelRenderer.Image.height), Vector2.zero), null);
        modelRenderer.Destroy();
    }
        private bool onProcessAnimationFrame(ModelRenderer modelRenderer, DataEntityHandle handle, GameObject avatarInstance)
        {
            string displayName = dataEntityCollection.GetComponent <DisplayNameData>(handle).DisplayName;

            if (pendingRenderRequests.ContainsKey(displayName))
            {
                Texture2D image = modelRenderer.Image;
                if (UseCache)
                {
                    if (!string.IsNullOrEmpty(pendingRenderRequests[displayName].Context))
                    {
                        avatarImageCacher.SaveTextureToCache(handle, pendingRenderRequests[displayName].Context, image);
                    }
                    else
                    {
                        Log.LogErrorFormatted(this, "Could not add image to cache, context string not found for display name: {0}", displayName);
                    }
                }
                pendingRenderRequests.Remove(displayName);
                dispatchImageReady(handle, image);
            }
            modelRenderer.Destroy();
            UnityEngine.Object.Destroy(avatarInstance);
            return(false);
        }
示例#3
0
 private void cleanupRenderObjects()
 {
     if (modelRenderer != null)
     {
         modelRenderer.Destroy();
         modelRenderer = null;
     }
     if (avatarInstance != null)
     {
         UnityEngine.Object.Destroy(avatarInstance);
     }
 }
示例#4
0
    private IEnumerator renderToTexture(ItemRenderParams param)
    {
        param.OutputTexture = null;
        DCustomEquipment equipment = param.equipment;
        int equipmentTemplateId    = equipment.DefinitionId;
        Dictionary <int, TemplateDefinition> templates = Service.Get <GameData>().Get <Dictionary <int, TemplateDefinition> >();

        if (!templates.ContainsKey(equipmentTemplateId))
        {
            Log.LogErrorFormatted(this, "Unable to locate template {0} in template definitions with id {1}.", equipment.Name, equipmentTemplateId);
            yield break;
        }
        TemplateDefinition templateDefinition = templates[equipmentTemplateId];
        AssetRequest <TemplateRenderData> templateRequest;

        try
        {
            templateRequest = Content.LoadAsync(templateDefinition.RenderDataKey);
        }
        catch (Exception)
        {
            Log.LogErrorFormatted(this, "Could not load render data for template definition {0} at {1}.", templateDefinition.Name, templateDefinition.RenderDataKey.Key);
            yield break;
        }
        if (templateRequest != null)
        {
            yield return(templateRequest);

            TemplateRenderData templateRenderData = templateRequest.Asset;
            penguin.transform.rotation = templateRenderData.ItemRotation;
            ModelRendererConfig config = new ModelRendererConfig(penguin.transform, templateRenderData.ItemPosition, new Vector2(256f, 256f))
            {
                FieldOfView               = templateRenderData.CameraFOV,
                FrameObjectInCamera       = false,
                UseOcclusionCulling       = false,
                AutoDestroyObjectToRender = false
            };
            if (param.BackgroundColor != Color.clear)
            {
                config.CameraBackgroundColor = param.BackgroundColor;
                config.UseSolidBackground    = true;
            }
            ModelRenderer modelRenderer = new ModelRenderer(config);
            modelRenderer.RotateCamera(templateRenderData.CameraRotation.eulerAngles);
            yield return(new WaitForEndOfFrame());

            param.OutputTexture = modelRenderer.Image;
            modelRenderer.Destroy();
        }
    }
    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();
    }