diff options
Diffstat (limited to 'Assets/Scripts/Effects/FxClear.cs')
-rw-r--r-- | Assets/Scripts/Effects/FxClear.cs | 264 |
1 files changed, 36 insertions, 228 deletions
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;
- /// <summary>
- /// 이름만 root. effect Tr 싱크 위해 사용.
- /// </summary>
+ 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<ParticleSystem> 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<ParticleSystem>();
-
- transform.DoRecursively(x =>
- {
- ParticleSystem sys = x.GetComponent<ParticleSystem>();
-
- 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<Object> selectBuffer = new List<Object>();
-
- 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 |