diff options
Diffstat (limited to 'Assets/Scripts')
-rw-r--r-- | Assets/Scripts/Drone.meta | 8 | ||||
-rw-r--r-- | Assets/Scripts/Managers/Physics.meta | 8 | ||||
-rw-r--r-- | Assets/Scripts/Props.meta | 8 | ||||
-rw-r--r-- | Assets/Scripts/Rendering/RenderingUtility.cs | 6 | ||||
-rw-r--r-- | Assets/Scripts/Robot.meta | 8 | ||||
-rw-r--r-- | Assets/Scripts/Scene.meta (renamed from Assets/Scripts/Curve3D.meta) | 2 | ||||
-rw-r--r-- | Assets/Scripts/Unit/AI/Actions.meta | 8 | ||||
-rw-r--r-- | Assets/Scripts/Unit/AI/Conditionals.meta | 8 | ||||
-rw-r--r-- | Assets/Scripts/Unit/AfterImage/UnitSnapshot.cs | 14 | ||||
-rw-r--r-- | Assets/Scripts/Unit/AfterImage/UnitSnapshot.cs.meta | 11 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Components/UnitLensEffect.cs | 8 | ||||
-rw-r--r-- | Assets/Scripts/Unit/LensEffect/LensEffect_BlurRim.cs | 110 | ||||
-rw-r--r-- | Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs | 89 | ||||
-rw-r--r-- | Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs.meta | 11 | ||||
-rw-r--r-- | Assets/Scripts/Unit/UnitDetail.cs | 3 |
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;
|