diff options
Diffstat (limited to 'Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs')
-rw-r--r-- | Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs | 42 |
1 files changed, 7 insertions, 35 deletions
diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs b/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs index 9111bd68..24a62264 100644 --- a/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs +++ b/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs @@ -10,13 +10,16 @@ public class LensEffect_Dash : LensEffectBase Color rimColor; int tempID; float lifeTime; - UnitSnapshot snapshot; - - public LensEffect_Dash(Color color, float lifeTime) : base() + UnitSnapshot snapshot; + TRS trs;
+
+ public LensEffect_Dash(TRS trs, Color color, float lifeTime, UnitSnapshotInfo snapshot) : base() { rimColor = color; tempID = Shader.PropertyToID("_BlurRim_RT0"); this.lifeTime = lifeTime; + this.snapshot = UnitManager.Instance.ClaimSnapshotSolo(snapshot); + this.trs = trs; } public override void AfterForwardOpaque(EStage stage, CommandBuffer cb) @@ -25,10 +28,6 @@ public class LensEffect_Dash : LensEffectBase { Before(cb); } - else if (stage == EStage.Iterate) - { - Iterate(cb); - } else if (stage == EStage.After) { After(cb); @@ -43,36 +42,9 @@ public class LensEffect_Dash : LensEffectBase cb.GetTemporaryRT(tempID, -1, -1, 24, FilterMode.Bilinear); cb.SetRenderTarget(tempID); cb.ClearRenderTarget(true, true, new Color(0, 0, 0, 0)); - } - void Iterate(CommandBuffer cb) - { - Matrix4x4 obj2Wod = Matrix4x4.identity; - int subMeshCount = 0; - if (curBodypartRenderer.renderer is SkinnedMeshRenderer) - { - SkinnedMeshRenderer smr = curBodypartRenderer.renderer as SkinnedMeshRenderer; - Vector3 pos = smr.rootBone.transform.position; - Quaternion rot = smr.rootBone.transform.rotation; - obj2Wod = MatrixUtility.RotateAndTranslate(pos, rot); - obj2Wod = Matrix4x4.Translate(new Vector3(1, 0, 0)) * obj2Wod; - subMeshCount = smr.sharedMesh.subMeshCount; - } - else if (curBodypartRenderer.renderer is MeshRenderer) - { - obj2Wod = curBodypartRenderer.renderer.transform.localToWorldMatrix; - obj2Wod = Matrix4x4.Translate(new Vector3(1, 0, 0)) * obj2Wod; - subMeshCount = curBodypartRenderer.renderer.GetComponent<MeshFilter>().sharedMesh.subMeshCount; - } + // renderer - for (int i = 0; i < subMeshCount; ++i) - { - MaterialEntry mat = ClaimMaterial(StaticDefine.shaders[EShader.SolidColor].name); - mat.material.SetColor("_Color", rimColor); - mat.material.SetMatrix("_ObjectToWorld", obj2Wod); - mat.material.SetTexture("_MainTex", curBodypartRenderer.renderer.sharedMaterial.GetTexture("_MainTex")); - cb.DrawRenderer(curBodypartRenderer.renderer, mat.material, i); - } } void After(CommandBuffer cb) |