summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-09-29 20:26:12 +0800
committerchai <chaifix@163.com>2021-09-29 20:26:12 +0800
commitb781f9ecf36bcc6c614538ac427fa2eb8f1e29d2 (patch)
treeb7380f99de4763c56f80826c26f7875a89ef8dfe /Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs
parent61d6e9bf192ffa54abc57bab69b1bd88c3b8d62b (diff)
*misc
Diffstat (limited to 'Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs')
-rw-r--r--Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs22
1 files changed, 19 insertions, 3 deletions
diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs b/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs
index 935a7286..84f8edcb 100644
--- a/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs
+++ b/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs
@@ -14,6 +14,8 @@ public class LensEffect_Dash : LensEffectBase
TRS trs;
float angle;
+ float curTime = 0;
+
public LensEffect_Dash(Color color, float lifeTime, float angle, UnitSnapshotInfo snapshot) : base()
{
rimColor = color;
@@ -22,6 +24,7 @@ public class LensEffect_Dash : LensEffectBase
trs = snapshot.trs;
this.snapshot = UnitManager.Instance.ClaimSnapshotSolo(snapshot);
this.angle = angle;
+
}
public override void AfterForwardOpaque(EStage stage, CommandBuffer cb)
@@ -41,7 +44,7 @@ public class LensEffect_Dash : LensEffectBase
void Before(CommandBuffer cb)
{
- cb.GetTemporaryRT(tempID, -1, -1, 24, FilterMode.Bilinear);
+ cb.GetTemporaryRT(tempID, -1, -1, 24, FilterMode.Bilinear);
cb.SetRenderTarget(tempID);
cb.ClearRenderTarget(true, true, new Color(0, 0, 0, 0));
@@ -65,15 +68,28 @@ public class LensEffect_Dash : LensEffectBase
}
void After(CommandBuffer cb)
- {
- MaterialEntry blur = ClaimMaterial(StaticDefine.shaders[EShader.MotionBlur].name);
+ {
+ curTime += Time.deltaTime;
+
+ MaterialEntry blur = ClaimMaterial(StaticDefine.shaders[EShader.MotionBlur].name);
Vector4 tileOffset = RenderingUtility.GetTillingOffset(MainCamera.Instance.camera, owner.center, owner.unitDetail.snapshotBound);
blur.material.SetVector("_TileOffset", tileOffset);
blur.material.SetFloat("_Angle", Mathf.Rad2Deg * angle);
+ blur.material.SetFloat("_AlphaMultiplier", Mathf.Clamp(1 - curTime / lifeTime, 0, 1));
cb.Blit(tempID, BuiltinRenderTextureType.CameraTarget, blur.material);
cb.ReleaseTemporaryRT(tempID);
}
+ public override bool CanDestroy()
+ {
+ return curTime > lifeTime;
+ }
+
+ public override void OnDestroy()
+ {
+ UnitManager.Instance.ReleaseSnapshot(ref snapshot);
+ }
+
} \ No newline at end of file