From 304121d9827cff3d4fa186d7c9469556e39ad903 Mon Sep 17 00:00:00 2001 From: LionelPerrault Date: Wed, 2 Sep 2020 16:02:59 +0000 Subject: [PATCH] 3.0.0-preview.31 # [3.0.0-preview.31](https://github.com/mob-sakai/ParticleEffectForUGUI/compare/v3.0.0-preview.30...v3.0.0-preview.31) (2020-09-02) ### Bug Fixes * combine Instances error ([878f812](https://github.com/mob-sakai/ParticleEffectForUGUI/commit/878f81202ac29a8a20f174efa916da64eef99e8a)), closes [#91](https://github.com/mob-sakai/ParticleEffectForUGUI/issues/91) * in rare cases, the particle size is incorrect with camera-space mode ([90593ac](https://github.com/mob-sakai/ParticleEffectForUGUI/commit/90593ac021ce19d164927e44804354535db047bb)), closes [#93](https://github.com/mob-sakai/ParticleEffectForUGUI/issues/93) * trails material uses sprite texture ([9e65ee7](https://github.com/mob-sakai/ParticleEffectForUGUI/commit/9e65ee7345e16b5124e94d26f5749999c648f677)), closes [#92](https://github.com/mob-sakai/ParticleEffectForUGUI/issues/92) ### Features * refresh children ParticleSystem with a gameObjects as root ([8bae1d0](https://github.com/mob-sakai/ParticleEffectForUGUI/commit/8bae1d08cc6f00e2b8d6f336aad92233891da1e4)) --- CHANGELOG.md | 14 +++++++++++ .../CFX_Demo_With_UIParticle.cs | 4 +--- Scripts/BakingCamera.cs | 23 +++++-------------- Scripts/UIParticle.cs | 14 +++++++---- Scripts/UIParticleUpdater.cs | 1 + Scripts/Utils.cs | 2 +- package.json | 2 +- 7 files changed, 34 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aff1416..49f905e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +# [3.0.0-preview.31](https://github.com/mob-sakai/ParticleEffectForUGUI/compare/v3.0.0-preview.30...v3.0.0-preview.31) (2020-09-02) + + +### Bug Fixes + +* combine Instances error ([878f812](https://github.com/mob-sakai/ParticleEffectForUGUI/commit/878f81202ac29a8a20f174efa916da64eef99e8a)), closes [#91](https://github.com/mob-sakai/ParticleEffectForUGUI/issues/91) +* in rare cases, the particle size is incorrect with camera-space mode ([90593ac](https://github.com/mob-sakai/ParticleEffectForUGUI/commit/90593ac021ce19d164927e44804354535db047bb)), closes [#93](https://github.com/mob-sakai/ParticleEffectForUGUI/issues/93) +* trails material uses sprite texture ([9e65ee7](https://github.com/mob-sakai/ParticleEffectForUGUI/commit/9e65ee7345e16b5124e94d26f5749999c648f677)), closes [#92](https://github.com/mob-sakai/ParticleEffectForUGUI/issues/92) + + +### Features + +* refresh children ParticleSystem with a gameObjects as root ([8bae1d0](https://github.com/mob-sakai/ParticleEffectForUGUI/commit/8bae1d08cc6f00e2b8d6f336aad92233891da1e4)) + # [3.0.0-preview.30](https://github.com/mob-sakai/ParticleEffectForUGUI/compare/v3.0.0-preview.29...v3.0.0-preview.30) (2020-09-02) diff --git a/Samples~/Cartoon FX & War FX Demo/CFX_Demo_With_UIParticle.cs b/Samples~/Cartoon FX & War FX Demo/CFX_Demo_With_UIParticle.cs index e6be8f7..c4c2aa1 100644 --- a/Samples~/Cartoon FX & War FX Demo/CFX_Demo_With_UIParticle.cs +++ b/Samples~/Cartoon FX & War FX Demo/CFX_Demo_With_UIParticle.cs @@ -49,10 +49,8 @@ private void Update() var particle = demo.GetType() .GetMethod("spawnParticle", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public) .Invoke(demo, new object[0]) as GameObject; - particle.transform.SetParent(UiParticle.transform, false); particle.transform.localScale = Vector3.one; - particle.transform.localPosition = Vector3.zero; - UiParticle.RefreshParticles(); + UiParticle.SetParticleSystemInstance(particle); } public void SetCanvasWidth(int width) diff --git a/Scripts/BakingCamera.cs b/Scripts/BakingCamera.cs index 728f542..a88d6cf 100644 --- a/Scripts/BakingCamera.cs +++ b/Scripts/BakingCamera.cs @@ -82,23 +82,12 @@ public static Camera GetCamera(Canvas canvas) var camera = canvas.worldCamera; var transform = Instance.transform; - if (canvas.renderMode != RenderMode.ScreenSpaceOverlay && camera) - { - var cameraTr = camera.transform; - transform.SetPositionAndRotation(cameraTr.position, cameraTr.rotation); - - Instance._camera.orthographic = camera.orthographic; - Instance._camera.orthographicSize = camera.orthographicSize; - Instance._camera.fieldOfView = camera.fieldOfView; - Instance._camera.nearClipPlane = camera.nearClipPlane; - Instance._camera.farClipPlane = camera.farClipPlane; - Instance._camera.rect = camera.rect; - } - else - { - Instance._camera.orthographic = true; - transform.SetPositionAndRotation(canvas.transform.position + s_OrthoPosition, s_OrthoRotation); - } + var rotation = canvas.renderMode != RenderMode.ScreenSpaceOverlay && camera + ? camera.transform.rotation + : s_OrthoRotation; + + transform.SetPositionAndRotation(canvas.transform.position + s_OrthoPosition, rotation); + Instance._camera.orthographic = true; return Instance._camera; } diff --git a/Scripts/UIParticle.cs b/Scripts/UIParticle.cs index 7cc701c..49b416e 100755 --- a/Scripts/UIParticle.cs +++ b/Scripts/UIParticle.cs @@ -129,7 +129,7 @@ public void SetParticleSystemInstance(GameObject instance) SetParticleSystemInstance(instance, true); } - public void SetParticleSystemInstance(GameObject instance, bool destroy) + public void SetParticleSystemInstance(GameObject instance, bool destroyOldParticles) { if (!instance) return; @@ -137,7 +137,7 @@ public void SetParticleSystemInstance(GameObject instance, bool destroy) { var go = child.gameObject; go.SetActive(false); - if (!destroy) continue; + if (!destroyOldParticles) continue; #if UNITY_EDITOR if (!Application.isPlaying) @@ -151,7 +151,7 @@ public void SetParticleSystemInstance(GameObject instance, bool destroy) tr.SetParent(transform, false); tr.localPosition = Vector3.zero; - RefreshParticles(); + RefreshParticles(instance); } public void SetParticleSystemPrefab(GameObject prefab) @@ -163,7 +163,13 @@ public void SetParticleSystemPrefab(GameObject prefab) public void RefreshParticles() { - GetComponentsInChildren(particles); + RefreshParticles(gameObject); + } + + public void RefreshParticles(GameObject root) + { + if (!root) return; + root.GetComponentsInChildren(particles); foreach (var ps in particles) { diff --git a/Scripts/UIParticleUpdater.cs b/Scripts/UIParticleUpdater.cs index db3280d..081d662 100755 --- a/Scripts/UIParticleUpdater.cs +++ b/Scripts/UIParticleUpdater.cs @@ -240,6 +240,7 @@ private static void BakeMesh(UIParticle particle) // Combine Profiler.BeginSample("[UIParticle] Bake Mesh > CombineMesh"); MeshHelper.CombineMesh(particle.bakedMesh); + MeshHelper.Clear(); Profiler.EndSample(); } diff --git a/Scripts/Utils.cs b/Scripts/Utils.cs index dcb46b7..ee75539 100644 --- a/Scripts/Utils.cs +++ b/Scripts/Utils.cs @@ -180,7 +180,7 @@ public static long GetMaterialHash(this ParticleSystem self, bool trail) if (!mat) return 0; - var tex = self.GetTextureForSprite(); + var tex = trail ? null : self.GetTextureForSprite(); return ((long) mat.GetHashCode() << 32) + (tex ? tex.GetHashCode() : 0); } diff --git a/package.json b/package.json index 2fb75f0..ba0a55b 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "com.coffee.ui-particle", "displayName": "UI Particle", "description": "This plugin provide a component to render particle effect for uGUI.\nThe particle rendering is maskable and sortable, without Camera, RenderTexture or Canvas.", - "version": "3.0.0-preview.30", + "version": "3.0.0-preview.31", "unity": "2018.2", "license": "MIT", "repository": {