summaryrefslogtreecommitdiff
path: root/Assets/Scripts
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts')
-rw-r--r--Assets/Scripts/Drone.meta8
-rw-r--r--Assets/Scripts/Managers/Physics.meta8
-rw-r--r--Assets/Scripts/Props.meta8
-rw-r--r--Assets/Scripts/Rendering/RenderingUtility.cs6
-rw-r--r--Assets/Scripts/Robot.meta8
-rw-r--r--Assets/Scripts/Scene.meta (renamed from Assets/Scripts/Curve3D.meta)2
-rw-r--r--Assets/Scripts/Unit/AI/Actions.meta8
-rw-r--r--Assets/Scripts/Unit/AI/Conditionals.meta8
-rw-r--r--Assets/Scripts/Unit/AfterImage/UnitSnapshot.cs14
-rw-r--r--Assets/Scripts/Unit/AfterImage/UnitSnapshot.cs.meta11
-rw-r--r--Assets/Scripts/Unit/Components/UnitLensEffect.cs8
-rw-r--r--Assets/Scripts/Unit/LensEffect/LensEffect_BlurRim.cs110
-rw-r--r--Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs89
-rw-r--r--Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs.meta11
-rw-r--r--Assets/Scripts/Unit/UnitDetail.cs3
15 files changed, 199 insertions, 103 deletions
diff --git a/Assets/Scripts/Drone.meta b/Assets/Scripts/Drone.meta
deleted file mode 100644
index 694cff70..00000000
--- a/Assets/Scripts/Drone.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: ec3412151f8a72a41b2ed21316763399
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/Scripts/Managers/Physics.meta b/Assets/Scripts/Managers/Physics.meta
deleted file mode 100644
index 2296b3f8..00000000
--- a/Assets/Scripts/Managers/Physics.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 603d4624aaedd794cb89497954a83f4a
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/Scripts/Props.meta b/Assets/Scripts/Props.meta
deleted file mode 100644
index bb96602e..00000000
--- a/Assets/Scripts/Props.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: f299520ed9fcf4a45858ad4ef5a8d5d1
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/Scripts/Rendering/RenderingUtility.cs b/Assets/Scripts/Rendering/RenderingUtility.cs
index 90ef84fd..5313f59d 100644
--- a/Assets/Scripts/Rendering/RenderingUtility.cs
+++ b/Assets/Scripts/Rendering/RenderingUtility.cs
@@ -71,13 +71,13 @@ public static class RenderingUtility
/// <param name="worldPos">世界空间坐标</param>
/// <param name="size">异体矩形(billboard)的相机空间大小</param>
/// <returns></returns>
- public static Vector4 GetTillingOffset(Camera camera, Vector3 worldPos, float size)
+ public static Vector4 GetTillingOffset(Camera camera, Vector3 worldPos, float sizeInCameraSpace)
{
Vector4 tileOffset = new Vector4(1,1,0,0);
Vector3 camPos = camera.WorldToCameraSpace(worldPos);
- Vector3 bottomLeft = new Vector3(camPos.x - size / 2, camPos.y - size / 2, camPos.z);
- Vector3 topRight = new Vector3(camPos.x + size / 2, camPos.y + size / 2, camPos.z);
+ Vector3 bottomLeft = new Vector3(camPos.x - sizeInCameraSpace / 2, camPos.y - sizeInCameraSpace / 2, camPos.z);
+ Vector3 topRight = new Vector3(camPos.x + sizeInCameraSpace / 2, camPos.y + sizeInCameraSpace / 2, camPos.z);
Vector2 blViewPos = camera.CameraToViewportSpace(bottomLeft);
Vector2 trViewPos = camera.CameraToViewportSpace(topRight);
float width = trViewPos.x - blViewPos.x;
diff --git a/Assets/Scripts/Robot.meta b/Assets/Scripts/Robot.meta
deleted file mode 100644
index 0b5a087e..00000000
--- a/Assets/Scripts/Robot.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 7c09ca1609552d24bbe697d1516f8aa9
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/Scripts/Curve3D.meta b/Assets/Scripts/Scene.meta
index fef1c5e7..eb7a8716 100644
--- a/Assets/Scripts/Curve3D.meta
+++ b/Assets/Scripts/Scene.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: ad8b718b6b700d8419838dad07158567
+guid: eaee2d0f48cff9b40baf0686a8105600
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Assets/Scripts/Unit/AI/Actions.meta b/Assets/Scripts/Unit/AI/Actions.meta
deleted file mode 100644
index 9b4ad463..00000000
--- a/Assets/Scripts/Unit/AI/Actions.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-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
deleted file mode 100644
index 70a86da5..00000000
--- a/Assets/Scripts/Unit/AI/Conditionals.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 85b7e0c7ed1d12f42a5178bfbf3d934c
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/Scripts/Unit/AfterImage/UnitSnapshot.cs b/Assets/Scripts/Unit/AfterImage/UnitSnapshot.cs
new file mode 100644
index 00000000..8935293a
--- /dev/null
+++ b/Assets/Scripts/Unit/AfterImage/UnitSnapshot.cs
@@ -0,0 +1,14 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+// 保存当前角色的快照
+public struct UnitSnapshot
+{
+ public UnitController unit;
+
+ public int curAnimState { get; private set; }
+
+ public float normalizedTime;
+
+} \ No newline at end of file
diff --git a/Assets/Scripts/Unit/AfterImage/UnitSnapshot.cs.meta b/Assets/Scripts/Unit/AfterImage/UnitSnapshot.cs.meta
new file mode 100644
index 00000000..31c837aa
--- /dev/null
+++ b/Assets/Scripts/Unit/AfterImage/UnitSnapshot.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d63b30ef896f0a548865db54d2bdbbeb
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Unit/Components/UnitLensEffect.cs b/Assets/Scripts/Unit/Components/UnitLensEffect.cs
index 394a0b92..f9d22a85 100644
--- a/Assets/Scripts/Unit/Components/UnitLensEffect.cs
+++ b/Assets/Scripts/Unit/Components/UnitLensEffect.cs
@@ -34,6 +34,12 @@ public class UnitLensEffect : UnitComponent
m_CachedCommandBuffers = new Dictionary<ERenderingEvent, CommandBuffer>();
}
+ public override void OnUpdate()
+ {
+ base.OnUpdate();
+
+ }
+
public override void OnPostInitialize()
{
base.OnPostInitialize();
@@ -58,7 +64,7 @@ public class UnitLensEffect : UnitComponent
/////
//m_Effects.Add(new LensEffect_MotionBlur());
- m_Effects.Add(new LensEffect_BlurRim());
+ //m_Effects.Add(new LensEffect_BlurRim(Color.blue));
}
public override void Release()
diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_BlurRim.cs b/Assets/Scripts/Unit/LensEffect/LensEffect_BlurRim.cs
index 4f90a777..6c61f2e7 100644
--- a/Assets/Scripts/Unit/LensEffect/LensEffect_BlurRim.cs
+++ b/Assets/Scripts/Unit/LensEffect/LensEffect_BlurRim.cs
@@ -7,70 +7,80 @@ public class LensEffect_BlurRim : LensEffectBase
{
public override ERenderingEvent renderingEvents => ERenderingEvent.AfterForwardOpaque;
+ Color rimColor;
int tempID;
- public override void AfterForwardOpaque(EStage stage, CommandBuffer cb)
+ public LensEffect_BlurRim(Color color) : base()
+ {
+ rimColor = color;
+ tempID = Shader.PropertyToID("_BlurRim_RT0");
+ }
+
+ public override void AfterForwardOpaque(EStage stage, CommandBuffer cb)
{
if (stage == EStage.Before)
{
- tempID = Shader.PropertyToID("_Temp1");
-
- cb.GetTemporaryRT(tempID, -1, -1, 24, FilterMode.Bilinear);
- cb.SetRenderTarget(tempID);
- cb.ClearRenderTarget(true, true, new Color(0, 0, 0, 0));
+ Before(cb);
}
else if (stage == EStage.Iterate)
{
- 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);
- subMeshCount = smr.sharedMesh.subMeshCount;
- }
- else if (curBodypartRenderer.renderer is MeshRenderer)
- {
- obj2Wod = curBodypartRenderer.renderer.transform.localToWorldMatrix;
- subMeshCount = curBodypartRenderer.renderer.GetComponent<MeshFilter>().sharedMesh.subMeshCount;
- }
-
- for (int i = 0; i < subMeshCount; ++i)
- {
- MaterialEntry mat = ClaimMaterial(StaticDefine.shaders[EShader.SolidColor].name);
- mat.material.SetColor("_Color", Color.red);
- mat.material.SetMatrix("_ObjectToWorld", obj2Wod);
- cb.DrawRenderer(curBodypartRenderer.renderer, mat.material, i);
-
- mat = ClaimMaterial(StaticDefine.shaders[EShader.SolidColor].name);
- mat.material.SetColor("_Color", Color.red);
- obj2Wod = Matrix4x4.Translate(new Vector3(1,0,0)) * obj2Wod;
- mat.material.SetMatrix("_ObjectToWorld", obj2Wod);
- cb.DrawRenderer(curBodypartRenderer.renderer, mat.material, i);
-
- mat = ClaimMaterial(StaticDefine.shaders[EShader.SolidColor].name);
- mat.material.SetColor("_Color", Color.red);
- obj2Wod = Matrix4x4.Translate(new Vector3(-2, 0, 0)) * obj2Wod;
- mat.material.SetMatrix("_ObjectToWorld", obj2Wod);
- cb.DrawRenderer(curBodypartRenderer.renderer, mat.material, i);
- }
- }
+ Iterate(cb);
+ }
else if (stage == EStage.After)
{
- MaterialEntry blur = ClaimMaterial(StaticDefine.shaders[EShader.Blur].name);
-
- Vector4 tileOffset = RenderingUtility.GetTillingOffset(MainCamera.Instance.camera, owner.center, owner.unitDetail.snapshotBound);
- blur.material.SetVector("_TileOffset", tileOffset);
-
- cb.Blit(tempID, BuiltinRenderTextureType.CameraTarget, blur.material);
- tempID = Shader.PropertyToID("_Temp1");
- cb.ReleaseTemporaryRT(tempID);
+ After(cb);
}
else if (stage == EStage.Finished)
{
}
}
+ void Before(CommandBuffer cb)
+ {
+ 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;
+ }
+
+ 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)
+ {
+ MaterialEntry blur = ClaimMaterial(StaticDefine.shaders[EShader.Blur].name);
+
+ Vector4 tileOffset = RenderingUtility.GetTillingOffset(MainCamera.Instance.camera, owner.center, owner.unitDetail.snapshotBound);
+ blur.material.SetVector("_TileOffset", tileOffset);
+
+ cb.Blit(tempID, BuiltinRenderTextureType.CameraTarget, blur.material);
+ cb.ReleaseTemporaryRT(tempID);
+ }
+
} \ No newline at end of file
diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs b/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs
new file mode 100644
index 00000000..9111bd68
--- /dev/null
+++ b/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs
@@ -0,0 +1,89 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.Rendering;
+
+public class LensEffect_Dash : LensEffectBase
+{
+ public override ERenderingEvent renderingEvents => ERenderingEvent.AfterForwardOpaque;
+
+ Color rimColor;
+ int tempID;
+ float lifeTime;
+ UnitSnapshot snapshot;
+
+ public LensEffect_Dash(Color color, float lifeTime) : base()
+ {
+ rimColor = color;
+ tempID = Shader.PropertyToID("_BlurRim_RT0");
+ this.lifeTime = lifeTime;
+ }
+
+ public override void AfterForwardOpaque(EStage stage, CommandBuffer cb)
+ {
+ if (stage == EStage.Before)
+ {
+ Before(cb);
+ }
+ else if (stage == EStage.Iterate)
+ {
+ Iterate(cb);
+ }
+ else if (stage == EStage.After)
+ {
+ After(cb);
+ }
+ else if (stage == EStage.Finished)
+ {
+ }
+ }
+
+ void Before(CommandBuffer cb)
+ {
+ 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;
+ }
+
+ 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)
+ {
+ MaterialEntry blur = ClaimMaterial(StaticDefine.shaders[EShader.Blur].name);
+
+ Vector4 tileOffset = RenderingUtility.GetTillingOffset(MainCamera.Instance.camera, owner.center, owner.unitDetail.snapshotBound);
+ blur.material.SetVector("_TileOffset", tileOffset);
+
+ cb.Blit(tempID, BuiltinRenderTextureType.CameraTarget, blur.material);
+ cb.ReleaseTemporaryRT(tempID);
+ }
+
+} \ No newline at end of file
diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs.meta b/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs.meta
new file mode 100644
index 00000000..f0c4f6ab
--- /dev/null
+++ b/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3fac41ebc7706eb4abec04ae44602464
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Unit/UnitDetail.cs b/Assets/Scripts/Unit/UnitDetail.cs
index 16067425..c57b87b5 100644
--- a/Assets/Scripts/Unit/UnitDetail.cs
+++ b/Assets/Scripts/Unit/UnitDetail.cs
@@ -151,6 +151,9 @@ public class UnitDetail : MonoBehaviour, IBodyRendererAgent, IBodyJointAgent
[Tooltip("残影用的prefab")]
public string afterImageAvatarPath;
+ [Tooltip("Snapshot用的prefab")]
+ public string snapshotAvatarPath;
+
UnitBoneDictionary IBodyJointAgent.bones { get { return m_Bones; } }
[FormerlySerializedAs("bones")]
public UnitBoneDictionary m_Bones;