diff options
Diffstat (limited to 'Assets/Scripts')
-rw-r--r-- | Assets/Scripts/Effects/FxClear.cs | 264 | ||||
-rw-r--r-- | Assets/Scripts/Input/InputManager.cs | 9 | ||||
-rw-r--r-- | Assets/Scripts/Line3D.meta | 8 | ||||
-rw-r--r-- | Assets/Scripts/Line3D/Line3DRenderer.cs | 18 | ||||
-rw-r--r-- | Assets/Scripts/Line3D/Line3DRenderer.cs.meta | 11 | ||||
-rw-r--r-- | Assets/Scripts/Projectile/Projectile.cs | 7 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Action/WaitForActionReachEnd.cs | 5 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Collider/CollisionSystem.cs | 6 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs | 6 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Components/UnitState/PCState.cs | 9 | ||||
-rw-r--r-- | Assets/Scripts/Unit/TimelineEventProxy.cs | 52 |
11 files changed, 142 insertions, 253 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 diff --git a/Assets/Scripts/Input/InputManager.cs b/Assets/Scripts/Input/InputManager.cs index 838409b5..4ad6ec02 100644 --- a/Assets/Scripts/Input/InputManager.cs +++ b/Assets/Scripts/Input/InputManager.cs @@ -38,10 +38,11 @@ public class InputManager : SingletonMB<InputManager> cmd.key = vKey;
cmd.time = Time.time;
m_CommandQueue.Add(cmd);
- Debug.Log(cmd.time);
- string cmdStr = "";
- m_CommandQueue.ForEach(s => cmdStr += s.key.ToString() + ",");
- Debug.Log(cmdStr);
+
+ //Debug.Log(cmd.time);
+ //string cmdStr = "";
+ //m_CommandQueue.ForEach(s => cmdStr += s.key.ToString() + ",");
+ //Debug.Log(cmdStr);
}
}
float curTime = Time.time;
diff --git a/Assets/Scripts/Line3D.meta b/Assets/Scripts/Line3D.meta new file mode 100644 index 00000000..7ca25728 --- /dev/null +++ b/Assets/Scripts/Line3D.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: df7762b0e9f4ea643822227dc54aa423 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Line3D/Line3DRenderer.cs b/Assets/Scripts/Line3D/Line3DRenderer.cs new file mode 100644 index 00000000..d16916cb --- /dev/null +++ b/Assets/Scripts/Line3D/Line3DRenderer.cs @@ -0,0 +1,18 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class Line3DRenderer : MonoBehaviour
+{
+ // Start is called before the first frame update
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+}
diff --git a/Assets/Scripts/Line3D/Line3DRenderer.cs.meta b/Assets/Scripts/Line3D/Line3DRenderer.cs.meta new file mode 100644 index 00000000..ad2c4500 --- /dev/null +++ b/Assets/Scripts/Line3D/Line3DRenderer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f4af360e8a036c74499160090bb71ff7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Projectile/Projectile.cs b/Assets/Scripts/Projectile/Projectile.cs index b1eb1b61..a6411f5f 100644 --- a/Assets/Scripts/Projectile/Projectile.cs +++ b/Assets/Scripts/Projectile/Projectile.cs @@ -59,7 +59,7 @@ public class Projectile : MonoBehaviour private List<int> m_Hitmask;
- private float time;
+ public float time;
private bool markDestroy;
@@ -94,7 +94,7 @@ public class Projectile : MonoBehaviour {
this.transform.position += this.velocity * deltaTime;
time += deltaTime;
- if(time > this.lifetime || markDestroy)
+ if (time > this.lifetime || markDestroy)
{
DestroyImmediate(this.gameObject);
}
@@ -170,6 +170,9 @@ public class Projectile : MonoBehaviour if (spark)
{
GameObject obj = GameObject.Instantiate(spark);
+#if UNITY_EDITOR
+ obj.transform.SetParent(TimelineEventProxy.Root_Particles.transform);
+#endif
obj.transform.position = collision.collidee.unitCollider.owner.center;
markDestroy = true;
diff --git a/Assets/Scripts/Unit/Action/WaitForActionReachEnd.cs b/Assets/Scripts/Unit/Action/WaitForActionReachEnd.cs index c2dd5f92..771e946b 100644 --- a/Assets/Scripts/Unit/Action/WaitForActionReachEnd.cs +++ b/Assets/Scripts/Unit/Action/WaitForActionReachEnd.cs @@ -18,9 +18,8 @@ public class WaitForActionReachEnd : IEnumerator public bool MoveNext() { - var stateInfo = m_UnitAnimation.layers[m_Layer].stateInfo; - float normalTime = stateInfo.normalizedTime; - return normalTime < 1f; + var layer = m_UnitAnimation.layers[m_Layer]; + return layer.playbackNormalizedTime < 1f; } public void Reset() diff --git a/Assets/Scripts/Unit/Collider/CollisionSystem.cs b/Assets/Scripts/Unit/Collider/CollisionSystem.cs index e84c54a9..4a73446f 100644 --- a/Assets/Scripts/Unit/Collider/CollisionSystem.cs +++ b/Assets/Scripts/Unit/Collider/CollisionSystem.cs @@ -126,10 +126,14 @@ public class CollisionSystem : SingletonMB<CollisionSystem> foreach (var projectile in registry.projectiles)
{
+ if (projectile == null)
+ continue;
for(int i = 0; i < hurtboxes.Count; ++i)
{
ColliderDescriptor hurtCollider = hurtboxes[i];
- if (projectile.owner.type == hurtCollider.unitCollider.owner.type)
+ if (hurtCollider.unitCollider == null)
+ continue;
+ if (projectile.owner == null || hurtCollider.unitCollider.owner == null || projectile.owner.type == hurtCollider.unitCollider.owner.type)
continue;
Box hurtbox = ColliderUtility.GetColliderInWorldSpace(hurtCollider);
foreach (var itor in projectile.GetCollidersInWorldSpace())
diff --git a/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs b/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs index 6d17971d..1a990252 100644 --- a/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs +++ b/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs @@ -45,7 +45,7 @@ public class AnimatorLayerInfo get { AnimatorStateInfo stateInfo = m_Animator.GetCurrentAnimatorStateInfo(layerIndex); - if (isInTransition) + if (isInTransition) // 过渡中的动作认为当前动作是下一个动作 { stateInfo = m_Animator.GetNextAnimatorStateInfo(layerIndex); } @@ -62,7 +62,7 @@ public class AnimatorLayerInfo get { AnimatorClipInfo[] clips = null; - if (!isInTransition)
+ if (!isInTransition)
{
clips = m_Animator.GetCurrentAnimatorClipInfo(layerIndex);
if (clips.Length == 0)
@@ -70,7 +70,7 @@ public class AnimatorLayerInfo clips = m_Animator.GetNextAnimatorClipInfo(layerIndex);
} } - else
+ else // 过渡中的动作认为当前动作是下一个动作
{
clips = m_Animator.GetNextAnimatorClipInfo(layerIndex);
} diff --git a/Assets/Scripts/Unit/Components/UnitState/PCState.cs b/Assets/Scripts/Unit/Components/UnitState/PCState.cs index 435591b0..6bd6fa78 100644 --- a/Assets/Scripts/Unit/Components/UnitState/PCState.cs +++ b/Assets/Scripts/Unit/Components/UnitState/PCState.cs @@ -210,12 +210,12 @@ public class PCState : UnitState { const int total = 3; int id = 0; - m_Owner.pcAnimation.AnimAttack(id); + m_Owner.pcAnimation.AnimAttack(id++); yield return null; while (true) { bool canCombo = m_Owner.pcAnimation.baseLayer.IsToggleOpen(EAnimationToogle.Combo); - if (canCombo) + if (canCombo && id < total) { if (Input.GetKeyDown("j")) { @@ -227,9 +227,8 @@ public class PCState : UnitState { TurnAround(true); } - ++id; - m_Owner.pcAnimation.AnimAttack(id); - yield return null; + m_Owner.pcAnimation.AnimAttack(id++);
+ yield return null; yield return new WaitForTransitionDone(m_Owner.pcAnimation); } } diff --git a/Assets/Scripts/Unit/TimelineEventProxy.cs b/Assets/Scripts/Unit/TimelineEventProxy.cs index 825cf5bf..e56f590a 100644 --- a/Assets/Scripts/Unit/TimelineEventProxy.cs +++ b/Assets/Scripts/Unit/TimelineEventProxy.cs @@ -8,10 +8,36 @@ using UnityEngine; [DisallowMultipleComponent] public partial class TimelineEventProxy {
+
#if UNITY_EDITOR // ActionTool里 + private static GameObject m_Root_Particles; + public static GameObject Root_Particles
+ {
+ get
+ {
+ if (m_Root_Particles == null)
+ m_Root_Particles = new GameObject("Root_Particles");
+ return m_Root_Particles;
+ }
+ }
+ private static GameObject m_Root_Projectiles; + public static GameObject Root_Projectiles
+ {
+ get
+ {
+ if (m_Root_Projectiles == null)
+ m_Root_Projectiles = new GameObject("Root_Projectiles");
+ return m_Root_Projectiles;
+ }
+ } + public bool isInEditMode;
+
public delegate void RegisterProjectileHandle(Projectile projectile);
public RegisterProjectileHandle registerProjectile;
+
+ public delegate void RegisterParticleSystemHandle(FxClear vfx);
+ public RegisterParticleSystemHandle registerParticleSystem;
#endif public enum EEventType @@ -91,8 +117,10 @@ public partial class TimelineEventProxy } } m_PrevFrame = frame; - } - + }
+
+ #region Event Handles +
void ExecuteEvents(List<AnimationEventBase> events) { if (events == null || events.Count == 0) @@ -122,9 +150,16 @@ public partial class TimelineEventProxy GameObject go = GameObject.Instantiate(prefab); go.transform.SetParent(root.transform); - FxClear onClear = root.AddComponent<FxClear>(); - onClear.RunInEditor = true; - onClear.Initialize(new PlayEffectInfo(path, EffectPlayTypes.Oneshot, m_Root, effect.position, effect.rotation, effect.scale, 0, false)); + FxClear onClear = root.AddComponent<FxClear>();
+ onClear.gameObject.name = prefab.name + "(Clone)";
+ onClear.Initialize(new PlayEffectInfo(path, EffectPlayTypes.Oneshot, m_Root, effect.position, effect.rotation, effect.scale, 0, false));
+#if UNITY_EDITOR
+ if (isInEditMode && registerParticleSystem != null)
+ {
+ registerParticleSystem(onClear); + }
+ onClear.gameObject.transform.SetParent(Root_Particles.transform);
+#endif
} } @@ -168,7 +203,10 @@ public partial class TimelineEventProxy {
registerProjectile(projectile);
}
+ obj.transform.SetParent(Root_Projectiles.transform);
#endif
- } - + }
+
+ #endregion +
}
\ No newline at end of file |