diff --git a/Scripts/BakingCamera.cs b/Scripts/BakingCamera.cs deleted file mode 100644 index 3d8659d..0000000 --- a/Scripts/BakingCamera.cs +++ /dev/null @@ -1,97 +0,0 @@ -using UnityEngine; - -namespace Coffee.UIParticleExtensions -{ - [AddComponentMenu("")] - internal class BakingCamera : MonoBehaviour - { - static BakingCamera s_Instance; - private static readonly Vector3 s_OrthoPosition = new Vector3(0, 0, -1000); - private static readonly Quaternion s_OrthoRotation = Quaternion.identity; - -#if UNITY_2018_3_OR_NEWER && UNITY_EDITOR - static BakingCamera s_InstanceForPrefab; - - private static BakingCamera InstanceForPrefab - { - get - { - // If current scene is prefab mode, create OverlayCamera for editor. - var prefabStage = UnityEditor.Experimental.SceneManagement.PrefabStageUtility.GetCurrentPrefabStage(); - if (prefabStage == null || !prefabStage.scene.isLoaded) return null; - if (s_InstanceForPrefab) return s_InstanceForPrefab; - - s_InstanceForPrefab = Create(); - s_InstanceForPrefab.name += " (For Prefab Stage)"; - UnityEngine.SceneManagement.SceneManager.MoveGameObjectToScene(s_InstanceForPrefab.gameObject, prefabStage.scene); - - return s_InstanceForPrefab; - } - } -#endif - - private static BakingCamera Instance - { - get - { -#if UNITY_2018_3_OR_NEWER && UNITY_EDITOR - var inst = InstanceForPrefab; - if (inst) return inst; -#endif - // Find instance in scene, or create new one. - return s_Instance - ? s_Instance - : (s_Instance = Create()); - } - } - - private Camera _camera; - - private static BakingCamera Create() - { - var gameObject = new GameObject(typeof(BakingCamera).Name); - - // This camera object is just for internal use - gameObject.hideFlags = HideFlags.HideAndDontSave; - - var inst = gameObject.AddComponent(); - inst._camera = gameObject.AddComponent(); - inst._camera.enabled = false; - inst._camera.orthographic = true; - - // Turn camera off because particle mesh baker will use only camera matrix - gameObject.SetActive(false); - - return inst; - } - - private void Awake() - { - if (this == s_Instance) - DontDestroyOnLoad(gameObject); - } - - public static Camera GetCamera(Canvas canvas) - { - if (!canvas) return Camera.main; - - canvas = canvas.rootCanvas; - // Adjust camera orthographic size to canvas size - // for canvas-based coordinates of particles' size and speed. - var size = ((RectTransform) canvas.transform).rect.size; - Instance._camera.orthographicSize = Mathf.Max(size.x, size.y) * canvas.scaleFactor; - - var camera = canvas.worldCamera; - var transform = Instance.transform; - var rotation = canvas.renderMode != RenderMode.ScreenSpaceOverlay && camera - ? camera.transform.rotation - : s_OrthoRotation; - - transform.SetPositionAndRotation(s_OrthoPosition, rotation); - Instance._camera.orthographic = true; - Instance._camera.farClipPlane = 2000f; - - return Instance._camera; - } - } -} diff --git a/Scripts/BakingCamera.cs.meta b/Scripts/BakingCamera.cs.meta deleted file mode 100644 index baee49a..0000000 --- a/Scripts/BakingCamera.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 999f0ea10cb5f48ed89190a0ca83dd53 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Scripts/UIParticleUpdater.cs b/Scripts/UIParticleUpdater.cs index 9d412dd..76de20a 100755 --- a/Scripts/UIParticleUpdater.cs +++ b/Scripts/UIParticleUpdater.cs @@ -118,8 +118,6 @@ namespace Coffee.UIExtensions particle.bakedMesh.Clear(false); Profiler.EndSample(); - // Get camera for baking mesh. - var camera = BakingCamera.GetCamera(particle.canvas); var root = particle.transform; var rootMatrix = Matrix4x4.Rotate(root.rotation).inverse * Matrix4x4.Scale(root.lossyScale).inverse; @@ -213,7 +211,11 @@ namespace Coffee.UIExtensions if (hash != 0) { var m = MeshHelper.GetTemporaryMesh(); - r.BakeMesh(m, camera, true); + if (camera) + r.BakeMesh(m, camera, true); + else + r.BakeMesh(m, true); + MeshHelper.Push(i * 2, hash, m, matrix); } @@ -234,7 +236,11 @@ namespace Coffee.UIExtensions var m = MeshHelper.GetTemporaryMesh(); try { - r.BakeTrailsMesh(m, camera, true); + if (camera) + r.BakeTrailsMesh(m, camera, true); + else + r.BakeTrailsMesh(m, true); + MeshHelper.Push(i * 2 + 1, hash, m, matrix); } catch