summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Unit
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-10-01 19:14:01 +0800
committerchai <chaifix@163.com>2021-10-01 19:14:01 +0800
commitd9f2bb30c5d0eb8e8513a0e16e13e3c4f2af89e1 (patch)
treefafd4c30b3de44d7aa74d99d5293a39688375e9b /Assets/Scripts/Unit
parent4a5ca9210f40d454aeef3e9423914fa6ffe4aabc (diff)
*misc
Diffstat (limited to 'Assets/Scripts/Unit')
-rw-r--r--Assets/Scripts/Unit/AI/Actions.meta8
-rw-r--r--Assets/Scripts/Unit/AI/Conditionals.meta8
-rw-r--r--Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs4
-rw-r--r--Assets/Scripts/Unit/Components/UnitLensEffect.cs209
-rw-r--r--Assets/Scripts/Unit/Components/UnitLensEffect_Effects.cs13
-rw-r--r--Assets/Scripts/Unit/Components/UnitLensEffect_Effects.cs.meta11
-rw-r--r--Assets/Scripts/Unit/Components/UnitState/PCState.cs3
-rw-r--r--Assets/Scripts/Unit/Events/EventMesh_LensEffect_Dash.cs1
-rw-r--r--Assets/Scripts/Unit/Helper.meta8
-rw-r--r--Assets/Scripts/Unit/Helper/DirectionCalculator.cs11
-rw-r--r--Assets/Scripts/Unit/Helper/DirectionCalculator.cs.meta11
-rw-r--r--Assets/Scripts/Unit/LensEffect/LensEffectBase.cs8
-rw-r--r--Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs2
-rw-r--r--Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs2
14 files changed, 184 insertions, 115 deletions
diff --git a/Assets/Scripts/Unit/AI/Actions.meta b/Assets/Scripts/Unit/AI/Actions.meta
new file mode 100644
index 00000000..9b4ad463
--- /dev/null
+++ b/Assets/Scripts/Unit/AI/Actions.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 971e9d55b8bc0894eb6a110fb962000b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Unit/AI/Conditionals.meta b/Assets/Scripts/Unit/AI/Conditionals.meta
new file mode 100644
index 00000000..70a86da5
--- /dev/null
+++ b/Assets/Scripts/Unit/AI/Conditionals.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 85b7e0c7ed1d12f42a5178bfbf3d934c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs b/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
index ddf2c4cc..1d407fc2 100644
--- a/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
+++ b/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
@@ -229,6 +229,8 @@ public class AnimatorLayerInfo
m_CurrentState = animState;
m_Animator.CrossFade(animState.ToString(), normalizedTransitionDuration, layerIndex, normalizedTimeOffset, normalizedTransitionTime);
m_TimelineEventProxy.ResetPrevAnimationData();
+
+ playbackSpeed = 1;
}
public void OnPlay(string animState, float normalizedTime)
@@ -236,6 +238,8 @@ public class AnimatorLayerInfo
m_CurrentState = animState;
m_Animator.Play(animState, layerIndex, normalizedTime);
m_TimelineEventProxy.ResetPrevAnimationData();
+
+ playbackSpeed = 1;
}
}
diff --git a/Assets/Scripts/Unit/Components/UnitLensEffect.cs b/Assets/Scripts/Unit/Components/UnitLensEffect.cs
index ff5af87d..23539de0 100644
--- a/Assets/Scripts/Unit/Components/UnitLensEffect.cs
+++ b/Assets/Scripts/Unit/Components/UnitLensEffect.cs
@@ -7,87 +7,87 @@ using UnityEngine.Rendering;
// Unit效果之一,镜头效果,通过command buffer实现
-public class UnitLensEffect : UnitComponent
-{
- private List<RendererProxy> renderers;
-
- private static ObjectPool<CommandBuffer> m_CommandBufferPool;
-
- private List<LensEffectBase> m_Effects;
+public partial class UnitLensEffect : UnitComponent
+{
+ private List<RendererProxy> renderers;
+
+ private static ObjectPool<CommandBuffer> m_CommandBufferPool;
+
+ private List<LensEffectBase> m_Effects;
// 每个角色维护单独的command buffers,而不是共享command buffer。有一定开销,但不重要。
private Dictionary<ERenderingEvent, CommandBuffer> m_InUseCommandBuffers;
private Dictionary<ERenderingEvent, CommandBuffer> m_CachedCommandBuffers;
- static UnitLensEffect()
- {
- m_CommandBufferPool = new ObjectPool<CommandBuffer>(null, null);
- }
-
- public override void Initialize()
- {
- base.Initialize();
-
- renderers = new List<RendererProxy>();
- m_Effects = new List<LensEffectBase>();
+ static UnitLensEffect()
+ {
+ m_CommandBufferPool = new ObjectPool<CommandBuffer>(null, null);
+ }
+
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ renderers = new List<RendererProxy>();
+ m_Effects = new List<LensEffectBase>();
m_InUseCommandBuffers = new Dictionary<ERenderingEvent, CommandBuffer>();
m_CachedCommandBuffers = new Dictionary<ERenderingEvent, CommandBuffer>();
- }
-
- public override void OnUpdate()
- {
- base.OnUpdate();
+ }
- }
-
- public override void OnPostInitialize()
- {
- base.OnPostInitialize();
-
- IBodyRendererAgent body = owner.unitRender.body;
- if (body == null || body.renderers == null)
- return;
- for (int i = 0; i < body.renderers.Length; ++i)
- {
- var renderer = body.renderers[i];
- if (renderer == null)
- continue;
- RendererProxy proxy = renderer.renderer.gameObject.GetOrAddComponent<RendererProxy>();
- proxy.Initialize(renderer);
- proxy.onWillRenderObject = OnWillRenderObj;
- proxy.onRenderObject = OnRenderObj;
- renderers.Add(proxy);
- }
-
- MainCamera.Instance.customRenderingPipeline.onPreCull += OnWillRenderUnit;
- MainCamera.Instance.customRenderingPipeline.onPostRender += OnRenderUnit;
-
- /////
- //m_Effects.Add(new LensEffect_MotionBlur());
- //m_Effects.Add(new LensEffect_BlurRim(Color.blue));
- //m_Effects.Add(new LensEffect_Buzz());
- }
-
- public override void Release()
- {
- MainCamera.Instance.customRenderingPipeline.onPreCull -= OnWillRenderUnit;
- MainCamera.Instance.customRenderingPipeline.onPostRender -= OnRenderUnit;
-
- base.Release();
- }
-
- private void OnWillRenderUnit()
- {
+ public override void OnUpdate()
+ {
+ base.OnUpdate();
+
+ }
+
+ public override void OnPostInitialize()
+ {
+ base.OnPostInitialize();
+
+ IBodyRendererAgent body = owner.unitRender.body;
+ if (body == null || body.renderers == null)
+ return;
+ for (int i = 0; i < body.renderers.Length; ++i)
+ {
+ var renderer = body.renderers[i];
+ if (renderer == null)
+ continue;
+ RendererProxy proxy = renderer.renderer.gameObject.GetOrAddComponent<RendererProxy>();
+ proxy.Initialize(renderer);
+ proxy.onWillRenderObject = OnWillRenderObj;
+ proxy.onRenderObject = OnRenderObj;
+ renderers.Add(proxy);
+ }
+
+ MainCamera.Instance.customRenderingPipeline.onPreCull += OnWillRenderUnit;
+ MainCamera.Instance.customRenderingPipeline.onPostRender += OnRenderUnit;
+
+ /////
+ //m_Effects.Add(new LensEffect_MotionBlur());
+ //m_Effects.Add(new LensEffect_BlurRim(Color.blue));
+ //m_Effects.Add(new LensEffect_Buzz());
+ }
+
+ public override void Release()
+ {
+ MainCamera.Instance.customRenderingPipeline.onPreCull -= OnWillRenderUnit;
+ MainCamera.Instance.customRenderingPipeline.onPostRender -= OnRenderUnit;
+
+ base.Release();
+ }
+
+ private void OnWillRenderUnit()
+ {
if (m_Effects == null || m_Effects.Count == 0)
return;
PrepareCommandBuffers();
- IBodyRendererAgent body = owner.unitRender.body;
- if (body == null || body.renderers == null)
- return;
- if (m_Effects == null || m_Effects.Count == 0)
- return;
+ IBodyRendererAgent body = owner.unitRender.body;
+ if (body == null || body.renderers == null)
+ return;
+ if (m_Effects == null || m_Effects.Count == 0)
+ return;
foreach (var cb in m_InUseCommandBuffers)
{
cb.Value.Clear();
@@ -118,9 +118,9 @@ public class UnitLensEffect : UnitComponent
}
MainCamera.Instance.camera.AddCommandBuffer(ce, cb.Value);
}
- }
-
- private void OnRenderUnit()
+ }
+
+ private void OnRenderUnit()
{
if (m_Effects == null || m_Effects.Count == 0)
return;
@@ -146,17 +146,12 @@ public class UnitLensEffect : UnitComponent
for (int i = 0; i < m_Effects.Count; ++i)
{
LensEffectBase eff = m_Effects[i];
- MethodInfo method = eff.GetType().GetMethod("OnRenderFinish", BindingFlags.Instance | BindingFlags.Public);
- if (method == null)
- continue;
- method.Invoke(eff, new object[] { });
- if(eff.CanDestroy())
- {
+ eff.OnRenderFinish();
+ if (eff.CanDestroy())
temp.Add(eff);
- }
}
- for(int i = 0; i< temp.Count; ++i)
+ for (int i = 0; i < temp.Count; ++i)
{
temp[i].OnDestroy();
m_Effects.Remove(temp[i]);
@@ -169,19 +164,19 @@ public class UnitLensEffect : UnitComponent
CameraEvent ce = cb.Key.ToCameraEvent();
MainCamera.Instance.camera.RemoveCommandBuffer(ce, cb.Value);
}
+ }
+
+ private void OnWillRenderObj(BodyPartRenderer renderer)
+ {
+ }
+
+ private void OnRenderObj(BodyPartRenderer renderer)
+ {
}
- private void OnWillRenderObj(BodyPartRenderer renderer)
- {
- }
-
- private void OnRenderObj(BodyPartRenderer renderer)
- {
- }
-
void PrepareCommandBuffers()
{
- if(m_InUseCommandBuffers.Count != 0)
+ if (m_InUseCommandBuffers.Count != 0)
{
var temp = m_CachedCommandBuffers;
m_CachedCommandBuffers = m_InUseCommandBuffers;
@@ -192,14 +187,14 @@ public class UnitLensEffect : UnitComponent
{
usedEvent |= m_Effects[i].renderingEvents;
}
- foreach(ERenderingEvent evt in Enum.GetValues(typeof(ERenderingEvent)))
+ foreach (ERenderingEvent evt in Enum.GetValues(typeof(ERenderingEvent)))
{
if (evt == ERenderingEvent.None)
continue;
- if(usedEvent.HasFlag(evt))
+ if (usedEvent.HasFlag(evt))
{
CommandBuffer cb;
- if(m_CachedCommandBuffers.TryGetValue(evt, out cb))
+ if (m_CachedCommandBuffers.TryGetValue(evt, out cb))
{
m_CachedCommandBuffers.Remove(evt);
}
@@ -211,29 +206,29 @@ public class UnitLensEffect : UnitComponent
m_InUseCommandBuffers.Add(evt, cb);
}
}
- foreach(var cb in m_CachedCommandBuffers)
+ foreach (var cb in m_CachedCommandBuffers)
{
m_CommandBufferPool.Release(cb.Value);
}
m_CachedCommandBuffers.Clear();
}
- static CommandBuffer ClaimCommandBuffer()
- {
- CommandBuffer cb = m_CommandBufferPool.Get();
- cb.Clear();
- return cb;
- }
-
- static void ReleaseCommandBuffer(ref CommandBuffer cb)
- {
- m_CommandBufferPool.Release(cb);
- cb = null;
- }
+ static CommandBuffer ClaimCommandBuffer()
+ {
+ CommandBuffer cb = m_CommandBufferPool.Get();
+ cb.Clear();
+ return cb;
+ }
+
+ static void ReleaseCommandBuffer(ref CommandBuffer cb)
+ {
+ m_CommandBufferPool.Release(cb);
+ cb = null;
+ }
public void AddEffect(LensEffectBase effect)
{
m_Effects.Add(effect);
- }
-
-}
+ }
+
+} \ No newline at end of file
diff --git a/Assets/Scripts/Unit/Components/UnitLensEffect_Effects.cs b/Assets/Scripts/Unit/Components/UnitLensEffect_Effects.cs
new file mode 100644
index 00000000..31d3c549
--- /dev/null
+++ b/Assets/Scripts/Unit/Components/UnitLensEffect_Effects.cs
@@ -0,0 +1,13 @@
+using UnityEngine;
+using UnityEngine.Rendering;
+
+public partial class UnitLensEffect : UnitComponent
+{
+
+ public void Dash(Color color, float lifeTime, float angle, UnitSnapshotInfo snapshot)
+ {
+ LensEffect_Dash dash = new LensEffect_Dash(color, lifeTime, angle, snapshot);
+ owner.unitLensEffect.AddEffect(dash);
+ }
+
+} \ No newline at end of file
diff --git a/Assets/Scripts/Unit/Components/UnitLensEffect_Effects.cs.meta b/Assets/Scripts/Unit/Components/UnitLensEffect_Effects.cs.meta
new file mode 100644
index 00000000..78ed27ad
--- /dev/null
+++ b/Assets/Scripts/Unit/Components/UnitLensEffect_Effects.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 16bed6a0d9a62e74987b4e6b5d70403c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Unit/Components/UnitState/PCState.cs b/Assets/Scripts/Unit/Components/UnitState/PCState.cs
index 1bdd355f..22855aeb 100644
--- a/Assets/Scripts/Unit/Components/UnitState/PCState.cs
+++ b/Assets/Scripts/Unit/Components/UnitState/PCState.cs
@@ -144,8 +144,7 @@ public partial class PCState : UnitState
UnitSnapshotInfo info = owner.TakeSnapshot();
Vector2 dir = TestErika.Instance.monster.owner.center + new Vector3(offset, -0.5f, 0) - owner.center;
- LensEffect_Dash dash = new LensEffect_Dash(Color.white, 0.1f, Mathf.Atan2(dir.y, dir.x), info);
- owner.unitLensEffect.AddEffect(dash);
+ owner.unitLensEffect.Dash(Color.white, 0.1f, Mathf.Rad2Deg * Mathf.Atan2(dir.y, dir.x), info);
owner.center = TestErika.Instance.monster.owner.center + new Vector3(offset, -0.5f, 0);
TurnAround(!owner.isTowardRight);
diff --git a/Assets/Scripts/Unit/Events/EventMesh_LensEffect_Dash.cs b/Assets/Scripts/Unit/Events/EventMesh_LensEffect_Dash.cs
index f71d7f5e..0da254cc 100644
--- a/Assets/Scripts/Unit/Events/EventMesh_LensEffect_Dash.cs
+++ b/Assets/Scripts/Unit/Events/EventMesh_LensEffect_Dash.cs
@@ -8,5 +8,6 @@ public class EventMesh_LensEffect_Dash : AnimationEventBase
public override string shortName { get { return "D"; } }
public float lifeTime;
+ public float angle;
} \ No newline at end of file
diff --git a/Assets/Scripts/Unit/Helper.meta b/Assets/Scripts/Unit/Helper.meta
new file mode 100644
index 00000000..e6ded530
--- /dev/null
+++ b/Assets/Scripts/Unit/Helper.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2608980741d3e0d49864f1a2e240bb77
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Unit/Helper/DirectionCalculator.cs b/Assets/Scripts/Unit/Helper/DirectionCalculator.cs
new file mode 100644
index 00000000..267fc86d
--- /dev/null
+++ b/Assets/Scripts/Unit/Helper/DirectionCalculator.cs
@@ -0,0 +1,11 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class DirectionCalculator
+{
+
+
+}
+
+
diff --git a/Assets/Scripts/Unit/Helper/DirectionCalculator.cs.meta b/Assets/Scripts/Unit/Helper/DirectionCalculator.cs.meta
new file mode 100644
index 00000000..61f34b48
--- /dev/null
+++ b/Assets/Scripts/Unit/Helper/DirectionCalculator.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2c264e119e0dde14ca91aefd61f02442
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs b/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs
index 92e75ca6..93981bfd 100644
--- a/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs
+++ b/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs
@@ -14,10 +14,10 @@ public abstract class LensEffectBase
{
public enum EStage
{
- Before ,
- Iterate ,
- After ,
- Finished ,
+ Before , // 迭代之前
+ Iterate , // 迭代renderer
+ After , // 迭代之后
+ Finished, // 渲染角色之后(所有lens effect结束)
}
public abstract ERenderingEvent renderingEvents { get; }
diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs b/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs
index a779b6d1..0ff16e3a 100644
--- a/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs
+++ b/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs
@@ -74,7 +74,7 @@ public class LensEffect_Dash : LensEffectBase
Vector4 tileOffset = RenderingUtility.GetTillingOffset(MainCamera.Instance.camera, trs.position, 6);
blur.material.SetVector("_UnitTileOffset", tileOffset);
- blur.material.SetFloat("_Angle", Mathf.Rad2Deg * angle);
+ blur.material.SetFloat("_Angle", angle);
blur.material.SetFloat("_AlphaMultiplier", Mathf.Clamp(1 - curTime / lifeTime, 0, 1));
cb.Blit(tempID, BuiltinRenderTextureType.CameraTarget, blur.material);
diff --git a/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs b/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs
index a52e6ea0..ca9f5405 100644
--- a/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs
+++ b/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs
@@ -195,7 +195,7 @@ public partial class TimelineEventProxy
return;
UnitSnapshotInfo info = owner.TakeSnapshot();
- LensEffect_Dash dash = new LensEffect_Dash(Color.white, 2, 0, info);
+ LensEffect_Dash dash = new LensEffect_Dash(Color.white, dashinfo.lifeTime, dashinfo.angle, info);
owner.unitLensEffect.AddEffect(dash);
}