From 142b0b9264d9b8da81f173ec92d153d52f67ae06 Mon Sep 17 00:00:00 2001 From: chai Date: Sat, 2 Oct 2021 18:46:26 +0800 Subject: *misc --- Assets/Scripts/Unit/Components/UnitLensEffect.cs | 8 ++++---- .../Scripts/Unit/Components/UnitState/PCState.cs | 7 +++++-- Assets/Scripts/Unit/LensEffect/LensEffectBase.cs | 24 ++++++++-------------- .../Scripts/Unit/LensEffect/LensEffect_BlurRim.cs | 10 ++++----- Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs | 6 +++--- Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs | 10 ++++----- .../Unit/LensEffect/LensEffect_MotionBlur.cs | 10 ++++----- Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs | 3 +-- 8 files changed, 37 insertions(+), 41 deletions(-) (limited to 'Assets/Scripts/Unit') diff --git a/Assets/Scripts/Unit/Components/UnitLensEffect.cs b/Assets/Scripts/Unit/Components/UnitLensEffect.cs index 23539de0..e145c331 100644 --- a/Assets/Scripts/Unit/Components/UnitLensEffect.cs +++ b/Assets/Scripts/Unit/Components/UnitLensEffect.cs @@ -102,7 +102,7 @@ public partial class UnitLensEffect : UnitComponent if (method == null) continue; eff.owner = owner; - method.Invoke(eff, new object[] { LensEffectBase.EStage.Before, cb.Value }); + method.Invoke(eff, new object[] { LensEffectBase.EStage.BeforeIterate, cb.Value }); // iterate unit renderers for (int j = 0; j < body.renderers.Length; ++j) @@ -114,7 +114,7 @@ public partial class UnitLensEffect : UnitComponent method.Invoke(eff, new object[] { LensEffectBase.EStage.Iterate, cb.Value }); } - method.Invoke(eff, new object[] { LensEffectBase.EStage.After, cb.Value }); + method.Invoke(eff, new object[] { LensEffectBase.EStage.AfterIterate, cb.Value }); } MainCamera.Instance.camera.AddCommandBuffer(ce, cb.Value); } @@ -125,7 +125,7 @@ public partial class UnitLensEffect : UnitComponent if (m_Effects == null || m_Effects.Count == 0) return; - // 执行每个event的finish + // 执行每个event的finisher foreach (var cb in m_InUseCommandBuffers) { ERenderingEvent re = cb.Key; @@ -137,7 +137,7 @@ public partial class UnitLensEffect : UnitComponent MethodInfo method = eff.GetType().GetMethod(re.ToString(), BindingFlags.Instance | BindingFlags.Public, null, new Type[] { typeof(LensEffectBase.EStage), typeof(CommandBuffer) }, null); if (method == null) continue; - method.Invoke(eff, new object[] { LensEffectBase.EStage.Finished, cb.Value }); + method.Invoke(eff, new object[] { LensEffectBase.EStage.FinishRender, cb.Value }); } } diff --git a/Assets/Scripts/Unit/Components/UnitState/PCState.cs b/Assets/Scripts/Unit/Components/UnitState/PCState.cs index 22855aeb..6a326431 100644 --- a/Assets/Scripts/Unit/Components/UnitState/PCState.cs +++ b/Assets/Scripts/Unit/Components/UnitState/PCState.cs @@ -142,11 +142,14 @@ public partial class PCState : UnitState { float offset = owner.isTowardRight ? 1.5f : -1.5f; + Vector3 targetPos = TestErika.Instance.monster.owner.center + new Vector3(offset, -0.5f, 0); + targetPos.y = Mathf.Max(1, targetPos.y); + UnitSnapshotInfo info = owner.TakeSnapshot(); - Vector2 dir = TestErika.Instance.monster.owner.center + new Vector3(offset, -0.5f, 0) - owner.center; + Vector2 dir = targetPos - owner.center; 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); + owner.center = targetPos; TurnAround(!owner.isTowardRight); return true; } diff --git a/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs b/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs index 93981bfd..94e5f6a7 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 , // 迭代renderer - After , // 迭代之后 - Finished, // 渲染角色之后(所有lens effect结束) + BeforeIterate, // 迭代之前 + Iterate, // 迭代renderer + AfterIterate, // 迭代之后 + FinishRender, // 渲染角色之后(所有lens effect结束) } public abstract ERenderingEvent renderingEvents { get; } @@ -31,7 +31,7 @@ public abstract class LensEffectBase public UnitController owner; #endregion - private static MaterialEntry _ClaimMaterial(string shader) + private static MaterialEntry ClaimMaterial(string shader) { List mats; if (m_MaterailPool.TryGetValue(shader, out mats) && mats.Count > 0) @@ -47,7 +47,7 @@ public abstract class LensEffectBase return entry; } - private static void _ReleaseMaterial(MaterialEntry entry) + private static void ReleaseMaterial(MaterialEntry entry) { List mats; if (!m_MaterailPool.TryGetValue(entry.shader, out mats)) @@ -58,24 +58,18 @@ public abstract class LensEffectBase mats.Add(entry); } - protected MaterialEntry ClaimMaterial(string shader) + protected MaterialEntry GetTempMaterial(string shader) { - MaterialEntry entry = _ClaimMaterial(shader); + MaterialEntry entry = ClaimMaterial(shader); m_InUseMaterials.Add(entry); return entry; } - protected void ReleaseMaterial(MaterialEntry entry) - { - m_InUseMaterials.Remove(entry); - _ReleaseMaterial(entry); - } - protected void ReleaseAllInUsedMaterials() { for(int i = 0; i < m_InUseMaterials.Count; ++i) { - _ReleaseMaterial(m_InUseMaterials[i]); + ReleaseMaterial(m_InUseMaterials[i]); } m_InUseMaterials.Clear(); } diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_BlurRim.cs b/Assets/Scripts/Unit/LensEffect/LensEffect_BlurRim.cs index 5260a751..db0c1956 100644 --- a/Assets/Scripts/Unit/LensEffect/LensEffect_BlurRim.cs +++ b/Assets/Scripts/Unit/LensEffect/LensEffect_BlurRim.cs @@ -18,7 +18,7 @@ public class LensEffect_BlurRim : LensEffectBase public override void AfterForwardOpaque(EStage stage, CommandBuffer cb) { - if (stage == EStage.Before) + if (stage == EStage.BeforeIterate) { Before(cb); } @@ -26,11 +26,11 @@ public class LensEffect_BlurRim : LensEffectBase { Iterate(cb); } - else if (stage == EStage.After) + else if (stage == EStage.AfterIterate) { After(cb); } - else if (stage == EStage.Finished) + else if (stage == EStage.FinishRender) { } } @@ -64,7 +64,7 @@ public class LensEffect_BlurRim : LensEffectBase for (int i = 0; i < subMeshCount; ++i) { - MaterialEntry mat = ClaimMaterial(StaticDefine.shaders[EShader.SolidColor].name); + MaterialEntry mat = GetTempMaterial(StaticDefine.shaders[EShader.SolidColor].name); mat.material.SetColor("_Color", rimColor); mat.material.SetMatrix("_ObjectToWorld", obj2Wod); mat.material.SetTexture("_MainTex", curBodypartRenderer.renderer.sharedMaterial.GetTexture("_MainTex")); @@ -74,7 +74,7 @@ public class LensEffect_BlurRim : LensEffectBase void After(CommandBuffer cb) { - MaterialEntry blur = ClaimMaterial(StaticDefine.shaders[EShader.Blur].name); + MaterialEntry blur = GetTempMaterial(StaticDefine.shaders[EShader.Blur].name); Vector4 tileOffset = RenderingUtility.GetTillingOffset(MainCamera.Instance.camera, owner.center, owner.unitDetail.snapshotBound); blur.material.SetVector("_UnitTileOffset", tileOffset); diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs b/Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs index 6aa06d01..252efc6e 100644 --- a/Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs +++ b/Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs @@ -15,11 +15,11 @@ public class LensEffect_Buzz : LensEffectBase public override void AfterForwardAlpha(EStage stage, CommandBuffer cb) { - if (stage == EStage.Before) + if (stage == EStage.BeforeIterate) { Before(cb); } - else if (stage == EStage.After) + else if (stage == EStage.AfterIterate) { After(cb); } @@ -27,7 +27,7 @@ public class LensEffect_Buzz : LensEffectBase void Before(CommandBuffer cb) { - MaterialEntry buzz = ClaimMaterial(StaticDefine.shaders[EShader.Buzz].name); + MaterialEntry buzz = GetTempMaterial(StaticDefine.shaders[EShader.Buzz].name); cb.SetGlobalTexture("_UnitDepthTexture", owner.unitPreprocessing.unitDepthTexture); cb.Blit(BuiltinRenderTextureType.CameraTarget, BuiltinRenderTextureType.CameraTarget, buzz.material); diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs b/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs index 0ff16e3a..d5d368d0 100644 --- a/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs +++ b/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs @@ -28,15 +28,15 @@ public class LensEffect_Dash : LensEffectBase public override void AfterForwardOpaque(EStage stage, CommandBuffer cb) { - if (stage == EStage.Before) + if (stage == EStage.BeforeIterate) { Before(cb); } - else if (stage == EStage.After) + else if (stage == EStage.AfterIterate) { After(cb); } - else if (stage == EStage.Finished) + else if (stage == EStage.FinishRender) { } } @@ -58,7 +58,7 @@ public class LensEffect_Dash : LensEffectBase Quaternion rot = smr.rootBone.transform.rotation; obj2Wod = MatrixUtility.RotateAndTranslate(pos, rot); - MaterialEntry mat = ClaimMaterial(StaticDefine.shaders[EShader.SolidColor].name); + MaterialEntry mat = GetTempMaterial(StaticDefine.shaders[EShader.SolidColor].name); mat.material.SetColor("_Color", rimColor); mat.material.SetMatrix("_ObjectToWorld", obj2Wod); mat.material.SetTexture("_MainTex", snapshot.renderers[0].sharedMaterial.GetTexture("_MainTex")); @@ -70,7 +70,7 @@ public class LensEffect_Dash : LensEffectBase { curTime += Time.deltaTime; - MaterialEntry blur = ClaimMaterial(StaticDefine.shaders[EShader.MotionBlur].name); + MaterialEntry blur = GetTempMaterial(StaticDefine.shaders[EShader.MotionBlur].name); Vector4 tileOffset = RenderingUtility.GetTillingOffset(MainCamera.Instance.camera, trs.position, 6); blur.material.SetVector("_UnitTileOffset", tileOffset); diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs b/Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs index b76666ff..371186d0 100644 --- a/Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs +++ b/Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs @@ -15,7 +15,7 @@ public class LensEffect_MotionBlur : LensEffectBase public override void AfterImageEffectsOpaque(EStage stage, CommandBuffer cb) { - if (stage == EStage.Before) + if (stage == EStage.BeforeIterate) { tempID = Shader.PropertyToID("_Temp1"); @@ -43,16 +43,16 @@ public class LensEffect_MotionBlur : LensEffectBase for (int i = 0; i < subMeshCount; ++i) { - MaterialEntry mat = ClaimMaterial(StaticDefine.shaders[EShader.SolidColor].name); + MaterialEntry mat = GetTempMaterial(StaticDefine.shaders[EShader.SolidColor].name); mat.material.SetColor("_Color", Color.red); mat.material.SetMatrix("_ObjectToWorld", obj2Wod); cb.DrawRenderer(curBodypartRenderer.renderer, mat.material, i); } } - else if(stage == EStage.After) + else if(stage == EStage.AfterIterate) { - MaterialEntry blur = ClaimMaterial(StaticDefine.shaders[EShader.Blur].name); + MaterialEntry blur = GetTempMaterial(StaticDefine.shaders[EShader.Blur].name); Vector4 tileOffset = RenderingUtility.GetTillingOffset(MainCamera.Instance.camera, owner.center, owner.unitDetail.snapshotBound); blur.material.SetVector("_UnitTileOffset", tileOffset); @@ -61,7 +61,7 @@ public class LensEffect_MotionBlur : LensEffectBase tempID = Shader.PropertyToID("_Temp1"); cb.ReleaseTemporaryRT(tempID); } - else if(stage == EStage.Finished) + else if(stage == EStage.FinishRender) { } } diff --git a/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs b/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs index ca9f5405..cc352324 100644 --- a/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs +++ b/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs @@ -195,8 +195,7 @@ public partial class TimelineEventProxy return; UnitSnapshotInfo info = owner.TakeSnapshot(); - LensEffect_Dash dash = new LensEffect_Dash(Color.white, dashinfo.lifeTime, dashinfo.angle, info); - owner.unitLensEffect.AddEffect(dash); + owner.unitLensEffect.Dash(Color.white, dashinfo.lifeTime, dashinfo.angle, info); } #endregion -- cgit v1.1-26-g67d0