From 6e6896d1e4b222ff64638e306e84fc3fb3d53f5c Mon Sep 17 00:00:00 2001 From: Xaver Drabik Date: Mon, 23 Dec 2024 22:35:00 +0100 Subject: [PATCH] added outlines --- twinStickCrawler/Assets/Material/green.mat | 136 +++ .../Assets/Material/green.mat.meta | 8 + twinStickCrawler/Assets/QuickOutline.meta | 8 + .../Assets/QuickOutline/Readme.txt | 37 + .../Assets/QuickOutline/Readme.txt.meta | 16 + .../Assets/QuickOutline/Resources.meta | 10 + .../QuickOutline/Resources/Materials.meta | 10 + .../Resources/Materials/OutlineFill.mat | 25 + .../Resources/Materials/OutlineFill.mat.meta | 17 + .../Resources/Materials/OutlineMask.mat | 23 + .../Resources/Materials/OutlineMask.mat.meta | 17 + .../QuickOutline/Resources/Shaders.meta | 10 + .../Resources/Shaders/OutlineFill.shader | 81 ++ .../Resources/Shaders/OutlineFill.shader.meta | 17 + .../Resources/Shaders/OutlineMask.shader | 33 + .../Resources/Shaders/OutlineMask.shader.meta | 17 + .../Assets/QuickOutline/Samples.meta | 10 + .../QuickOutline/Samples/Materials.meta | 10 + .../QuickOutline/Samples/Materials/Plane.mat | 76 ++ .../Samples/Materials/Plane.mat.meta | 17 + .../Assets/QuickOutline/Samples/Scenes.meta | 10 + .../Samples/Scenes/QuickOutline.unity | 778 ++++++++++++++++++ .../Samples/Scenes/QuickOutline.unity.meta | 16 + .../Assets/QuickOutline/Scripts.meta | 10 + .../Assets/QuickOutline/Scripts/Outline.cs | 309 +++++++ .../QuickOutline/Scripts/Outline.cs.meta | 20 + .../Assets/Scenes/SampleScene.unity | 319 ++++++- .../Assets/Scripts/Creatures/Player/Player.cs | 3 +- .../Creatures/Player/PlayerAimRotate.cs | 3 + 29 files changed, 2002 insertions(+), 44 deletions(-) create mode 100644 twinStickCrawler/Assets/Material/green.mat create mode 100644 twinStickCrawler/Assets/Material/green.mat.meta create mode 100644 twinStickCrawler/Assets/QuickOutline.meta create mode 100644 twinStickCrawler/Assets/QuickOutline/Readme.txt create mode 100644 twinStickCrawler/Assets/QuickOutline/Readme.txt.meta create mode 100644 twinStickCrawler/Assets/QuickOutline/Resources.meta create mode 100644 twinStickCrawler/Assets/QuickOutline/Resources/Materials.meta create mode 100644 twinStickCrawler/Assets/QuickOutline/Resources/Materials/OutlineFill.mat create mode 100644 twinStickCrawler/Assets/QuickOutline/Resources/Materials/OutlineFill.mat.meta create mode 100644 twinStickCrawler/Assets/QuickOutline/Resources/Materials/OutlineMask.mat create mode 100644 twinStickCrawler/Assets/QuickOutline/Resources/Materials/OutlineMask.mat.meta create mode 100644 twinStickCrawler/Assets/QuickOutline/Resources/Shaders.meta create mode 100644 twinStickCrawler/Assets/QuickOutline/Resources/Shaders/OutlineFill.shader create mode 100644 twinStickCrawler/Assets/QuickOutline/Resources/Shaders/OutlineFill.shader.meta create mode 100644 twinStickCrawler/Assets/QuickOutline/Resources/Shaders/OutlineMask.shader create mode 100644 twinStickCrawler/Assets/QuickOutline/Resources/Shaders/OutlineMask.shader.meta create mode 100644 twinStickCrawler/Assets/QuickOutline/Samples.meta create mode 100644 twinStickCrawler/Assets/QuickOutline/Samples/Materials.meta create mode 100644 twinStickCrawler/Assets/QuickOutline/Samples/Materials/Plane.mat create mode 100644 twinStickCrawler/Assets/QuickOutline/Samples/Materials/Plane.mat.meta create mode 100644 twinStickCrawler/Assets/QuickOutline/Samples/Scenes.meta create mode 100644 twinStickCrawler/Assets/QuickOutline/Samples/Scenes/QuickOutline.unity create mode 100644 twinStickCrawler/Assets/QuickOutline/Samples/Scenes/QuickOutline.unity.meta create mode 100644 twinStickCrawler/Assets/QuickOutline/Scripts.meta create mode 100644 twinStickCrawler/Assets/QuickOutline/Scripts/Outline.cs create mode 100644 twinStickCrawler/Assets/QuickOutline/Scripts/Outline.cs.meta diff --git a/twinStickCrawler/Assets/Material/green.mat b/twinStickCrawler/Assets/Material/green.mat new file mode 100644 index 0000000..77caef8 --- /dev/null +++ b/twinStickCrawler/Assets/Material/green.mat @@ -0,0 +1,136 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7260199354944988188 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: green + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0, g: 0.9339623, b: 0.09806316, a: 1} + - _Color: {r: 0, g: 0.9339623, b: 0.09806313, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/twinStickCrawler/Assets/Material/green.mat.meta b/twinStickCrawler/Assets/Material/green.mat.meta new file mode 100644 index 0000000..32079ce --- /dev/null +++ b/twinStickCrawler/Assets/Material/green.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6c98604c51481d445af5c25ef39814e6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/twinStickCrawler/Assets/QuickOutline.meta b/twinStickCrawler/Assets/QuickOutline.meta new file mode 100644 index 0000000..ddbe93f --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 59cf605d53f244949b26cf0a5063e669 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/twinStickCrawler/Assets/QuickOutline/Readme.txt b/twinStickCrawler/Assets/QuickOutline/Readme.txt new file mode 100644 index 0000000..7edbeb4 --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Readme.txt @@ -0,0 +1,37 @@ +yQuick Outline +============= + +Developed by Chris Nolet (c) 2018 + + +Instructions +------------ + +To add an outline to an object, drag-and-drop the Outline.cs +script onto the object. The outline materials will be loaded +at runtime. + +You can also add outlines programmatically with: + + var outline = gameObject.AddComponent(); + + outline.OutlineMode = Outline.Mode.OutlineAll; + outline.OutlineColor = Color.yellow; + outline.OutlineWidth = 5f; + +The outline script does a small amount of work in Awake(). +For best results, use outline.enabled to toggle the outline. +Avoid removing and re-adding the component if possible. + +For large meshes, you may also like to enable 'Precompute +Outline' in the editor. This will reduce the amount of work +performed in Awake(). + + +Troubleshooting +--------------- + +If the outline appears off-center, please try the following: + +1. Set 'Read/Write Enabled' on each model's import settings. +2. Disable 'Optimize Mesh Data' in the player settings. diff --git a/twinStickCrawler/Assets/QuickOutline/Readme.txt.meta b/twinStickCrawler/Assets/QuickOutline/Readme.txt.meta new file mode 100644 index 0000000..c3f61b9 --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Readme.txt.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 5933bfd39d7a5b843a0ed821f85bca19 +timeCreated: 1522619008 +licenseType: Store +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 115488 + packageName: Quick Outline + packageVersion: 1.1 + assetPath: Assets/QuickOutline/Readme.txt + uploadId: 485303 diff --git a/twinStickCrawler/Assets/QuickOutline/Resources.meta b/twinStickCrawler/Assets/QuickOutline/Resources.meta new file mode 100644 index 0000000..6135a95 --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Resources.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 70fd40674751a8042a8b9b2e8d9f915f +folderAsset: yes +timeCreated: 1522559128 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/twinStickCrawler/Assets/QuickOutline/Resources/Materials.meta b/twinStickCrawler/Assets/QuickOutline/Resources/Materials.meta new file mode 100644 index 0000000..2508b0f --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Resources/Materials.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 80ac8e52d3c31a94babd161e86bc6b97 +folderAsset: yes +timeCreated: 1522559139 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/twinStickCrawler/Assets/QuickOutline/Resources/Materials/OutlineFill.mat b/twinStickCrawler/Assets/QuickOutline/Resources/Materials/OutlineFill.mat new file mode 100644 index 0000000..cb02164 --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Resources/Materials/OutlineFill.mat @@ -0,0 +1,25 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: OutlineFill + m_Shader: {fileID: 4800000, guid: 4e76d4023d7e0411297c670f878973e2, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: [] + m_Floats: + - _OutlineWidth: 2 + - _ZTest: 8 + m_Colors: + - _OutlineColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/twinStickCrawler/Assets/QuickOutline/Resources/Materials/OutlineFill.mat.meta b/twinStickCrawler/Assets/QuickOutline/Resources/Materials/OutlineFill.mat.meta new file mode 100644 index 0000000..5576b45 --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Resources/Materials/OutlineFill.mat.meta @@ -0,0 +1,17 @@ +fileFormatVersion: 2 +guid: 311313efa011949e98b6761d652ad13c +timeCreated: 1520576285 +licenseType: Store +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 115488 + packageName: Quick Outline + packageVersion: 1.1 + assetPath: Assets/QuickOutline/Resources/Materials/OutlineFill.mat + uploadId: 485303 diff --git a/twinStickCrawler/Assets/QuickOutline/Resources/Materials/OutlineMask.mat b/twinStickCrawler/Assets/QuickOutline/Resources/Materials/OutlineMask.mat new file mode 100644 index 0000000..80d49fa --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Resources/Materials/OutlineMask.mat @@ -0,0 +1,23 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: OutlineMask + m_Shader: {fileID: 4800000, guid: 341b058cd7dee4f5cba5cc59a513619e, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: [] + m_Floats: + - _ZTest: 8 + m_Colors: [] diff --git a/twinStickCrawler/Assets/QuickOutline/Resources/Materials/OutlineMask.mat.meta b/twinStickCrawler/Assets/QuickOutline/Resources/Materials/OutlineMask.mat.meta new file mode 100644 index 0000000..8ad0794 --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Resources/Materials/OutlineMask.mat.meta @@ -0,0 +1,17 @@ +fileFormatVersion: 2 +guid: 106f3ff43a17d4967a2b64c7a92e49ec +timeCreated: 1520576276 +licenseType: Store +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 115488 + packageName: Quick Outline + packageVersion: 1.1 + assetPath: Assets/QuickOutline/Resources/Materials/OutlineMask.mat + uploadId: 485303 diff --git a/twinStickCrawler/Assets/QuickOutline/Resources/Shaders.meta b/twinStickCrawler/Assets/QuickOutline/Resources/Shaders.meta new file mode 100644 index 0000000..91118d5 --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Resources/Shaders.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 6a63caa2b0e993043a42c11f35ff2d1a +folderAsset: yes +timeCreated: 1522559134 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/twinStickCrawler/Assets/QuickOutline/Resources/Shaders/OutlineFill.shader b/twinStickCrawler/Assets/QuickOutline/Resources/Shaders/OutlineFill.shader new file mode 100644 index 0000000..f546473 --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Resources/Shaders/OutlineFill.shader @@ -0,0 +1,81 @@ +// +// OutlineFill.shader +// QuickOutline +// +// Created by Chris Nolet on 2/21/18. +// Copyright © 2018 Chris Nolet. All rights reserved. +// + +Shader "Custom/Outline Fill" { + Properties { + [Enum(UnityEngine.Rendering.CompareFunction)] _ZTest("ZTest", Float) = 0 + + _OutlineColor("Outline Color", Color) = (1, 1, 1, 1) + _OutlineWidth("Outline Width", Range(0, 10)) = 2 + } + + SubShader { + Tags { + "Queue" = "Transparent+110" + "RenderType" = "Transparent" + "DisableBatching" = "True" + } + + Pass { + Name "Fill" + Cull Off + ZTest [_ZTest] + ZWrite Off + Blend SrcAlpha OneMinusSrcAlpha + ColorMask RGB + + Stencil { + Ref 1 + Comp NotEqual + } + + CGPROGRAM + #include "UnityCG.cginc" + + #pragma vertex vert + #pragma fragment frag + + struct appdata { + float4 vertex : POSITION; + float3 normal : NORMAL; + float3 smoothNormal : TEXCOORD3; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f { + float4 position : SV_POSITION; + fixed4 color : COLOR; + UNITY_VERTEX_OUTPUT_STEREO + }; + + uniform fixed4 _OutlineColor; + uniform float _OutlineWidth; + + v2f vert(appdata input) { + v2f output; + + UNITY_SETUP_INSTANCE_ID(input); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + float3 normal = any(input.smoothNormal) ? input.smoothNormal : input.normal; + float3 viewPosition = UnityObjectToViewPos(input.vertex); + float3 viewNormal = normalize(mul((float3x3)UNITY_MATRIX_IT_MV, normal)); + + output.position = UnityViewToClipPos(viewPosition + viewNormal * -viewPosition.z * _OutlineWidth / 1000.0); + output.color = _OutlineColor; + + return output; + } + + fixed4 frag(v2f input) : SV_Target { + return input.color; + } + ENDCG + } + } +} diff --git a/twinStickCrawler/Assets/QuickOutline/Resources/Shaders/OutlineFill.shader.meta b/twinStickCrawler/Assets/QuickOutline/Resources/Shaders/OutlineFill.shader.meta new file mode 100644 index 0000000..b982c4e --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Resources/Shaders/OutlineFill.shader.meta @@ -0,0 +1,17 @@ +fileFormatVersion: 2 +guid: 4e76d4023d7e0411297c670f878973e2 +timeCreated: 1520575782 +licenseType: Store +ShaderImporter: + externalObjects: {} + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 115488 + packageName: Quick Outline + packageVersion: 1.1 + assetPath: Assets/QuickOutline/Resources/Shaders/OutlineFill.shader + uploadId: 485303 diff --git a/twinStickCrawler/Assets/QuickOutline/Resources/Shaders/OutlineMask.shader b/twinStickCrawler/Assets/QuickOutline/Resources/Shaders/OutlineMask.shader new file mode 100644 index 0000000..530d8c0 --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Resources/Shaders/OutlineMask.shader @@ -0,0 +1,33 @@ +// +// OutlineMask.shader +// QuickOutline +// +// Created by Chris Nolet on 2/21/18. +// Copyright © 2018 Chris Nolet. All rights reserved. +// + +Shader "Custom/Outline Mask" { + Properties { + [Enum(UnityEngine.Rendering.CompareFunction)] _ZTest("ZTest", Float) = 0 + } + + SubShader { + Tags { + "Queue" = "Transparent+100" + "RenderType" = "Transparent" + } + + Pass { + Name "Mask" + Cull Off + ZTest [_ZTest] + ZWrite Off + ColorMask 0 + + Stencil { + Ref 1 + Pass Replace + } + } + } +} diff --git a/twinStickCrawler/Assets/QuickOutline/Resources/Shaders/OutlineMask.shader.meta b/twinStickCrawler/Assets/QuickOutline/Resources/Shaders/OutlineMask.shader.meta new file mode 100644 index 0000000..a20bfde --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Resources/Shaders/OutlineMask.shader.meta @@ -0,0 +1,17 @@ +fileFormatVersion: 2 +guid: 341b058cd7dee4f5cba5cc59a513619e +timeCreated: 1520575773 +licenseType: Store +ShaderImporter: + externalObjects: {} + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 115488 + packageName: Quick Outline + packageVersion: 1.1 + assetPath: Assets/QuickOutline/Resources/Shaders/OutlineMask.shader + uploadId: 485303 diff --git a/twinStickCrawler/Assets/QuickOutline/Samples.meta b/twinStickCrawler/Assets/QuickOutline/Samples.meta new file mode 100644 index 0000000..7d6c23d --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Samples.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 932f8193e5396db4babac4756c406dee +folderAsset: yes +timeCreated: 1522559213 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/twinStickCrawler/Assets/QuickOutline/Samples/Materials.meta b/twinStickCrawler/Assets/QuickOutline/Samples/Materials.meta new file mode 100644 index 0000000..cb14819 --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Samples/Materials.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 2b0040b0ed7fbd64693e9195d13d25f9 +folderAsset: yes +timeCreated: 1522615600 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/twinStickCrawler/Assets/QuickOutline/Samples/Materials/Plane.mat b/twinStickCrawler/Assets/QuickOutline/Samples/Materials/Plane.mat new file mode 100644 index 0000000..06fa1aa --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Samples/Materials/Plane.mat @@ -0,0 +1,76 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Plane + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 1 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.2509804, g: 0.2509804, b: 0.5019608, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/twinStickCrawler/Assets/QuickOutline/Samples/Materials/Plane.mat.meta b/twinStickCrawler/Assets/QuickOutline/Samples/Materials/Plane.mat.meta new file mode 100644 index 0000000..64e3c3c --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Samples/Materials/Plane.mat.meta @@ -0,0 +1,17 @@ +fileFormatVersion: 2 +guid: f58cf65ea995c4b45be95713bdea8134 +timeCreated: 1522540975 +licenseType: Store +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 115488 + packageName: Quick Outline + packageVersion: 1.1 + assetPath: Assets/QuickOutline/Samples/Materials/Plane.mat + uploadId: 485303 diff --git a/twinStickCrawler/Assets/QuickOutline/Samples/Scenes.meta b/twinStickCrawler/Assets/QuickOutline/Samples/Scenes.meta new file mode 100644 index 0000000..7f5c774 --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Samples/Scenes.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3916faa55c6a94248959031ee0ad499f +folderAsset: yes +timeCreated: 1522615614 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/twinStickCrawler/Assets/QuickOutline/Samples/Scenes/QuickOutline.unity b/twinStickCrawler/Assets/QuickOutline/Samples/Scenes/QuickOutline.unity new file mode 100644 index 0000000..33911b7 --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Samples/Scenes/QuickOutline.unity @@ -0,0 +1,778 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 8 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 820273532} + m_IndirectSpecularColor: {r: 0.18028383, g: 0.22571409, b: 0.30692282, a: 1} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 8 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 3 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFiltering: 0 + m_PVRFilteringMode: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousColorSigma: 1 + m_PVRFilteringAtrousNormalSigma: 1 + m_PVRFilteringAtrousPositionSigma: 1 + m_LightingDataAsset: {fileID: 0} + m_ShadowMaskMode: 2 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &122269556 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 122269561} + - component: {fileID: 122269560} + - component: {fileID: 122269558} + - component: {fileID: 122269557} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &122269557 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 122269556} + m_Enabled: 1 +--- !u!124 &122269558 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 122269556} + m_Enabled: 1 +--- !u!20 &122269560 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 122269556} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!4 &122269561 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 122269556} + m_LocalRotation: {x: 0.3420201, y: 0, z: 0, w: 0.9396927} + m_LocalPosition: {x: 0, y: 3, z: -4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 40, y: 0, z: 0} +--- !u!1 &124162633 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 124162634} + - component: {fileID: 124162638} + - component: {fileID: 124162636} + - component: {fileID: 124162635} + m_Layer: 0 + m_Name: Outline Hidden + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &124162634 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 124162633} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: 1, y: 0.5, z: 1} + m_Children: [] + m_Father: {fileID: 935070115} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &124162635 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 124162633} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5fea29bb7c508c244a1f805a5fd3fc4d, type: 3} + m_Name: + m_EditorClassIdentifier: + outlineMode: 2 + outlineColor: {r: 1, g: 0.2509804, b: 0.2509804, a: 1} + outlineWidth: 6 +--- !u!23 &124162636 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 124162633} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &124162638 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 124162633} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &796971894 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 796971895} + - component: {fileID: 796971899} + - component: {fileID: 796971897} + - component: {fileID: 796971896} + m_Layer: 0 + m_Name: Outline And Silhouette + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &796971895 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 796971894} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: 1, y: 0.5, z: 1} + m_Children: [] + m_Father: {fileID: 935070115} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &796971896 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 796971894} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5fea29bb7c508c244a1f805a5fd3fc4d, type: 3} + m_Name: + m_EditorClassIdentifier: + outlineMode: 3 + outlineColor: {r: 0.2509804, g: 1, b: 1, a: 1} + outlineWidth: 6 +--- !u!23 &796971897 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 796971894} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &796971899 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 796971894} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &820273531 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 820273533} + - component: {fileID: 820273532} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &820273532 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 820273531} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &820273533 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 820273531} + m_LocalRotation: {x: 0.40821788, y: 0.23456976, z: -0.10938167, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: 30, z: 0} +--- !u!1 &935070114 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 935070115} + m_Layer: 0 + m_Name: Outlined Objects + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &935070115 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 935070114} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1781008194} + - {fileID: 124162634} + - {fileID: 1346396411} + - {fileID: 796971895} + - {fileID: 1083549395} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1083549394 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1083549395} + - component: {fileID: 1083549399} + - component: {fileID: 1083549397} + - component: {fileID: 1083549396} + m_Layer: 0 + m_Name: Outline Visible + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1083549395 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1083549394} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 935070115} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1083549396 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1083549394} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5fea29bb7c508c244a1f805a5fd3fc4d, type: 3} + m_Name: + m_EditorClassIdentifier: + outlineMode: 1 + outlineColor: {r: 0.2509804, g: 1, b: 0.2509804, a: 1} + outlineWidth: 6 +--- !u!23 &1083549397 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1083549394} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &1083549399 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1083549394} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1346396410 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1346396411} + - component: {fileID: 1346396415} + - component: {fileID: 1346396413} + - component: {fileID: 1346396412} + m_Layer: 0 + m_Name: Outline All + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1346396411 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1346396410} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 935070115} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1346396412 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1346396410} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5fea29bb7c508c244a1f805a5fd3fc4d, type: 3} + m_Name: + m_EditorClassIdentifier: + outlineMode: 0 + outlineColor: {r: 1, g: 1, b: 0.2509804, a: 1} + outlineWidth: 6 +--- !u!23 &1346396413 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1346396410} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &1346396415 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1346396410} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1580478821 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1580478825} + - component: {fileID: 1580478824} + - component: {fileID: 1580478822} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1580478822 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1580478821} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: f58cf65ea995c4b45be95713bdea8134, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &1580478824 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1580478821} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1580478825 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1580478821} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 10, y: 1, z: 10} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1781008193 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1781008194} + - component: {fileID: 1781008198} + - component: {fileID: 1781008196} + - component: {fileID: 1781008195} + m_Layer: 0 + m_Name: Silhouette Only + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1781008194 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1781008193} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 935070115} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1781008195 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1781008193} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5fea29bb7c508c244a1f805a5fd3fc4d, type: 3} + m_Name: + m_EditorClassIdentifier: + outlineMode: 4 + outlineColor: {r: 1, g: 1, b: 1, a: 1} + outlineWidth: 6 +--- !u!23 &1781008196 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1781008193} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &1781008198 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1781008193} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} diff --git a/twinStickCrawler/Assets/QuickOutline/Samples/Scenes/QuickOutline.unity.meta b/twinStickCrawler/Assets/QuickOutline/Samples/Scenes/QuickOutline.unity.meta new file mode 100644 index 0000000..f1107a5 --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Samples/Scenes/QuickOutline.unity.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: f23712c79adc910408e872b127e825cf +timeCreated: 1522615825 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 115488 + packageName: Quick Outline + packageVersion: 1.1 + assetPath: Assets/QuickOutline/Samples/Scenes/QuickOutline.unity + uploadId: 485303 diff --git a/twinStickCrawler/Assets/QuickOutline/Scripts.meta b/twinStickCrawler/Assets/QuickOutline/Scripts.meta new file mode 100644 index 0000000..2f7793d --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Scripts.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3ddbd65d69a9f0b48bab4fe96a1fe099 +folderAsset: yes +timeCreated: 1522559122 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/twinStickCrawler/Assets/QuickOutline/Scripts/Outline.cs b/twinStickCrawler/Assets/QuickOutline/Scripts/Outline.cs new file mode 100644 index 0000000..26d8788 --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Scripts/Outline.cs @@ -0,0 +1,309 @@ +// +// Outline.cs +// QuickOutline +// +// Created by Chris Nolet on 3/30/18. +// Copyright © 2018 Chris Nolet. All rights reserved. +// + +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +[DisallowMultipleComponent] + +public class Outline : MonoBehaviour { + private static HashSet registeredMeshes = new HashSet(); + + public enum Mode { + OutlineAll, + OutlineVisible, + OutlineHidden, + OutlineAndSilhouette, + SilhouetteOnly + } + + public Mode OutlineMode { + get { return outlineMode; } + set { + outlineMode = value; + needsUpdate = true; + } + } + + public Color OutlineColor { + get { return outlineColor; } + set { + outlineColor = value; + needsUpdate = true; + } + } + + public float OutlineWidth { + get { return outlineWidth; } + set { + outlineWidth = value; + needsUpdate = true; + } + } + + [Serializable] + private class ListVector3 { + public List data; + } + + [SerializeField] + private Mode outlineMode; + + [SerializeField] + private Color outlineColor = Color.white; + + [SerializeField, Range(0f, 10f)] + private float outlineWidth = 2f; + + [Header("Optional")] + + [SerializeField, Tooltip("Precompute enabled: Per-vertex calculations are performed in the editor and serialized with the object. " + + "Precompute disabled: Per-vertex calculations are performed at runtime in Awake(). This may cause a pause for large meshes.")] + private bool precomputeOutline; + + [SerializeField, HideInInspector] + private List bakeKeys = new List(); + + [SerializeField, HideInInspector] + private List bakeValues = new List(); + + private Renderer[] renderers; + private Material outlineMaskMaterial; + private Material outlineFillMaterial; + + private bool needsUpdate; + + void Awake() { + + // Cache renderers + renderers = GetComponentsInChildren(); + + // Instantiate outline materials + outlineMaskMaterial = Instantiate(Resources.Load(@"Materials/OutlineMask")); + outlineFillMaterial = Instantiate(Resources.Load(@"Materials/OutlineFill")); + + outlineMaskMaterial.name = "OutlineMask (Instance)"; + outlineFillMaterial.name = "OutlineFill (Instance)"; + + // Retrieve or generate smooth normals + LoadSmoothNormals(); + + // Apply material properties immediately + needsUpdate = true; + } + + void OnEnable() { + foreach (var renderer in renderers) { + + // Append outline shaders + var materials = renderer.sharedMaterials.ToList(); + + materials.Add(outlineMaskMaterial); + materials.Add(outlineFillMaterial); + + renderer.materials = materials.ToArray(); + } + } + + void OnValidate() { + + // Update material properties + needsUpdate = true; + + // Clear cache when baking is disabled or corrupted + if (!precomputeOutline && bakeKeys.Count != 0 || bakeKeys.Count != bakeValues.Count) { + bakeKeys.Clear(); + bakeValues.Clear(); + } + + // Generate smooth normals when baking is enabled + if (precomputeOutline && bakeKeys.Count == 0) { + Bake(); + } + } + + void Update() { + if (needsUpdate) { + needsUpdate = false; + + UpdateMaterialProperties(); + } + } + + void OnDisable() { + foreach (var renderer in renderers) { + + // Remove outline shaders + var materials = renderer.sharedMaterials.ToList(); + + materials.Remove(outlineMaskMaterial); + materials.Remove(outlineFillMaterial); + + renderer.materials = materials.ToArray(); + } + } + + void OnDestroy() { + + // Destroy material instances + Destroy(outlineMaskMaterial); + Destroy(outlineFillMaterial); + } + + void Bake() { + + // Generate smooth normals for each mesh + var bakedMeshes = new HashSet(); + + foreach (var meshFilter in GetComponentsInChildren()) { + + // Skip duplicates + if (!bakedMeshes.Add(meshFilter.sharedMesh)) { + continue; + } + + // Serialize smooth normals + var smoothNormals = SmoothNormals(meshFilter.sharedMesh); + + bakeKeys.Add(meshFilter.sharedMesh); + bakeValues.Add(new ListVector3() { data = smoothNormals }); + } + } + + void LoadSmoothNormals() { + + // Retrieve or generate smooth normals + foreach (var meshFilter in GetComponentsInChildren()) { + + // Skip if smooth normals have already been adopted + if (!registeredMeshes.Add(meshFilter.sharedMesh)) { + continue; + } + + // Retrieve or generate smooth normals + var index = bakeKeys.IndexOf(meshFilter.sharedMesh); + var smoothNormals = (index >= 0) ? bakeValues[index].data : SmoothNormals(meshFilter.sharedMesh); + + // Store smooth normals in UV3 + meshFilter.sharedMesh.SetUVs(3, smoothNormals); + + // Combine submeshes + var renderer = meshFilter.GetComponent(); + + if (renderer != null) { + CombineSubmeshes(meshFilter.sharedMesh, renderer.sharedMaterials); + } + } + + // Clear UV3 on skinned mesh renderers + foreach (var skinnedMeshRenderer in GetComponentsInChildren()) { + + // Skip if UV3 has already been reset + if (!registeredMeshes.Add(skinnedMeshRenderer.sharedMesh)) { + continue; + } + + // Clear UV3 + skinnedMeshRenderer.sharedMesh.uv4 = new Vector2[skinnedMeshRenderer.sharedMesh.vertexCount]; + + // Combine submeshes + CombineSubmeshes(skinnedMeshRenderer.sharedMesh, skinnedMeshRenderer.sharedMaterials); + } + } + + List SmoothNormals(Mesh mesh) { + + // Group vertices by location + var groups = mesh.vertices.Select((vertex, index) => new KeyValuePair(vertex, index)).GroupBy(pair => pair.Key); + + // Copy normals to a new list + var smoothNormals = new List(mesh.normals); + + // Average normals for grouped vertices + foreach (var group in groups) { + + // Skip single vertices + if (group.Count() == 1) { + continue; + } + + // Calculate the average normal + var smoothNormal = Vector3.zero; + + foreach (var pair in group) { + smoothNormal += smoothNormals[pair.Value]; + } + + smoothNormal.Normalize(); + + // Assign smooth normal to each vertex + foreach (var pair in group) { + smoothNormals[pair.Value] = smoothNormal; + } + } + + return smoothNormals; + } + + void CombineSubmeshes(Mesh mesh, Material[] materials) { + + // Skip meshes with a single submesh + if (mesh.subMeshCount == 1) { + return; + } + + // Skip if submesh count exceeds material count + if (mesh.subMeshCount > materials.Length) { + return; + } + + // Append combined submesh + mesh.subMeshCount++; + mesh.SetTriangles(mesh.triangles, mesh.subMeshCount - 1); + } + + void UpdateMaterialProperties() { + + // Apply properties according to mode + outlineFillMaterial.SetColor("_OutlineColor", outlineColor); + + switch (outlineMode) { + case Mode.OutlineAll: + outlineMaskMaterial.SetFloat("_ZTest", (float)UnityEngine.Rendering.CompareFunction.Always); + outlineFillMaterial.SetFloat("_ZTest", (float)UnityEngine.Rendering.CompareFunction.Always); + outlineFillMaterial.SetFloat("_OutlineWidth", outlineWidth); + break; + + case Mode.OutlineVisible: + outlineMaskMaterial.SetFloat("_ZTest", (float)UnityEngine.Rendering.CompareFunction.Always); + outlineFillMaterial.SetFloat("_ZTest", (float)UnityEngine.Rendering.CompareFunction.LessEqual); + outlineFillMaterial.SetFloat("_OutlineWidth", outlineWidth); + break; + + case Mode.OutlineHidden: + outlineMaskMaterial.SetFloat("_ZTest", (float)UnityEngine.Rendering.CompareFunction.Always); + outlineFillMaterial.SetFloat("_ZTest", (float)UnityEngine.Rendering.CompareFunction.Greater); + outlineFillMaterial.SetFloat("_OutlineWidth", outlineWidth); + break; + + case Mode.OutlineAndSilhouette: + outlineMaskMaterial.SetFloat("_ZTest", (float)UnityEngine.Rendering.CompareFunction.LessEqual); + outlineFillMaterial.SetFloat("_ZTest", (float)UnityEngine.Rendering.CompareFunction.Always); + outlineFillMaterial.SetFloat("_OutlineWidth", outlineWidth); + break; + + case Mode.SilhouetteOnly: + outlineMaskMaterial.SetFloat("_ZTest", (float)UnityEngine.Rendering.CompareFunction.LessEqual); + outlineFillMaterial.SetFloat("_ZTest", (float)UnityEngine.Rendering.CompareFunction.Greater); + outlineFillMaterial.SetFloat("_OutlineWidth", 0f); + break; + } + } +} diff --git a/twinStickCrawler/Assets/QuickOutline/Scripts/Outline.cs.meta b/twinStickCrawler/Assets/QuickOutline/Scripts/Outline.cs.meta new file mode 100644 index 0000000..3c3932c --- /dev/null +++ b/twinStickCrawler/Assets/QuickOutline/Scripts/Outline.cs.meta @@ -0,0 +1,20 @@ +fileFormatVersion: 2 +guid: 5fea29bb7c508c244a1f805a5fd3fc4d +timeCreated: 1522369084 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 115488 + packageName: Quick Outline + packageVersion: 1.1 + assetPath: Assets/QuickOutline/Scripts/Outline.cs + uploadId: 485303 diff --git a/twinStickCrawler/Assets/Scenes/SampleScene.unity b/twinStickCrawler/Assets/Scenes/SampleScene.unity index 5a457d8..17d59e2 100644 --- a/twinStickCrawler/Assets/Scenes/SampleScene.unity +++ b/twinStickCrawler/Assets/Scenes/SampleScene.unity @@ -222,12 +222,12 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 104565599} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 30} m_LocalScale: {x: 3, y: 3, z: 3} m_ConstrainProportionsScale: 1 m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 1964783399} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &104565604 MonoBehaviour: @@ -332,7 +332,7 @@ RectTransform: m_GameObject: {fileID: 298108316} m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.003, y: 0.003, z: 0.003} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 1 m_Children: [] m_Father: {fileID: 1965505412} @@ -619,12 +619,12 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 396613295} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} - m_LocalPosition: {x: 14.4, y: 2.0237799, z: -17.354582} + m_LocalRotation: {x: -0, y: -0, z: 0.7071068, w: 0.7071068} + m_LocalPosition: {x: 15.7, y: 0, z: 26.745417} m_LocalScale: {x: 1, y: 1, z: -7.5} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 1735896058} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} --- !u!1 &410087039 GameObject: @@ -848,12 +848,12 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 448670345} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.01, y: 1, z: 6.99} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 12.42} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 1091178979} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &565690117 PrefabInstance: @@ -918,7 +918,10 @@ PrefabInstance: m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] - m_AddedComponents: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: a0b56cb96370346c29fa346cedbbc0f4, type: 3} + insertIndex: -1 + addedObject: {fileID: 1483870828} m_SourcePrefab: {fileID: 100100000, guid: a0b56cb96370346c29fa346cedbbc0f4, type: 3} --- !u!1 &703790483 GameObject: @@ -1284,6 +1287,116 @@ Transform: m_Children: [] m_Father: {fileID: 267848158} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &862052079 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 862052083} + - component: {fileID: 862052082} + - component: {fileID: 862052081} + - component: {fileID: 862052080} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!136 &862052080 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 862052079} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &862052081 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 862052079} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 6c98604c51481d445af5c25ef39814e6, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &862052082 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 862052079} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &862052083 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 862052079} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.44279832, y: 1.06, z: 11.49} + m_LocalScale: {x: 0.5, y: 0.8, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1060623000 GameObject: m_ObjectHideFlags: 0 @@ -1363,6 +1476,41 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1091178978 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1091178979} + m_Layer: 0 + m_Name: Cubes + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1091178979 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1091178978} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.01, y: 1, z: -5.43} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1622936047} + - {fileID: 1139114537} + - {fileID: 448670349} + - {fileID: 1675880321} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1139114533 GameObject: m_ObjectHideFlags: 0 @@ -1464,12 +1612,12 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1139114533} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -5.6, y: 1, z: -0.14} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -5.61, y: 0, z: 5.29} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 1091178979} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1185133880 GameObject: @@ -1526,6 +1674,29 @@ CapsuleCollider: m_Height: 2 m_Direction: 1 m_Center: {x: 0, y: 2, z: 0} +--- !u!1 &1483870827 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: a0b56cb96370346c29fa346cedbbc0f4, type: 3} + m_PrefabInstance: {fileID: 565690117} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1483870828 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1483870827} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5fea29bb7c508c244a1f805a5fd3fc4d, type: 3} + m_Name: + m_EditorClassIdentifier: + outlineMode: 4 + outlineColor: {r: 1, g: 0.5990566, b: 0.64308184, a: 1} + outlineWidth: 2 + precomputeOutline: 1 + bakeKeys: [] + bakeValues: [] --- !u!1 &1510542800 GameObject: m_ObjectHideFlags: 0 @@ -1629,11 +1800,11 @@ Transform: m_GameObject: {fileID: 1510542800} serializedVersion: 2 m_LocalRotation: {x: 0.5, y: 0.5, z: 0.5, w: 0.5} - m_LocalPosition: {x: -1.3, y: 2.0237799, z: -44.1} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: -7.5} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 1735896058} m_LocalEulerAnglesHint: {x: 0, y: 90, z: 90} --- !u!1 &1622936043 GameObject: @@ -1736,12 +1907,12 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1622936043} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 4.38, y: 1, z: -0.14} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 4.37, y: 0, z: 5.29} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 1091178979} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1675880317 GameObject: @@ -1844,11 +2015,46 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1675880317} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.01, y: 1, z: -5.43} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] + m_Father: {fileID: 1091178979} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1735896057 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1735896058} + m_Layer: 0 + m_Name: Invisible Walls + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1735896058 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1735896057} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.3, y: 2.0237799, z: -44.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 396613299} + - {fileID: 2101815169} + - {fileID: 1790994646} + - {fileID: 1510542804} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1790994642 @@ -1954,11 +2160,11 @@ Transform: m_GameObject: {fileID: 1790994642} serializedVersion: 2 m_LocalRotation: {x: -0.5, y: -0.5, z: 0.5, w: 0.5} - m_LocalPosition: {x: -3.1, y: 2.0237799, z: 13.8} + m_LocalPosition: {x: -1.8, y: 0, z: 57.899998} m_LocalScale: {x: 1, y: 1, z: -7.5} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 1735896058} m_LocalEulerAnglesHint: {x: 0, y: -90, z: 90} --- !u!1 &1795092956 GameObject: @@ -2062,12 +2268,12 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1795092956} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -30} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 3, y: 3, z: 3} m_ConstrainProportionsScale: 1 m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 1964783399} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1847948564 GameObject: @@ -2514,6 +2720,39 @@ MonoBehaviour: _availableAttacks: - Left - Right +--- !u!1 &1964783398 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1964783399} + m_Layer: 0 + m_Name: Floor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1964783399 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1964783398} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -30} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 104565603} + - {fileID: 1795092960} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1965505411 GameObject: m_ObjectHideFlags: 0 @@ -2542,15 +2781,15 @@ RectTransform: m_GameObject: {fileID: 1965505411} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 + m_LocalScale: {x: 0.003, y: 0.003, z: 0.003} + m_ConstrainProportionsScale: 1 m_Children: - {fileID: 298108317} m_Father: {fileID: 1931938465} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: -0.9} m_SizeDelta: {x: 512, y: 512} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1965505413 @@ -2718,12 +2957,12 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2101815165} serializedVersion: 2 - m_LocalRotation: {x: -0.7071068, y: -0.7071068, z: 0, w: 0} - m_LocalPosition: {x: -14.4, y: 2.0237799, z: -17} - m_LocalScale: {x: 1, y: 1, z: -7.5} + m_LocalRotation: {x: -0.7071068, y: -0.7071068, z: -0, w: 0} + m_LocalPosition: {x: -13.099999, y: 0, z: 27.099998} + m_LocalScale: {x: 1, y: 1, z: -7.5000005} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 1735896058} m_LocalEulerAnglesHint: {x: 0, y: -180, z: 90} --- !u!1660057539 &9223372036854775807 SceneRoots: @@ -2732,15 +2971,9 @@ SceneRoots: - {fileID: 267848158} - {fileID: 330585546} - {fileID: 1931938465} - - {fileID: 104565603} - - {fileID: 1795092960} - - {fileID: 1622936047} - - {fileID: 1139114537} - - {fileID: 448670349} - - {fileID: 1675880321} + - {fileID: 1964783399} - {fileID: 820174471} - - {fileID: 396613299} - - {fileID: 2101815169} - - {fileID: 1790994646} - - {fileID: 1510542804} + - {fileID: 1091178979} + - {fileID: 1735896058} - {fileID: 1060623003} + - {fileID: 862052083} diff --git a/twinStickCrawler/Assets/Scripts/Creatures/Player/Player.cs b/twinStickCrawler/Assets/Scripts/Creatures/Player/Player.cs index 3ce0074..1b21575 100644 --- a/twinStickCrawler/Assets/Scripts/Creatures/Player/Player.cs +++ b/twinStickCrawler/Assets/Scripts/Creatures/Player/Player.cs @@ -102,9 +102,10 @@ void Update() float movementSpeed = attacking ? attackMoveSpeed : moveSpeed; Vector3 aimTarget = _playerAimRotate.AimTarget(minAimDistance, maxAimDistance, _camera, _inputManager.aimInput); - Vector3 moveDirection = _playerMove.GetMoveDirection(moveInput, _camera.transform) + _playerMove.Gravity(); + Vector3 moveDirection = _playerMove.GetMoveDirection(moveInput, _camera.transform); Vector3 lookTarget = attacking ? aimTarget : _playerRotate.LookTarget(moveDirection); // if player is attacking look towards attack direction. + moveDirection += _playerMove.Gravity(); _playerMove.Dash(dashTime, dashCooldownTime, dashSpeed, _inputManager.sprintPerformed, attacking); _playerMove.ApplyMovement(moveDirection, lookTarget, movementSpeed); _cameraMove.MoveCamera(); diff --git a/twinStickCrawler/Assets/Scripts/Creatures/Player/PlayerAimRotate.cs b/twinStickCrawler/Assets/Scripts/Creatures/Player/PlayerAimRotate.cs index e320cd9..f91a747 100644 --- a/twinStickCrawler/Assets/Scripts/Creatures/Player/PlayerAimRotate.cs +++ b/twinStickCrawler/Assets/Scripts/Creatures/Player/PlayerAimRotate.cs @@ -36,11 +36,14 @@ public Vector3 AimTarget(float minAimDistance, float maxAimDistance, Camera came } _lastLookTarget = new Vector3(targetPoint.x, transform.position.y, targetPoint.z); + //print( transform.position.y); + return _lastLookTarget; } public void ApplyRotation(Vector3 aimTarget) { + aimTarget.y = _canvas.transform.position.y; _canvas.transform.LookAt(aimTarget); } }