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); }
private void cleanupRenderObjects() { if (modelRenderer != null) { modelRenderer.Destroy(); modelRenderer = null; } if (avatarInstance != null) { UnityEngine.Object.Destroy(avatarInstance); } }
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(); }