From f900853952635a6e82e24fe62548d171823afda0 Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 1 Sep 2021 17:47:20 +0800 Subject: =?UTF-8?q?*=E4=BF=AE=E6=94=B9=E7=B2=92=E5=AD=90=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E5=9C=A8=E7=BC=96=E8=BE=91=E5=99=A8=E4=B8=8B=E7=9A=84=E6=92=AD?= =?UTF-8?q?=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/Effects/FxClear.cs | 264 ++++++-------------------------------- 1 file changed, 36 insertions(+), 228 deletions(-) (limited to 'Assets/Scripts/Effects/FxClear.cs') diff --git a/Assets/Scripts/Effects/FxClear.cs b/Assets/Scripts/Effects/FxClear.cs index f5d3dff9..6b26da6c 100644 --- a/Assets/Scripts/Effects/FxClear.cs +++ b/Assets/Scripts/Effects/FxClear.cs @@ -50,59 +50,27 @@ public struct PlayEffectInfo } } -#if UNITY_EDITOR -[ExecuteInEditMode] -#endif public class FxClear : MonoBehaviour { - [SerializeField] public float ClearTime = 2f; private EffectPlayTypes m_EffectPlayType = EffectPlayTypes.None; - /// - /// 이름만 root. effect Tr 싱크 위해 사용. - /// + public float time { get { return m_curTime; } } + private Transform m_rootTr = null; private float m_curTime = 0.0f; - //private bool m_bExistTr = false; private bool m_bAttached = false; + private Vector3 m_offset = Vector3.zero; private Vector3 m_rot = Vector3.zero; private Vector3 m_scale = Vector3.zero; - private int m_ownerDbId = 0; - - public int ownerDbId - { - get - { - return m_ownerDbId; - } - } - - private bool m_bUIEffect = false; - #if UNITY_EDITOR private double m_prevTime = 0.0f; private float m_removeWaitTime = 0.0f; - private bool m_runInEditor = false; private bool m_destroyRequested = false; - - private List m_Particles = null; - - public bool RunInEditor - { - get - { - return m_runInEditor; - } - set - { - m_runInEditor = value; - } - } #endif private void Awake() @@ -114,32 +82,11 @@ public class FxClear : MonoBehaviour private void Start() { -#if UNITY_EDITOR - if (m_runInEditor) - { - UnityEditor.EditorApplication.update += Update; - m_prevTime = UnityEditor.EditorApplication.timeSinceStartup; - return; - } -#endif } private void OnDestroy() { Release(); - -#if UNITY_EDITOR - - if (m_runInEditor) - { - if (m_Particles != null) - { - m_Particles.Clear(); - m_Particles = null; - } - } - -#endif } public void Initialize(PlayEffectInfo info) @@ -152,30 +99,6 @@ public class FxClear : MonoBehaviour m_rot = info.rot; m_scale = info.scale; m_bAttached = info.bAttached; - m_ownerDbId = info.dbId; - m_bUIEffect = info.bUIEffect; - -#if UNITY_EDITOR - - if (m_runInEditor) - { - if (m_Particles == null) - { - m_Particles = new List(); - - transform.DoRecursively(x => - { - ParticleSystem sys = x.GetComponent(); - - if (sys != null) - { - m_Particles.Add(sys); - sys.Stop(); - } - }); - } - } -#endif SyncTr(); gameObject.SetActive(true); @@ -184,17 +107,11 @@ public class FxClear : MonoBehaviour public void Release() { m_rootTr = null; - m_ownerDbId = 0; m_curTime = 0.0f; - //m_bExistTr = false; m_bAttached = false; m_offset = Vector3.zero; m_rot = Vector3.zero; m_scale = Vector3.zero; - m_bUIEffect = false; -#if UNITY_EDITOR - m_removeWaitTime = 0.0f; -#endif } private void SyncTr() @@ -202,29 +119,29 @@ public class FxClear : MonoBehaviour #if UNITY_EDITOR if (transform == null || transform.gameObject == null) return; - if (m_runInEditor) - { - if (m_rootTr == null) - { - transform.position = m_offset; - } - else - { - - transform.localRotation = m_rootTr.rotation; - - if (m_bAttached) - { - transform.position = m_rootTr.position + (m_rootTr.rotation * m_offset); - } - else - { - transform.position = m_rootTr.position - (m_rootTr.rotation * m_offset); - } - } - } - else - { + //if (m_runInEditor) + //{ + // if (m_rootTr == null) + // { + // transform.position = m_offset; + // } + // else + // { + + // transform.localRotation = m_rootTr.rotation; + + // if (m_bAttached) + // { + // transform.position = m_rootTr.position + (m_rootTr.rotation * m_offset); + // } + // else + // { + // transform.position = m_rootTr.position - (m_rootTr.rotation * m_offset); + // } + // } + //} + //else + //{ if (m_rootTr == null) { transform.position = m_offset; @@ -242,7 +159,7 @@ public class FxClear : MonoBehaviour transform.position = m_rootTr.position + (m_rootTr.rotation * m_offset); } - } + //} #else if (m_rootTr == null) { @@ -265,14 +182,9 @@ public class FxClear : MonoBehaviour #if UNITY_EDITOR - if (m_runInEditor == false && m_bAttached && m_rootTr != null) + if (m_bAttached && m_rootTr != null) { transform.SetParent(m_rootTr); - - if (m_bUIEffect) - { - transform.localPosition = m_offset; - } } #else @@ -280,10 +192,6 @@ public class FxClear : MonoBehaviour if (m_bAttached && m_rootTr != null) { transform.SetParent(m_rootTr); - if (m_bUIEffect) - { - transform.localPosition = m_offset; - } } #endif @@ -300,122 +208,22 @@ public class FxClear : MonoBehaviour public void Restore() { - if (m_EffectPlayType == EffectPlayTypes.None) - { - DestroyImmediate(this.gameObject); - return; - } - - //EffectManager.Instance.RestoreEffect(this); + DestroyImmediate(this.gameObject); } -#if UNITY_EDITOR - - private void UpdateInEditMode() + public void UpdateFunc(float dt) { - if (!m_destroyRequested) - { - double timeDelta = UnityEditor.EditorApplication.timeSinceStartup - m_prevTime; - m_prevTime = UnityEditor.EditorApplication.timeSinceStartup; - - if (m_removeWaitTime <= 0.0f) // 순서 관계.. - { - if (ClearTime > 0.0f) - { - if (ClearTime < m_curTime) - { - List selectBuffer = new List(); - - if (m_Particles != null) - { - for (int i = 0; i < m_Particles.Count; i++) - { - m_Particles[i].Stop(); - m_Particles[i].gameObject.SetActive(false); - } - - Object[] selectedObjects = UnityEditor.Selection.objects; - for (int i = 0; i < selectedObjects.Length; i++) - { - if (m_Particles.Find(e => e.gameObject.GetInstanceID() == selectedObjects[i].GetInstanceID()) == null) - { - selectBuffer.Add(m_Particles[i]); - } - } - UnityEditor.Selection.objects = selectBuffer.ToArray(); - if (UnityEditor.Selection.selectionChanged != null) - { - UnityEditor.Selection.selectionChanged(); - } - } - - m_removeWaitTime = 1.0f; - } - else - { - if (m_Particles != null) - { - for (int i = 0; i < m_Particles.Count; i++) - { - m_Particles[i].Simulate(m_curTime); - } - } - } - } - } - else - { - m_removeWaitTime -= (float)timeDelta; - if (m_removeWaitTime < 0.0f) - { - transform.parent = null; - UnityEditor.EditorApplication.update -= Update; - DestroyImmediate(gameObject); - - m_destroyRequested = true; - return; - } - } - - SyncTr(); - } - } - -#endif - - private void Update() - { - m_curTime += Time.unscaledDeltaTime; - -#if UNITY_EDITOR - if (m_runInEditor) - { - UpdateInEditMode(); - return; - } -#endif - + m_curTime += dt; + SyncTr(); if (m_EffectPlayType != EffectPlayTypes.Loop && m_curTime >= ClearTime) { Restore(); return; } + } - //rootTr이 애초에 비어있으면 싱크 맞춰줄 필요 없음. - EffectMgr 통해서 관리되지 않는 이펙트. - //if (m_bExistTr == false) - // return; - // - //if (m_rootTr == null || m_rootTr.gameObject.activeInHierarchy == false) - //{ - // Restore(); - // return; - //} - // - //if (m_bAttached == false) - //{ - // return; - //} - // - //SyncTr(); + private void Update() + { + UpdateFunc(Time.unscaledDeltaTime); } } \ No newline at end of file -- cgit v1.1-26-g67d0