From 6b7a1f57291dc34037e0b0bd08fb73dc49c9aa68 Mon Sep 17 00:00:00 2001 From: NTG_Lenovo Date: Thu, 31 Jul 2025 17:33:30 +0900 Subject: [PATCH 1/4] =?UTF-8?q?Ui=20=EC=89=90=EC=9D=B4=EB=8D=94=20?= =?UTF-8?q?=EB=B0=8F=20=EC=95=A0=EB=8B=88=EB=A9=94=EC=9D=B4=EC=85=98=20?= =?UTF-8?q?=EC=89=90=EC=9D=B4=EB=8D=94=20=ED=8C=8C=EB=9D=BC=EB=AF=B8?= =?UTF-8?q?=ED=84=B0=20=EC=97=90=EC=85=8B=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...In1SpriteShaderUiMask2MaterialInspector.cs | 759 ++++++++++ ...riteShaderUiMask2MaterialInspector.cs.meta | 11 + .../Shaders/AllIn1SpriteShaderUiMask2.shader | 1258 +++++++++++++++++ .../AllIn1SpriteShaderUiMask2.shader.meta | 22 + Assets/Plugins/Animate UI Materials.meta | 3 + .../Assembly-AnimateUIMaterials.asmdef | 3 + .../Assembly-AnimateUIMaterials.asmdef.meta | 14 + .../BufferedMaterialModifier.cs | 131 ++ .../BufferedMaterialModifier.cs.meta | 10 + Assets/Plugins/Animate UI Materials/Docs.meta | 8 + .../Docs/Animate UI Materials - Readme.pdf | Bin 0 -> 177279 bytes .../Animate UI Materials - Readme.pdf.meta | 14 + .../Plugins/Animate UI Materials/Editor.meta | 3 + .../Assembly-AnimateUIMaterials-Editor.asmdef | 18 + ...mbly-AnimateUIMaterials-Editor.asmdef.meta | 14 + .../Editor/CustomMaterialEditor.cs | 34 + .../Editor/CustomMaterialEditor.cs.meta | 10 + .../Editor/GraphicMaterialOverrideEditor.cs | 644 +++++++++ .../GraphicMaterialOverrideEditor.cs.meta | 10 + .../GraphicPropertyOverrideColorEditor.cs | 33 + ...GraphicPropertyOverrideColorEditor.cs.meta | 10 + .../Editor/GraphicPropertyOverrideEditor.cs | 164 +++ .../GraphicPropertyOverrideEditor.cs.meta | 10 + .../GraphicPropertyOverrideRangeEditor.cs | 34 + ...GraphicPropertyOverrideRangeEditor.cs.meta | 10 + .../SerializedMaterialPropertyUtility.cs | 93 ++ .../SerializedMaterialPropertyUtility.cs.meta | 10 + .../Editor/ShaderPropertyInfo.cs | 60 + .../Editor/ShaderPropertyInfo.cs.meta | 10 + .../EditorExtensions.meta | 3 + .../AssemblyRef-EditorExtensions.asmref | 3 + .../AssemblyRef-EditorExtensions.asmref.meta | 14 + .../GraphicMaterialOverrideHelper.cs | 79 ++ .../GraphicMaterialOverrideHelper.cs.meta | 10 + .../Animate UI Materials/Examples.meta | 8 + .../Examples/Example Animation.anim | 1082 ++++++++++++++ .../Examples/Example Animation.anim.meta | 15 + .../Examples/Example Scene.unity | 1012 +++++++++++++ .../Examples/Example Scene.unity.meta | 14 + .../Examples/ExampleUIShader.shader | 144 ++ .../Examples/ExampleUIShader.shader.meta | 10 + .../Examples/Image.controller | 72 + .../Examples/Image.controller.meta | 15 + .../Examples/Texture 1.png | 3 + .../Examples/Texture 1.png.meta | 131 ++ .../Examples/Texture 2.png | 3 + .../Examples/Texture 2.png.meta | 131 ++ .../Examples/UI Overlay.mat | 50 + .../Examples/UI Overlay.mat.meta | 15 + .../GraphicMaterialOverride.cs | 83 ++ .../GraphicMaterialOverride.cs.meta | 10 + .../GraphicMaterialReplacer.cs | 56 + .../GraphicMaterialReplacer.cs.meta | 10 + .../GraphicPropertyOverride.cs | 200 +++ .../GraphicPropertyOverride.cs.meta | 10 + .../GraphicPropertyOverrideColor.cs | 41 + .../GraphicPropertyOverrideColor.cs.meta | 10 + .../GraphicPropertyOverrideFloat.cs | 36 + .../GraphicPropertyOverrideFloat.cs.meta | 10 + .../GraphicPropertyOverrideInt.cs | 36 + .../GraphicPropertyOverrideInt.cs.meta | 10 + .../GraphicPropertyOverrideRange.cs | 36 + .../GraphicPropertyOverrideRange.cs.meta | 10 + .../GraphicPropertyOverrideScaleAndOffset.cs | 57 + ...phicPropertyOverrideScaleAndOffset.cs.meta | 10 + .../GraphicPropertyOverrideTexture.cs | 36 + .../GraphicPropertyOverrideTexture.cs.meta | 10 + .../GraphicPropertyOverrideVector.cs | 36 + .../GraphicPropertyOverrideVector.cs.meta | 10 + .../IMaterialPropertyModifier.cs | 39 + .../IMaterialPropertyModifier.cs.meta | 10 + .../Resources/ES3/ES3Defaults.asset | 1 + .../Materials/SamplesFixtureEmissive.mat | 17 +- .../Common/Materials/SamplesRoughBlack.mat | 17 +- .../Materials/SamplesSpotlightEmissive.mat | 18 +- .../Materials/SamplesTurntable_White.mat | 17 +- .../Materials/Samples_BackdropFabric.mat | 17 +- .../Materials/Samples_BackdropFabric_Red.mat | 17 +- .../Common/Materials/Samples_BlackPaint.mat | 17 +- .../Common/Materials/Samples_Checker.mat | 17 +- .../Common/Materials/Samples_Curtain.mat | 17 +- .../Common/Materials/Samples_Platform.mat | 17 +- .../Common/Materials/Samples_RoughGrey.mat | 17 +- .../Common/Materials/Samples_RoughSteel.mat | 17 +- .../Common/Materials/Samples_Tripod.mat | 18 +- .../Inter-Regular SDF Emissive Variant.mat | 17 +- .../RestaurantManagementUi/Images/ItemBox.png | 3 + .../Images/ItemBox.png.meta | 143 ++ .../Ui/RestaurantManagementUi/Materials.meta | 8 + .../Materials/ItemSlotUi.mat | 374 +++++ .../Materials/ItemSlotUi.mat.meta | 8 + .../InventorySlotUi.controller | 284 ++-- .../TodayMenuSlotUi.controller | 454 +++--- .../Prefabs/Uis/ItemSlotUi.prefab | 166 +-- .../_Addressables/Scenes/Restaurant.unity | 942 ++++++++++++ .../_ScriptAssets/Prefabs/UiManager.prefab | 104 +- .../RestaurantManagementUi/ItemDetailView.cs | 6 +- .../TodayMenuUi/TodayMenuView.cs | 7 +- 98 files changed, 9103 insertions(+), 617 deletions(-) create mode 100644 Assets/Plugins/AllIn1SpriteShader/Scripts/Editor/AllIn1SpriteShaderUiMask2MaterialInspector.cs create mode 100644 Assets/Plugins/AllIn1SpriteShader/Scripts/Editor/AllIn1SpriteShaderUiMask2MaterialInspector.cs.meta create mode 100644 Assets/Plugins/AllIn1SpriteShader/Shaders/AllIn1SpriteShaderUiMask2.shader create mode 100644 Assets/Plugins/AllIn1SpriteShader/Shaders/AllIn1SpriteShaderUiMask2.shader.meta create mode 100644 Assets/Plugins/Animate UI Materials.meta create mode 100644 Assets/Plugins/Animate UI Materials/Assembly-AnimateUIMaterials.asmdef create mode 100644 Assets/Plugins/Animate UI Materials/Assembly-AnimateUIMaterials.asmdef.meta create mode 100644 Assets/Plugins/Animate UI Materials/BufferedMaterialModifier.cs create mode 100644 Assets/Plugins/Animate UI Materials/BufferedMaterialModifier.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/Docs.meta create mode 100644 Assets/Plugins/Animate UI Materials/Docs/Animate UI Materials - Readme.pdf create mode 100644 Assets/Plugins/Animate UI Materials/Docs/Animate UI Materials - Readme.pdf.meta create mode 100644 Assets/Plugins/Animate UI Materials/Editor.meta create mode 100644 Assets/Plugins/Animate UI Materials/Editor/Assembly-AnimateUIMaterials-Editor.asmdef create mode 100644 Assets/Plugins/Animate UI Materials/Editor/Assembly-AnimateUIMaterials-Editor.asmdef.meta create mode 100644 Assets/Plugins/Animate UI Materials/Editor/CustomMaterialEditor.cs create mode 100644 Assets/Plugins/Animate UI Materials/Editor/CustomMaterialEditor.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/Editor/GraphicMaterialOverrideEditor.cs create mode 100644 Assets/Plugins/Animate UI Materials/Editor/GraphicMaterialOverrideEditor.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideColorEditor.cs create mode 100644 Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideColorEditor.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideEditor.cs create mode 100644 Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideEditor.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideRangeEditor.cs create mode 100644 Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideRangeEditor.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/Editor/SerializedMaterialPropertyUtility.cs create mode 100644 Assets/Plugins/Animate UI Materials/Editor/SerializedMaterialPropertyUtility.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/Editor/ShaderPropertyInfo.cs create mode 100644 Assets/Plugins/Animate UI Materials/Editor/ShaderPropertyInfo.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/EditorExtensions.meta create mode 100644 Assets/Plugins/Animate UI Materials/EditorExtensions/AssemblyRef-EditorExtensions.asmref create mode 100644 Assets/Plugins/Animate UI Materials/EditorExtensions/AssemblyRef-EditorExtensions.asmref.meta create mode 100644 Assets/Plugins/Animate UI Materials/EditorExtensions/GraphicMaterialOverrideHelper.cs create mode 100644 Assets/Plugins/Animate UI Materials/EditorExtensions/GraphicMaterialOverrideHelper.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/Examples.meta create mode 100644 Assets/Plugins/Animate UI Materials/Examples/Example Animation.anim create mode 100644 Assets/Plugins/Animate UI Materials/Examples/Example Animation.anim.meta create mode 100644 Assets/Plugins/Animate UI Materials/Examples/Example Scene.unity create mode 100644 Assets/Plugins/Animate UI Materials/Examples/Example Scene.unity.meta create mode 100644 Assets/Plugins/Animate UI Materials/Examples/ExampleUIShader.shader create mode 100644 Assets/Plugins/Animate UI Materials/Examples/ExampleUIShader.shader.meta create mode 100644 Assets/Plugins/Animate UI Materials/Examples/Image.controller create mode 100644 Assets/Plugins/Animate UI Materials/Examples/Image.controller.meta create mode 100644 Assets/Plugins/Animate UI Materials/Examples/Texture 1.png create mode 100644 Assets/Plugins/Animate UI Materials/Examples/Texture 1.png.meta create mode 100644 Assets/Plugins/Animate UI Materials/Examples/Texture 2.png create mode 100644 Assets/Plugins/Animate UI Materials/Examples/Texture 2.png.meta create mode 100644 Assets/Plugins/Animate UI Materials/Examples/UI Overlay.mat create mode 100644 Assets/Plugins/Animate UI Materials/Examples/UI Overlay.mat.meta create mode 100644 Assets/Plugins/Animate UI Materials/GraphicMaterialOverride.cs create mode 100644 Assets/Plugins/Animate UI Materials/GraphicMaterialOverride.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/GraphicMaterialReplacer.cs create mode 100644 Assets/Plugins/Animate UI Materials/GraphicMaterialReplacer.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/GraphicPropertyOverride.cs create mode 100644 Assets/Plugins/Animate UI Materials/GraphicPropertyOverride.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideColor.cs create mode 100644 Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideColor.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideFloat.cs create mode 100644 Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideFloat.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideInt.cs create mode 100644 Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideInt.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideRange.cs create mode 100644 Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideRange.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideScaleAndOffset.cs create mode 100644 Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideScaleAndOffset.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideTexture.cs create mode 100644 Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideTexture.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideVector.cs create mode 100644 Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideVector.cs.meta create mode 100644 Assets/Plugins/Animate UI Materials/IMaterialPropertyModifier.cs create mode 100644 Assets/Plugins/Animate UI Materials/IMaterialPropertyModifier.cs.meta create mode 100644 Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/ItemBox.png create mode 100644 Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/ItemBox.png.meta create mode 100644 Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials.meta create mode 100644 Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/ItemSlotUi.mat create mode 100644 Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/ItemSlotUi.mat.meta diff --git a/Assets/Plugins/AllIn1SpriteShader/Scripts/Editor/AllIn1SpriteShaderUiMask2MaterialInspector.cs b/Assets/Plugins/AllIn1SpriteShader/Scripts/Editor/AllIn1SpriteShaderUiMask2MaterialInspector.cs new file mode 100644 index 000000000..bccef551f --- /dev/null +++ b/Assets/Plugins/AllIn1SpriteShader/Scripts/Editor/AllIn1SpriteShaderUiMask2MaterialInspector.cs @@ -0,0 +1,759 @@ +#if UNITY_EDITOR +using System.Linq; +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.Rendering; + +[CanEditMultipleObjects] +public class AllIn1SpriteShaderUiMask2MaterialInspector : ShaderGUI +{ + private Material targetMat; + private BlendMode srcMode, dstMode; + + private GUIStyle propertiesStyle, bigLabelStyle, smallLabelStyle, toggleButtonStyle; + private const int bigFontSize = 16, smallFontSize = 11; + private string[] oldKeyWords; + private int effectCount = 1; + private Material originalMaterialCopy; + private MaterialEditor matEditor; + private MaterialProperty[] matProperties; + private uint[] materialDrawers = new uint[] { 1, 2, 4 }; + bool[] currEnabledDrawers; + private const uint advancedConfigDrawer = 0; + private const uint colorFxShapeDrawer = 1; + private const uint uvFxShapeDrawer = 2; + + public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties) + { + matEditor = materialEditor; + matProperties = properties; + targetMat = materialEditor.target as Material; + effectCount = 1; + oldKeyWords = targetMat.shaderKeywords; + propertiesStyle = new GUIStyle(EditorStyles.helpBox); + propertiesStyle.margin = new RectOffset(0, 0, 0, 0); + bigLabelStyle = new GUIStyle(EditorStyles.boldLabel); + bigLabelStyle.fontSize = bigFontSize; + smallLabelStyle = new GUIStyle(EditorStyles.boldLabel); + smallLabelStyle.fontSize = smallFontSize; + toggleButtonStyle = new GUIStyle(GUI.skin.button) { alignment = TextAnchor.MiddleCenter, richText = true }; + currEnabledDrawers = new bool[materialDrawers.Length]; + uint iniDrawers = (uint)ShaderGUI.FindProperty("_EditorDrawers", matProperties).floatValue; + for(int i = 0; i < materialDrawers.Length; i++) currEnabledDrawers[i] = (materialDrawers[i] & iniDrawers) > 0; + + GUILayout.Label("General Properties", bigLabelStyle); + DrawProperty(0); + DrawProperty(1); + DrawProperty(2); + + + currEnabledDrawers[advancedConfigDrawer] = GUILayout.Toggle(currEnabledDrawers[advancedConfigDrawer], new GUIContent("Show Advanced Configuration"), toggleButtonStyle); + if(currEnabledDrawers[advancedConfigDrawer]) + { + + EditorGUILayout.BeginVertical(propertiesStyle); + Blending(); + DrawLine(Color.grey, 1, 3); + SpriteAtlas("Sprite inside an atlas?", "ATLAS_ON"); + DrawLine(Color.grey, 1, 3); + materialEditor.EnableInstancingField(); + DrawLine(Color.grey, 1, 3); + materialEditor.RenderQueueField(); + EditorGUILayout.EndVertical(); + } + + EditorGUILayout.Separator(); + DrawLine(Color.grey, 1, 3); + GUILayout.Label("Color Effects", bigLabelStyle); + + currEnabledDrawers[colorFxShapeDrawer] = GUILayout.Toggle(currEnabledDrawers[colorFxShapeDrawer], new GUIContent("Show Color Effects"), toggleButtonStyle); + if(currEnabledDrawers[colorFxShapeDrawer]) + { + Glow("Glow", "GLOW_ON"); + GenericEffect("Fade", "FADE_ON", 7, 13); + Outline("Outline", "OUTBASE_ON"); + GenericEffect("Alpha Outline", "ALPHAOUTLINE_ON", 26, 30, true, "A more performant but less flexible outline"); + InnerOutline("Inner Outline", "INNEROUTLINE_ON", 66, 69); + Gradient("Gradient & Radial Gradient", "GRADIENT_ON"); + GenericEffect("Color Swap", "COLORSWAP_ON", 36, 42, true, "You will need a mask texture (see Documentation)", new int[] { 154 }); + GenericEffect("Hue Shift", "HSV_ON", 43, 45); + ColorChange("Change 1 Color", "CHANGECOLOR_ON"); + ColorRamp("Color Ramp", "COLORRAMP_ON"); + GenericEffect("Hit Effect", "HITEFFECT_ON", 46, 48); + GenericEffect("Negative", "NEGATIVE_ON", 49, 49); + GenericEffect("Pixelate", "PIXELATE_ON", 50, 50, true, "Looks bad with distorition effects"); + GreyScale("GreyScale", "GREYSCALE_ON"); + Posterize("Posterize", "POSTERIZE_ON"); + Blur("Blur", "BLUR_ON"); + GenericEffect("Motion Blur", "MOTIONBLUR_ON", 62, 63); + GenericEffect("Ghost", "GHOST_ON", 64, 65, true, "This effect will not affect the outline", new int[] { 157 }); + GenericEffect("Hologram", "HOLOGRAM_ON", 73, 77, true, null, new int[] { 140, 158 }); + GenericEffect("Chromatic Aberration", "CHROMABERR_ON", 78, 79); + GenericEffect("Glitch", "GLITCH_ON", 80, 80, true, null, new int[] { 139 }); + GenericEffect("Flicker", "FLICKER_ON", 81, 83); + GenericEffect("Shadow", "SHADOW_ON", 84, 87); + GenericEffect("Shine", "SHINE_ON", 133, 138); + GenericEffect("Contrast & Brightness", "CONTRAST_ON", 152, 153); + Overlay("Overlay Texture", "OVERLAY_ON"); + GenericEffect("Alpha Cutoff", "ALPHACUTOFF_ON", 70, 70); + GenericEffect("Alpha Round", "ALPHAROUND_ON", 144, 144); + } + + DrawLine(Color.grey, 1, 3); + GUILayout.Label("UV Effects", bigLabelStyle); + + currEnabledDrawers[uvFxShapeDrawer] = GUILayout.Toggle(currEnabledDrawers[uvFxShapeDrawer], new GUIContent("Show Alpha Effects"), toggleButtonStyle); + if(currEnabledDrawers[uvFxShapeDrawer]) + { + GenericEffect("Hand Drawn", "DOODLE_ON", 88, 89); + Grass("Grass Movement / Wind", "WIND_ON"); + GenericEffect("Wave", "WAVEUV_ON", 94, 98); + GenericEffect("Round Wave", "ROUNDWAVEUV_ON", 127, 128); + GenericEffect("Rect Size (Enable wireframe to see result)", "RECTSIZE_ON", 99, 99, true, "Only on single sprites spritesheets NOT supported"); + GenericEffect("Offset", "OFFSETUV_ON", 100, 101); + GenericEffect("Clipping / Fill Amount", "CLIPPING_ON", 102, 105); + GenericEffect("Radial Clipping / Radial Fill", "RADIALCLIPPING_ON", 164, 166); + GenericEffect("Texture Scroll", "TEXTURESCROLL_ON", 106, 107, true, "Set Texture Wrap Mode to Repeat"); + GenericEffect("Zoom", "ZOOMUV_ON", 108, 108); + GenericEffect("Distortion", "DISTORT_ON", 109, 112); + GenericEffect("Warp Distortion", "WARP_ON", 167, 169); + GenericEffect("Twist", "TWISTUV_ON", 113, 116); + GenericEffect("Rotate", "ROTATEUV_ON", 117, 117, true, "_Tip_ Use Clipping effect to avoid possible undesired parts"); + GenericEffect("Polar Coordinates (Tile texture for good results)", "POLARUV_ON", -1, -1); + GenericEffect("Fish Eye", "FISHEYE_ON", 118, 118); + GenericEffect("Pinch", "PINCH_ON", 119, 119); + GenericEffect("Shake", "SHAKEUV_ON", 120, 122); + } + + SetAndSaveEnabledDrawers(iniDrawers); + } + + private void SetAndSaveEnabledDrawers(uint iniDrawers) + { + uint currDrawers = 0; + for(int i = 0; i < currEnabledDrawers.Length; i++) + { + if(currEnabledDrawers[i]) currDrawers |= materialDrawers[i]; + } + + if(iniDrawers != currDrawers) ShaderGUI.FindProperty("_EditorDrawers", matProperties).floatValue = currDrawers; + } + + private void Blending() + { + MaterialProperty srcM = ShaderGUI.FindProperty("_MySrcMode", matProperties); + MaterialProperty dstM = ShaderGUI.FindProperty("_MyDstMode", matProperties); + if(srcM.floatValue == 0 && dstM.floatValue == 0) + { + srcM.floatValue = 5; + dstM.floatValue = 10; + } + + GUILayout.Label("Look for 'ShaderLab: Blending' if you don't know what this is", smallLabelStyle); + if(GUILayout.Button("Back To Default Blending")) + { + srcM.floatValue = 5; + dstM.floatValue = 10; + targetMat.DisableKeyword("PREMULTIPLYALPHA_ON"); + } + + srcMode = (BlendMode)srcM.floatValue; + dstMode = (BlendMode)dstM.floatValue; + srcMode = (BlendMode)EditorGUILayout.EnumPopup("SrcMode", srcMode); + dstMode = (BlendMode)EditorGUILayout.EnumPopup("DstMode", dstMode); + srcM.floatValue = (float)(srcMode); + dstM.floatValue = (float)(dstMode); + + bool ini = oldKeyWords.Contains("PREMULTIPLYALPHA_ON"); + bool toggle = EditorGUILayout.Toggle("Premultiply Alpha?", ini); + if(ini != toggle) Save(); + if(toggle) targetMat.EnableKeyword("PREMULTIPLYALPHA_ON"); + else targetMat.DisableKeyword("PREMULTIPLYALPHA_ON"); + } + + private void SpriteAtlas(string inspector, string keyword) + { + bool toggle = oldKeyWords.Contains(keyword); + bool ini = toggle; + toggle = GUILayout.Toggle(toggle, inspector); + if(ini != toggle) Save(); + if(toggle) + { + targetMat.EnableKeyword(keyword); + EditorGUILayout.BeginVertical(propertiesStyle); + { + GUILayout.Label("Make sure SpriteAtlasUV component is added \n " + + "*Check documentation if unsure what this does or how it works", smallLabelStyle); + } + EditorGUILayout.EndVertical(); + } + else targetMat.DisableKeyword(keyword); + } + + private void Outline(string inspector, string keyword) + { + bool toggle = oldKeyWords.Contains(keyword); + bool ini = toggle; + + GUIContent effectNameLabel = new GUIContent(); + effectNameLabel.tooltip = keyword + " (C#)"; + effectNameLabel.text = effectCount + ".Outline"; + toggle = EditorGUILayout.BeginToggleGroup(effectNameLabel, toggle); + + effectCount++; + if(ini != toggle) Save(); + if(toggle) + { + targetMat.EnableKeyword("OUTBASE_ON"); + EditorGUILayout.BeginVertical(propertiesStyle); + { + DrawProperty(14); + DrawProperty(15); + DrawProperty(16); + DrawEffectSubKeywordToggle("Outline High Resolution?", "OUTBASE8DIR_ON"); + + DrawLine(Color.grey, 1, 3); + bool outlinePixelPerf = DrawEffectSubKeywordToggle("Outline is Pixel Perfect?", "OUTBASEPIXELPERF_ON"); + if(outlinePixelPerf) DrawProperty(18); + else DrawProperty(17); + + DrawLine(Color.grey, 1, 3); + bool outlineTexture = DrawEffectSubKeywordToggle("Outline uses texture?", "OUTTEX_ON"); + if(outlineTexture) + { + DrawProperty(19); + DrawProperty(20); + DrawProperty(21); + DrawProperty(172); + } + + DrawLine(Color.grey, 1, 3); + bool outlineDistort = DrawEffectSubKeywordToggle("Outline uses distortion?", "OUTDIST_ON"); + if(outlineDistort) + { + DrawProperty(22); + DrawProperty(23); + DrawProperty(24); + DrawProperty(25); + } + + DrawLine(Color.grey, 1, 3); + DrawEffectSubKeywordToggle("Only render outline?", "ONLYOUTLINE_ON"); + } + EditorGUILayout.EndVertical(); + } + else targetMat.DisableKeyword("OUTBASE_ON"); + + EditorGUILayout.EndToggleGroup(); + } + + private void GenericEffect(string inspector, string keyword, int first, int last, bool effectCounter = true, string preMessage = null, int[] extraProperties = null, bool boldToggleLetters = true) + { + bool toggle = oldKeyWords.Contains(keyword); + bool ini = toggle; + + GUIContent effectNameLabel = new GUIContent(); + effectNameLabel.tooltip = keyword + " (C#)"; + if(effectCounter) + { + effectNameLabel.text = effectCount + "." + inspector; + effectCount++; + } + else effectNameLabel.text = inspector; + if(boldToggleLetters) toggle = EditorGUILayout.BeginToggleGroup(effectNameLabel, toggle); + else toggle = GUILayout.Toggle(toggle, effectNameLabel); + + if(ini != toggle) Save(); + if(toggle) + { + targetMat.EnableKeyword(keyword); + if(first > 0) + { + EditorGUILayout.BeginVertical(propertiesStyle); + { + if(preMessage != null) GUILayout.Label(preMessage, smallLabelStyle); + for(int i = first; i <= last; i++) DrawProperty(i); + if(extraProperties != null) + foreach(int i in extraProperties) + DrawProperty(i); + } + EditorGUILayout.EndVertical(); + } + } + else targetMat.DisableKeyword(keyword); + + if(boldToggleLetters) EditorGUILayout.EndToggleGroup(); + } + + private void Glow(string inspector, string keyword) + { + bool toggle = oldKeyWords.Contains(keyword); + bool ini = toggle; + + GUIContent effectNameLabel = new GUIContent(); + effectNameLabel.tooltip = keyword + " (C#)"; + effectNameLabel.text = effectCount + "." + inspector; + toggle = EditorGUILayout.BeginToggleGroup(effectNameLabel, toggle); + + effectCount++; + if(ini != toggle) Save(); + if(toggle) + { + targetMat.EnableKeyword("GLOW_ON"); + EditorGUILayout.BeginVertical(propertiesStyle); + { + bool useGlowTex = DrawEffectSubKeywordToggle("Use Glow Texture?", "GLOWTEX_ON"); + if(useGlowTex) DrawProperty(6); + + DrawProperty(3); + DrawProperty(4); + DrawProperty(5, true); + } + EditorGUILayout.EndVertical(); + } + else targetMat.DisableKeyword("GLOW_ON"); + + EditorGUILayout.EndToggleGroup(); + } + + private void ColorRamp(string inspector, string keyword) + { + bool toggle = oldKeyWords.Contains(keyword); + bool ini = toggle; + + GUIContent effectNameLabel = new GUIContent(); + effectNameLabel.tooltip = keyword + " (C#)"; + effectNameLabel.text = effectCount + "." + inspector; + toggle = EditorGUILayout.BeginToggleGroup(effectNameLabel, toggle); + + effectCount++; + if(ini != toggle) Save(); + if(toggle) + { + targetMat.EnableKeyword("COLORRAMP_ON"); + EditorGUILayout.BeginVertical(propertiesStyle); + { + bool useEditableGradient = false; + if(AssetDatabase.Contains(targetMat)) + { + useEditableGradient = oldKeyWords.Contains("GRADIENTCOLORRAMP_ON"); + bool gradientTex = useEditableGradient; + gradientTex = GUILayout.Toggle(gradientTex, new GUIContent("Use Editable Gradient?")); + if(useEditableGradient != gradientTex) + { + Save(); + if(gradientTex) + { + useEditableGradient = true; + targetMat.EnableKeyword("GRADIENTCOLORRAMP_ON"); + } + else targetMat.DisableKeyword("GRADIENTCOLORRAMP_ON"); + } + + if(useEditableGradient) matEditor.ShaderProperty(matProperties[159], matProperties[159].displayName); + } + else GUILayout.Label("*Save to folder to allow for dynamic Gradient property", smallLabelStyle); + + if(!useEditableGradient) DrawProperty(51); + + DrawProperty(52); + DrawProperty(53, true); + MaterialProperty colorRampOut = matProperties[53]; + if(colorRampOut.floatValue == 1) targetMat.EnableKeyword("COLORRAMPOUTLINE_ON"); + else targetMat.DisableKeyword("COLORRAMPOUTLINE_ON"); + DrawProperty(155); + } + EditorGUILayout.EndVertical(); + } + else targetMat.DisableKeyword("COLORRAMP_ON"); + + EditorGUILayout.EndToggleGroup(); + } + + private void ColorChange(string inspector, string keyword) + { + bool toggle = oldKeyWords.Contains(keyword); + bool ini = toggle; + + GUIContent effectNameLabel = new GUIContent(); + effectNameLabel.tooltip = keyword + " (C#)"; + effectNameLabel.text = effectCount + "." + inspector; + toggle = EditorGUILayout.BeginToggleGroup(effectNameLabel, toggle); + + effectCount++; + if(ini != toggle) Save(); + if(toggle) + { + targetMat.EnableKeyword("CHANGECOLOR_ON"); + EditorGUILayout.BeginVertical(propertiesStyle); + { + for(int i = 123; i < 127; i++) DrawProperty(i); + + DrawLine(Color.grey, 1, 3); + ini = oldKeyWords.Contains("CHANGECOLOR2_ON"); + bool toggle2 = ini; + toggle2 = EditorGUILayout.Toggle("Use Color 2", ini); + if(ini != toggle2) Save(); + if(toggle2) + { + targetMat.EnableKeyword("CHANGECOLOR2_ON"); + for(int i = 146; i < 149; i++) DrawProperty(i); + } + else targetMat.DisableKeyword("CHANGECOLOR2_ON"); + + DrawLine(Color.grey, 1, 3); + ini = oldKeyWords.Contains("CHANGECOLOR3_ON"); + toggle2 = ini; + toggle2 = EditorGUILayout.Toggle("Use Color 3", toggle2); + if(ini != toggle2) Save(); + if(toggle2) + { + targetMat.EnableKeyword("CHANGECOLOR3_ON"); + for(int i = 149; i < 152; i++) DrawProperty(i); + } + else targetMat.DisableKeyword("CHANGECOLOR3_ON"); + } + EditorGUILayout.EndVertical(); + } + else targetMat.DisableKeyword("CHANGECOLOR_ON"); + + EditorGUILayout.EndToggleGroup(); + } + + private void GreyScale(string inspector, string keyword) + { + bool toggle = oldKeyWords.Contains(keyword); + bool ini = toggle; + + GUIContent effectNameLabel = new GUIContent(); + effectNameLabel.tooltip = keyword + " (C#)"; + effectNameLabel.text = effectCount + "." + inspector; + toggle = EditorGUILayout.BeginToggleGroup(effectNameLabel, toggle); + + effectCount++; + if(ini != toggle) Save(); + if(toggle) + { + targetMat.EnableKeyword("GREYSCALE_ON"); + EditorGUILayout.BeginVertical(propertiesStyle); + { + DrawProperty(54); + DrawProperty(56); + DrawProperty(55, true); + MaterialProperty greyScaleOut = matProperties[55]; + if(greyScaleOut.floatValue == 1) targetMat.EnableKeyword("GREYSCALEOUTLINE_ON"); + else targetMat.DisableKeyword("GREYSCALEOUTLINE_ON"); + DrawProperty(156); + } + EditorGUILayout.EndVertical(); + } + else targetMat.DisableKeyword("GREYSCALE_ON"); + + EditorGUILayout.EndToggleGroup(); + } + + private void Posterize(string inspector, string keyword) + { + bool toggle = oldKeyWords.Contains(keyword); + bool ini = toggle; + + GUIContent effectNameLabel = new GUIContent(); + effectNameLabel.tooltip = keyword + " (C#)"; + effectNameLabel.text = effectCount + "." + inspector; + toggle = EditorGUILayout.BeginToggleGroup(effectNameLabel, toggle); + + effectCount++; + if(ini != toggle) Save(); + if(toggle) + { + targetMat.EnableKeyword("POSTERIZE_ON"); + EditorGUILayout.BeginVertical(propertiesStyle); + { + DrawProperty(57); + DrawProperty(58); + DrawProperty(59, true); + MaterialProperty posterizeOut = matProperties[59]; + if(posterizeOut.floatValue == 1) targetMat.EnableKeyword("POSTERIZEOUTLINE_ON"); + else targetMat.DisableKeyword("POSTERIZEOUTLINE_ON"); + } + EditorGUILayout.EndVertical(); + } + else targetMat.DisableKeyword("POSTERIZE_ON"); + + EditorGUILayout.EndToggleGroup(); + } + + private void Blur(string inspector, string keyword) + { + bool toggle = oldKeyWords.Contains(keyword); + bool ini = toggle; + + GUIContent effectNameLabel = new GUIContent(); + effectNameLabel.tooltip = keyword + " (C#)"; + effectNameLabel.text = effectCount + "." + inspector; + toggle = EditorGUILayout.BeginToggleGroup(effectNameLabel, toggle); + + effectCount++; + if(ini != toggle) Save(); + if(toggle) + { + targetMat.EnableKeyword("BLUR_ON"); + EditorGUILayout.BeginVertical(propertiesStyle); + { + GUILayout.Label("This effect will not affect the outline", smallLabelStyle); + DrawProperty(60); + DrawProperty(61, true); + MaterialProperty blurIsHd = matProperties[61]; + if(blurIsHd.floatValue == 1) targetMat.EnableKeyword("BLURISHD_ON"); + else targetMat.DisableKeyword("BLURISHD_ON"); + } + EditorGUILayout.EndVertical(); + } + else targetMat.DisableKeyword("BLUR_ON"); + + EditorGUILayout.EndToggleGroup(); + } + + private void Grass(string inspector, string keyword) + { + bool toggle = oldKeyWords.Contains(keyword); + bool ini = toggle; + + GUIContent effectNameLabel = new GUIContent(); + effectNameLabel.tooltip = keyword + " (C#)"; + effectNameLabel.text = effectCount + "." + inspector; + toggle = EditorGUILayout.BeginToggleGroup(effectNameLabel, toggle); + + effectCount++; + if(ini != toggle) Save(); + if(toggle) + { + targetMat.EnableKeyword("WIND_ON"); + EditorGUILayout.BeginVertical(propertiesStyle); + { + DrawProperty(90); + DrawProperty(91); + DrawProperty(145); + DrawProperty(92); + DrawProperty(93, true); + MaterialProperty grassManual = matProperties[92]; + if(grassManual.floatValue == 1) targetMat.EnableKeyword("MANUALWIND_ON"); + else targetMat.DisableKeyword("MANUALWIND_ON"); + } + EditorGUILayout.EndVertical(); + } + else targetMat.DisableKeyword("WIND_ON"); + + EditorGUILayout.EndToggleGroup(); + } + + private void InnerOutline(string inspector, string keyword, int first, int last) + { + bool toggle = oldKeyWords.Contains(keyword); + bool ini = toggle; + + GUIContent effectNameLabel = new GUIContent(); + effectNameLabel.tooltip = keyword + " (C#)"; + effectNameLabel.text = effectCount + "." + inspector; + toggle = EditorGUILayout.BeginToggleGroup(effectNameLabel, toggle); + + effectCount++; + if(ini != toggle) Save(); + if(toggle) + { + targetMat.EnableKeyword(keyword); + if(first > 0) + { + EditorGUILayout.BeginVertical(propertiesStyle); + { + for(int i = first; i <= last; i++) DrawProperty(i); + + EditorGUILayout.Separator(); + DrawProperty(72, true); + MaterialProperty onlyInOutline = matProperties[72]; + if(onlyInOutline.floatValue == 1) targetMat.EnableKeyword("ONLYINNEROUTLINE_ON"); + else targetMat.DisableKeyword("ONLYINNEROUTLINE_ON"); + } + EditorGUILayout.EndVertical(); + } + } + else targetMat.DisableKeyword(keyword); + + EditorGUILayout.EndToggleGroup(); + } + + private void Gradient(string inspector, string keyword) + { + bool toggle = oldKeyWords.Contains(keyword); + bool ini = toggle; + + GUIContent effectNameLabel = new GUIContent(); + effectNameLabel.tooltip = keyword + " (C#)"; + effectNameLabel.text = effectCount + "." + inspector; + toggle = EditorGUILayout.BeginToggleGroup(effectNameLabel, toggle); + + effectCount++; + if(ini != toggle) Save(); + if(toggle) + { + targetMat.EnableKeyword(keyword); + + EditorGUILayout.BeginVertical(propertiesStyle); + { + DrawProperty(143, true); + MaterialProperty gradIsRadial = matProperties[143]; + if(gradIsRadial.floatValue == 1) + { + targetMat.EnableKeyword("RADIALGRADIENT_ON"); + DrawProperty(31); + DrawProperty(32); + DrawProperty(34); + DrawProperty(141); + } + else + { + targetMat.DisableKeyword("RADIALGRADIENT_ON"); + bool simpleGradient = oldKeyWords.Contains("GRADIENT2COL_ON"); + bool simpleGradToggle = EditorGUILayout.Toggle("2 Color Gradient?", simpleGradient); + if(simpleGradient && !simpleGradToggle) targetMat.DisableKeyword("GRADIENT2COL_ON"); + else if(!simpleGradient && simpleGradToggle) targetMat.EnableKeyword("GRADIENT2COL_ON"); + DrawProperty(31); + DrawProperty(32); + if(!simpleGradToggle) DrawProperty(33); + DrawProperty(34); + if(!simpleGradToggle) DrawProperty(35); + if(!simpleGradToggle) DrawProperty(141); + DrawProperty(142); + } + } + EditorGUILayout.EndVertical(); + } + else targetMat.DisableKeyword(keyword); + + EditorGUILayout.EndToggleGroup(); + } + + private void Overlay(string inspector, string keyword) + { + bool toggle = oldKeyWords.Contains(keyword); + bool ini = toggle; + + GUIContent effectNameLabel = new GUIContent(); + effectNameLabel.tooltip = keyword + " (C#)"; + effectNameLabel.text = effectCount + "." + inspector; + toggle = EditorGUILayout.BeginToggleGroup(effectNameLabel, toggle); + + effectCount++; + if(ini != toggle) Save(); + if(toggle) + { + targetMat.EnableKeyword(keyword); + EditorGUILayout.BeginVertical(propertiesStyle); + { + bool multModeOn = oldKeyWords.Contains("OVERLAYMULT_ON"); + bool isMultMode = multModeOn; + isMultMode = GUILayout.Toggle(isMultMode, new GUIContent("Is overlay multiplicative?")); + if(multModeOn != isMultMode) + { + Save(); + if(isMultMode) + { + multModeOn = true; + targetMat.EnableKeyword("OVERLAYMULT_ON"); + } + else targetMat.DisableKeyword("OVERLAYMULT_ON"); + } + + if(multModeOn) GUILayout.Label("Overlay is set to multiplicative mode", smallLabelStyle); + else GUILayout.Label("Overlay is set to additive mode", smallLabelStyle); + + for(int i = 160; i <= 163; i++) DrawProperty(i); + for(int i = 170; i <= 171; i++) DrawProperty(i); + } + EditorGUILayout.EndVertical(); + } + else targetMat.DisableKeyword(keyword); + + EditorGUILayout.EndToggleGroup(); + } + + private void DrawProperty(int index, bool noReset = false) + { + MaterialProperty targetProperty = matProperties[index]; + + EditorGUILayout.BeginHorizontal(); + { + GUIContent propertyLabel = new GUIContent(); + propertyLabel.text = targetProperty.displayName; + propertyLabel.tooltip = targetProperty.name + " (C#)"; + + matEditor.ShaderProperty(targetProperty, propertyLabel); + + if(!noReset) + { + GUIContent resetButtonLabel = new GUIContent(); + resetButtonLabel.text = "R"; + resetButtonLabel.tooltip = "Resets to default value"; + if(GUILayout.Button(resetButtonLabel, GUILayout.Width(20))) ResetProperty(targetProperty); + } + } + EditorGUILayout.EndHorizontal(); + } + + private void ResetProperty(MaterialProperty targetProperty) + { + if(originalMaterialCopy == null) originalMaterialCopy = new Material(targetMat.shader); + if(targetProperty.type == MaterialProperty.PropType.Float || targetProperty.type == MaterialProperty.PropType.Range) + { + targetProperty.floatValue = originalMaterialCopy.GetFloat(targetProperty.name); + } + else if(targetProperty.type == MaterialProperty.PropType.Vector) + { + targetProperty.vectorValue = originalMaterialCopy.GetVector(targetProperty.name); + } + else if(targetProperty.type == MaterialProperty.PropType.Color) + { + targetProperty.colorValue = originalMaterialCopy.GetColor(targetProperty.name); + } + else if(targetProperty.type == MaterialProperty.PropType.Texture) + { + targetProperty.textureValue = originalMaterialCopy.GetTexture(targetProperty.name); + } + } + + private bool DrawEffectSubKeywordToggle(string inspector, string keyword, bool setCustomConfigAfter = false) + { + GUIContent propertyLabel = new GUIContent(); + propertyLabel.text = inspector; + propertyLabel.tooltip = keyword + " (C#)"; + + bool ini = oldKeyWords.Contains(keyword); + bool toggle = ini; + toggle = GUILayout.Toggle(toggle, propertyLabel); + if(ini != toggle) + { + if(toggle) targetMat.EnableKeyword(keyword); + else targetMat.DisableKeyword(keyword); + } + + return toggle; + } + + private void Save() + { + if(!Application.isPlaying) EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); + EditorUtility.SetDirty(targetMat); + } + + private void DrawLine(Color color, int thickness = 2, int padding = 10) + { + Rect r = EditorGUILayout.GetControlRect(GUILayout.Height(padding + thickness)); + r.height = thickness; + r.y += (padding / 2); + r.x -= 2; + r.width += 6; + EditorGUI.DrawRect(r, color); + } +} +#endif \ No newline at end of file diff --git a/Assets/Plugins/AllIn1SpriteShader/Scripts/Editor/AllIn1SpriteShaderUiMask2MaterialInspector.cs.meta b/Assets/Plugins/AllIn1SpriteShader/Scripts/Editor/AllIn1SpriteShaderUiMask2MaterialInspector.cs.meta new file mode 100644 index 000000000..aae5f0c64 --- /dev/null +++ b/Assets/Plugins/AllIn1SpriteShader/Scripts/Editor/AllIn1SpriteShaderUiMask2MaterialInspector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2634386595cc60d40ae4e46b9ae970c0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/AllIn1SpriteShader/Shaders/AllIn1SpriteShaderUiMask2.shader b/Assets/Plugins/AllIn1SpriteShader/Shaders/AllIn1SpriteShaderUiMask2.shader new file mode 100644 index 000000000..07b14e295 --- /dev/null +++ b/Assets/Plugins/AllIn1SpriteShader/Shaders/AllIn1SpriteShaderUiMask2.shader @@ -0,0 +1,1258 @@ +Shader "AllIn1SpriteShader/AllIn1SpriteShaderUiMask2" +{ + Properties + { + _MainTex ("Main Texture", 2D) = "white" {} //0 + _Color("Main Color", Color) = (1,1,1,1) //1 + _Alpha("General Alpha", Range(0,1)) = 1 //2 + + _GlowColor("Glow Color", Color) = (1,1,1,1) //3 + _Glow("Glow Color Intensity", Range(0,100)) = 10 //4 + _GlowGlobal("Global Glow Intensity", Range(1,100)) = 1 //5 + [NoScaleOffset] _GlowTex("Glow Texture", 2D) = "white" {} //6 + + _FadeTex("Fade Texture", 2D) = "white" {} //7 + _FadeAmount("Fade Amount", Range(-0.1,1)) = -0.1 //8 + _FadeBurnWidth("Fade Burn Width", Range(0,1)) = 0.025 //9 + _FadeBurnTransition("Burn Transition", Range(0.01,0.5)) = 0.075 //10 + _FadeBurnColor("Fade Burn Color", Color) = (1,1,0,1) //11 + _FadeBurnTex("Fade Burn Texture", 2D) = "white" {} //12 + _FadeBurnGlow("Fade Burn Glow", Range(1,250)) = 2//13 + + _OutlineColor("Outline Base Color", Color) = (1,1,1,1) //14 + _OutlineAlpha("Outline Base Alpha", Range(0,1)) = 1 //15 + _OutlineGlow("Outline Base Glow", Range(1,100)) = 1.5 //16 + _OutlineWidth("Outline Base Width", Range(0,0.2)) = 0.004 //17 + _OutlinePixelWidth("Outline Base Pixel Width", Int) = 1 //18 + + [Space] + _OutlineTex("Outline Texture", 2D) = "white" {} //19 + _OutlineTexXSpeed("Texture scroll speed X", Range(-50,50)) = 10 //20 + _OutlineTexYSpeed("Texture scroll speed Y", Range(-50,50)) = 0 //21 + + [Space] + _OutlineDistortTex("Outline Distortion Texture", 2D) = "white" {} //22 + _OutlineDistortAmount("Outline Distortion Amount", Range(0,2)) = 0.5 //23 + _OutlineDistortTexXSpeed("Distortion scroll speed X", Range(-50,50)) = 5 //24 + _OutlineDistortTexYSpeed("Distortion scroll speed Y", Range(-50,50)) = 5 //25 + + _AlphaOutlineColor("Color", Color) = (1, 1, 1, 1) //26 + _AlphaOutlineGlow("Outline Glow", Range(1,100)) = 5 //27 + _AlphaOutlinePower("Power", Range(0, 5)) = 1 // 28 + _AlphaOutlineMinAlpha("Min Alpha", Range(0, 1)) = 0 // 29 + _AlphaOutlineBlend("Blend", Range(0, 1)) = 1 // 30 + + _GradBlend("Gradient Blend", Range(0,1)) = 1 //31 + _GradTopLeftCol("Top Color", Color) = (1,0,0,1) //32 + _GradTopRightCol("Top Color 2", Color) = (1, 1, 0, 1) //33 + _GradBotLeftCol("Bot Color", Color) = (0,0,1,1) //34 + _GradBotRightCol("Bot Color 2", Color) = (0, 1, 0, 1) //35 + + [NoScaleOffset] _ColorSwapTex("Color Swap Texture", 2D) = "black" {} //36 + [HDR] _ColorSwapRed("Red Channel", Color) = (1,1,1,1) //37 + _ColorSwapRedLuminosity("Red luminosity", Range(-1,1)) = 0.5 //38 + [HDR] _ColorSwapGreen("Green Channel", Color) = (1,1,1,1) //39 + _ColorSwapGreenLuminosity("Green luminosity", Range(-1,1)) = 0.5 //40 + [HDR] _ColorSwapBlue("Blue Channel", Color) = (1,1,1,1) //41 + _ColorSwapBlueLuminosity("Blue luminosity", Range(-1,1)) = 0.5 //42 + + _HsvShift("Hue Shift", Range(0, 360)) = 180 //43 + _HsvSaturation("Saturation", Range(0, 2)) = 1 //44 + _HsvBright("Brightness", Range(0, 2)) = 1 //45 + + _HitEffectColor("Hit Effect Color", Color) = (1,1,1,1) //46 + _HitEffectGlow("Glow Intensity", Range(1,100)) = 5 //47 + [Space] + _HitEffectBlend("Hit Effect Blend", Range(0,1)) = 1 //48 + + _NegativeAmount("Negative Amount", Range(0, 1)) = 1 //49 + + _PixelateSize("Pixelate size", Range(4,512)) = 32 //50 + + [NoScaleOffset] _ColorRampTex("Color ramp Texture", 2D) = "white" {} //51 + _ColorRampLuminosity("Color ramp luminosity", Range(-1,1)) = 0 //52 + [Toggle()] _ColorRampOutline("Affects everything?", float) = 0 //53 + + _GreyscaleLuminosity("Greyscale luminosity", Range(-1,1)) = 0 //54 + [Toggle()] _GreyscaleOutline("Affects everything?", float) = 0 //55 + _GreyscaleTintColor("Greyscale Tint Color", Color) = (1,1,1,1) //56 + + _PosterizeNumColors("Number of Colors", Range(0,100)) = 8 //57 + _PosterizeGamma("Posterize Amount", Range(0.1,10)) = 0.75 //58 + [Toggle()] _PosterizeOutline("Affects everything?", float) = 0 //59 + + _BlurIntensity("Blur Intensity", Range(0,100)) = 10 //60 + [Toggle()] _BlurHD("Blur is Low Res?", float) = 0 //61 + + _MotionBlurAngle("Motion Blur Angle", Range(-1, 1)) = 0.1 //62 + _MotionBlurDist("Motion Blur Distance", Range(-3, 3)) = 1.25 //63 + + _GhostColorBoost("Ghost Color Boost", Range(0,5)) = 1 //64 + _GhostTransparency("Ghost Transparency", Range(0,1)) = 0 //65 + + _InnerOutlineColor("Inner Outline Color", Color) = (1,0,0,1) //66 + _InnerOutlineThickness("Outline Thickness", Range(0,3)) = 1 //67 + _InnerOutlineAlpha("Inner Outline Alpha", Range(0,1)) = 1 //68 + _InnerOutlineGlow("Inner Outline Glow", Range(1,250)) = 4 //69 + + _AlphaCutoffValue("Alpha cutoff value", Range(0, 1)) = 0.25 //70 + + [Toggle()] _OnlyOutline("Only render outline?", float) = 0 //71 + [Toggle()] _OnlyInnerOutline("Only render inner outline?", float) = 0 //72 + + _HologramStripesAmount("Stripes Amount", Range(0, 1)) = 0.1 //73 + _HologramUnmodAmount("Unchanged Amount", Range(0, 1)) = 0.0 //74 + _HologramStripesSpeed("Stripes Speed", Range(-20, 20)) = 4.5 //75 + _HologramMinAlpha("Min Alpha", Range(0, 1)) = 0.1 //76 + _HologramMaxAlpha("Max Alpha", Range(0, 100)) = 0.75 //77 + + _ChromAberrAmount("ChromAberr Amount", Range(0, 1)) = 1 //78 + _ChromAberrAlpha("ChromAberr Alpha", Range(0, 1)) = 0.4 //79 + + _GlitchAmount("Glitch Amount", Range(0, 20)) = 3 //80 + + _FlickerPercent("Flicker Percent", Range(0, 1)) = 0.05 //81 + _FlickerFreq("Flicker Frequency", Range(0, 5)) = 0.2 //82 + _FlickerAlpha("Flicker Alpha", Range(0, 1)) = 0 //83 + + _ShadowX("Shadow X Axis", Range(-0.5, 0.5)) = 0.1 //84 + _ShadowY("Shadow Y Axis", Range(-0.5, 0.5)) = -0.05 //85 + _ShadowAlpha("Shadow Alpha", Range(0, 1)) = 0.5 //86 + _ShadowColor("Shadow Color", Color) = (0, 0, 0, 1) //87 + + _HandDrawnAmount("Hand Drawn Amount", Range(0, 20)) = 10 //88 + _HandDrawnSpeed("Hand Drawn Speed", Range(1, 15)) = 5 //89 + + _GrassSpeed("Speed", Range(0,50)) = 2 //90 + _GrassWind("Bend amount", Range(0,50)) = 20 //91 + [Space] + [Toggle()] _GrassManualToggle("Manually animated?", float) = 0 //92 + _GrassManualAnim("Manual Anim Value", Range(-1,1)) = 1 //93 + + _WaveAmount("Wave Amount", Range(0, 25)) = 7 //94 + _WaveSpeed("Wave Speed", Range(0, 25)) = 10 //95 + _WaveStrength("Wave Strength", Range(0, 25)) = 7.5 //96 + _WaveX("Wave X Axis", Range(0, 1)) = 0 //97 + _WaveY("Wave Y Axis", Range(0, 1)) = 0.5 //98 + + _RectSize("Rect Size", Range(1, 4)) = 1 //99 + + _OffsetUvX("X axis", Range(-1, 1)) = 0 //100 + _OffsetUvY("Y axis", Range(-1, 1)) = 0 //101 + + _ClipUvLeft("Clipping Left", Range(0, 1)) = 0 //102 + _ClipUvRight("Clipping Right", Range(0, 1)) = 0 //103 + _ClipUvUp("Clipping Up", Range(0, 1)) = 0 //104 + _ClipUvDown("Clipping Down", Range(0, 1)) = 0 //105 + + _TextureScrollXSpeed("Speed X Axis", Range(-5, 5)) = 1 //106 + _TextureScrollYSpeed("Speed Y Axis", Range(-5, 5)) = 0 //107 + + _ZoomUvAmount("Zoom Amount", Range(0.1, 5)) = 0.5 //108 + + _DistortTex("Distortion Texture", 2D) = "white" {} //109 + _DistortAmount("Distortion Amount", Range(0,2)) = 0.5 //110 + _DistortTexXSpeed("Scroll speed X", Range(-50,50)) = 5 //111 + _DistortTexYSpeed("Scroll speed Y", Range(-50,50)) = 5 //112 + + _TwistUvAmount("Twist Amount", Range(0, 3.1416)) = 1 //113 + _TwistUvPosX("Twist Pos X Axis", Range(0, 1)) = 0.5 //114 + _TwistUvPosY("Twist Pos Y Axis", Range(0, 1)) = 0.5 //115 + _TwistUvRadius("Twist Radius", Range(0, 3)) = 0.75 //116 + + _RotateUvAmount("Rotate Angle(radians)", Range(0, 6.2831)) = 0 //117 + + _FishEyeUvAmount("Fish Eye Amount", Range(0, 0.5)) = 0.35 //118 + + _PinchUvAmount("Pinch Amount", Range(0, 0.5)) = 0.35 //119 + + _ShakeUvSpeed("Shake Speed", Range(0, 20)) = 2.5 //120 + _ShakeUvX("X Multiplier", Range(0, 5)) = 1.5 //121 + _ShakeUvY("Y Multiplier", Range(0, 5)) = 1 //122 + + _ColorChangeTolerance("Tolerance", Range(0, 1)) = 0.25 //123 + _ColorChangeTarget("Color to change", Color) = (1, 0, 0, 1) //124 + [HDR] _ColorChangeNewCol("New Color", Color) = (1, 1, 0, 1) //125 + _ColorChangeLuminosity("New Color Luminosity", Range(0, 1)) = 0.0 //126 + + _RoundWaveStrength("Wave Strength", Range(0, 1)) = 0.7 //127 + _RoundWaveSpeed("Wave Speed", Range(0, 5)) = 2 //128 + + [Toggle()] _BillboardY("Billboard on both axis?", float) = 0 //129 + _ZWrite ("Depth Write", Float) = 0.0 // 130 + + _MySrcMode ("SrcMode", Float) = 5 // 131 + _MyDstMode ("DstMode", Float) = 10 // 132 + + _ShineColor("Shine Color", Color) = (1,1,1,1) // 133 + _ShineLocation("Shine Location", Range(0,1)) = 0.5 // 134 + _ShineRotate("Rotate Angle(radians)", Range(0, 6.2831)) = 0 //135 + _ShineWidth("Shine Width", Range(0.05,1)) = 0.1 // 136 + _ShineGlow("Shine Glow", Range(0,100)) = 1 // 137 + [NoScaleOffset] _ShineMask("Shine Mask", 2D) = "white" {} // 138 + + _GlitchSize("Glitch Size", Range(0.25, 5)) = 1 //139 + _HologramStripeColor("Stripes Color", Color) = (0,1,1,1) //140 + _GradBoostX("Boost X axis", Range(0.1, 5)) = 1.2 //141 + _GradBoostY("Boost Y axis", Range(0.1, 5)) = 1.2 //142 + [Toggle()] _GradIsRadial("Radial Gradient?", float) = 0 //143 + _AlphaRoundThreshold("Round Threshold", Range(0.005, 1.0)) = 0.5 //144 + _GrassRadialBend("Radial Bend", Range(0.0, 5.0)) = 0.1 //145 + + _ColorChangeTolerance2("Tolerance 2", Range(0, 1)) = 0.25 //146 + _ColorChangeTarget2("Color to change 2", Color) = (1, 0, 0, 1) //147 + [HDR] _ColorChangeNewCol2("New Color 2", Color) = (1, 1, 0, 1) //148 + _ColorChangeTolerance3("Tolerance 3", Range(0, 1)) = 0.25 //149 + _ColorChangeTarget3("Color to change 3", Color) = (1, 0, 0, 1) //150 + [HDR] _ColorChangeNewCol3("New Color 3", Color) = (1, 1, 0, 1) //151 + + _Contrast ("Contrast", Range(0, 6)) = 1 // 152 + _Brightness ("Brightness", Range(-1, 1)) = 0 // 153 + + _ColorSwapBlend ("Color Swap Blend", Range(0, 1)) = 1 // 154 + _ColorRampBlend ("Color Ramp Blend", Range(0, 1)) = 1 // 155 + _GreyscaleBlend ("Greyscale Blend", Range(0, 1)) = 1 // 156 + _GhostBlend ("Ghost Blend", Range(0, 1)) = 1 // 157 + _HologramBlend ("Hologram Blend", Range(0, 1)) = 1 // 158 + + [AllIn1ShaderGradient] _ColorRampTexGradient("Color ramp Gradient", 2D) = "white" {} //159 + + _OverlayTex("Overlay Texture", 2D) = "white" {} //160 + _OverlayColor("Overlay Color", Color) = (1, 1, 1, 1) //161 + _OverlayGlow("Overlay Glow", Range(0,25)) = 1 // 162 + _OverlayBlend("Overlay Blend", Range(0, 1)) = 1 // 163 + + _RadialStartAngle("Radial Start Angle", Range(0, 360)) = 90 //164 + _RadialClip("Radial Clip", Range(0, 360)) = 45 //165 + _RadialClip2("Radial Clip 2", Range(0, 360)) = 0 //166 + + _WarpStrength("Warp Strength", Range(0, 0.1)) = 0.025 //167 + _WarpSpeed("Warp Speed", Range(0, 25)) = 8 //168 + _WarpScale("Warp Scale", Range(0.05, 3)) = 0.5 //169 + + _OverlayTextureScrollXSpeed("Speed X Axis", Range(-5, 5)) = 0.25 //170 + _OverlayTextureScrollYSpeed("Speed Y Axis", Range(-5, 5)) = 0.25 //171 + _OutlineTexRotationSpeed("Outline Rotation Speed (rad/s)", Float) = 0 // 172 + + _Stencil ("Stencil ID", Float) = 0 + _StencilComp ("Stencil Comparison", Float) = 8 + _StencilOp ("Stencil Operation", Float) = 0 + _StencilWriteMask ("Stencil Write Mask", Float) = 255 + _StencilReadMask ("Stencil Read Mask", Float) = 255 + _ColorMask ("Color Mask", Float) = 15 + + [HideInInspector] _MinXUV("_MinXUV", Range(0, 1)) = 0.0 + [HideInInspector] _MaxXUV("_MaxXUV", Range(0, 1)) = 1.0 + [HideInInspector] _MinYUV("_MinYUV", Range(0, 1)) = 0.0 + [HideInInspector] _MaxYUV("_MaxYUV", Range(0, 1)) = 1.0 + [HideInInspector] _RandomSeed("_MaxYUV", Range(0, 10000)) = 0.0 + _EditorDrawers("Editor Drawers", Int) = 6 + } + + SubShader + { + Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" "CanUseSpriteAtlas"="True" } + Blend [_MySrcMode] [_MyDstMode] + Cull Off + ZWrite Off + ZTest [unity_GUIZTestMode] + ColorMask [_ColorMask] + + Stencil + { + Ref [_Stencil] + Comp [_StencilComp] + Pass [_StencilOp] + ReadMask [_StencilReadMask] + WriteMask [_StencilWriteMask] + } + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_instancing + + #pragma shader_feature_local GLOW_ON + #pragma shader_feature_local FADE_ON + #pragma shader_feature_local OUTBASE_ON + #pragma shader_feature_local ONLYOUTLINE_ON + #pragma shader_feature_local GRADIENT_ON + #pragma shader_feature_local GRADIENT2COL_ON + #pragma shader_feature_local RADIALGRADIENT_ON + #pragma shader_feature_local COLORSWAP_ON + #pragma shader_feature_local HSV_ON + #pragma shader_feature_local CHANGECOLOR_ON + #pragma shader_feature_local CHANGECOLOR2_ON + #pragma shader_feature_local CHANGECOLOR3_ON + #pragma shader_feature_local COLORRAMP_ON + #pragma shader_feature_local GRADIENTCOLORRAMP_ON + #pragma shader_feature_local HITEFFECT_ON + #pragma shader_feature_local NEGATIVE_ON + #pragma shader_feature_local PIXELATE_ON + #pragma shader_feature_local GREYSCALE_ON + #pragma shader_feature_local POSTERIZE_ON + #pragma shader_feature_local BLUR_ON + #pragma shader_feature_local MOTIONBLUR_ON + #pragma shader_feature_local GHOST_ON + #pragma shader_feature_local ALPHAOUTLINE_ON + #pragma shader_feature_local INNEROUTLINE_ON + #pragma shader_feature_local ONLYINNEROUTLINE_ON + #pragma shader_feature_local HOLOGRAM_ON + #pragma shader_feature_local CHROMABERR_ON + #pragma shader_feature_local GLITCH_ON + #pragma shader_feature_local FLICKER_ON + #pragma shader_feature_local SHADOW_ON + #pragma shader_feature_local SHINE_ON + #pragma shader_feature_local CONTRAST_ON + #pragma shader_feature_local OVERLAY_ON + #pragma shader_feature_local OVERLAYMULT_ON + #pragma shader_feature_local ALPHACUTOFF_ON + #pragma shader_feature_local ALPHAROUND_ON + #pragma shader_feature_local DOODLE_ON + #pragma shader_feature_local WIND_ON + #pragma shader_feature_local WAVEUV_ON + #pragma shader_feature_local ROUNDWAVEUV_ON + #pragma shader_feature_local RECTSIZE_ON + #pragma shader_feature_local OFFSETUV_ON + #pragma shader_feature_local CLIPPING_ON + #pragma shader_feature_local RADIALCLIPPING_ON + #pragma shader_feature_local TEXTURESCROLL_ON + #pragma shader_feature_local ZOOMUV_ON + #pragma shader_feature_local DISTORT_ON + #pragma shader_feature_local WARP_ON + #pragma shader_feature_local TWISTUV_ON + #pragma shader_feature_local ROTATEUV_ON + #pragma shader_feature_local POLARUV_ON + #pragma shader_feature_local FISHEYE_ON + #pragma shader_feature_local PINCH_ON + #pragma shader_feature_local SHAKEUV_ON + + #pragma shader_feature_local GLOWTEX_ON + #pragma shader_feature_local OUTTEX_ON + #pragma shader_feature_local OUTDIST_ON + #pragma shader_feature_local OUTBASE8DIR_ON + #pragma shader_feature_local OUTBASEPIXELPERF_ON + #pragma shader_feature_local COLORRAMPOUTLINE_ON + #pragma shader_feature_local GREYSCALEOUTLINE_ON + #pragma shader_feature_local POSTERIZEOUTLINE_ON + #pragma shader_feature_local BLURISHD_ON + #pragma shader_feature_local MANUALWIND_ON + #pragma shader_feature ATLAS_ON + #pragma shader_feature PREMULTIPLYALPHA_ON + + #pragma multi_compile _ UNITY_UI_CLIP_RECT + #pragma multi_compile _ UNITY_UI_ALPHACLIP + + #include "UnityCG.cginc" + #include "AllIn1OneShaderFunctions.cginc" + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + half4 color : COLOR; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float2 uv : TEXCOORD0; + float4 vertex : SV_POSITION; + half4 color : COLOR; + #if OUTTEX_ON + half2 uvOutTex : TEXCOORD1; + #endif + #if OUTDIST_ON + half2 uvOutDistTex : TEXCOORD2; + #endif + #if DISTORT_ON + half2 uvDistTex : TEXCOORD3; + #endif + #if UNITY_UI_CLIP_RECT + half4 mask : TEXCOORD4; + #endif + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + #if UNITY_UI_CLIP_RECT + float4 _ClipRect; + half _UIMaskSoftnessX, _UIMaskSoftnessY; + #endif + + sampler2D _MainTex; + half4 _MainTex_ST, _MainTex_TexelSize, _Color; + half _Alpha; + + #if ATLAS_ON + half _MinXUV, _MaxXUV, _MinYUV, _MaxYUV; + #endif + + #if RECTSIZE_ON + half _RectSize; + #endif + + #if OFFSETUV_ON + half _OffsetUvX, _OffsetUvY; + #endif + + #if CLIPPING_ON + half _ClipUvLeft, _ClipUvRight, _ClipUvUp, _ClipUvDown; + #endif + + #if RADIALCLIPPING_ON + half _RadialStartAngle, _RadialClip, _RadialClip2; + #endif + + #if TWISTUV_ON + half _TwistUvAmount, _TwistUvPosX, _TwistUvPosY, _TwistUvRadius; + #endif + + #if ROTATEUV_ON + half _RotateUvAmount; + #endif + + #if FISHEYE_ON + half _FishEyeUvAmount; + #endif + + #if PINCH_ON + half _PinchUvAmount; + #endif + + #if DOODLE_ON + half _HandDrawnAmount, _HandDrawnSpeed; + #endif + + #if SHAKEUV_ON + half _ShakeUvSpeed, _ShakeUvX, _ShakeUvY; + #endif + + #if WAVEUV_ON + float _WaveAmount, _WaveSpeed, _WaveStrength, _WaveX, _WaveY; + #endif + + #if ROUNDWAVEUV_ON + half _RoundWaveStrength, _RoundWaveSpeed; + #endif + + #if ZOOMUV_ON + half _ZoomUvAmount; + #endif + + #if FADE_ON + sampler2D _FadeTex, _FadeBurnTex; + half4 _FadeBurnColor, _FadeTex_ST, _FadeBurnTex_ST; + half _FadeAmount, _FadeBurnWidth, _FadeBurnTransition,_FadeBurnGlow; + #endif + + #if TEXTURESCROLL_ON + half _TextureScrollXSpeed, _TextureScrollYSpeed; + #endif + + #if GLOW_ON + sampler2D _GlowTex; + half4 _GlowColor; + half _Glow, _GlowGlobal; + #endif + + #if OUTBASE_ON + half4 _OutlineColor; + half _OutlineAlpha, _OutlineGlow, _OutlineWidth; + int _OutlinePixelWidth; + #endif + + #if OUTTEX_ON + sampler2D _OutlineTex; + half4 _OutlineTex_ST; + half _OutlineTexXSpeed, _OutlineTexYSpeed; + half _OutlineTexRotationSpeed; + #endif + + #if OUTDIST_ON + sampler2D _OutlineDistortTex; + half4 _OutlineDistortTex_ST; + half _OutlineDistortTexXSpeed, _OutlineDistortTexYSpeed, _OutlineDistortAmount; + #endif + + #if DISTORT_ON + sampler2D _DistortTex; + half4 _DistortTex_ST; + half _DistortTexXSpeed, _DistortTexYSpeed, _DistortAmount; + #endif + + #if WARP_ON + half _WarpStrength, _WarpSpeed, _WarpScale; + #endif + + #if WIND_ON + half _GrassSpeed, _GrassWind, _GrassManualAnim, _GrassRadialBend; + #endif + + #if GRADIENT_ON + half _GradBlend, _GradBoostX, _GradBoostY; + half4 _GradTopRightCol, _GradTopLeftCol, _GradBotRightCol, _GradBotLeftCol; + #endif + + #if COLORSWAP_ON + sampler2D _ColorSwapTex; + half4 _ColorSwapRed, _ColorSwapGreen, _ColorSwapBlue; + half _ColorSwapRedLuminosity, _ColorSwapGreenLuminosity, _ColorSwapBlueLuminosity, _ColorSwapBlend; + #endif + + #if HSV_ON + half _HsvShift, _HsvSaturation, _HsvBright; + #endif + + #if HITEFFECT_ON + half4 _HitEffectColor; + half _HitEffectGlow, _HitEffectBlend; + #endif + + #if PIXELATE_ON + half _PixelateSize; + #endif + + #if NEGATIVE_ON + half _NegativeAmount; + #endif + + #if COLORRAMP_ON + sampler2D _ColorRampTex, _ColorRampTexGradient; + half _ColorRampLuminosity, _ColorRampBlend; + #endif + + #if GREYSCALE_ON + half _GreyscaleLuminosity, _GreyscaleBlend; + half4 _GreyscaleTintColor; + #endif + + #if POSTERIZE_ON + half _PosterizeNumColors, _PosterizeGamma; + #endif + + #if BLUR_ON + half _BlurIntensity; + #endif + + #if MOTIONBLUR_ON + half _MotionBlurAngle, _MotionBlurDist; + #endif + + #if GHOST_ON + half _GhostColorBoost, _GhostTransparency, _GhostBlend; + #endif + + #if ALPHAOUTLINE_ON + half _AlphaOutlineGlow, _AlphaOutlinePower, _AlphaOutlineMinAlpha, _AlphaOutlineBlend; + half4 _AlphaOutlineColor; + #endif + + #if INNEROUTLINE_ON + half _InnerOutlineThickness, _InnerOutlineAlpha, _InnerOutlineGlow; + half4 _InnerOutlineColor; + #endif + + #if HOLOGRAM_ON + half _HologramStripesAmount, _HologramMinAlpha, _HologramUnmodAmount, _HologramStripesSpeed, _HologramMaxAlpha, _HologramBlend; + half4 _HologramStripeColor; + #endif + + #if CHROMABERR_ON + half _ChromAberrAmount, _ChromAberrAlpha; + #endif + + #if GLITCH_ON + half _GlitchAmount, _GlitchSize; + #endif + + #if FLICKER_ON + half _FlickerFreq, _FlickerPercent, _FlickerAlpha; + #endif + + #if SHADOW_ON + half _ShadowX, _ShadowY, _ShadowAlpha; + half4 _ShadowColor; + #endif + + #if SHINE_ON + sampler2D _ShineMask; + half4 _ShineColor; + half _ShineLocation, _ShineRotate, _ShineWidth, _ShineGlow; + #endif + + #if ALPHACUTOFF_ON + half _AlphaCutoffValue; + #endif + + #if ALPHAROUND_ON + half _AlphaRoundThreshold; + #endif + + #if CHANGECOLOR_ON + half4 _ColorChangeNewCol, _ColorChangeTarget; + half _ColorChangeTolerance, _ColorChangeLuminosity; + #endif + #if CHANGECOLOR2_ON + half4 _ColorChangeNewCol2, _ColorChangeTarget2; + half _ColorChangeTolerance2; + #endif + #if CHANGECOLOR3_ON + half4 _ColorChangeNewCol3, _ColorChangeTarget3; + half _ColorChangeTolerance3; + #endif + + #if CONTRAST_ON + half _Contrast, _Brightness; + #endif + + #if OVERLAY_ON + sampler2D _OverlayTex; + half4 _OverlayTex_ST, _OverlayColor; + half _OverlayGlow, _OverlayBlend, _OverlayTextureScrollXSpeed, _OverlayTextureScrollYSpeed; + #endif + + UNITY_INSTANCING_BUFFER_START(Props) + UNITY_DEFINE_INSTANCED_PROP(float, _RandomSeed) + UNITY_INSTANCING_BUFFER_END(Props) + + v2f vert(appdata v) + { + #if RECTSIZE_ON + v.vertex.xyz += (v.vertex.xyz * (_RectSize - 1.0)); + #endif + + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_TRANSFER_INSTANCE_ID(v, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + + o.vertex = UnityObjectToClipPos(v.vertex); + o.uv = TRANSFORM_TEX(v.uv, _MainTex); + o.color = v.color; + + #if UNITY_UI_CLIP_RECT + half2 pixelSize = o.vertex.w; + pixelSize /= half2(1, 1) * abs(mul((half2x2)UNITY_MATRIX_P, _ScreenParams.xy)); + half4 clampedRect = clamp(_ClipRect, -2e10, 2e10); + half2 maskUV = (v.vertex.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); + o.mask = half4(v.vertex.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_UIMaskSoftnessX, _UIMaskSoftnessY) + abs(pixelSize.xy))); + #endif + + half2 center = half2(0.5, 0.5); + #if ATLAS_ON + center = half2((_MaxXUV + _MinXUV) / 2.0, (_MaxYUV + _MinYUV) / 2.0); + #endif + + #if POLARUV_ON + o.uv = v.uv - center; + #endif + + #if ROTATEUV_ON + half2 uvC = v.uv; + half cosAngle = cos(_RotateUvAmount); + half sinAngle = sin(_RotateUvAmount); + half2x2 rot = half2x2(cosAngle, -sinAngle, sinAngle, cosAngle); + uvC -= center; + o.uv = mul(rot, uvC); + o.uv += center; + #endif + + #if OUTTEX_ON + o.uvOutTex = TRANSFORM_TEX(v.uv, _OutlineTex); + #endif + + #if OUTDIST_ON + o.uvOutDistTex = TRANSFORM_TEX(v.uv, _OutlineDistortTex); + #endif + + #if DISTORT_ON + o.uvDistTex = TRANSFORM_TEX(v.uv, _DistortTex); + #endif + + return o; + } + + half3 GetPixel(in int offsetX, in int offsetY, half2 uv, sampler2D tex) + { + return tex2D(tex, (uv + half2(offsetX * _MainTex_TexelSize.x, offsetY * _MainTex_TexelSize.y))).rgb; + } + + half4 frag(v2f i) : SV_Target + { + UNITY_SETUP_INSTANCE_ID(i); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); + half randomSeed = UNITY_ACCESS_INSTANCED_PROP(Props, _RandomSeed); + + float2 uvRect = i.uv; + half2 center = half2(0.5, 0.5); + #if ATLAS_ON + center = half2((_MaxXUV + _MinXUV) / 2.0, (_MaxYUV + _MinYUV) / 2.0); + uvRect = half2((i.uv.x - _MinXUV) / (_MaxXUV - _MinXUV), (i.uv.y - _MinYUV) / (_MaxYUV - _MinYUV)); + #endif + half2 centerTiled = half2(center.x * _MainTex_ST.x, center.y * _MainTex_ST.y); + + #if CLIPPING_ON + half2 tiledUv = half2(i.uv.x / _MainTex_ST.x, i.uv.y / _MainTex_ST.y); + #if ATLAS_ON + tiledUv = half2((tiledUv.x - _MinXUV) / (_MaxXUV - _MinXUV), (tiledUv.y - _MinYUV) / (_MaxYUV - _MinYUV)); + #endif + clip((1 - _ClipUvUp) - tiledUv.y); + clip(tiledUv.y - _ClipUvDown); + clip((1 - _ClipUvRight) - tiledUv.x); + clip(tiledUv.x - _ClipUvLeft); + #endif + + #if RADIALCLIPPING_ON + half2 tiledUv2 = half2(i.uv.x / _MainTex_ST.x, i.uv.y / _MainTex_ST.y); + #if ATLAS_ON + tiledUv2 = half2((tiledUv2.x - _MinXUV) / (_MaxXUV - _MinXUV), (tiledUv2.y - _MinYUV) / (_MaxYUV - _MinYUV)); + #endif + half startAngle = _RadialStartAngle - _RadialClip; + half endAngle = _RadialStartAngle + _RadialClip2; + half offset0 = clamp(0, 360, startAngle + 360); + half offset360 = clamp(0, 360, endAngle - 360); + half2 atan2Coord = half2(lerp(-1, 1, tiledUv2.x), lerp(-1, 1, tiledUv2.y)); + half atanAngle = atan2(atan2Coord.y, atan2Coord.x) * 57.3; // angle in degrees + if(atanAngle < 0) atanAngle = 360 + atanAngle; + if(atanAngle >= startAngle && atanAngle <= endAngle) discard; + if(atanAngle <= offset360) discard; + if(atanAngle >= offset0) discard; + #endif + + #if TEXTURESCROLL_ON && ATLAS_ON + i.uv = half2(_MinXUV + ((_MaxXUV - _MinXUV) * (abs(((_Time.y + randomSeed) * _TextureScrollXSpeed) + uvRect.x) % 1)), + _MinYUV + ((_MaxYUV - _MinYUV) * (abs(((_Time.y + randomSeed) * _TextureScrollYSpeed) + uvRect.y) % 1))); + #endif + + #if OFFSETUV_ON + #if ATLAS_ON + i.uv = half2(_MinXUV + ((_MaxXUV - _MinXUV) * (abs((_OffsetUvX + uvRect.x) % 1))), + _MinYUV + ((_MaxYUV - _MinYUV) * (abs(_OffsetUvY + uvRect.y) % 1))); + #else + i.uv += half2(_OffsetUvX, _OffsetUvY); + #endif + #endif + + #if POLARUV_ON + i.uv = half2(atan2(i.uv.y, i.uv.x) / (2.0f * 3.141592653589f), length(i.uv)); + i.uv *= _MainTex_ST.xy; + #endif + + #if TWISTUV_ON + #if ATLAS_ON + _TwistUvPosX = ((_MaxXUV - _MinXUV) * _TwistUvPosX) + _MinXUV; + _TwistUvPosY = ((_MaxYUV - _MinYUV) * _TwistUvPosY) + _MinYUV; + #endif + half2 tempUv = i.uv - half2(_TwistUvPosX * _MainTex_ST.x, _TwistUvPosY * _MainTex_ST.y); + _TwistUvRadius *= (_MainTex_ST.x + _MainTex_ST.y) / 2; + half percent = (_TwistUvRadius - length(tempUv)) / _TwistUvRadius; + half theta = percent * percent * (2.0 * sin(_TwistUvAmount)) * 8.0; + half s = sin(theta); + half c = cos(theta); + half beta = max(sign(_TwistUvRadius - length(tempUv)), 0.0); + tempUv = half2(dot(tempUv, half2(c, -s)), dot(tempUv, half2(s, c))) * beta + tempUv * (1 - beta); + tempUv += half2(_TwistUvPosX * _MainTex_ST.x, _TwistUvPosY * _MainTex_ST.y); + i.uv = tempUv; + #endif + + #if FISHEYE_ON + half bind = length(centerTiled); + half2 dF = i.uv - centerTiled; + half dFlen = length(dF); + half fishInt = (3.14159265359 / bind) * (_FishEyeUvAmount + 0.001); + i.uv = centerTiled + (dF / (max(0.0001, dFlen))) * tan(dFlen * fishInt) * bind / tan(bind * fishInt); + #endif + + #if PINCH_ON + half2 dP = i.uv - centerTiled; + half pinchInt = (3.141592 / length(centerTiled)) * (-_PinchUvAmount + 0.001); + i.uv = centerTiled + normalize(dP) * atan(length(dP) * -pinchInt * 10.0) * 0.5 / atan(-pinchInt * 5); + #endif + + #if ZOOMUV_ON + i.uv -= centerTiled; + i.uv = i.uv * _ZoomUvAmount; + i.uv += centerTiled; + #endif + + #if DOODLE_ON + half2 uvCopy = uvRect; + _HandDrawnSpeed = (floor((_Time.x + randomSeed) * 20 * _HandDrawnSpeed) / _HandDrawnSpeed) * _HandDrawnSpeed; + uvCopy.x = sin((uvCopy.x * _HandDrawnAmount + _HandDrawnSpeed) * 4); + uvCopy.y = cos((uvCopy.y * _HandDrawnAmount + _HandDrawnSpeed) * 4); + i.uv = lerp(i.uv, i.uv + uvCopy, 0.0005 * _HandDrawnAmount); + #endif + + #if SHAKEUV_ON + half xShake = sin((_Time.x + randomSeed) * _ShakeUvSpeed * 50) * _ShakeUvX; + half yShake = cos((_Time.x + randomSeed) * _ShakeUvSpeed * 50) * _ShakeUvY; + i.uv += half2(xShake * 0.012, yShake * 0.01); + #endif + + #if RECTSIZE_ON + i.uv = i.uv.xy * (_RectSize).xx + (((-_RectSize * 0.5) + 0.5)).xx; + #endif + + #if DISTORT_ON + #if ATLAS_ON + i.uvDistTex.x = i.uvDistTex.x * (1 / (_MaxXUV - _MinXUV)); + i.uvDistTex.y = i.uvDistTex.y * (1 / (_MaxYUV - _MinYUV)); + #endif + i.uvDistTex.x += ((_Time.x + randomSeed) * _DistortTexXSpeed) % 1; + i.uvDistTex.y += ((_Time.x + randomSeed) * _DistortTexYSpeed) % 1; + half distortAmnt = (tex2D(_DistortTex, i.uvDistTex).r - 0.5) * 0.2 * _DistortAmount; + i.uv.x += distortAmnt; + i.uv.y += distortAmnt; + #endif + + #if WARP_ON + half2 warpUv = half2(i.uv.x / _MainTex_ST.x, i.uv.y / _MainTex_ST.y); + #if ATLAS_ON + warpUv = half2((warpUv.x - _MinXUV) / (_MaxXUV - _MinXUV), (warpUv.y - _MinYUV) / (_MaxYUV - _MinYUV)); + #endif + const float tau = 6.283185307179586; + float xWarp = (_Time.y + randomSeed) * _WarpSpeed + warpUv.x * tau / _WarpScale; + float yWarp = (_Time.y + randomSeed) * _WarpSpeed + warpUv.y * tau / _WarpScale; + float2 warp = float2(sin(xWarp), sin(yWarp)) * _WarpStrength; + i.uv += warp; + #endif + + #if WAVEUV_ON + float2 uvWave = half2(_WaveX * _MainTex_ST.x, _WaveY * _MainTex_ST.y) - i.uv; + uvWave %= 1; + #if ATLAS_ON + uvWave = half2(_WaveX, _WaveY) - uvRect; + #endif + uvWave.x *= _ScreenParams.x / _ScreenParams.y; + float waveTime = _Time.y + randomSeed; + float angWave = (sqrt(dot(uvWave, uvWave)) * _WaveAmount) - ((waveTime * _WaveSpeed)); + i.uv = i.uv + uvWave * sin(angWave) * (_WaveStrength / 1000.0); + #endif + + #if ROUNDWAVEUV_ON + half xWave = ((0.5 * _MainTex_ST.x) - uvRect.x); + half yWave = ((0.5 * _MainTex_ST.y) - uvRect.y) * (_MainTex_TexelSize.w / _MainTex_TexelSize.z); + half ripple = -sqrt(xWave*xWave + yWave* yWave); + i.uv += (sin((ripple + (_Time.y + randomSeed) * (_RoundWaveSpeed/10.0)) / 0.015) * (_RoundWaveStrength/10.0)) % 1; + #endif + + #if WIND_ON + half windOffset = sin((_Time.x + randomSeed) * _GrassSpeed * 10); + half2 windCenter = half2(0.5, 0.1); + #if ATLAS_ON + windCenter.x = ((_MaxXUV - _MinXUV) * windCenter.x) + _MinXUV; + windCenter.y = ((_MaxYUV - _MinYUV) * windCenter.y) + _MinYUV; + #endif + #if !MANUALWIND_ON + i.uv.x = fmod(abs(lerp(i.uv.x, i.uv.x + (_GrassWind * 0.01 * windOffset), uvRect.y)), 1); + #else + i.uv.x = fmod(abs(lerp(i.uv.x, i.uv.x + (_GrassWind * 0.01 * _GrassManualAnim), uvRect.y)), 1); + windOffset = _GrassManualAnim; + #endif + half2 delta = i.uv - windCenter; + half delta2 = dot(delta.xy, delta.xy); + half2 delta_offset = delta2 * windOffset; + i.uv = i.uv + half2(delta.y, -delta.x) * delta_offset * _GrassRadialBend; + #endif + + #if TEXTURESCROLL_ON && !ATLAS_ON + i.uv.x += ((_Time.y + randomSeed) * _TextureScrollXSpeed) % 1; + i.uv.y += ((_Time.y + randomSeed) * _TextureScrollYSpeed) % 1; + #endif + + #if PIXELATE_ON + half aspectRatio = _MainTex_TexelSize.x / _MainTex_TexelSize.y; + half2 pixelSize = float2(_PixelateSize, _PixelateSize * aspectRatio); + i.uv = floor(i.uv * pixelSize) / pixelSize; + #endif + + half4 col = tex2D(_MainTex, i.uv); + half originalAlpha = col.a; + col *= i.color; + #if PREMULTIPLYALPHA_ON + col.rgb *= col.a; + #endif + + #if GLITCH_ON + half2 uvGlitch = uvRect; + uvGlitch.y -= 0.5; + half lineNoise = pow(rand2(floor(uvGlitch * half2(24., 19.) * _GlitchSize) * 4.0, randomSeed), 3.0) * _GlitchAmount + * pow(rand2(floor(uvGlitch * half2(38., 14.) * _GlitchSize) * 4.0, randomSeed), 3.0); + col = tex2D(_MainTex, i.uv + half2(lineNoise * 0.02 * rand2(half2(2.0, 1), randomSeed), 0)) * i.color; + #endif + + #if CHROMABERR_ON + half4 r = tex2D(_MainTex, i.uv + half2(_ChromAberrAmount/10, 0)) * i.color; + half4 b = tex2D(_MainTex, i.uv + half2(-_ChromAberrAmount/10, 0)) * i.color; + col = half4(r.r * r.a, col.g, b.b * b.a, max(max(r.a, b.a) * _ChromAberrAlpha, col.a)); + #endif + + #if BLUR_ON + #if ATLAS_ON + #if !BLURISHD_ON + col = BlurHD(i.uv, _MainTex, _BlurIntensity, (_MaxXUV - _MinXUV), (_MaxYUV - _MinYUV)) * i.color; + #else + col = Blur(i.uv, _MainTex, _BlurIntensity * (_MaxXUV - _MinXUV)) * i.color; + #endif + #else + #if !BLURISHD_ON + col = BlurHD(i.uv, _MainTex, _BlurIntensity, 1, 1) * i.color; + #else + col = Blur(i.uv, _MainTex, _BlurIntensity) * i.color; + #endif + #endif + #endif + + #if MOTIONBLUR_ON + _MotionBlurAngle = _MotionBlurAngle * 3.1415926; + #define rot(n) mul(n, half2x2(cos(_MotionBlurAngle), -sin(_MotionBlurAngle), sin(_MotionBlurAngle), cos(_MotionBlurAngle))) + _MotionBlurDist = _MotionBlurDist * 0.005; + #if ATLAS_ON + _MotionBlurDist *= (_MaxXUV - _MinXUV); + #endif + col.rgb += tex2D(_MainTex, i.uv + rot(half2(-_MotionBlurDist, -_MotionBlurDist))); + col.rgb += tex2D(_MainTex, i.uv + rot(half2(-_MotionBlurDist * 2, -_MotionBlurDist * 2))); + col.rgb += tex2D(_MainTex, i.uv + rot(half2(-_MotionBlurDist * 3, -_MotionBlurDist * 3))); + col.rgb += tex2D(_MainTex, i.uv + rot(half2(-_MotionBlurDist * 4, -_MotionBlurDist * 4))); + col.rgb += tex2D(_MainTex, i.uv + rot(half2(_MotionBlurDist, _MotionBlurDist))); + col.rgb += tex2D(_MainTex, i.uv + rot(half2(_MotionBlurDist * 2, _MotionBlurDist * 2))); + col.rgb += tex2D(_MainTex, i.uv + rot(half2(_MotionBlurDist * 3, _MotionBlurDist * 3))); + col.rgb += tex2D(_MainTex, i.uv + rot(half2(_MotionBlurDist * 4, _MotionBlurDist * 4))); + col.rgb = col.rgb / 9; + #endif + + #if NEGATIVE_ON + col.rgb = lerp(col.rgb, 1 - col.rgb, _NegativeAmount); + #endif + + half luminance = 0; + #if GREYSCALE_ON && !GREYSCALEOUTLINE_ON + luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b; + luminance = saturate(luminance + _GreyscaleLuminosity); + col.rgb = lerp(col.rgb, half3(luminance, luminance, luminance) * _GreyscaleTintColor, _GreyscaleBlend); + #endif + + #if GHOST_ON + luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b; + half4 ghostResult; + ghostResult.a = saturate(luminance - _GhostTransparency) * col.a; + ghostResult.rgb = col.rgb * (luminance + _GhostColorBoost); + col = lerp(col, ghostResult, _GhostBlend); + #endif + + #if INNEROUTLINE_ON + half3 innerT = abs(GetPixel(0, _InnerOutlineThickness, i.uv, _MainTex) - GetPixel(0, -_InnerOutlineThickness, i.uv, _MainTex)); + innerT += abs(GetPixel(_InnerOutlineThickness, 0, i.uv, _MainTex) - GetPixel(-_InnerOutlineThickness, 0, i.uv, _MainTex)); + #if !ONLYINNEROUTLINE_ON + innerT = (innerT / 2.0) * col.a * _InnerOutlineAlpha; + col.rgb += length(innerT) * _InnerOutlineColor.rgb * _InnerOutlineGlow; + #else + innerT *= col.a * _InnerOutlineAlpha; + col.rgb = length(innerT) * _InnerOutlineColor.rgb * _InnerOutlineGlow; + col.a = step(0.3, col.r+col.g+col.b); + #endif + #endif + + #if HITEFFECT_ON + col.rgb = lerp(col.rgb, _HitEffectColor.rgb * _HitEffectGlow, _HitEffectBlend); + #endif + + #if GRADIENT_ON + half2 tiledUvGrad = half2(uvRect.x / _MainTex_ST.x, uvRect.y / _MainTex_ST.y); + #if GRADIENT2COL_ON + _GradTopRightCol = _GradTopLeftCol; + _GradBotRightCol = _GradBotLeftCol; + #endif + #if RADIALGRADIENT_ON + half radialDist = 1 - length(tiledUvGrad - half2(0.5, 0.5)); + radialDist *= (_MainTex_TexelSize.w / _MainTex_TexelSize.z); + radialDist = saturate(_GradBoostX * radialDist); + half4 gradientResult = lerp(_GradTopLeftCol, _GradBotLeftCol, radialDist); + #else + half gradXLerpFactor = saturate(pow(tiledUvGrad.x, _GradBoostX)); + half4 gradientResult = lerp(lerp(_GradBotLeftCol, _GradBotRightCol, gradXLerpFactor), + lerp(_GradTopLeftCol, _GradTopRightCol, gradXLerpFactor), saturate(pow(tiledUvGrad.y, _GradBoostY))); + #endif + gradientResult = lerp(col, gradientResult, _GradBlend); + col.rgb = gradientResult.rgb * col.a; + col.a *= gradientResult.a; + #endif + + #if CONTRAST_ON + col.rgb = (col.rgb - float3(0.5, 0.5, 0.5)) * _Contrast + float3(0.5, 0.5, 0.5); + col.rgb += _Brightness; + #endif + + #if COLORSWAP_ON + luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b; + half4 swapMask = tex2D(_ColorSwapTex, i.uv); + swapMask.rgb *= swapMask.a; + half3 redSwap = _ColorSwapRed * swapMask.r * saturate(luminance + _ColorSwapRedLuminosity); + half3 greenSwap = _ColorSwapGreen * swapMask.g * saturate(luminance + _ColorSwapGreenLuminosity); + half3 blueSwap = _ColorSwapBlue * swapMask.b * saturate(luminance + _ColorSwapBlueLuminosity); + swapMask.rgb = col.rgb * saturate(1 - swapMask.r - swapMask.g - swapMask.b); + col.rgb = lerp(col.rgb, swapMask.rgb + redSwap + greenSwap + blueSwap, _ColorSwapBlend); + #endif + + #if COLORRAMP_ON && !COLORRAMPOUTLINE_ON + luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b; + luminance = saturate(luminance + _ColorRampLuminosity); + #if GRADIENTCOLORRAMP_ON + col.rgb = lerp(col.rgb, tex2D(_ColorRampTexGradient, half2(luminance, 0)).rgb, _ColorRampBlend); + #else + col.rgb = lerp(col.rgb, tex2D(_ColorRampTex, half2(luminance, 0)).rgb, _ColorRampBlend); + #endif + #endif + + #if CHANGECOLOR_ON + float3 currChangeColor = saturate(col.rgb); + luminance = 0.3 * currChangeColor.r + 0.59 * currChangeColor.g + 0.11 * currChangeColor.b; + luminance = saturate(luminance + _ColorChangeLuminosity); + half3 dif = abs(currChangeColor - _ColorChangeTarget.rgb); + col.rgb = lerp(col.rgb, half3(luminance, luminance, luminance) * _ColorChangeNewCol.rgb, + max(sign(1 - saturate(dif.x + dif.y + dif.z) - _ColorChangeTolerance), 0.0)); + #if CHANGECOLOR2_ON + dif = abs(currChangeColor - _ColorChangeTarget2.rgb); + col.rgb = lerp(col.rgb, half3(luminance, luminance, luminance) * _ColorChangeNewCol2.rgb, + max(sign(1 - saturate(dif.x + dif.y + dif.z) - _ColorChangeTolerance2), 0.0)); + #endif + #if CHANGECOLOR3_ON + dif = abs(currChangeColor - _ColorChangeTarget3.rgb); + col.rgb = lerp(col.rgb, half3(luminance, luminance, luminance) * _ColorChangeNewCol3.rgb, + max(sign(1 - saturate(dif.x + dif.y + dif.z) - _ColorChangeTolerance3), 0.0)); + #endif + #endif + + #if POSTERIZE_ON && !POSTERIZEOUTLINE_ON + col.rgb = pow(col.rgb, _PosterizeGamma) * _PosterizeNumColors; + col.rgb = floor(col.rgb) / _PosterizeNumColors; + col.rgb = pow(col.rgb, 1.0 / _PosterizeGamma); + #endif + + #if HSV_ON + half3 resultHsv = half3(col.rgb); + half cosHsv = _HsvBright * _HsvSaturation * cos(_HsvShift * 3.14159265 / 180); + half sinHsv = _HsvBright * _HsvSaturation * sin(_HsvShift * 3.14159265 / 180); + resultHsv.x = (.299 * _HsvBright + .701 * cosHsv + .168 * sinHsv) * col.x + + (.587 * _HsvBright - .587 * cosHsv + .330 * sinHsv) * col.y + + (.114 * _HsvBright - .114 * cosHsv - .497 * sinHsv) * col.z; + resultHsv.y = (.299 * _HsvBright - .299 * cosHsv - .328 * sinHsv) *col.x + + (.587 * _HsvBright + .413 * cosHsv + .035 * sinHsv) * col.y + + (.114 * _HsvBright - .114 * cosHsv + .292 * sinHsv) * col.z; + resultHsv.z = (.299 * _HsvBright - .3 * cosHsv + 1.25 * sinHsv) * col.x + + (.587 * _HsvBright - .588 * cosHsv - 1.05 * sinHsv) * col.y + + (.114 * _HsvBright + .886 * cosHsv - .203 * sinHsv) * col.z; + col.rgb = resultHsv; + #endif + + #if OVERLAY_ON + half2 overlayUvs = i.uv; + overlayUvs.x += ((_Time.y + randomSeed) * _OverlayTextureScrollXSpeed) % 1; + overlayUvs.y += ((_Time.y + randomSeed) * _OverlayTextureScrollYSpeed) % 1; + half4 overlayCol = tex2D(_OverlayTex, TRANSFORM_TEX(overlayUvs, _OverlayTex)); + overlayCol.rgb *= _OverlayColor.rgb * _OverlayGlow; + #if !OVERLAYMULT_ON + overlayCol.rgb *= overlayCol.a * _OverlayColor.rgb * _OverlayColor.a * _OverlayBlend; + col.rgb += overlayCol.rgb; + #else + overlayCol.a *= _OverlayColor.a; + col = lerp(col, col * overlayCol, _OverlayBlend); + #endif + #endif + + //OUTLINE------------------------------------------------------------- + #if OUTBASE_ON + #if OUTBASEPIXELPERF_ON + half2 destUv = half2(_OutlinePixelWidth * _MainTex_TexelSize.x, _OutlinePixelWidth * _MainTex_TexelSize.y); + #else + half2 destUv = half2(_OutlineWidth * _MainTex_TexelSize.x * 200, _OutlineWidth * _MainTex_TexelSize.y * 200); + #endif + + #if OUTDIST_ON + i.uvOutDistTex.x += ((_Time.x + randomSeed) * _OutlineDistortTexXSpeed) % 1; + i.uvOutDistTex.y += ((_Time.x + randomSeed) * _OutlineDistortTexYSpeed) % 1; + #if ATLAS_ON + i.uvOutDistTex = half2((i.uvOutDistTex.x - _MinXUV) / (_MaxXUV - _MinXUV), (i.uvOutDistTex.y - _MinYUV) / (_MaxYUV - _MinYUV)); + #endif + half outDistortAmnt = (tex2D(_OutlineDistortTex, i.uvOutDistTex).r - 0.5) * 0.2 * _OutlineDistortAmount; + destUv.x += outDistortAmnt; + destUv.y += outDistortAmnt; + #endif + + half spriteLeft = tex2D(_MainTex, i.uv + half2(destUv.x, 0)).a; + half spriteRight = tex2D(_MainTex, i.uv - half2(destUv.x, 0)).a; + half spriteBottom = tex2D(_MainTex, i.uv + half2(0, destUv.y)).a; + half spriteTop = tex2D(_MainTex, i.uv - half2(0, destUv.y)).a; + half result = spriteLeft + spriteRight + spriteBottom + spriteTop; + + #if OUTBASE8DIR_ON + half spriteTopLeft = tex2D(_MainTex, i.uv + half2(destUv.x, destUv.y)).a; + half spriteTopRight = tex2D(_MainTex, i.uv + half2(-destUv.x, destUv.y)).a; + half spriteBotLeft = tex2D(_MainTex, i.uv + half2(destUv.x, -destUv.y)).a; + half spriteBotRight = tex2D(_MainTex, i.uv + half2(-destUv.x, -destUv.y)).a; + result = result + spriteTopLeft + spriteTopRight + spriteBotLeft + spriteBotRight; + #endif + + result = step(0.05, saturate(result)); + + #if OUTTEX_ON + half angle = (_Time.x + randomSeed) * _OutlineTexRotationSpeed; + half2x2 rot = half2x2(cos(angle), -sin(angle), sin(angle), cos(angle)); + + half2 uv = i.uvOutTex - 0.5; + uv = mul(rot, uv); + uv += 0.5; + + uv.x += ((_Time.x + randomSeed) * _OutlineTexXSpeed) % 1; + uv.y += ((_Time.x + randomSeed) * _OutlineTexYSpeed) % 1; + + i.uvOutTex = uv; + #if ATLAS_ON + i.uvOutTex = half2((i.uvOutTex.x - _MinXUV) / (_MaxXUV - _MinXUV), (i.uvOutTex.y - _MinYUV) / (_MaxYUV - _MinYUV)); + #endif + half4 tempOutColor = tex2D(_OutlineTex, i.uvOutTex); + tempOutColor *= _OutlineColor; + _OutlineColor = tempOutColor; + #endif + + result *= (1 - originalAlpha) * _OutlineAlpha; + + half4 outline = _OutlineColor * i.color.a; + outline.rgb *= _OutlineGlow; + outline.a = result; + #if ONLYOUTLINE_ON + col = outline; + #else + col = lerp(col, outline, result); + #endif + #endif + //----------------------------------------------------------------------------- + + #if FADE_ON + half2 tiledUvFade1= TRANSFORM_TEX(i.uv, _FadeTex); + half2 tiledUvFade2 = TRANSFORM_TEX(i.uv, _FadeBurnTex); + #if ATLAS_ON + tiledUvFade1 = half2((tiledUvFade1.x - _MinXUV) / (_MaxXUV - _MinXUV), (tiledUvFade1.y - _MinYUV) / (_MaxYUV - _MinYUV)); + tiledUvFade2 = half2((tiledUvFade2.x - _MinXUV) / (_MaxXUV - _MinXUV), (tiledUvFade2.y - _MinYUV) / (_MaxYUV - _MinYUV)); + #endif + half fadeTemp = tex2D(_FadeTex, tiledUvFade1).r; + half fade = smoothstep(_FadeAmount, _FadeAmount + _FadeBurnTransition, fadeTemp); + half fadeBurn = saturate(smoothstep(_FadeAmount - _FadeBurnWidth, _FadeAmount - _FadeBurnWidth + 0.1, fadeTemp) * _FadeAmount); + col.a *= fade; + _FadeBurnColor.rgb *= _FadeBurnGlow; + col += fadeBurn * tex2D(_FadeBurnTex, tiledUvFade2) * _FadeBurnColor * originalAlpha * (1 - col.a); + #endif + + #if SHADOW_ON + half shadowA = tex2D(_MainTex, i.uv + half2(_ShadowX, _ShadowY)).a; + half preMultShadowMask = 1 - (saturate(shadowA - col.a) * (1 - col.a)); + col.rgb *= 1 - ((shadowA - col.a) * (1 - col.a)); + col.rgb += (_ShadowColor * shadowA) * (1 - col.a); + col.a = max(shadowA * _ShadowAlpha * i.color.a, col.a); + #endif + + #if GLOW_ON + half4 emission; + #if GLOWTEX_ON + emission = tex2D(_GlowTex, i.uv); + #else + emission = col; + #endif + col.rgb *= _GlowGlobal; + emission.rgb *= emission.a * col.a * _Glow * _GlowColor; + col.rgb += emission.rgb; + #endif + + #if COLORRAMP_ON && COLORRAMPOUTLINE_ON + luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b; + luminance = saturate(luminance + _ColorRampLuminosity); + #if GRADIENTCOLORRAMP_ON + col.rgb = lerp(col.rgb, tex2D(_ColorRampTexGradient, half2(luminance, 0)).rgb, _ColorRampBlend); + #else + col.rgb = lerp(col.rgb, tex2D(_ColorRampTex, half2(luminance, 0)).rgb, _ColorRampBlend); + #endif + #endif + + #if GREYSCALE_ON && GREYSCALEOUTLINE_ON + luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b; + luminance = saturate(luminance + _GreyscaleLuminosity); + col.rgb = lerp(col.rgb, half3(luminance, luminance, luminance) * _GreyscaleTintColor, _GreyscaleBlend); + #endif + + #if POSTERIZE_ON && POSTERIZEOUTLINE_ON + col.rgb = pow(col.rgb, _PosterizeGamma) * _PosterizeNumColors; + col.rgb = floor(col.rgb) / _PosterizeNumColors; + col.rgb = pow(col.rgb, 1.0 / _PosterizeGamma); + #endif + + #if SHINE_ON + half2 uvShine = uvRect; + half cosAngle = cos(_ShineRotate); + half sinAngle = sin(_ShineRotate); + half2x2 rot = half2x2(cosAngle, -sinAngle, sinAngle, cosAngle); + uvShine -= half2(0.5, 0.5); + uvShine = mul(rot, uvShine); + uvShine += half2(0.5, 0.5); + half shineMask = tex2D(_ShineMask, i.uv).a; + half currentDistanceProjection = (uvShine.x + uvShine.y) / 2; + half whitePower = 1 - (abs(currentDistanceProjection - _ShineLocation) / _ShineWidth); + col.rgb += col.a * whitePower * _ShineGlow * max(sign(currentDistanceProjection - (_ShineLocation - _ShineWidth)), 0.0) + * max(sign((_ShineLocation + _ShineWidth) - currentDistanceProjection), 0.0) * _ShineColor * shineMask; + #endif + + #if HOLOGRAM_ON + half totalHologram = _HologramStripesAmount + _HologramUnmodAmount; + half hologramYCoord = ((uvRect.y + (((_Time.x + randomSeed) % 1) * _HologramStripesSpeed)) % totalHologram) / totalHologram; + hologramYCoord = abs(hologramYCoord); + half alpha = RemapFloat(saturate(hologramYCoord - (_HologramUnmodAmount/totalHologram)), 0.0, 1.0, _HologramMinAlpha, saturate(_HologramMaxAlpha)); + half hologramMask = max(sign((_HologramUnmodAmount/totalHologram) - hologramYCoord), 0.0); + half4 hologramResult = col; + hologramResult.a *= lerp(alpha, 1, hologramMask); + hologramResult.rgb *= max(1, _HologramMaxAlpha * max(sign(hologramYCoord - (_HologramUnmodAmount/totalHologram)), 0.0)); + hologramMask = 1 - step(0.01,hologramMask); + hologramResult.rgb += hologramMask * _HologramStripeColor * col.a; + col = lerp(col, hologramResult, _HologramBlend); + #endif + + #if FLICKER_ON + col.a *= saturate(col.a * step(frac(0.05 + (_Time.w + randomSeed) * _FlickerFreq), 1 - _FlickerPercent) + _FlickerAlpha); + #endif + + col.a *= _Alpha; + + #if UNITY_UI_CLIP_RECT + half2 clipMask = saturate((_ClipRect.zw - _ClipRect.xy - abs(i.mask.xy)) * i.mask.zw); + col.a *= clipMask.x * clipMask.y; + #endif + + #if UNITY_UI_ALPHACLIP + clip (col.a - 0.001); + #endif + + #if ALPHACUTOFF_ON + clip((1 - _AlphaCutoffValue) - (1 - col.a) - 0.01); + #endif + + #if ALPHAROUND_ON + col.a = step(_AlphaRoundThreshold, col.a); + #endif + + #if ALPHAOUTLINE_ON + half alphaOutlineRes = pow(1 - col.a, max(_AlphaOutlinePower, 0.0001)) * step(_AlphaOutlineMinAlpha, col.a) * _AlphaOutlineBlend; + col.rgb = lerp(col.rgb, _AlphaOutlineColor.rgb * _AlphaOutlineGlow, alphaOutlineRes); + col.a = lerp(col.a, 1, alphaOutlineRes > 1); + #endif + + col *= _Color; + + return col; + } + ENDCG + } + } + CustomEditor "AllIn1SpriteShaderUiMask2MaterialInspector" + //Fallback "Sprites/Default" //Remove fallback so that any shader error is obvious to the user +} \ No newline at end of file diff --git a/Assets/Plugins/AllIn1SpriteShader/Shaders/AllIn1SpriteShaderUiMask2.shader.meta b/Assets/Plugins/AllIn1SpriteShader/Shaders/AllIn1SpriteShaderUiMask2.shader.meta new file mode 100644 index 000000000..830932b18 --- /dev/null +++ b/Assets/Plugins/AllIn1SpriteShader/Shaders/AllIn1SpriteShaderUiMask2.shader.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: e320962886da01749b5c68627fde4db9 +ShaderImporter: + externalObjects: {} + defaultTextures: + - _MainTex: {instanceID: 0} + - _GlowTex: {instanceID: 0} + - _FadeTex: {fileID: 2800000, guid: 7aad8c583ef292e48b06af0d1f2fab97, type: 3} + - _FadeBurnTex: {fileID: 2800000, guid: 677cca399782dea41aedc1d292ecb67d, type: 3} + - _OutlineTex: {fileID: 2800000, guid: 74087f6d03f233e4a8a142fa01f9e5cf, type: 3} + - _OutlineDistortTex: {fileID: 2800000, guid: 7aad8c583ef292e48b06af0d1f2fab97, + type: 3} + - _ColorSwapTex: {instanceID: 0} + - _ColorRampTex: {fileID: 2800000, guid: 279657edc397ece4b8029c727adf6ddc, type: 3} + - _DistortTex: {fileID: 2800000, guid: 7aad8c583ef292e48b06af0d1f2fab97, type: 3} + - _ShineMask: {instanceID: 0} + - _ColorRampTexGradient: {instanceID: 0} + - _OverlayTex: {fileID: 2800000, guid: 677cca399782dea41aedc1d292ecb67d, type: 3} + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Animate UI Materials.meta b/Assets/Plugins/Animate UI Materials.meta new file mode 100644 index 000000000..7bdcdb07f --- /dev/null +++ b/Assets/Plugins/Animate UI Materials.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 625ba2096e714466b6d44ccb456bd731 +timeCreated: 1682058264 \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/Assembly-AnimateUIMaterials.asmdef b/Assets/Plugins/Animate UI Materials/Assembly-AnimateUIMaterials.asmdef new file mode 100644 index 000000000..14690d3ac --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Assembly-AnimateUIMaterials.asmdef @@ -0,0 +1,3 @@ +{ + "name": "Assembly-GraphicMaterialOverride" +} diff --git a/Assets/Plugins/Animate UI Materials/Assembly-AnimateUIMaterials.asmdef.meta b/Assets/Plugins/Animate UI Materials/Assembly-AnimateUIMaterials.asmdef.meta new file mode 100644 index 000000000..1c322ea9b --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Assembly-AnimateUIMaterials.asmdef.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 0e6c16ac130388f4493d7bf4eff725f1 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/Assembly-AnimateUIMaterials.asmdef + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/BufferedMaterialModifier.cs b/Assets/Plugins/Animate UI Materials/BufferedMaterialModifier.cs new file mode 100644 index 000000000..a3c94395b --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/BufferedMaterialModifier.cs @@ -0,0 +1,131 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace Plugins.Animate_UI_Materials +{ + /// + /// Implements IMaterialModifier while avoiding the creation of too many garbage materials + /// WARNING: will destroy the modified material if the source material changes shader or on its own destruction + /// + public abstract class BufferedMaterialModifier : MonoBehaviour, IMaterialModifier + { + private static readonly int Stencil = Shader.PropertyToID("_Stencil"); + + /// + /// Hold the last modified material, to be re-used if possible + /// + Material _bufferedMaterial; + + /// + /// Holds the base material used to create _bufferedMaterial + /// + Material _bufferedMaterialSource; + + /// + /// From IMaterialModifier + /// Receives a material to be modified before display, and returns a new material + /// Only called once per frame per Graphic if changed, as Graphic is well optimized + /// + /// + /// A new material object, or the reset previous return value if possible + public Material GetModifiedMaterial(Material baseMaterial) + { + // Return the base material if invalid or if this component is disabled + if (!enabled || baseMaterial == null) return baseMaterial; + + if (!_bufferedMaterial || _bufferedMaterial.shader != baseMaterial.shader || baseMaterial != _bufferedMaterialSource) + { + DestroyBuffer(); + + // Create a child material of the original + _bufferedMaterial = CreateNewMaterial(baseMaterial, "OVERRIDE"); + _bufferedMaterialSource = baseMaterial; + } + + _bufferedMaterial.CopyPropertiesFromMaterial(baseMaterial); + ModifyMaterial(_bufferedMaterial); + return _bufferedMaterial; + } + + private int? GetStencilId(Material baseMaterial) + { + if (baseMaterial == null) return null; + + // Check if material has stencil prop to avoid warning + if (!baseMaterial.HasInt(Stencil)) return null; + int id = baseMaterial.GetInt(Stencil); + return id > 0 ? id : null; + } + + /// + /// Create a new material variant of the base material. + /// Tries to set parent value from the source material for prettier editing. + /// Sets flags to avoid saving the material in assets. + /// Used for creating new buffered material or for the fake editor screen. + /// + /// IMaterialModifier argument + /// Suffix to append to the original material name + /// + private Material CreateNewMaterial(Material baseMaterial, string suffix) + { + Material realSource; + // Try to retrieve real base Material + if (TryGetComponent(out Graphic graphic)) + { + realSource = graphic.material ? graphic.material : Canvas.GetDefaultCanvasMaterial(); + } + else + { + Debug.LogWarning("No graphic found"); + realSource = baseMaterial; + } + + // Add mask info to the Material + if (GetStencilId(baseMaterial) is {} stencilId) + { + suffix = $"{suffix} MASKED {stencilId}"; + } + + Material modifiedMaterial = new (baseMaterial.shader) + { + // Set a new name, to warn about editor modifications + name = $"{realSource.name} {suffix}", + hideFlags = HideFlags.DontSaveInBuild | HideFlags.DontSaveInEditor, + }; + // Set parent if supported +#if UNITY_2022_1_OR_NEWER && UNITY_EDITOR + modifiedMaterial.parent = realSource; +#endif + return modifiedMaterial; + } + + void DestroyBuffer() + { + if (Application.isPlaying) Destroy(_bufferedMaterial); + else DestroyImmediate(_bufferedMaterial); + } + + /// + /// Child class implement this class, modifying directly the buffered material + /// + /// + protected abstract void ModifyMaterial(Material modifiedMaterial); + + /// + /// Destroy the buffered material + /// + void OnDestroy() + { + DestroyBuffer(); + } + + public Material GetEditorMaterial(Material baseMaterial) + { + // Create a child material of the original + Material modifiedMaterial = CreateNewMaterial(baseMaterial, "EDITOR"); + modifiedMaterial.CopyPropertiesFromMaterial(baseMaterial); + ModifyMaterial(modifiedMaterial); + return modifiedMaterial; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/BufferedMaterialModifier.cs.meta b/Assets/Plugins/Animate UI Materials/BufferedMaterialModifier.cs.meta new file mode 100644 index 000000000..fb7768df4 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/BufferedMaterialModifier.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 32c21f564129429aa7afa1c3fbb90d85 +timeCreated: 1699906395 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/BufferedMaterialModifier.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/Docs.meta b/Assets/Plugins/Animate UI Materials/Docs.meta new file mode 100644 index 000000000..9d85455a5 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Docs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 94c69a3c49225fd4e8fc7eb449623d14 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Animate UI Materials/Docs/Animate UI Materials - Readme.pdf b/Assets/Plugins/Animate UI Materials/Docs/Animate UI Materials - Readme.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3d4e07402438d851c483d146c56c1c7de7a42628 GIT binary patch literal 177279 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�eUpaK8rh!zl^d&7S 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 z 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 + /// Broken implementation of MaterialEditor meant to be injected in a standard Editor + /// Hacky, but only way to get custom shader editors to work with this packages + /// + public class CustomMaterialEditor: MaterialEditor + { + public override void OnInspectorGUI() + { + // Commented lines are those removed from the base implementation + serializedObject.Update(); + // Remove most checks + // this.CheckSetup(); + // this.DetectShaderEditorNeedsUpdate(); + // this.isVisible && (UnityEngine.Object) this.m_Shader != (UnityEngine.Object) null && !this.HasMultipleMixedShaderValues() && this. + // Draw properties + if (PropertiesGUI()) + { + // Do not validate materials since we don't have access to their editor scripts + // foreach (Material target in this.targets) + // { + // if (this.m_CustomShaderGUI != null) + // this.m_CustomShaderGUI.ValidateMaterial(target); + // } + // + PropertiesChanged(); + } + // this.DetectTextureStackValidationIssues(); + } + + + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/Editor/CustomMaterialEditor.cs.meta b/Assets/Plugins/Animate UI Materials/Editor/CustomMaterialEditor.cs.meta new file mode 100644 index 000000000..084e491bd --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Editor/CustomMaterialEditor.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 39cd41d8ca92456dbb37f87b7de14c4e +timeCreated: 1701269432 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/Editor/CustomMaterialEditor.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/Editor/GraphicMaterialOverrideEditor.cs b/Assets/Plugins/Animate UI Materials/Editor/GraphicMaterialOverrideEditor.cs new file mode 100644 index 000000000..e315520b3 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Editor/GraphicMaterialOverrideEditor.cs @@ -0,0 +1,644 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using Plugins.Animate_UI_Materials.EditorExtensions; +using UnityEditor; +using UnityEditorInternal; +using UnityEngine; +using UnityEngine.UI; +using Object = UnityEngine.Object; + +namespace Plugins.Animate_UI_Materials.Editor +{ + using PropertyType = ShaderUtil.ShaderPropertyType; + + [CustomEditor(typeof(GraphicMaterialOverride), true)] + public class GraphicMaterialOverrideEditor : UnityEditor.Editor + { + ///

+ /// The scroll position in the modifiers ScrollView + /// Usually not needed, but good to have + /// + Vector2 _scrollPosition; + + /// + /// A fake material used to create an inspector + /// + Material _editorMaterial; + + Object[] _editorMaterialArray; + + /// + /// The editor of the fake material + /// + MaterialEditor _editorMaterialEditor; + + /// + /// Override the reset context menu to implement the reset function + /// Needed instead of "MonoBehavior.Reset" on GraphicMaterialOverride because we need to record an Undo + /// + [MenuItem("CONTEXT/GraphicMaterialOverride/Reset")] + static void ResetMaterialModifiers(MenuCommand b) + { + GraphicMaterialOverride materialOverride = (GraphicMaterialOverride)b.context; + if (!materialOverride) return; + + List modifiers = materialOverride.GetModifiers().ToList(); + + Object[] modifiersAsObjects = modifiers.Select(m => (Object)m).ToArray(); + Undo.RecordObjects(modifiersAsObjects, "Reset material modifiers"); + + foreach (IMaterialPropertyModifier modifier in modifiers) + { + modifier.ResetPropertyToDefault(); + PrefabUtility.RecordPrefabInstancePropertyModifications((Object)modifier); + } + } + + /// + /// Ask the Graphic component to reload the modified material + /// + [MenuItem("CONTEXT/GraphicMaterialOverride/Reload Source Material")] + static void ReloadSourceMaterial(MenuCommand b) + { + if (b.context is not GraphicMaterialOverride materialOverride) return; + materialOverride.SetMaterialDirty(); + EditorUtility.SetDirty(materialOverride); + } + + [MenuItem("CONTEXT/MonoBehaviour/Bake Material Variant", true)] + static bool BakeMaterialVariantValidator(MenuCommand b) + { + return b.context is IMaterialModifier; + } + + /// + /// Ask the Graphic component to reload the modified material + /// + [MenuItem("CONTEXT/MonoBehaviour/Bake Material Variant")] + static void BakeMaterialVariant(MenuCommand b) + { + if (b.context is not IMaterialModifier) return; + if (b.context is not Component materialModifier) return; + + if (materialModifier.TryGetComponent(out Graphic materialSource) == false) + { + Debug.LogWarning("Cannot find associated Graphic"); + return; + } + + Material original = materialSource.material; + Material modified = materialSource.materialForRendering; + + Material asset = new(modified); + + #if UNITY_2022_1_OR_NEWER && UNITY_EDITOR + asset.parent = original; + #endif + asset.hideFlags = HideFlags.None; + + string path = GetMaterialVariantPath(original); + + AssetDatabase.CreateAsset(asset, path); + EditorGUIUtility.PingObject(AssetDatabase.LoadAssetAtPath(path)); + } + + static string GetMaterialVariantPath(Material original) + { + string path = null; + string name = original ? original.name : "Material"; + + #if UNITY_2022_1_OR_NEWER && UNITY_EDITOR + { + + Material current = original; + while (path == null && current) + { + path = AssetDatabase.GetAssetPath(current); + current = current.parent; + } + } + #else + if (original != null) path = AssetDatabase.GetAssetPath(original); + #endif + path = Path.GetDirectoryName(path); + path ??= Application.dataPath; + + path += $"/{name} Override.asset"; + + return AssetDatabase.GenerateUniqueAssetPath(path); + } + + public override void OnInspectorGUI() + { + DrawDefaultInspector(); + + // Get the materialOverride component + GraphicMaterialOverride materialOverride = (GraphicMaterialOverride)target; + + if (materialOverride.GetComponent() == null) + EditorGUILayout.HelpBox( + "Cannot find any sibling UI element. Add a UI element to use this component", + MessageType.Warning); + else if (GetTargetMaterial() == null) + EditorGUILayout.HelpBox( + "Cannot find any material. Add a material to the UI element to use this component", + MessageType.Warning); + + Material baseMaterial = GetTargetMaterial(); + if (baseMaterial == null) return; + + if (!_editorMaterial) + { + _editorMaterial = materialOverride.GetEditorMaterial(GetTargetMaterial()); + _editorMaterialArray = new Object[] { _editorMaterial }; + } + + InternalEditorUtility.SetIsInspectorExpanded(_editorMaterial, true); + + if (!_editorMaterialEditor || _editorMaterialEditor.target != _editorMaterial) + _editorMaterialEditor = CreateEditor(_editorMaterial) as MaterialEditor; + + var properties = ShaderPropertyInfo.GetMaterialProperties(baseMaterial); + var names = properties.Select(p => p.name).ToList(); + + // Get the active modifiers + List modifiers = materialOverride + .GetModifiers(true) + .OrderBy(m => names.IndexOf(m.PropertyName)) + .ToList(); + + // Display the current modifier values + DisplayModifiers(modifiers); + // Use a popup to create new modifiers + + if (DisplayCreationPopup(modifiers, properties) is { } toCreate) + CreateNewModifier(materialOverride.transform, toCreate); + } + + /// + /// Display all added modifiers and their value + /// + /// + void DisplayModifiers(List modifiers) + { + EditorGUILayout.LabelField("Modifiers"); + + if (modifiers.Count == 0) + EditorGUILayout.HelpBox("Select a value from the dropdown to add a property modifier", MessageType.Info); + + using GUILayout.ScrollViewScope scrollViewScope = new(_scrollPosition); + using GUILayout.HorizontalScope horizontalScope = new(); + + ForEachParameterVertical(modifiers, DrawModifier); + } + + /// + /// Returns the heights of each modifiers as a list + /// + /// The modifiers to get the heights of + /// + List GetModifiersHeights(List modifiers) + { + Object[] targetMat = _editorMaterialArray; + + return modifiers.Select(m => m.PropertyName) + .Select(n => MaterialEditor.GetMaterialProperty(targetMat, n)) + .Select(_editorMaterialEditor.GetPropertyHeight) + .ToList(); + } + + /// + /// Begin a vertical group, and call a draw function on each modifier + /// + /// The modifiers to draw + /// The draw function for a modifier property + static void ForEachParameterVertical( + List modifiers, + Action action + ) + { + using EditorGUILayout.VerticalScope scope = new(); + foreach (IMaterialPropertyModifier modifier in modifiers) + { + using GUILayout.HorizontalScope hScope = new(); + action(modifier); + } + } + + void DrawModifier(IMaterialPropertyModifier modifier) + { + DrawModifierToggle(modifier); + DrawModifierKebabMenu(modifier); + DrawModifierValue(modifier); + } + + // The cached style of the kebab menu button + GUIStyle _kebabMenuStyle; + + /// + /// Draw a button that activate the context menu + /// + /// + void DrawModifierKebabMenu(IMaterialPropertyModifier modifier) + { + if (_kebabMenuStyle == null) + { + _kebabMenuStyle = new GUIStyle(GUI.skin.GetStyle("PaneOptions")); + // Force the height of the button + _kebabMenuStyle.fixedHeight = EditorGUIUtility.singleLineHeight; + _kebabMenuStyle.margin = new RectOffset(0, 0, 3, 0); + } + + if (GUILayout.Button("", _kebabMenuStyle)) DrawModifierContextMenu(modifier); + } + + /// + /// Draw a toggle to enable or disable the target modifier component + /// + /// The modifier component + void DrawModifierToggle(IMaterialPropertyModifier modifier) + { + GameObject targetObject = modifier.gameObject; + SerializedObject targetSO = new(targetObject); + SerializedProperty activeProp = targetSO.FindProperty("m_IsActive"); + EditorGUI.ChangeCheckScope scope = new(); + EditorGUILayout.PropertyField(activeProp, GUIContent.none, false, GUILayout.MaxWidth(16f)); + if (scope.changed) targetSO.ApplyModifiedProperties(); + } + + /// + /// Draw the value field from the property modifier + /// + /// The target IMaterialPropertyModifier + protected virtual void DrawModifierValue(IMaterialPropertyModifier modifier) + { + MonoBehaviour modifierComponent = (MonoBehaviour)modifier; + // Add change checks to the property field + EditorGUI.BeginChangeCheck(); + // Create a serialized object on the modifier, to display it properly + SerializedObject obj = new(modifierComponent); + // Get the serialized property + SerializedProperty property = obj.FindProperty("propertyValue"); + + try + { + EditorGUIUtility.fieldWidth = 64f; + DrawMaterialProperty(modifier, property); + EditorGUIUtility.fieldWidth = -1; + } + catch (ExitGUIException e) + { + throw; + } + // e is used for debugging purposes +#pragma warning disable CS0168 // Variable is declared but never used + catch (Exception e) +#pragma warning restore CS0168 // Variable is declared but never used + { + // Put breakpoint here + EditorGUIUtility.fieldWidth = -1; + DrawFallbackProperty(modifier, property); + } + + // If no change was applied, ignore storage + if (!EditorGUI.EndChangeCheck()) return; + // Set the serialized property from the current prop + // Record an undo + Undo.RecordObject(modifierComponent, $"Modified property override {modifier.PropertyName}"); + // If we are in a prefab, ensure unity knows about the modification + PrefabUtility.RecordPrefabInstancePropertyModifications(modifierComponent); + // Apply the modified property + obj.ApplyModifiedProperties(); + } + + void DrawFallbackProperty(IMaterialPropertyModifier modifier, SerializedProperty property) + { + GUI.backgroundColor = new Color(1, 0.5f, 0); + EditorGUILayout.PropertyField(property, new GUIContent(modifier.PropertyName)); + GUI.backgroundColor = Color.white; + } + + FieldInfo _materialPropertyFlagsField = + typeof(MaterialProperty).GetField("m_Flags", BindingFlags.NonPublic | BindingFlags.Instance); + + void DrawMaterialProperty( + IMaterialPropertyModifier modifier, + SerializedProperty property + ) + { + // Get the actual Shader Property + MaterialProperty materialProperty = MaterialEditor.GetMaterialProperty(_editorMaterialArray, modifier.PropertyName); + + MaterialProperty.PropFlags oldFlags = materialProperty.flags; + MaterialProperty.PropFlags flags = oldFlags; + + // Hide the scale offset in the texture property drawer + if (modifier is GraphicPropertyOverrideTexture or GraphicPropertyOverrideScaleAndOffset) + { + bool wantsScaleOffset = modifier is GraphicPropertyOverrideScaleAndOffset; + + flags &= ~MaterialProperty.PropFlags.NoScaleOffset; + + if (!wantsScaleOffset) + flags |= MaterialProperty.PropFlags.NoScaleOffset; + } + + flags &= ~MaterialProperty.PropFlags.PerRendererData; + + if (oldFlags != flags) + { + _materialPropertyFlagsField.SetValue(materialProperty, (int)flags); + } + + // Asset correct property type + SerializedMaterialPropertyUtility.AssertTypeEqual(property, materialProperty); + // Set the buffer shader property to our current value + SerializedMaterialPropertyUtility.CopyProperty(materialProperty, property); + // Get the height needed to render + float height = _editorMaterialEditor.GetPropertyHeight(materialProperty); + + // Get the control rect + Rect rect = EditorGUILayout.GetControlRect(true, height); + using EditorGUI.PropertyScope scope = new(rect, new GUIContent(modifier.DisplayName), property); + + // Set the animator colored backgrounds + if (GraphicMaterialOverrideHelper.OverridePropertyColor(materialProperty, (Object)modifier, out Color background)) + { + GUI.backgroundColor = background; + } + + using EditorGUI.ChangeCheckScope changes = new(); + // Draw the property using the hidden editor + _editorMaterialEditor.ShaderProperty(rect, materialProperty, scope.content, 0); + + // Reset the background color + GUI.backgroundColor = Color.white; + + if (changes.changed) + { + // Place the result in the SerializedProperty + SerializedMaterialPropertyUtility.CopyProperty(property, materialProperty); + } + } + + /// + /// Draw the context menu for one modifier + /// + /// + void DrawModifierContextMenu(IMaterialPropertyModifier modifier) + { + MonoBehaviour modifierComponent = (MonoBehaviour)modifier; + GenericMenu menu = new(); + menu.AddItem(new GUIContent("Select"), false, () => Selection.activeGameObject = modifierComponent.gameObject); + menu.AddItem(new GUIContent("Set Default"), false, () => ResetModifier(modifier)); + if (modifierComponent.isActiveAndEnabled) + menu.AddItem(new GUIContent("Disable"), false, () => ModifierSetActive(modifier, false)); + else + menu.AddItem(new GUIContent("Enable"), false, () => ModifierSetActive(modifier, true)); + + menu.AddItem(new GUIContent("Delete"), false, () => DeleteModifier(modifier)); + menu.ShowAsContext(); + } + + /// + /// Reset a modifier object to the default material value and record an undo + /// + /// + void ResetModifier(IMaterialPropertyModifier modifier) + { + Undo.RecordObject(modifier as Object, "Reset modifier component"); + + modifier.ResetPropertyToDefault(); + + PrefabUtility.RecordPrefabInstancePropertyModifications(modifier as Object); + } + + /// + /// Delete the GameObject of a modifier and record an Undo + /// + /// + void DeleteModifier(IMaterialPropertyModifier modifier) + { + Undo.DestroyObjectImmediate(modifier.gameObject); + } + + /// + /// Set the active state of a modifier and its GameObject + /// Records an undo + /// + /// + /// + void ModifierSetActive(IMaterialPropertyModifier modifier, bool isActive) + { + // Make sure any modifications are properly propagated to unity + Undo.RecordObjects( + new[] { modifier as Object, modifier.gameObject }, + "Toggled modifier component"); + // If enabling, set the component and GameObject as active + if (isActive) + { + modifier.enabled = true; + modifier.gameObject.SetActive(true); + } + // If disabling, disable the GameObject only + else + { + modifier.gameObject.SetActive(false); + } + + PrefabUtility.RecordPrefabInstancePropertyModifications(modifier as Object); + PrefabUtility.RecordPrefabInstancePropertyModifications(modifier.gameObject); + } + + /// + /// Try to draw a range field for a shader property + /// If the information cannot be found, draw a float property + /// + /// The material holding the shader property + /// The index of the shader property + /// The serialized property in the modifier + /// The label of the property + public static void DrawFloatPropertyAsRange( + Material material, + int propertyIndex, + SerializedProperty property, + GUIContent label + ) + { + if (!material || propertyIndex < 0) + { + EditorGUILayout.PropertyField(property); + return; + } + + Rect rect = GUILayoutUtility.GetRect( + EditorGUIUtility.fieldWidth, + EditorGUIUtility.labelWidth + EditorGUIUtility.fieldWidth + 110f, + 18f, + 18f); + + Shader shader = material.shader; + float min = ShaderUtil.GetRangeLimits(shader, propertyIndex, 1); + float max = ShaderUtil.GetRangeLimits(shader, propertyIndex, 2); + + using EditorGUI.PropertyScope scope = new(rect, label, property); + EditorGUI.BeginChangeCheck(); + float newValue = EditorGUI.Slider(rect, "⇔", property.floatValue, min, max); + // Only assign the value back if it was actually changed by the user. + // Otherwise a single value will be assigned to all objects when multi-object editing, + // even when the user didn't touch the control. + if (EditorGUI.EndChangeCheck()) + property.floatValue = newValue; + } + + /// + /// Draw a color field for a shader property, hdr if required + /// If the information cannot be found, draw a color property + /// + /// The material holding the shader property + /// The serialized property in the modifier + /// If the property should be drawn as HDR + /// The label of the property + public static void DrawColorPropertyAsHdr( + Material material, + SerializedProperty property, + bool isHdr, + GUIContent label + ) + { + if (!material) + { + EditorGUILayout.PropertyField(property); + return; + } + + property.colorValue = EditorGUILayout.ColorField(label, property.colorValue, true, true, isHdr); + } + + static readonly (string, string)[] LowerPropertyStrings = + { + ("_StencilComp", "UI Hidden Properties/StencilComp"), + ("_Stencil", "UI Hidden Properties/Stencil"), + ("_StencilOp", "UI Hidden Properties/StencilOp"), + ("_StencilWriteMask", "UI Hidden Properties/StencilWriteMask"), + ("_StencilReadMask", "UI Hidden Properties/StencilReadMask"), + ("_ColorMask", "UI Hidden Properties/ColorMask"), + ("_UseUIAlphaClip", "UI Hidden Properties/UseUIAlphaClip"), + }; + + static string GetPropertyName(ShaderPropertyInfo prop) + { + foreach (var (lower, upper) in LowerPropertyStrings) + { + if (prop.name == lower) return upper; + } + + return prop.name; + } + + struct PropertyEntry + { + public string Name; + public string DisplayName; + public Type ComponentType; + } + + /// + /// Display a dropdown to select a modifier + /// Filters out modifiers that are already added + /// + /// + PropertyEntry? DisplayCreationPopup(List modifiers, List properties) + { + // Create a set to filter out modifiers that are already added + HashSet namesAlreadyUsed = modifiers + .Select(p => p.DisplayName) + .ToHashSet(); + + List entries = new(); + + foreach (ShaderPropertyInfo info in properties) + { + if (!namesAlreadyUsed.Contains(info.name)) + { + entries.Add( + new PropertyEntry + { + Name = info.name, + DisplayName = GetPropertyName(info), + ComponentType = info.type switch + { + PropertyType.Color => typeof(GraphicPropertyOverrideColor), + PropertyType.Float => typeof(GraphicPropertyOverrideFloat), + PropertyType.Range => typeof(GraphicPropertyOverrideRange), + PropertyType.Vector => typeof(GraphicPropertyOverrideVector), + PropertyType.TexEnv => typeof(GraphicPropertyOverrideTexture), + _ => throw new ArgumentOutOfRangeException(), + }, + }); + } + + if (info.type == PropertyType.TexEnv) + { + string displayName = GetPropertyName(info) + " Scale Offset"; + if (!namesAlreadyUsed.Contains(displayName)) + { + entries.Add( + new PropertyEntry + { + Name = info.name, + DisplayName = displayName, + ComponentType = typeof(GraphicPropertyOverrideScaleAndOffset), + }); + } + } + } + + string[] propertyNames = entries.Select(e => e.DisplayName).ToArray(); + + int selectedIndex = EditorGUILayout.Popup(new GUIContent("Add Override"), -1, propertyNames); + + if (selectedIndex >= 0) return entries[selectedIndex]; + return null; + } + + /// + /// Create a new GraphicPropertyOverride in a new child GameObject + /// + /// The transform of the GraphicMaterialOverride + /// The property to override + /// thrown when ShaderPropertyType is invalid + void CreateNewModifier(Transform parent, PropertyEntry propertyInfo) + { + // Increment undo group + Undo.IncrementCurrentGroup(); + GameObject child = new($"{propertyInfo.DisplayName} Override"); + + Undo.RegisterCreatedObjectUndo(child, $"Added override GameObject"); + child.layer = parent.gameObject.layer; + Undo.SetTransformParent(child.transform, parent, false, "Moved override GameObject"); + + GraphicPropertyOverride propertyOverride = + Undo.AddComponent(child, propertyInfo.ComponentType) as GraphicPropertyOverride; + propertyOverride!.PropertyName = propertyInfo.Name; + propertyOverride.ResetPropertyToDefault(); + + Undo.RegisterCompleteObjectUndo(child, "Added override component"); + Undo.SetCurrentGroupName($"Override ${propertyInfo.DisplayName}"); + } + + /// + /// Try to get the material from the Graphic component + /// + /// + Material GetTargetMaterial() + { + GraphicMaterialOverride graphicMaterialOverride = (GraphicMaterialOverride)target; + + return graphicMaterialOverride.TryGetComponent(out Graphic graphic) ? graphic.material : null; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/Editor/GraphicMaterialOverrideEditor.cs.meta b/Assets/Plugins/Animate UI Materials/Editor/GraphicMaterialOverrideEditor.cs.meta new file mode 100644 index 000000000..e652efbaa --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Editor/GraphicMaterialOverrideEditor.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 2ea82f5a694c494db5eb813e0232cd6d +timeCreated: 1682064216 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/Editor/GraphicMaterialOverrideEditor.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideColorEditor.cs b/Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideColorEditor.cs new file mode 100644 index 000000000..a7672b20f --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideColorEditor.cs @@ -0,0 +1,33 @@ +using UnityEditor; +using UnityEngine; + +namespace Plugins.Animate_UI_Materials.Editor +{ + using PropertyType = ShaderUtil.ShaderPropertyType; + + /// + /// A special editor for Color properties + /// Retrieves the hdr flag from the property override + /// + [CustomEditor(typeof(GraphicPropertyOverrideColor), true)] + public class GraphicPropertyOverrideColorEditor : GraphicPropertyOverrideEditor + { + protected override void DrawValueProperty(SerializedProperty property) + { + // If in multi-edit mode, just display a color field + if (targets.Length > 1 || target is not GraphicPropertyOverrideColor propertyOverride) + { + base.DrawValueProperty(property); + return; + } + + Material material = GetTargetMaterial(); + + GraphicMaterialOverrideEditor.DrawColorPropertyAsHdr( + material, + property, + propertyOverride.isHDR, + new GUIContent("")); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideColorEditor.cs.meta b/Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideColorEditor.cs.meta new file mode 100644 index 000000000..63717617e --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideColorEditor.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: ccb1a192bc074b67b10eca77f5af23d7 +timeCreated: 1686516497 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideColorEditor.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideEditor.cs b/Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideEditor.cs new file mode 100644 index 000000000..a2e6ce9e0 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideEditor.cs @@ -0,0 +1,164 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEngine; +using UnityEngine.UI; + +namespace Plugins.Animate_UI_Materials.Editor +{ + using PropertyType = ShaderUtil.ShaderPropertyType; + + [CustomEditor(typeof(GraphicPropertyOverride), true)] + [CanEditMultipleObjects] + public class GraphicPropertyOverrideEditor : UnityEditor.Editor + { + SerializedProperty _propertyName; + SerializedProperty _propertyValue; + + void OnEnable() + { + // Get the serializedProperty of the shader property name + _propertyName = serializedObject.FindProperty("propertyName"); + // Get the serializedProperty of the shader property propertyValue + _propertyValue = serializedObject.FindProperty("propertyValue"); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + // Draw the script header + using (new EditorGUI.DisabledScope(true)) + EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Script")); + + // Start change check + using EditorGUI.ChangeCheckScope scope = new(); + + // If single target (not multi-editing) + if (targets.Length == 1) + { + // Draw a warning if the material cannot be found + if (!GetTargetMaterial()) + EditorGUILayout.HelpBox( + "The parent doesn't contain a GraphicMaterialOverride. Add one to continue", + MessageType.Error); + + string[] properties = GetPropertyNames().ToArray(); + // Draw a dropdown list of float properties in the material + EditorGUI.BeginChangeCheck(); + + int currentIndex = GetPropertyIndexDropdown(); + int index = EditorGUILayout.Popup("Property Name", currentIndex, properties); + if (EditorGUI.EndChangeCheck()) _propertyName.stringValue = properties[index]; + } + else + { + EditorGUILayout.LabelField("Cannot multi-edit property name"); + } + + DrawPropertiesExcluding(serializedObject, "m_Script", "propertyName", "propertyValue"); + + DrawValueProperty(_propertyValue); + + // If change happened, apply modified properties + if (scope.changed) serializedObject.ApplyModifiedProperties(); + } + + /// + /// Overridable method to draw the value property + /// Overriden by GraphicPropertyOverrideRange to display ranges + /// + protected virtual void DrawValueProperty(SerializedProperty property) + { + EditorGUILayout.PropertyField(property); + } + + /// + /// Try to get the material of the associated Graphic object + /// + /// The material being overriden or null + protected Material GetTargetMaterial() + { + GraphicPropertyOverride animated = (GraphicPropertyOverride)target; + + return animated.transform.parent.TryGetComponent(out Graphic graphic) ? graphic.material : null; + } + + /// + /// Get the property type from the target object + /// + /// + protected PropertyType GetPropertyType() + { + GraphicPropertyOverride animated = (GraphicPropertyOverride)target; + + return animated switch + { + GraphicPropertyOverrideColor => PropertyType.Color, + GraphicPropertyOverrideFloat => PropertyType.Float, + GraphicPropertyOverrideVector => PropertyType.Vector, + GraphicPropertyOverrideInt => PropertyType.Int, + GraphicPropertyOverrideRange => PropertyType.Range, + GraphicPropertyOverrideTexture => PropertyType.TexEnv, + GraphicPropertyOverrideScaleAndOffset => PropertyType.TexEnv, + _ when target != null => throw new Exception($"Unknown type {target.GetType()}"), + _ => throw new Exception($"Target is null"), + }; + } + + /// + /// Get the index inside the filtered dropdown + /// + /// The index, or -1 in case of invalid property + int GetPropertyIndexDropdown() + { + string propertyName = _propertyName.stringValue; + return GetPropertyNames() + .FindIndex(dropdownOptionName => dropdownOptionName == propertyName); + } + + /// + /// Get the index of the property in the shade + /// + /// The index of the property or -1 in vase of invalid property + protected int GetPropertyIndex() + { + Material material = GetTargetMaterial(); + string propertyName = _propertyName.stringValue; + return ShaderPropertyInfo.GetMaterialProperties(material) + .Find(p => p.name == propertyName) + ?.index ?? + -1; + } + + /// + /// Get all matching properties from the shader + /// + /// + List GetPropertyNames() + { + Material material = GetTargetMaterial(); + PropertyType type = GetPropertyType(); + + return ShaderPropertyInfo.GetMaterialProperties(material) + .Where(p => p.type == type) + .Select(p => p.name) + .ToList(); + } + + /// + /// Override the reset context menu to implement the reset function + /// Needed instead of "MonoBehavior.Reset" on GraphicMaterialOverride because Reset is called in other contexts + /// + [MenuItem("CONTEXT/GraphicPropertyOverride/Reset")] + static void ResetPropertyValue(MenuCommand b) + { + if (b.context is not GraphicPropertyOverride propertyOverride) return; + + Undo.RecordObject(propertyOverride, "Reset material override"); + propertyOverride.ResetPropertyToDefault(); + PrefabUtility.RecordPrefabInstancePropertyModifications(propertyOverride); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideEditor.cs.meta b/Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideEditor.cs.meta new file mode 100644 index 000000000..c87afc530 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideEditor.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: a8d03d3fad4347d09e530cd5a4590835 +timeCreated: 1681915604 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideEditor.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideRangeEditor.cs b/Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideRangeEditor.cs new file mode 100644 index 000000000..e4fdc5172 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideRangeEditor.cs @@ -0,0 +1,34 @@ +using UnityEditor; +using UnityEngine; + +namespace Plugins.Animate_UI_Materials.Editor +{ + using PropertyType = ShaderUtil.ShaderPropertyType; + + /// + /// A special editor for Range properties + /// Retrieves the range min and max from the shader, and draws the slider field + /// In case of failure to retrieve, it will simply display a float property + /// + [CustomEditor(typeof(GraphicPropertyOverrideRange), true)] + public class GraphicPropertyOverrideRangeEditor : GraphicPropertyOverrideEditor + { + protected override void DrawValueProperty(SerializedProperty property) + { + // If in multi-edit mode, just display a float field + if (targets.Length > 1) + { + base.DrawValueProperty(property); + return; + } + + Material material = GetTargetMaterial(); + int propertyIndex = GetPropertyIndex(); + + GraphicMaterialOverrideEditor.DrawFloatPropertyAsRange(material, + propertyIndex, + property, + new GUIContent("")); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideRangeEditor.cs.meta b/Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideRangeEditor.cs.meta new file mode 100644 index 000000000..ec8ea0e6e --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideRangeEditor.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c999cb1c916847bd8cc931d65f1b195f +timeCreated: 1682061875 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/Editor/GraphicPropertyOverrideRangeEditor.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/Editor/SerializedMaterialPropertyUtility.cs b/Assets/Plugins/Animate UI Materials/Editor/SerializedMaterialPropertyUtility.cs new file mode 100644 index 000000000..4df5cbdad --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Editor/SerializedMaterialPropertyUtility.cs @@ -0,0 +1,93 @@ +using System; +using UnityEditor; +using UnityEngine; + +namespace Plugins.Animate_UI_Materials.Editor +{ + public static class SerializedMaterialPropertyUtility + { + public static void AssertTypeEqual(SerializedProperty a, MaterialProperty b) + { + AssertTypeEqual(b, a); + } + + public static void AssertTypeEqual(MaterialProperty a, SerializedProperty b) + { + switch (a.type) + { + case MaterialProperty.PropType.Color when b.propertyType == SerializedPropertyType.Color: return; + case MaterialProperty.PropType.Float when b.propertyType == SerializedPropertyType.Float: return; + case MaterialProperty.PropType.Vector when b.propertyType == SerializedPropertyType.Vector4: return; + case MaterialProperty.PropType.Range when b.propertyType == SerializedPropertyType.Float: return; + case MaterialProperty.PropType.Int when b.propertyType == SerializedPropertyType.Integer: return; + case MaterialProperty.PropType.Texture when b.propertyType == SerializedPropertyType.ObjectReference: return; + case MaterialProperty.PropType.Texture when b.propertyType == SerializedPropertyType.Generic: return; + default: throw new Exception("Wrong Material Override Type"); + } + } + + public static void CopyProperty(SerializedProperty to, MaterialProperty from) + { + switch (from.type) + { + case MaterialProperty.PropType.Color: + to.colorValue = from.colorValue; + return; + case MaterialProperty.PropType.Float: + to.floatValue = from.floatValue; + return; + case MaterialProperty.PropType.Vector: + to.vector4Value = from.vectorValue; + return; + case MaterialProperty.PropType.Range: + to.floatValue = from.floatValue; + return; + case MaterialProperty.PropType.Int: + to.intValue = from.intValue; + return; + case MaterialProperty.PropType.Texture when to.propertyType == SerializedPropertyType.Generic: + to.FindPropertyRelative(nameof(TextureScaleOffset.ScaleOffset)).vector4Value = from.textureScaleAndOffset; + to.FindPropertyRelative(nameof(TextureScaleOffset.Texture)).objectReferenceValue = from.textureValue; + return; + case MaterialProperty.PropType.Texture when to.propertyType == SerializedPropertyType.ObjectReference: + to.objectReferenceValue = from.textureValue; + return; + default: + Debug.LogWarning($"WEIRD TYPES {to.type} {from.type}"); + return; + } + } + + public static void CopyProperty(MaterialProperty to, SerializedProperty from) + { + switch (to.type) + { + case MaterialProperty.PropType.Color: + to.colorValue = from.colorValue; + return; + case MaterialProperty.PropType.Float: + to.floatValue = from.floatValue; + return; + case MaterialProperty.PropType.Vector: + to.vectorValue = from.vector4Value; + return; + case MaterialProperty.PropType.Range: + to.floatValue = from.floatValue; + return; + case MaterialProperty.PropType.Int: + to.intValue = from.intValue; + return; + case MaterialProperty.PropType.Texture when from.propertyType == SerializedPropertyType.Generic: + to.textureScaleAndOffset = from.FindPropertyRelative(nameof(TextureScaleOffset.ScaleOffset)).vector4Value; + to.textureValue = from.FindPropertyRelative(nameof(TextureScaleOffset.Texture)).objectReferenceValue as Texture; + return; + case MaterialProperty.PropType.Texture when from.propertyType == SerializedPropertyType.ObjectReference: + to.textureValue = from.objectReferenceValue as Texture; + return; + default: + Debug.LogWarning("WEIRD TYPES"); + return; + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/Editor/SerializedMaterialPropertyUtility.cs.meta b/Assets/Plugins/Animate UI Materials/Editor/SerializedMaterialPropertyUtility.cs.meta new file mode 100644 index 000000000..e0560ba7e --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Editor/SerializedMaterialPropertyUtility.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c3a2b7d21ca74321a9fdd6f784784901 +timeCreated: 1701444411 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/Editor/SerializedMaterialPropertyUtility.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/Editor/ShaderPropertyInfo.cs b/Assets/Plugins/Animate UI Materials/Editor/ShaderPropertyInfo.cs new file mode 100644 index 000000000..96ca99390 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Editor/ShaderPropertyInfo.cs @@ -0,0 +1,60 @@ +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace Plugins.Animate_UI_Materials.Editor +{ + using PropertyType = ShaderUtil.ShaderPropertyType; + + internal class ShaderPropertyInfo + { + /// + /// The index of the property inside the shader + /// + public int index; + /// + /// The name of the property inside the shader + /// + public string name; + /// + /// The type of the property, as defined by ShaderUtil + /// + public PropertyType type; + + /// + /// Get all properties from a shader, with their name, index, and type + /// + /// The shader to get the properties from + /// Include properties marked as hidden and _MainTex + /// + public static List GetShaderProperties(Shader shader, bool allowHidden = false) + { + List properties = new List(); + int propertyCount = ShaderUtil.GetPropertyCount(shader); + + for (int i = 0; i < propertyCount; i++) + if (!ShaderUtil.IsShaderPropertyHidden(shader, i) || !allowHidden) + if (!ShaderUtil.IsShaderPropertyNonModifiableTexureProperty(shader, i) || allowHidden) + properties.Add(new ShaderPropertyInfo + { + index = i, + name = ShaderUtil.GetPropertyName(shader, i), + type = ShaderUtil.GetPropertyType(shader, i) + }); + + return properties; + } + + /// + /// Get all properties from a material, with their name, index, and type + /// + /// The material to get the properties from + /// Include properties marked as hidden and _MainTex + /// + public static List GetMaterialProperties(Material material, bool allowHidden = false) + { + if (!material) return new List(); + return GetShaderProperties(material.shader, allowHidden); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/Editor/ShaderPropertyInfo.cs.meta b/Assets/Plugins/Animate UI Materials/Editor/ShaderPropertyInfo.cs.meta new file mode 100644 index 000000000..051d156bc --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Editor/ShaderPropertyInfo.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 36a87bf77f35458e8da8b3037e3b2321 +timeCreated: 1682088408 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/Editor/ShaderPropertyInfo.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/EditorExtensions.meta b/Assets/Plugins/Animate UI Materials/EditorExtensions.meta new file mode 100644 index 000000000..4dda56b12 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/EditorExtensions.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d7ba558eff1e4d3189ce4b8dc9cd46cf +timeCreated: 1701272938 \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/EditorExtensions/AssemblyRef-EditorExtensions.asmref b/Assets/Plugins/Animate UI Materials/EditorExtensions/AssemblyRef-EditorExtensions.asmref new file mode 100644 index 000000000..38d992c4c --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/EditorExtensions/AssemblyRef-EditorExtensions.asmref @@ -0,0 +1,3 @@ +{ + "reference": "GUID:343deaaf83e0cee4ca978e7df0b80d21" +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/EditorExtensions/AssemblyRef-EditorExtensions.asmref.meta b/Assets/Plugins/Animate UI Materials/EditorExtensions/AssemblyRef-EditorExtensions.asmref.meta new file mode 100644 index 000000000..a1c85b4f6 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/EditorExtensions/AssemblyRef-EditorExtensions.asmref.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 3426bd6b92ad21241be6117321949a82 +AssemblyDefinitionReferenceImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/EditorExtensions/AssemblyRef-EditorExtensions.asmref + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/EditorExtensions/GraphicMaterialOverrideHelper.cs b/Assets/Plugins/Animate UI Materials/EditorExtensions/GraphicMaterialOverrideHelper.cs new file mode 100644 index 000000000..87b065e8b --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/EditorExtensions/GraphicMaterialOverrideHelper.cs @@ -0,0 +1,79 @@ +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using Object = UnityEngine.Object; + +namespace Plugins.Animate_UI_Materials.EditorExtensions +{ + public static class GraphicMaterialOverrideHelper + { + public static bool OverridePropertyColor( + MaterialProperty materialProp, + Object target, + out Color color) + { + List stringList = new(); + string str = "propertyValue"; + if (materialProp.type == MaterialProperty.PropType.Texture) + { + stringList.Add(str); + stringList.Add(str + "_ST.x"); + stringList.Add(str + "_ST.y"); + stringList.Add(str + "_ST.z"); + stringList.Add(str + "_ST.w"); + } + else if (materialProp.type == MaterialProperty.PropType.Color) + { + stringList.Add(str + ".r"); + stringList.Add(str + ".g"); + stringList.Add(str + ".b"); + stringList.Add(str + ".a"); + } + else if (materialProp.type == MaterialProperty.PropType.Vector) + { + stringList.Add(str + ".x"); + stringList.Add(str + ".y"); + stringList.Add(str + ".z"); + stringList.Add(str + ".w"); + } + else + { + stringList.Add(str); + } + + bool found = false; + foreach (string propName in stringList) + { + if (AnimationMode.IsPropertyAnimated(target, propName)) + { + found = true; + break; + } + } + + if (!found) + { + color = Color.white; + return false; + } + + if (AnimationMode.InAnimationRecording()) + { + color = AnimationMode.recordedPropertyColor; + return true; + } + + foreach (string propName in stringList) + { + if (AnimationMode.IsPropertyCandidate(target, propName)) + { + color = AnimationMode.candidatePropertyColor; + return true; + } + } + + color = AnimationMode.animatedPropertyColor; + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/EditorExtensions/GraphicMaterialOverrideHelper.cs.meta b/Assets/Plugins/Animate UI Materials/EditorExtensions/GraphicMaterialOverrideHelper.cs.meta new file mode 100644 index 000000000..de04683b9 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/EditorExtensions/GraphicMaterialOverrideHelper.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: fe7b10245245441ba4ac6ff89dd23ab3 +timeCreated: 1701273095 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/EditorExtensions/GraphicMaterialOverrideHelper.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/Examples.meta b/Assets/Plugins/Animate UI Materials/Examples.meta new file mode 100644 index 000000000..e26c8a25c --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Examples.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bc85c94df8771d44788e610e60a1958f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Animate UI Materials/Examples/Example Animation.anim b/Assets/Plugins/Animate UI Materials/Examples/Example Animation.anim new file mode 100644 index 000000000..f8212534c --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Examples/Example Animation.anim @@ -0,0 +1,1082 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Example Animation + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.95 + value: 1 + inSlope: 1.1713836 + outSlope: 1.1713836 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.6833333 + value: 0.9528302 + inSlope: -0.8115626 + outSlope: -0.8115626 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.6666667 + value: 0 + inSlope: -0.7329463 + outSlope: -0.7329463 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.7 + value: 3.9215686 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 6.1833334 + value: 0 + inSlope: -1.5791551 + outSlope: -1.5791551 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue.r + path: _OverlayColor Override + classID: 114 + script: {fileID: 11500000, guid: 0769e07e9d844582aed9c22013f56c3b, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.95 + value: 1 + inSlope: -0.41666675 + outSlope: -0.41666675 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.6833333 + value: 0 + inSlope: -0.9336351 + outSlope: -0.9336351 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.6666667 + value: 0.9529412 + inSlope: 0.3467041 + outSlope: 0.3467041 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.7 + value: 3.8588235 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 6.1833334 + value: 0 + inSlope: -1.5538887 + outSlope: -1.5538887 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue.g + path: _OverlayColor Override + classID: 114 + script: {fileID: 11500000, guid: 0769e07e9d844582aed9c22013f56c3b, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.95 + value: 1 + inSlope: -0.41666675 + outSlope: -0.41666675 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.6833333 + value: 0 + inSlope: -1.1621865 + outSlope: -1.1621865 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.6666667 + value: 0.65582436 + inSlope: 0.23860547 + outSlope: 0.23860547 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.7 + value: 2.6509805 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 6.1833334 + value: 0 + inSlope: -1.0675089 + outSlope: -1.0675089 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue.b + path: _OverlayColor Override + classID: 114 + script: {fileID: 11500000, guid: 0769e07e9d844582aed9c22013f56c3b, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.204 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.71666664 + value: 0.792 + inSlope: 2.2742858 + outSlope: 2.2742858 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.8333334 + value: 2 + inSlope: 0.93857145 + outSlope: 0.93857145 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2.4 + value: 1.834 + inSlope: -0.8704512 + outSlope: -0.8704512 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 6.1833334 + value: 0.204 + inSlope: -0.430837 + outSlope: -0.430837 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue + path: _Scale Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.51666665 + value: 15 + inSlope: 236.3654 + outSlope: 236.3654 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2.1166666 + value: 284 + inSlope: 191.75002 + outSlope: 191.75002 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2.6 + value: 280 + inSlope: -478.75003 + outSlope: -478.75003 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.6666667 + value: 30 + inSlope: -480.9122 + outSlope: -480.9122 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 6.1833334 + value: 0 + inSlope: -11.92053 + outSlope: -11.92053 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue + path: _Rotation Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 6.1833334 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_IsActive + path: _OverlayTex Override + classID: 1 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2.55 + value: 0 + inSlope: 1.7647061 + outSlope: 1.7647061 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.2666667 + value: 1 + inSlope: 1.3593007 + outSlope: 1.3593007 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 6.1833334 + value: 0 + inSlope: -0.34285712 + outSlope: -0.34285712 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue.x + path: _Offset Override + classID: 114 + script: {fileID: 11500000, guid: 7de2cc36a6a241da9a1302efa1f3cf46, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2.4 + value: 0 + inSlope: 1.4285713 + outSlope: 1.4285713 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4.35 + value: 1 + inSlope: 1.023166 + outSlope: 1.023166 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 6.1833334 + value: 0 + inSlope: -0.5454545 + outSlope: -0.5454545 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue.y + path: _Offset Override + classID: 114 + script: {fileID: 11500000, guid: 7de2cc36a6a241da9a1302efa1f3cf46, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue.z + path: _Offset Override + classID: 114 + script: {fileID: 11500000, guid: 7de2cc36a6a241da9a1302efa1f3cf46, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue.w + path: _Offset Override + classID: 114 + script: {fileID: 11500000, guid: 7de2cc36a6a241da9a1302efa1f3cf46, type: 3} + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: 2800000, guid: 212f10d282ba58242b61e8ad04af89d1, type: 3} + - time: 2.6666667 + value: {fileID: 2800000, guid: f5588e963e393074a943ed2b8a86fb1a, type: 3} + - time: 6.1833334 + value: {fileID: 2800000, guid: 212f10d282ba58242b61e8ad04af89d1, type: 3} + attribute: propertyValue + path: _OverlayTex Override + classID: 114 + script: {fileID: 11500000, guid: e6f24b72ca8a4caabda35db3768eaf4f, type: 3} + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 3899273273 + attribute: 1656131046 + script: {fileID: 11500000, guid: 0769e07e9d844582aed9c22013f56c3b, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 3899273273 + attribute: 258697485 + script: {fileID: 11500000, guid: 0769e07e9d844582aed9c22013f56c3b, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 3899273273 + attribute: 2130812290 + script: {fileID: 11500000, guid: 0769e07e9d844582aed9c22013f56c3b, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 2814422603 + attribute: 2659956753 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 3995746289 + attribute: 2659956753 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 4280412178 + attribute: 2187551992 + script: {fileID: 11500000, guid: 7de2cc36a6a241da9a1302efa1f3cf46, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 4280412178 + attribute: 4116993134 + script: {fileID: 11500000, guid: 7de2cc36a6a241da9a1302efa1f3cf46, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 4240755812 + attribute: 2659956753 + script: {fileID: 11500000, guid: e6f24b72ca8a4caabda35db3768eaf4f, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 1 + - serializedVersion: 2 + path: 4240755812 + attribute: 2086281974 + script: {fileID: 0} + typeID: 1 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 4280412178 + attribute: 1819084244 + script: {fileID: 11500000, guid: 7de2cc36a6a241da9a1302efa1f3cf46, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 4280412178 + attribute: 316438889 + script: {fileID: 11500000, guid: 7de2cc36a6a241da9a1302efa1f3cf46, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: + - {fileID: 2800000, guid: 212f10d282ba58242b61e8ad04af89d1, type: 3} + - {fileID: 2800000, guid: f5588e963e393074a943ed2b8a86fb1a, type: 3} + - {fileID: 2800000, guid: 212f10d282ba58242b61e8ad04af89d1, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 6.2000003 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.95 + value: 1 + inSlope: 1.1713836 + outSlope: 1.1713836 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.6833333 + value: 0.9528302 + inSlope: -0.8115626 + outSlope: -0.8115626 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.6666667 + value: 0 + inSlope: -0.7329463 + outSlope: -0.7329463 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.7 + value: 3.9215686 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 6.1833334 + value: 0 + inSlope: -1.5791551 + outSlope: -1.5791551 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue.r + path: _OverlayColor Override + classID: 114 + script: {fileID: 11500000, guid: 0769e07e9d844582aed9c22013f56c3b, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.95 + value: 1 + inSlope: -0.41666675 + outSlope: -0.41666675 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.6833333 + value: 0 + inSlope: -0.9336351 + outSlope: -0.9336351 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.6666667 + value: 0.9529412 + inSlope: 0.3467041 + outSlope: 0.3467041 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.7 + value: 3.8588235 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 6.1833334 + value: 0 + inSlope: -1.5538887 + outSlope: -1.5538887 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue.g + path: _OverlayColor Override + classID: 114 + script: {fileID: 11500000, guid: 0769e07e9d844582aed9c22013f56c3b, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.95 + value: 1 + inSlope: -0.41666675 + outSlope: -0.41666675 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.6833333 + value: 0 + inSlope: -1.1621865 + outSlope: -1.1621865 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.6666667 + value: 0.65582436 + inSlope: 0.23860547 + outSlope: 0.23860547 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.7 + value: 2.6509805 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 6.1833334 + value: 0 + inSlope: -1.0675089 + outSlope: -1.0675089 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue.b + path: _OverlayColor Override + classID: 114 + script: {fileID: 11500000, guid: 0769e07e9d844582aed9c22013f56c3b, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.204 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.71666664 + value: 0.792 + inSlope: 2.2742858 + outSlope: 2.2742858 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.8333334 + value: 2 + inSlope: 0.93857145 + outSlope: 0.93857145 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2.4 + value: 1.834 + inSlope: -0.8704512 + outSlope: -0.8704512 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 6.1833334 + value: 0.204 + inSlope: -0.430837 + outSlope: -0.430837 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue + path: _Scale Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.51666665 + value: 15 + inSlope: 236.3654 + outSlope: 236.3654 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2.1166666 + value: 284 + inSlope: 191.75002 + outSlope: 191.75002 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2.6 + value: 280 + inSlope: -478.75003 + outSlope: -478.75003 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.6666667 + value: 30 + inSlope: -480.9122 + outSlope: -480.9122 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 6.1833334 + value: 0 + inSlope: -11.92053 + outSlope: -11.92053 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue + path: _Rotation Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 6.1833334 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_IsActive + path: _OverlayTex Override + classID: 1 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2.55 + value: 0 + inSlope: 1.7647061 + outSlope: 1.7647061 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3.2666667 + value: 1 + inSlope: 1.3593007 + outSlope: 1.3593007 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 6.1833334 + value: 0 + inSlope: -0.34285712 + outSlope: -0.34285712 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue.x + path: _Offset Override + classID: 114 + script: {fileID: 11500000, guid: 7de2cc36a6a241da9a1302efa1f3cf46, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2.4 + value: 0 + inSlope: 1.4285713 + outSlope: 1.4285713 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 4.35 + value: 1 + inSlope: 1.023166 + outSlope: 1.023166 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 6.1833334 + value: 0 + inSlope: -0.5454545 + outSlope: -0.5454545 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue.y + path: _Offset Override + classID: 114 + script: {fileID: 11500000, guid: 7de2cc36a6a241da9a1302efa1f3cf46, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue.z + path: _Offset Override + classID: 114 + script: {fileID: 11500000, guid: 7de2cc36a6a241da9a1302efa1f3cf46, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue.w + path: _Offset Override + classID: 114 + script: {fileID: 11500000, guid: 7de2cc36a6a241da9a1302efa1f3cf46, type: 3} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Plugins/Animate UI Materials/Examples/Example Animation.anim.meta b/Assets/Plugins/Animate UI Materials/Examples/Example Animation.anim.meta new file mode 100644 index 000000000..c3f33e560 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Examples/Example Animation.anim.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 196814563dea2d7469ff1de55d0d3815 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/Examples/Example Animation.anim + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/Examples/Example Scene.unity b/Assets/Plugins/Animate UI Materials/Examples/Example Scene.unity new file mode 100644 index 000000000..58a999055 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Examples/Example Scene.unity @@ -0,0 +1,1012 @@ +%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: 9 + 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: 0} + m_IndirectSpecularColor: {r: 0.12731749, g: 0.13414757, b: 0.1210787, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 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: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !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 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &8282887 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8282888} + - component: {fileID: 8282892} + - component: {fileID: 8282891} + - component: {fileID: 8282889} + - component: {fileID: 8282893} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8282888 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8282887} + m_LocalRotation: {x: 0, y: 0, z: -0.38268343, w: 0.92387956} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1008659955} + - {fileID: 1040448590} + - {fileID: 1236616673} + - {fileID: 1366672478} + - {fileID: 668252535} + - {fileID: 1823670285} + - {fileID: 200520519} + - {fileID: 174496130} + m_Father: {fileID: 1800647619} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -45} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 400, y: 400} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!95 &8282889 +Animator: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8282887} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: ba1af5f887a74c44190010c05f6748ee, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!114 &8282891 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8282887} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: da1cb4f2f1551d948a65d84276aef03d, type: 2} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &8282892 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8282887} + m_CullTransparentMesh: 1 +--- !u!114 &8282893 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8282887} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ec7c531f67844491ae84a4f3d1575d01, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &174496129 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 174496130} + - component: {fileID: 174496131} + m_Layer: 5 + m_Name: _OverlayTex Scale Offset Override + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &174496130 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 174496129} + 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: 8282888} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &174496131 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 174496129} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c8ebb8aba46242f88d3296cc8d7984c9, type: 3} + m_Name: + m_EditorClassIdentifier: + propertyName: _OverlayTex + propertyValue: + Texture: {fileID: 2800000, guid: 212f10d282ba58242b61e8ad04af89d1, type: 3} + ScaleOffset: {x: 2.56, y: 0.81, z: 2.53, w: 1.77} +--- !u!1 &200520518 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 200520519} + - component: {fileID: 200520520} + m_Layer: 5 + m_Name: _MainTex Override + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &200520519 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 200520518} + 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: 8282888} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &200520520 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 200520518} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e6f24b72ca8a4caabda35db3768eaf4f, type: 3} + m_Name: + m_EditorClassIdentifier: + propertyName: _MainTex + propertyValue: {fileID: 2800000, guid: 212f10d282ba58242b61e8ad04af89d1, type: 3} +--- !u!1 &668252534 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 668252535} + - component: {fileID: 668252536} + m_Layer: 0 + m_Name: _OverlayTex Override + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &668252535 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 668252534} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -361, y: -270, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8282888} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &668252536 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 668252534} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e6f24b72ca8a4caabda35db3768eaf4f, type: 3} + m_Name: + m_EditorClassIdentifier: + propertyName: _OverlayTex + propertyValue: {fileID: 2800000, guid: 212f10d282ba58242b61e8ad04af89d1, type: 3} +--- !u!1 &1008659954 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1008659955} + - component: {fileID: 1008659956} + m_Layer: 0 + m_Name: _Color Override + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1008659955 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1008659954} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -361, y: -270, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8282888} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1008659956 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1008659954} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0769e07e9d844582aed9c22013f56c3b, type: 3} + m_Name: + m_EditorClassIdentifier: + propertyName: _Color + propertyValue: {r: 1, g: 1, b: 1, a: 1} + isHDR: 0 +--- !u!1 &1010993211 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1010993215} + - component: {fileID: 1010993214} + - component: {fileID: 1010993213} + - component: {fileID: 1010993212} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1010993212 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1010993211} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1010993213 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1010993211} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1010993214 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1010993211} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1010993215 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1010993211} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1171812838} + m_Father: {fileID: 0} + m_RootOrder: 1 + 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_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1040448589 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1040448590} + - component: {fileID: 1040448591} + m_Layer: 0 + m_Name: _OverlayColor Override + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1040448590 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1040448589} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -361, y: -270, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8282888} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1040448591 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1040448589} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0769e07e9d844582aed9c22013f56c3b, type: 3} + m_Name: + m_EditorClassIdentifier: + propertyName: _OverlayColor + propertyValue: {r: 1, g: 1, b: 1, a: 1} + isHDR: 1 +--- !u!1 &1171812837 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1171812838} + - component: {fileID: 1171812839} + m_Layer: 5 + m_Name: RectMask2D + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1171812838 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1171812837} + 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: + - {fileID: 1800647619} + m_Father: {fileID: 1010993215} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 300, y: 400} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1171812839 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1171812837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: 0, y: 0, z: 0, w: 0} + m_Softness: {x: 0, y: 0} +--- !u!1 &1236616672 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1236616673} + - component: {fileID: 1236616674} + m_Layer: 0 + m_Name: _Scale Override + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1236616673 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1236616672} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -361, y: -270, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8282888} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1236616674 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1236616672} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + m_Name: + m_EditorClassIdentifier: + propertyName: _Scale + propertyValue: 1 +--- !u!1 &1366672477 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1366672478} + - component: {fileID: 1366672479} + m_Layer: 0 + m_Name: _Rotation Override + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1366672478 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1366672477} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -361, y: -270, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8282888} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1366672479 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1366672477} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + m_Name: + m_EditorClassIdentifier: + propertyName: _Rotation + propertyValue: 0 +--- !u!1 &1399928180 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1399928183} + - component: {fileID: 1399928182} + - component: {fileID: 1399928181} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1399928181 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1399928180} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1399928182 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1399928180} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &1399928183 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1399928180} + 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: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1555820097 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1555820100} + - component: {fileID: 1555820099} + - component: {fileID: 1555820098} + 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 &1555820098 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1555820097} + m_Enabled: 1 +--- !u!20 &1555820099 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1555820097} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1555820100 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1555820097} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1800647618 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1800647619} + - component: {fileID: 1800647621} + - component: {fileID: 1800647620} + - component: {fileID: 1800647622} + m_Layer: 5 + m_Name: Mask + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1800647619 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1800647618} + m_LocalRotation: {x: -0, y: -0, z: 0.38268343, w: 0.92387956} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8282888} + m_Father: {fileID: 1171812838} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 45} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 400, y: 400} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1800647620 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1800647618} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1800647621 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1800647618} + m_CullTransparentMesh: 1 +--- !u!114 &1800647622 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1800647618} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 1 +--- !u!1 &1823670284 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1823670285} + - component: {fileID: 1823670286} + m_Layer: 0 + m_Name: _Offset Override + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1823670285 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1823670284} + 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: 8282888} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1823670286 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1823670284} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7de2cc36a6a241da9a1302efa1f3cf46, type: 3} + m_Name: + m_EditorClassIdentifier: + propertyName: _Offset + propertyValue: {x: 0, y: 0, z: 0, w: 0} diff --git a/Assets/Plugins/Animate UI Materials/Examples/Example Scene.unity.meta b/Assets/Plugins/Animate UI Materials/Examples/Example Scene.unity.meta new file mode 100644 index 000000000..c292b10dd --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Examples/Example Scene.unity.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 404da49678522824d82c5911593942ce +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/Examples/Example Scene.unity + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/Examples/ExampleUIShader.shader b/Assets/Plugins/Animate UI Materials/Examples/ExampleUIShader.shader new file mode 100644 index 000000000..834dde27e --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Examples/ExampleUIShader.shader @@ -0,0 +1,144 @@ +// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt) +// Modified with rights for use in demonstration by Lou Garczynski + +Shader "Animate UI Material/Example" +{ + Properties + { + [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} + _Color ("Tint", Color) = (1,1,1,1) + + _OverlayTex ("Overlay", 2D) = "white" {} + [HDR]_OverlayColor ("Overlay Color", Color) = (1, 1, 1, 1) + _Scale ("Scale", Range(0, 2)) = 1 + _Rotation ("Rotation", Range(0, 360)) = 0 + _Offset ("Offset", Vector) = (0, 0, 0, 0) + + _StencilComp ("Stencil Comparison", Float) = 8 + _Stencil ("Stencil ID", Float) = 0 + _StencilOp ("Stencil Operation", Float) = 0 + _StencilWriteMask ("Stencil Write Mask", Float) = 255 + _StencilReadMask ("Stencil Read Mask", Float) = 255 + + _ColorMask ("Color Mask", Float) = 15 + + [Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0 + } + + SubShader + { + Tags + { + "Queue"="Transparent" + "IgnoreProjector"="True" + "RenderType"="Transparent" + "PreviewType"="Plane" + "CanUseSpriteAtlas"="True" + } + + Stencil + { + Ref [_Stencil] + Comp [_StencilComp] + Pass [_StencilOp] + ReadMask [_StencilReadMask] + WriteMask [_StencilWriteMask] + } + + Cull Off + Lighting Off + ZWrite Off + ZTest [unity_GUIZTestMode] + Blend SrcAlpha OneMinusSrcAlpha + ColorMask [_ColorMask] + + Pass + { + Name "Default" + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 2.0 + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + + #pragma multi_compile_local _ UNITY_UI_CLIP_RECT + #pragma multi_compile_local _ UNITY_UI_ALPHACLIP + + struct appdata_t + { + float4 vertex : POSITION; + float4 color : COLOR; + float2 texcoord : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 vertex : SV_POSITION; + fixed4 color : COLOR; + float2 texcoord : TEXCOORD0; + float4 worldPosition : TEXCOORD1; + UNITY_VERTEX_OUTPUT_STEREO + }; + + sampler2D _MainTex; + fixed4 _Color; + fixed4 _TextureSampleAdd; + float4 _ClipRect; + float4 _MainTex_ST; + + sampler2D _OverlayTex; + float4 _OverlayColor; + float _Scale; + float _Rotation; + float2 _Offset; + + v2f vert(appdata_t v) + { + v2f OUT; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT); + OUT.worldPosition = v.vertex; + OUT.vertex = UnityObjectToClipPos(OUT.worldPosition); + + OUT.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); + + OUT.color = v.color * _Color; + return OUT; + } + + fixed4 frag(v2f IN) : SV_Target + { + half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color; + + // Calculate the overlay texture coordinates and sample it + float2 centeredUV = (IN.texcoord - 0.5)*2; + float2 overlayUV = centeredUV * _Scale; + float rad = _Rotation / 360 * 2 * UNITY_PI; + float2 rotatedUV = float2( + overlayUV.x * cos(rad) - overlayUV.y * sin(rad), + overlayUV.x * sin(rad) + overlayUV.y * cos(rad) + ); + float2 normalizedUV = rotatedUV / 2 + 0.5; + float2 offsetUV = normalizedUV + float2(_Offset.x, _Offset.y); + fixed4 overlay = tex2D(_OverlayTex, offsetUV) * _OverlayColor; + + // Blend the background and overlay textures + color = lerp(color, overlay, overlay.a); + + #ifdef UNITY_UI_CLIP_RECT + color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect); + #endif + + #ifdef UNITY_UI_ALPHACLIP + clip (color.a - 0.001); + #endif + + return color; + } + ENDCG + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/Examples/ExampleUIShader.shader.meta b/Assets/Plugins/Animate UI Materials/Examples/ExampleUIShader.shader.meta new file mode 100644 index 000000000..c27e169ce --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Examples/ExampleUIShader.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: d8010de858794e33a27636c6183ce4d2 +timeCreated: 1682164300 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/Examples/ExampleUIShader.shader + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/Examples/Image.controller b/Assets/Plugins/Animate UI Materials/Examples/Image.controller new file mode 100644 index 000000000..12177d9c7 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Examples/Image.controller @@ -0,0 +1,72 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1102 &-7894766971529659986 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: New Animation + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 196814563dea2d7469ff1de55d0d3815, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Image + serializedVersion: 5 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 5797805570552003858} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1107 &5797805570552003858 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: -7894766971529659986} + m_Position: {x: 260, y: 120, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: -7894766971529659986} diff --git a/Assets/Plugins/Animate UI Materials/Examples/Image.controller.meta b/Assets/Plugins/Animate UI Materials/Examples/Image.controller.meta new file mode 100644 index 000000000..9ee6f6200 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Examples/Image.controller.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: ba1af5f887a74c44190010c05f6748ee +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/Examples/Image.controller + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/Examples/Texture 1.png b/Assets/Plugins/Animate UI Materials/Examples/Texture 1.png new file mode 100644 index 000000000..b342e771e --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Examples/Texture 1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7325cd7edea778edd6934099af9f9ec75004e253b7983b1c2609e352feb8c4f8 +size 1423 diff --git a/Assets/Plugins/Animate UI Materials/Examples/Texture 1.png.meta b/Assets/Plugins/Animate UI Materials/Examples/Texture 1.png.meta new file mode 100644 index 000000000..b2b5c07a3 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Examples/Texture 1.png.meta @@ -0,0 +1,131 @@ +fileFormatVersion: 2 +guid: 212f10d282ba58242b61e8ad04af89d1 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/Examples/Texture 1.png + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/Examples/Texture 2.png b/Assets/Plugins/Animate UI Materials/Examples/Texture 2.png new file mode 100644 index 000000000..7d3770e96 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Examples/Texture 2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2060e8b159fdc26d8d635939d9ab931430148b66da8a67e4775b406ade96ce1 +size 1652 diff --git a/Assets/Plugins/Animate UI Materials/Examples/Texture 2.png.meta b/Assets/Plugins/Animate UI Materials/Examples/Texture 2.png.meta new file mode 100644 index 000000000..80d5edfdf --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Examples/Texture 2.png.meta @@ -0,0 +1,131 @@ +fileFormatVersion: 2 +guid: f5588e963e393074a943ed2b8a86fb1a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/Examples/Texture 2.png + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/Examples/UI Overlay.mat b/Assets/Plugins/Animate UI Materials/Examples/UI Overlay.mat new file mode 100644 index 000000000..89c798e65 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Examples/UI Overlay.mat @@ -0,0 +1,50 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: UI Overlay + m_Shader: {fileID: 4800000, guid: d8010de858794e33a27636c6183ce4d2, 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: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OverlayTex: + m_Texture: {fileID: 2800000, guid: 212f10d282ba58242b61e8ad04af89d1, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _ColorMask: 15 + - _OffsetX: 0 + - _OffsetY: 0 + - _Rotation: 0 + - _Scale: 1 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _UseUIAlphaClip: 0 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _OverlayColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Plugins/Animate UI Materials/Examples/UI Overlay.mat.meta b/Assets/Plugins/Animate UI Materials/Examples/UI Overlay.mat.meta new file mode 100644 index 000000000..df4410319 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/Examples/UI Overlay.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: da1cb4f2f1551d948a65d84276aef03d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/Examples/UI Overlay.mat + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/GraphicMaterialOverride.cs b/Assets/Plugins/Animate UI Materials/GraphicMaterialOverride.cs new file mode 100644 index 000000000..af1960a09 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicMaterialOverride.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace Plugins.Animate_UI_Materials +{ + [ExecuteAlways] + [AddComponentMenu("UI/Animate UI Material/GraphicMaterialOverride")] + public class GraphicMaterialOverride : BufferedMaterialModifier + { + /// + /// Recreate the modified material using each active IMaterialPropertyModifier on this GameObject or its children + /// + public void SetMaterialDirty() + { + if (TryGetComponent(out Graphic graphic)) + { + graphic.SetMaterialDirty(); + } + } + + /// + /// A buffer list to accelerate GetComponents requests + /// + [NonSerialized] List _modifiers; + + /// + /// Retrieves all enabled IMaterialPropertyModifiers belonging to direct children + /// + /// An iterator over all enabled modifiers, avoid storing this value + public IEnumerable GetModifiers(bool includeInactive = false) + { + // Ensure the buffer list is available + _modifiers ??= new List(); + + // Load all IPropertyModifiers belonging the direct children of this GameObject + foreach (Transform child in transform) + { + // skip this GameObject if disabled + if (!child.gameObject.activeSelf && !includeInactive) continue; + // disabled children will be ignored + child.GetComponents(_modifiers); + // Call the children to apply their modified properties + foreach (IMaterialPropertyModifier propertyModifier in _modifiers) + { + // Check if the modifier is enabled (skip if not) + if (propertyModifier.enabled || includeInactive) + { + yield return propertyModifier; + } + } + } + + // Ensure no ref is kept + _modifiers.Clear(); + } + + // On enable and disable, update the target graphic + void OnEnable() => SetMaterialDirty(); + + void OnDisable() => SetMaterialDirty(); + + /// + /// Called by Graphic using the IMaterialModifier interface through the parent class + /// Modifies the buffered material to match all children component specifications + /// + /// A copy of the Graphic base material, buffered for reuse + protected override void ModifyMaterial(Material modifiedMaterial) + { + // Iterate over all active modifiers + foreach (IMaterialPropertyModifier modifier in GetModifiers()) + { + // Ignore un-init modifiers + if (!string.IsNullOrEmpty(modifier.PropertyName)) + { + // Apply the property to the new material + modifier.ApplyModifiedProperty(modifiedMaterial); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/GraphicMaterialOverride.cs.meta b/Assets/Plugins/Animate UI Materials/GraphicMaterialOverride.cs.meta new file mode 100644 index 000000000..01bf3d148 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicMaterialOverride.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: ec7c531f67844491ae84a4f3d1575d01 +timeCreated: 1681719063 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/GraphicMaterialOverride.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/GraphicMaterialReplacer.cs b/Assets/Plugins/Animate UI Materials/GraphicMaterialReplacer.cs new file mode 100644 index 000000000..1c3259589 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicMaterialReplacer.cs @@ -0,0 +1,56 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace Plugins.Animate_UI_Materials +{ + /// + /// Simply replaces a Graphic component's material + /// Does not create or modify materials + /// Useful for debugging, or switching the material of a Graphic that does not offer this option in some context + /// + [ExecuteAlways] + [AddComponentMenu("UI/Animate UI Material/GraphicMaterialReplacer")] + public class GraphicMaterialReplacer : MonoBehaviour, IMaterialModifier + { + [SerializeField] Material material; + + public Material Material + { + get => material; + set { + material = value; + SetMaterialDirty(); + } + } + + /// + /// Request Graphic to regenerate materials + /// + void SetMaterialDirty() + { + if (TryGetComponent(out Graphic graphic)) + { + graphic.SetMaterialDirty(); + } + } + + // On enable and disable, update the target graphic + void OnEnable() => SetMaterialDirty(); + + void OnDisable() => SetMaterialDirty(); + + /// + /// From IMaterialModifier + /// Receives the current material before display, and returns another material if enabled + /// Here, simply sends the "material" field if enabled + /// + /// + /// A new material object + public Material GetModifiedMaterial(Material baseMaterial) + { + // Return the base material if invalid or if this component is disabled + if (!enabled || baseMaterial == null) return baseMaterial; + return material; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/GraphicMaterialReplacer.cs.meta b/Assets/Plugins/Animate UI Materials/GraphicMaterialReplacer.cs.meta new file mode 100644 index 000000000..d3eed938f --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicMaterialReplacer.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: ca4bb79969f54a608a95cc7bd9d297e7 +timeCreated: 1693523425 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/GraphicMaterialReplacer.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/GraphicPropertyOverride.cs b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverride.cs new file mode 100644 index 000000000..8ea8db5f2 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverride.cs @@ -0,0 +1,200 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace Plugins.Animate_UI_Materials +{ + /// + /// Used in combination with GraphicMaterialOverride to modify and animate shader properties + /// The base class is used for the shared Editor script, and reacting to OnValidate events + /// + [ExecuteAlways] + public abstract class GraphicPropertyOverride : MonoBehaviour, IMaterialPropertyModifier + { + /// + /// The name of the shader property, serialized + /// + [SerializeField] protected string propertyName; + + public virtual string DisplayName => propertyName; + + /// + /// The id of the shader property + /// + /// Should not be serialized, as it can change between game runs + protected int PropertyId; + + // Request a material update whenever the parent changes + void OnEnable() + { + SetMaterialDirty(true); + } + + void OnDisable() + { + SetMaterialDirty(); + } + +#if UNITY_EDITOR // if in the unity editor, include unity editor callbacks + /// + /// On editor change, mark as dirty + /// + void OnValidate() + { + SetMaterialDirty(true); + } +#endif + + /// + /// Try to retrieve and apply the default property value + /// If the source material cannot be found, reset to sensible defaults + /// + public abstract void ResetPropertyToDefault(); + + /// + /// Set the material as dirty + /// ApplyModifiedProperty will be called by the parent GraphicMaterialProperty + /// + /// If the GraphicPropertyOverride should try to get the shader property id, just to be safe + public void SetMaterialDirty(bool renewId = false) + { + if (renewId || PropertyId == 0) PropertyId = Shader.PropertyToID(propertyName); + GraphicMaterialOverride parent = ParentOverride; + if (parent) parent.SetMaterialDirty(); + } + + /// + /// Try to apply the GraphicPropertyOverride property to the material + /// Does not create a copy, only feed material instances to this + /// + /// The material to modify + public abstract void ApplyModifiedProperty(Material material); + + /// + /// The name of the shader property to override + /// Can be invalid if the shader has changed, or if the component was not setup + /// + public string PropertyName + { + get => propertyName; + set + { + propertyName = value; + SetMaterialDirty(true); + } + } + + /// + /// Try to get the Graphic component on the parent + /// + protected Graphic ParentGraphic => transform.parent ? transform.parent.GetComponent() : null; + + /// + /// Try to get the GraphicMaterialOverride component on the parent + /// + protected GraphicMaterialOverride ParentOverride => + transform.parent ? transform.parent.GetComponent() : null; + } + + /// + /// Template extension of GraphicPropertyOverride + /// Adds LateUpdate function to react to value changes + /// Compares value changes using EqualityComparer + /// Adds a SerializedField of type T + /// + /// + public abstract class GraphicPropertyOverride : GraphicPropertyOverride + { + /// + /// The serialized value, modified by the inspector or the animator + /// + [SerializeField] protected T propertyValue; + + /// + /// The last known value, init the the type default (0, null, ...) + /// Used to check for changes + /// NonSerialized to prevent unity from serializing this + /// + [NonSerialized] T _previousValue; + + /// + /// If _previousValue was set since last construction + /// + [NonSerialized] bool _previousValueIsInit; + + /// + /// Checks if any changes happened just before rendering + /// Can be removed to optimize, since OnDidApplyAnimationProperties is doing the heavy lifting + /// But OnDidApplyAnimationProperties is undocumented, and will potentially change silently in the future + /// + void LateUpdate() + { + // If a previous value was recorded + // And it perfectly matches the current value + // Then ignore this update + if (_previousValueIsInit && EqualityComparer.Default.Equals(propertyValue, _previousValue)) return; + + _previousValueIsInit = true; + _previousValue = propertyValue; + SetMaterialDirty(); + } + + /// + /// Called by the animator system when a value is modified + /// + public void OnDidApplyAnimationProperties() + { + _previousValueIsInit = true; + _previousValue = propertyValue; + SetMaterialDirty(); + } + + /// + /// The value of the overriding property + /// Will react correctly when changed + /// + public T PropertyValue + { + get => propertyValue; + set + { + _previousValueIsInit = true; + _previousValue = propertyValue = value; + SetMaterialDirty(); + } + } + + /// + /// Try to retrieve and apply the default property value + /// If the source material cannot be found, reset to sensible defaults + /// + public override void ResetPropertyToDefault() + { + // Try to get the associated Graphic component + Graphic graphic = ParentGraphic; + // If successful, get the material + Material material = graphic ? graphic.material : null; + // init the reset value to default + T value = default; + bool gotDefaultValue = false; + + // If material was received, try to get the default value from the material + if (material) gotDefaultValue = GetDefaultValue(material, out value); + + // Log a warning if we failed + if (!gotDefaultValue) Debug.LogWarning("Could not retrieve material default value", this); + + // Set current value to what we managed to retrieve, and update + PropertyValue = value; + } + + /// + /// Retrieve the default property value from the source material + /// + /// The source material + /// The value from the material + /// True if the value could be retrieved + public abstract bool GetDefaultValue(Material material, out T defaultValue); + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/GraphicPropertyOverride.cs.meta b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverride.cs.meta new file mode 100644 index 000000000..144d8a025 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverride.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 41cc1aea6b8342d5a6c8ac437a094f0e +timeCreated: 1681914388 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/GraphicPropertyOverride.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideColor.cs b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideColor.cs new file mode 100644 index 000000000..b452d15d6 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideColor.cs @@ -0,0 +1,41 @@ +using UnityEngine; + +namespace Plugins.Animate_UI_Materials +{ + /// + /// Used in with GraphicMaterialOverride to modify a material without creating a variant + /// Added to a child of the Graphic element + /// This variant only applies to Color properties + /// + [AddComponentMenu("UI/Animate UI Material/GraphicPropertyOverrideColor")] + public class GraphicPropertyOverrideColor : GraphicPropertyOverride + { +#if UNITY_EDITOR + /// + /// A flag for the editor to draw the color field as HDR + /// + public bool isHDR; +#endif + /// + /// Apply the modified property to the material + /// + /// + public override void ApplyModifiedProperty(Material material) + { + material.SetColor(PropertyId, propertyValue); + } + + /// + /// Retrieve the default Color value from the source material + /// + /// The source material + /// The Color value from the material + /// True if the value could be retrieved + public override bool GetDefaultValue(Material material, out Color defaultValue) + { + bool hasProperty = material.HasColor(PropertyId); + defaultValue = hasProperty ? material.GetColor(PropertyId) : default; + return hasProperty; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideColor.cs.meta b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideColor.cs.meta new file mode 100644 index 000000000..fd1dfeec5 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideColor.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0769e07e9d844582aed9c22013f56c3b +timeCreated: 1681915536 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideColor.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideFloat.cs b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideFloat.cs new file mode 100644 index 000000000..4263a2dc9 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideFloat.cs @@ -0,0 +1,36 @@ +using UnityEngine; + +namespace Plugins.Animate_UI_Materials +{ + /// + /// Used in with GraphicMaterialOverride to modify a material without creating a variant + /// Added to a child of the Graphic element + /// This variant only applies to Float properties + /// + [AddComponentMenu("UI/Animate UI Material/GraphicPropertyOverrideFloat")] + public class GraphicPropertyOverrideFloat : GraphicPropertyOverride + { + /// + /// Apply the modified property to the material + /// + /// + public override void ApplyModifiedProperty(Material material) + { + material.SetFloat(PropertyId, propertyValue); + } + + /// + /// Retrieve the default float value from the source material + /// + /// The source material + /// The float value from the material + /// True if the value could be retrieved + public override bool GetDefaultValue(Material material, out float defaultValue) + { + bool hasProperty = material.HasFloat(PropertyId); + if (hasProperty) defaultValue = material.GetFloat(PropertyId); + else defaultValue = default; + return hasProperty; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideFloat.cs.meta b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideFloat.cs.meta new file mode 100644 index 000000000..81b044cc6 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideFloat.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 389648ab9de94296b8f4a6f6957df101 +timeCreated: 1681915244 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideFloat.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideInt.cs b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideInt.cs new file mode 100644 index 000000000..5e8136caa --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideInt.cs @@ -0,0 +1,36 @@ +using UnityEngine; + +namespace Plugins.Animate_UI_Materials +{ + /// + /// Used in with GraphicMaterialOverride to modify a material without creating a variant + /// Added to a child of the Graphic element + /// This variant only applies to Int properties + /// + [AddComponentMenu("UI/Animate UI Material/GraphicPropertyOverrideInt")] + public class GraphicPropertyOverrideInt : GraphicPropertyOverride + { + /// + /// Apply the modified property to the material + /// + /// + public override void ApplyModifiedProperty(Material material) + { + material.SetInteger(PropertyId, propertyValue); + } + + /// + /// Retrieve the default int value from the source material + /// + /// The source material + /// The int value from the material + /// True if the value could be retrieved + public override bool GetDefaultValue(Material material, out int defaultValue) + { + bool hasProperty = material.HasInteger(PropertyId); + if (hasProperty) defaultValue = material.GetInteger(PropertyId); + else defaultValue = default; + return hasProperty; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideInt.cs.meta b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideInt.cs.meta new file mode 100644 index 000000000..48658f1dd --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideInt.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 130e282abc8245dcae85a781438fb2bc +timeCreated: 1682061527 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideInt.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideRange.cs b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideRange.cs new file mode 100644 index 000000000..20c84aabb --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideRange.cs @@ -0,0 +1,36 @@ +using UnityEngine; + +namespace Plugins.Animate_UI_Materials +{ + /// + /// Used in with GraphicMaterialOverride to modify a material without creating a variant + /// Added to a child of the Graphic element + /// This variant only applies to Range properties + /// + [AddComponentMenu("UI/Animate UI Material/GraphicPropertyOverrideRange")] + public class GraphicPropertyOverrideRange : GraphicPropertyOverride + { + /// + /// Apply the modified property to the material + /// + /// + public override void ApplyModifiedProperty(Material material) + { + material.SetFloat(PropertyId, propertyValue); + } + + /// + /// Retrieve the default float value from the source material + /// + /// The source material + /// The float value from the material + /// True if the value could be retrieved + public override bool GetDefaultValue(Material material, out float defaultValue) + { + bool hasProperty = material.HasFloat(PropertyId); + if (hasProperty) defaultValue = material.GetFloat(PropertyId); + else defaultValue = default; + return hasProperty; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideRange.cs.meta b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideRange.cs.meta new file mode 100644 index 000000000..301e68838 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideRange.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 035dcf41a5a94b9ba8c514a7714b4fbb +timeCreated: 1682061553 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideRange.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideScaleAndOffset.cs b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideScaleAndOffset.cs new file mode 100644 index 000000000..90808decf --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideScaleAndOffset.cs @@ -0,0 +1,57 @@ +using UnityEngine; + +namespace Plugins.Animate_UI_Materials +{ + [System.Serializable] + public struct TextureScaleOffset + { + public Texture Texture; + public Vector4 ScaleOffset; + public Vector2 Scale => new Vector2(ScaleOffset.x, ScaleOffset.y); + public Vector2 Offset => new Vector2(ScaleOffset.z, ScaleOffset.w); + + public TextureScaleOffset(Texture texture, Vector2 scale, Vector2 offset) + { + Texture = texture; + ScaleOffset = new Vector4(scale.x, scale.y, offset.x, offset.y); + } + } + + /// + /// Used in with GraphicMaterialOverride to modify a material without creating a variant + /// Added to a child of the Graphic element + /// This variant only applies to Texture properties + /// + [AddComponentMenu("UI/Animate UI Material/GraphicPropertyOverrideScaleAndOffset")] + public class GraphicPropertyOverrideScaleAndOffset : GraphicPropertyOverride + { + public override string DisplayName => $"{propertyName} Scale Offset"; + + /// + /// Apply the modified property to the material + /// + /// + public override void ApplyModifiedProperty(Material material) + { + material.SetTextureOffset(PropertyId, propertyValue.Offset); + material.SetTextureScale(PropertyId, propertyValue.Scale); + material.SetTexture(PropertyId, propertyValue.Texture); + } + + /// + /// Retrieve the default Texture value from the source material + /// + /// The source material + /// The Texture value from the material + /// True if the value could be retrieved + public override bool GetDefaultValue(Material material, out TextureScaleOffset defaultValue) + { + bool hasProperty = material.HasTexture(PropertyId); + Vector2 scale = hasProperty ? material.GetTextureOffset(PropertyId) : Vector2.one; + Vector2 offset = hasProperty ? material.GetTextureScale(PropertyId) : Vector2.zero; + Texture texture = hasProperty ? material.GetTexture(PropertyId) : null; + defaultValue = new TextureScaleOffset(texture, scale, offset); + return hasProperty; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideScaleAndOffset.cs.meta b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideScaleAndOffset.cs.meta new file mode 100644 index 000000000..9ffafe031 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideScaleAndOffset.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c8ebb8aba46242f88d3296cc8d7984c9 +timeCreated: 1701451148 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideScaleAndOffset.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideTexture.cs b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideTexture.cs new file mode 100644 index 000000000..4f8ba6cd4 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideTexture.cs @@ -0,0 +1,36 @@ +using UnityEngine; + +namespace Plugins.Animate_UI_Materials +{ + /// + /// Used in with GraphicMaterialOverride to modify a material without creating a variant + /// Added to a child of the Graphic element + /// This variant only applies to Texture properties + /// + [AddComponentMenu("UI/Animate UI Material/GraphicPropertyOverrideTexture")] + public class GraphicPropertyOverrideTexture : GraphicPropertyOverride + { + /// + /// Apply the modified property to the material + /// + /// + public override void ApplyModifiedProperty(Material material) + { + material.SetTexture(PropertyId, propertyValue); + } + + /// + /// Retrieve the default Texture value from the source material + /// + /// The source material + /// The Texture value from the material + /// True if the value could be retrieved + public override bool GetDefaultValue(Material material, out Texture defaultValue) + { + bool hasProperty = material.HasTexture(PropertyId); + if (hasProperty) defaultValue = material.GetTexture(PropertyId); + else defaultValue = default; + return hasProperty; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideTexture.cs.meta b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideTexture.cs.meta new file mode 100644 index 000000000..069186e18 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideTexture.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: e6f24b72ca8a4caabda35db3768eaf4f +timeCreated: 1682090672 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideTexture.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideVector.cs b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideVector.cs new file mode 100644 index 000000000..ba4ab82fe --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideVector.cs @@ -0,0 +1,36 @@ +using UnityEngine; + +namespace Plugins.Animate_UI_Materials +{ + /// + /// Used in with GraphicMaterialOverride to modify a material without creating a variant + /// Added to a child of the Graphic element + /// This variant only applies to Vector properties + /// + [AddComponentMenu("UI/Animate UI Material/GraphicPropertyOverrideVector")] + public class GraphicPropertyOverrideVector : GraphicPropertyOverride + { + /// + /// Apply the modified property to the material + /// + /// + public override void ApplyModifiedProperty(Material material) + { + material.SetVector(PropertyId, propertyValue); + } + + /// + /// Retrieve the default Vector value from the source material + /// + /// The source material + /// The Vector value from the material + /// True if the value could be retrieved + public override bool GetDefaultValue(Material material, out Vector4 defaultValue) + { + bool hasProperty = material.HasVector(PropertyId); + if (hasProperty) defaultValue = material.GetVector(PropertyId); + else defaultValue = default; + return hasProperty; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideVector.cs.meta b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideVector.cs.meta new file mode 100644 index 000000000..25ce3762a --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideVector.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 7de2cc36a6a241da9a1302efa1f3cf46 +timeCreated: 1682061467 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/GraphicPropertyOverrideVector.cs + uploadId: 766200 diff --git a/Assets/Plugins/Animate UI Materials/IMaterialPropertyModifier.cs b/Assets/Plugins/Animate UI Materials/IMaterialPropertyModifier.cs new file mode 100644 index 000000000..ad62dce10 --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/IMaterialPropertyModifier.cs @@ -0,0 +1,39 @@ +using UnityEngine; + +namespace Plugins.Animate_UI_Materials +{ + public interface IMaterialPropertyModifier + { + /// + /// The name of the shader property that the modifier affects + /// + string PropertyName { get; } + + /// + /// The display name of the modifier component for the editor + /// + string DisplayName { get; } + + /// + /// The "enabled" value of the modifier component + /// + bool enabled { get; set; } + + /// + /// The "gameObject" value of the modifier component + /// + GameObject gameObject { get; } + + /// + /// Apply the modified property to the material + /// + /// + void ApplyModifiedProperty(Material material); + + /// + /// Try to retrieve and apply the default property value + /// If the source material cannot be found, reset to sensible defaults + /// + void ResetPropertyToDefault(); + } +} \ No newline at end of file diff --git a/Assets/Plugins/Animate UI Materials/IMaterialPropertyModifier.cs.meta b/Assets/Plugins/Animate UI Materials/IMaterialPropertyModifier.cs.meta new file mode 100644 index 000000000..37654bdcc --- /dev/null +++ b/Assets/Plugins/Animate UI Materials/IMaterialPropertyModifier.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f54bd367836249f1a19414bb0a531a5a +timeCreated: 1682057978 +AssetOrigin: + serializedVersion: 1 + productId: 253197 + packageName: Animate UI Materials + packageVersion: 1.3.0 + assetPath: Assets/Plugins/Animate UI Materials/IMaterialPropertyModifier.cs + uploadId: 766200 diff --git a/Assets/Plugins/Easy Save 3/Resources/ES3/ES3Defaults.asset b/Assets/Plugins/Easy Save 3/Resources/ES3/ES3Defaults.asset index d69cabd23..0aca3f01a 100644 --- a/Assets/Plugins/Easy Save 3/Resources/ES3/ES3Defaults.asset +++ b/Assets/Plugins/Easy Save 3/Resources/ES3/ES3Defaults.asset @@ -42,6 +42,7 @@ MonoBehaviour: - andywiecko.BurstTriangulator - Assembly-CSharp - Assembly-CSharp-firstpass + - Assembly-GraphicMaterialOverride - AstarPathfindingProject - Autodesk.Fbx - Autodesk.Fbx.BuildTestAssets diff --git a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/SamplesFixtureEmissive.mat b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/SamplesFixtureEmissive.mat index 49011fe68..edb3f8a12 100644 --- a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/SamplesFixtureEmissive.mat +++ b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/SamplesFixtureEmissive.mat @@ -1,5 +1,18 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!114 &-462588174902266333 +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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 --- !u!21 &2100000 Material: serializedVersion: 8 @@ -11,9 +24,9 @@ Material: m_Shader: {fileID: -6465566751694194690, guid: 55dd6397dd059324398dec8c06cb4153, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: + m_ValidKeywords: [] + m_InvalidKeywords: - _DISABLE_SSR_TRANSPARENT - m_InvalidKeywords: [] m_LightmapFlags: 2 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 diff --git a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/SamplesRoughBlack.mat b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/SamplesRoughBlack.mat index 613333058..93f5c8ad5 100644 --- a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/SamplesRoughBlack.mat +++ b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/SamplesRoughBlack.mat @@ -29,6 +29,19 @@ MonoBehaviour: hdPluginSubTargetMaterialVersions: m_Keys: [] m_Values: +--- !u!114 &-3900041929240879694 +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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 --- !u!21 &2100000 Material: serializedVersion: 8 @@ -40,9 +53,9 @@ Material: m_Shader: {fileID: -6465566751694194690, guid: 181d9f8961a46b84fa2b2acfc30cdf9c, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _DISABLE_SSR_TRANSPARENT + m_ValidKeywords: [] m_InvalidKeywords: + - _DISABLE_SSR_TRANSPARENT - _NORMALMAP_TANGENT_SPACE m_LightmapFlags: 4 m_EnableInstancingVariants: 0 diff --git a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/SamplesSpotlightEmissive.mat b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/SamplesSpotlightEmissive.mat index a4b8ca28b..164603b1e 100644 --- a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/SamplesSpotlightEmissive.mat +++ b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/SamplesSpotlightEmissive.mat @@ -11,9 +11,9 @@ Material: m_Shader: {fileID: -6465566751694194690, guid: 55dd6397dd059324398dec8c06cb4153, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: + m_ValidKeywords: [] + m_InvalidKeywords: - _DISABLE_SSR_TRANSPARENT - m_InvalidKeywords: [] m_LightmapFlags: 2 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 @@ -108,6 +108,20 @@ Material: - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - _Emission_Color: {r: 1, g: 1, b: 1, a: 0} m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &341765169038055598 +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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 --- !u!114 &4129780837305980848 MonoBehaviour: m_ObjectHideFlags: 11 diff --git a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/SamplesTurntable_White.mat b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/SamplesTurntable_White.mat index 9b27195a0..3d54df207 100644 --- a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/SamplesTurntable_White.mat +++ b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/SamplesTurntable_White.mat @@ -1,5 +1,18 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6334813361708750137 +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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 --- !u!114 &-4311493914180223959 MonoBehaviour: m_ObjectHideFlags: 11 @@ -24,9 +37,9 @@ Material: m_Shader: {fileID: -6465566751694194690, guid: daae7dca060ff1344bf7d7e511e0e961, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: + m_ValidKeywords: [] + m_InvalidKeywords: - _DISABLE_SSR_TRANSPARENT - m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 diff --git a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_BackdropFabric.mat b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_BackdropFabric.mat index c63c69bad..d4e8e53d4 100644 --- a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_BackdropFabric.mat +++ b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_BackdropFabric.mat @@ -13,6 +13,19 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: version: 9 +--- !u!114 &-6154481183976877875 +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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 --- !u!21 &2100000 Material: serializedVersion: 8 @@ -24,10 +37,10 @@ Material: m_Shader: {fileID: -6465566751694194690, guid: 137a9d0b49032c544abaff345d2c4f5c, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: + m_ValidKeywords: [] + m_InvalidKeywords: - _DISABLE_SSR_TRANSPARENT - _DOUBLESIDED_ON - m_InvalidKeywords: - _NORMALMAP_TANGENT_SPACE m_LightmapFlags: 4 m_EnableInstancingVariants: 0 diff --git a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_BackdropFabric_Red.mat b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_BackdropFabric_Red.mat index 1ba04ca52..81d03af4a 100644 --- a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_BackdropFabric_Red.mat +++ b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_BackdropFabric_Red.mat @@ -24,10 +24,10 @@ Material: m_Shader: {fileID: -6465566751694194690, guid: 137a9d0b49032c544abaff345d2c4f5c, type: 3} m_Parent: {fileID: 2100000, guid: 638589c7422aff14eaa79da6fad69c7c, type: 2} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: + m_ValidKeywords: [] + m_InvalidKeywords: - _DISABLE_SSR_TRANSPARENT - _DOUBLESIDED_ON - m_InvalidKeywords: - _NORMALMAP_TANGENT_SPACE m_LightmapFlags: 4 m_EnableInstancingVariants: 0 @@ -54,6 +54,19 @@ Material: - _Color: {r: 0.5471698, g: 0.120790295, b: 0.13512228, a: 1} m_BuildTextureStacks: [] m_AllowLocking: 1 +--- !u!114 &1443011941897949152 +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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 --- !u!114 &6461052843977076103 MonoBehaviour: m_ObjectHideFlags: 11 diff --git a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_BlackPaint.mat b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_BlackPaint.mat index 28b235dcd..53b4fd4af 100644 --- a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_BlackPaint.mat +++ b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_BlackPaint.mat @@ -11,9 +11,9 @@ Material: m_Shader: {fileID: -6465566751694194690, guid: 77a073c5851b973499ddf6de1a1c803f, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _DISABLE_SSR_TRANSPARENT + m_ValidKeywords: [] m_InvalidKeywords: + - _DISABLE_SSR_TRANSPARENT - _NORMALMAP_TANGENT_SPACE m_LightmapFlags: 4 m_EnableInstancingVariants: 0 @@ -319,6 +319,19 @@ Material: - _UV_Tiling: {r: 1, g: 1, b: 0, a: 0} m_BuildTextureStacks: [] m_AllowLocking: 1 +--- !u!114 &7008279879314206002 +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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 --- !u!114 &7902377284972801844 MonoBehaviour: m_ObjectHideFlags: 11 diff --git a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_Checker.mat b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_Checker.mat index 0518854c4..baf4c93fb 100644 --- a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_Checker.mat +++ b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_Checker.mat @@ -11,9 +11,9 @@ Material: m_Shader: {fileID: -6465566751694194690, guid: 12b97e20ea15a7844849d66169c21bed, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: + m_ValidKeywords: [] + m_InvalidKeywords: - _DISABLE_SSR_TRANSPARENT - m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 @@ -137,6 +137,19 @@ MonoBehaviour: hdPluginSubTargetMaterialVersions: m_Keys: [] m_Values: +--- !u!114 &6243711038889969139 +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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 --- !u!114 &8018026817525244604 MonoBehaviour: m_ObjectHideFlags: 11 diff --git a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_Curtain.mat b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_Curtain.mat index bfd6c6ddf..26e183480 100644 --- a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_Curtain.mat +++ b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_Curtain.mat @@ -13,6 +13,19 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: version: 9 +--- !u!114 &-4757135422042230766 +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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 --- !u!21 &2100000 Material: serializedVersion: 8 @@ -24,10 +37,10 @@ Material: m_Shader: {fileID: -6465566751694194690, guid: 137a9d0b49032c544abaff345d2c4f5c, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: + m_ValidKeywords: [] + m_InvalidKeywords: - _DISABLE_SSR_TRANSPARENT - _DOUBLESIDED_ON - m_InvalidKeywords: - _NORMALMAP_TANGENT_SPACE m_LightmapFlags: 4 m_EnableInstancingVariants: 0 diff --git a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_Platform.mat b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_Platform.mat index e04531c8a..2ad481178 100644 --- a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_Platform.mat +++ b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_Platform.mat @@ -1,5 +1,18 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!114 &-5759668321534919737 +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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 --- !u!21 &2100000 Material: serializedVersion: 8 @@ -11,9 +24,9 @@ Material: m_Shader: {fileID: -6465566751694194690, guid: 77a073c5851b973499ddf6de1a1c803f, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _DISABLE_SSR_TRANSPARENT + m_ValidKeywords: [] m_InvalidKeywords: + - _DISABLE_SSR_TRANSPARENT - _NORMALMAP_TANGENT_SPACE m_LightmapFlags: 4 m_EnableInstancingVariants: 0 diff --git a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_RoughGrey.mat b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_RoughGrey.mat index 071e86c71..640fd54b1 100644 --- a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_RoughGrey.mat +++ b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_RoughGrey.mat @@ -1,5 +1,18 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1603643827908197234 +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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 --- !u!21 &2100000 Material: serializedVersion: 8 @@ -11,9 +24,9 @@ Material: m_Shader: {fileID: -6465566751694194690, guid: 181d9f8961a46b84fa2b2acfc30cdf9c, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _DISABLE_SSR_TRANSPARENT + m_ValidKeywords: [] m_InvalidKeywords: + - _DISABLE_SSR_TRANSPARENT - _NORMALMAP_TANGENT_SPACE m_LightmapFlags: 4 m_EnableInstancingVariants: 0 diff --git a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_RoughSteel.mat b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_RoughSteel.mat index c093e2580..61e623d20 100644 --- a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_RoughSteel.mat +++ b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_RoughSteel.mat @@ -11,9 +11,9 @@ Material: m_Shader: {fileID: -6465566751694194690, guid: 181d9f8961a46b84fa2b2acfc30cdf9c, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _DISABLE_SSR_TRANSPARENT + m_ValidKeywords: [] m_InvalidKeywords: + - _DISABLE_SSR_TRANSPARENT - _NORMALMAP_TANGENT_SPACE m_LightmapFlags: 4 m_EnableInstancingVariants: 0 @@ -337,3 +337,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: version: 9 +--- !u!114 &7470243039165956749 +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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 diff --git a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_Tripod.mat b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_Tripod.mat index dd951ff58..090fc69a5 100644 --- a/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_Tripod.mat +++ b/Assets/Samples/Scriptable Render Pipeline Core/Common/Materials/Samples_Tripod.mat @@ -1,5 +1,18 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!114 &-201879338358150017 +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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 --- !u!21 &2100000 Material: serializedVersion: 8 @@ -11,9 +24,9 @@ Material: m_Shader: {fileID: -6465566751694194690, guid: 77a073c5851b973499ddf6de1a1c803f, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _DISABLE_SSR_TRANSPARENT + m_ValidKeywords: [] m_InvalidKeywords: + - _DISABLE_SSR_TRANSPARENT - _NORMALMAP_TANGENT_SPACE m_LightmapFlags: 4 m_EnableInstancingVariants: 0 @@ -309,6 +322,7 @@ Material: - _UV_Offset: {r: 0, g: 0, b: 0, a: 0} - _UV_Tiling: {r: 1, g: 1, b: 0, a: 0} m_BuildTextureStacks: [] + m_AllowLocking: 1 --- !u!114 &7902377284972801844 MonoBehaviour: m_ObjectHideFlags: 11 diff --git a/Assets/Samples/Scriptable Render Pipeline Core/Common/TextMesh Pro/Resources/Fonts & Materials/Inter-Regular SDF Emissive Variant.mat b/Assets/Samples/Scriptable Render Pipeline Core/Common/TextMesh Pro/Resources/Fonts & Materials/Inter-Regular SDF Emissive Variant.mat index 44da1bdd1..bf4944068 100644 --- a/Assets/Samples/Scriptable Render Pipeline Core/Common/TextMesh Pro/Resources/Fonts & Materials/Inter-Regular SDF Emissive Variant.mat +++ b/Assets/Samples/Scriptable Render Pipeline Core/Common/TextMesh Pro/Resources/Fonts & Materials/Inter-Regular SDF Emissive Variant.mat @@ -1,5 +1,18 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!114 &-212331205594638590 +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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 --- !u!21 &2100000 Material: serializedVersion: 8 @@ -11,12 +24,12 @@ Material: m_Shader: {fileID: -6465566751694194690, guid: f8605069e61e60e4685c8e97ead17a56, type: 3} m_Parent: {fileID: -6055507529455485361, guid: 2f7116f10747a67409388e93052ae222, type: 2} m_ModifiedSerializedProperties: 2 - m_ValidKeywords: + m_ValidKeywords: [] + m_InvalidKeywords: - _DISABLE_SSR_TRANSPARENT - _DOUBLESIDED_ON - _ENABLE_FOG_ON_TRANSPARENT - _SURFACE_TYPE_TRANSPARENT - m_InvalidKeywords: [] m_LightmapFlags: 2 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 diff --git a/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/ItemBox.png b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/ItemBox.png new file mode 100644 index 000000000..4e64ed05c --- /dev/null +++ b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/ItemBox.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:300c8561985685c102de392e0b9a0c1b2367f8825bd5dca3a84375d6c48b2e6c +size 4970 diff --git a/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/ItemBox.png.meta b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/ItemBox.png.meta new file mode 100644 index 000000000..716f3eb2a --- /dev/null +++ b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/ItemBox.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: a8b2a9a778c41bc4088946a66a05dac4 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 2 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials.meta b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials.meta new file mode 100644 index 000000000..d188f2f3d --- /dev/null +++ b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d49b22a0c9b782343b8967596b590276 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/ItemSlotUi.mat b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/ItemSlotUi.mat new file mode 100644 index 000000000..b875abfff --- /dev/null +++ b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/ItemSlotUi.mat @@ -0,0 +1,374 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3760092364010213104 +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: ItemSlotUi + m_Shader: {fileID: 4800000, guid: e320962886da01749b5c68627fde4db9, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - OUTBASE8DIR_ON + - OUTBASEPIXELPERF_ON + - OUTBASE_ON + - OUTTEX_ON + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + 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} + - _ColorRampTex: + m_Texture: {fileID: 2800000, guid: 279657edc397ece4b8029c727adf6ddc, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ColorRampTexGradient: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ColorSwapTex: + 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} + - _DistortTex: + m_Texture: {fileID: 2800000, guid: 7aad8c583ef292e48b06af0d1f2fab97, type: 3} + 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} + - _FadeBurnTex: + m_Texture: {fileID: 2800000, guid: 677cca399782dea41aedc1d292ecb67d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FadeTex: + m_Texture: {fileID: 2800000, guid: 7aad8c583ef292e48b06af0d1f2fab97, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _GlowTex: + 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} + - _MainTexture: + 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} + - _OutlineDistortTex: + m_Texture: {fileID: 2800000, guid: 7aad8c583ef292e48b06af0d1f2fab97, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OutlineTex: + m_Texture: {fileID: 2800000, guid: 74087f6d03f233e4a8a142fa01f9e5cf, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OverlayTex: + m_Texture: {fileID: 2800000, guid: 677cca399782dea41aedc1d292ecb67d, type: 3} + 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} + - _ShineMask: + 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} + - _Texture2D: + m_Texture: {fileID: 2800000, guid: fab06e0be9375cc4d823efa71629885c, type: 3} + 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 + - _Alpha: 1 + - _AlphaClip: 0 + - _AlphaCutoffValue: 0.25 + - _AlphaOutlineBlend: 1 + - _AlphaOutlineGlow: 5 + - _AlphaOutlineMinAlpha: 0 + - _AlphaOutlinePower: 1 + - _AlphaRoundThreshold: 0.5 + - _AlphaToMask: 0 + - _BillboardY: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BlurHD: 0 + - _BlurIntensity: 10 + - _Brightness: 0 + - _BumpScale: 1 + - _ChromAberrAlpha: 0.4 + - _ChromAberrAmount: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _ClipUvDown: 0 + - _ClipUvLeft: 0 + - _ClipUvRight: 0 + - _ClipUvUp: 0 + - _ColorChangeLuminosity: 0 + - _ColorChangeTolerance: 0.25 + - _ColorChangeTolerance2: 0.25 + - _ColorChangeTolerance3: 0.25 + - _ColorMask: 15 + - _ColorRampBlend: 1 + - _ColorRampLuminosity: 0 + - _ColorRampOutline: 0 + - _ColorSwapBlend: 1 + - _ColorSwapBlueLuminosity: 0.5 + - _ColorSwapGreenLuminosity: 0.5 + - _ColorSwapRedLuminosity: 0.5 + - _Contrast: 1 + - _Cull: 2 + - _CullingOption: 0 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DistortAmount: 0.5 + - _DistortTexXSpeed: 5 + - _DistortTexYSpeed: 5 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EditorDrawers: 7 + - _EnvironmentReflections: 1 + - _FadeAmount: -0.1 + - _FadeBurnGlow: 2 + - _FadeBurnTransition: 0.075 + - _FadeBurnWidth: 0.025 + - _FishEyeUvAmount: 0.35 + - _FlickerAlpha: 0 + - _FlickerFreq: 0.2 + - _FlickerPercent: 0.05 + - _GhostBlend: 1 + - _GhostColorBoost: 1 + - _GhostTransparency: 0 + - _GlitchAmount: 3 + - _GlitchSize: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Glow: 10 + - _GlowGlobal: 1 + - _GradBlend: 1 + - _GradBoostX: 1.2 + - _GradBoostY: 1.2 + - _GradIsRadial: 0 + - _GrassManualAnim: 1 + - _GrassManualToggle: 0 + - _GrassRadialBend: 0.1 + - _GrassSpeed: 2 + - _GrassWind: 20 + - _GreyscaleBlend: 1 + - _GreyscaleLuminosity: 0 + - _GreyscaleOutline: 0 + - _Grid_Tiles: 24 + - _HandDrawnAmount: 10 + - _HandDrawnSpeed: 5 + - _HitEffectBlend: 1 + - _HitEffectGlow: 5 + - _HologramBlend: 1 + - _HologramMaxAlpha: 0.75 + - _HologramMinAlpha: 0.1 + - _HologramStripesAmount: 0.1 + - _HologramStripesSpeed: 4.5 + - _HologramUnmodAmount: 0 + - _HsvBright: 1 + - _HsvSaturation: 1 + - _HsvShift: 180 + - _InnerOutlineAlpha: 1 + - _InnerOutlineGlow: 4 + - _InnerOutlineThickness: 1 + - _MaxXUV: 1 + - _MaxYUV: 1 + - _Metallic: 0 + - _MinXUV: 0 + - _MinYUV: 0 + - _MotionBlurAngle: 0.1 + - _MotionBlurDist: 1.25 + - _MyDstMode: 10 + - _MySrcMode: 5 + - _NegativeAmount: 1 + - _OcclusionStrength: 1 + - _OffsetUvX: 0 + - _OffsetUvY: 0 + - _OnlyInnerOutline: 0 + - _OnlyOutline: 0 + - _OutlineAlpha: 1 + - _OutlineDistortAmount: 0.5 + - _OutlineDistortTexXSpeed: 5 + - _OutlineDistortTexYSpeed: 5 + - _OutlineGlow: 1 + - _OutlinePixelWidth: 30 + - _OutlineTexRotation: 136 + - _OutlineTexRotationSpeed: 15 + - _OutlineTexXSpeed: 0 + - _OutlineTexYSpeed: 10 + - _OutlineThickness: 1 + - _OutlineWidth: 0.051 + - _OverlayBlend: 1 + - _OverlayGlow: 1 + - _OverlayTextureScrollXSpeed: 0.25 + - _OverlayTextureScrollYSpeed: 0.25 + - _Parallax: 0.005 + - _PinchUvAmount: 0.35 + - _PixelateSize: 32 + - _PosterizeGamma: 0.75 + - _PosterizeNumColors: 8 + - _PosterizeOutline: 0 + - _QueueOffset: 0 + - _RadialClip: 45 + - _RadialClip2: 0 + - _RadialStartAngle: 90 + - _Radius: 0.2 + - _RandomSeed: 0 + - _ReceiveShadows: 1 + - _RectSize: 1 + - _RotateUvAmount: 0 + - _RoundWaveSpeed: 2 + - _RoundWaveStrength: 0.7 + - _ShadowAlpha: 0.5 + - _ShadowX: 0.1 + - _ShadowY: -0.05 + - _ShakeUvSpeed: 2.5 + - _ShakeUvX: 1.5 + - _ShakeUvY: 1 + - _ShineGlow: 1 + - _ShineLocation: 0.5 + - _ShineRotate: 0 + - _ShineWidth: 0.1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _Surface: 0 + - _TextureScrollXSpeed: 1 + - _TextureScrollYSpeed: 0 + - _Tilt: -0.3 + - _TwistUvAmount: 1 + - _TwistUvPosX: 0.5 + - _TwistUvPosY: 0.5 + - _TwistUvRadius: 0.75 + - _UIMaskSoftnessX: 1 + - _UIMaskSoftnessY: 1 + - _WarpScale: 0.5 + - _WarpSpeed: 8 + - _WarpStrength: 0.025 + - _WaveAmount: 7 + - _WaveSpeed: 10 + - _WaveStrength: 7.5 + - _WaveX: 0 + - _WaveY: 0.5 + - _WorkflowMode: 1 + - _XRMotionVectorsPass: 1 + - _ZTestMode: 0 + - _ZWrite: 0 + - _ZoomUvAmount: 0.5 + m_Colors: + - _AlphaOutlineColor: {r: 1, g: 0.033018887, b: 0.033018887, a: 1} + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _ClipRect: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _ColorChangeNewCol: {r: 1, g: 1, b: 0, a: 1} + - _ColorChangeNewCol2: {r: 1, g: 1, b: 0, a: 1} + - _ColorChangeNewCol3: {r: 1, g: 1, b: 0, a: 1} + - _ColorChangeTarget: {r: 1, g: 0, b: 0, a: 1} + - _ColorChangeTarget2: {r: 1, g: 0, b: 0, a: 1} + - _ColorChangeTarget3: {r: 1, g: 0, b: 0, a: 1} + - _ColorSwapBlue: {r: 1, g: 1, b: 1, a: 1} + - _ColorSwapGreen: {r: 1, g: 1, b: 1, a: 1} + - _ColorSwapRed: {r: 1, g: 1, b: 1, a: 1} + - _Dimensions: {r: 0.8, g: 0.6, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FadeBurnColor: {r: 1, g: 1, b: 0, a: 1} + - _GlowColor: {r: 1, g: 1, b: 1, a: 1} + - _GradBotLeftCol: {r: 0, g: 0, b: 1, a: 1} + - _GradBotRightCol: {r: 0, g: 1, b: 0, a: 1} + - _GradTopLeftCol: {r: 1, g: 0, b: 0, a: 1} + - _GradTopRightCol: {r: 1, g: 1, b: 0, a: 1} + - _GreyscaleTintColor: {r: 1, g: 1, b: 1, a: 1} + - _HitEffectColor: {r: 1, g: 1, b: 1, a: 1} + - _HologramStripeColor: {r: 0, g: 1, b: 1, a: 1} + - _InnerOutlineColor: {r: 1, g: 0, b: 0, a: 1} + - _OutlineColor: {r: 1, g: 1, b: 1, a: 1} + - _OverlayColor: {r: 1, g: 1, b: 1, a: 1} + - _ShadowColor: {r: 0, g: 0, b: 0, a: 1} + - _ShineColor: {r: 1, g: 1, b: 1, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/ItemSlotUi.mat.meta b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/ItemSlotUi.mat.meta new file mode 100644 index 000000000..edfe72e2f --- /dev/null +++ b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/ItemSlotUi.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 62523c9155dcc8c4696b91b10c7ef4dc +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_DDD/_Addressables/AnimationController/InventorySlotUi.controller b/Assets/_DDD/_Addressables/AnimationController/InventorySlotUi.controller index 4b2765286..a80e006a2 100644 --- a/Assets/_DDD/_Addressables/AnimationController/InventorySlotUi.controller +++ b/Assets/_DDD/_Addressables/AnimationController/InventorySlotUi.controller @@ -133,20 +133,20 @@ AnimationClip: - serializedVersion: 3 time: 0 value: 1 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 + inSlope: 0 + outSlope: 0 + tangentMode: 136 weightedMode: 0 inWeight: 0 outWeight: 0 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_PPtrCurves: [] m_SampleRate: 60 m_WrapMode: 0 @@ -155,15 +155,6 @@ AnimationClip: m_Extent: {x: 0, y: 0, z: 0} m_ClipBindingConstant: genericBindings: - - serializedVersion: 2 - path: 94248739 - attribute: 2086281974 - script: {fileID: 0} - typeID: 1 - customType: 0 - isPPtrCurve: 0 - isIntCurve: 0 - isSerializeReferenceCurve: 0 - serializedVersion: 2 path: 4080383872 attribute: 2526845255 @@ -200,6 +191,15 @@ AnimationClip: isPPtrCurve: 0 isIntCurve: 0 isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2333811533 + attribute: 2659956753 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 pptrCurveMapping: [] m_AnimationClipSettings: serializedVersion: 2 @@ -313,20 +313,20 @@ AnimationClip: - serializedVersion: 3 time: 0 value: 1 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 + inSlope: 0 + outSlope: 0 + tangentMode: 136 weightedMode: 0 inWeight: 0 outWeight: 0 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_EulerEditorCurves: [] m_HasGenericRootTransform: 0 m_HasMotionFloatCurves: 0 @@ -565,29 +565,20 @@ AnimationClip: - serializedVersion: 3 time: 0 value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 0.16666667 - value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 + inSlope: 0 + outSlope: 0 + tangentMode: 136 weightedMode: 0 inWeight: 0 outWeight: 0 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_PPtrCurves: [] m_SampleRate: 60 m_WrapMode: 0 @@ -605,15 +596,6 @@ AnimationClip: isPPtrCurve: 0 isIntCurve: 0 isSerializeReferenceCurve: 0 - - serializedVersion: 2 - path: 94248739 - attribute: 2086281974 - script: {fileID: 0} - typeID: 1 - customType: 0 - isPPtrCurve: 0 - isIntCurve: 0 - isSerializeReferenceCurve: 0 - serializedVersion: 2 path: 4080383872 attribute: 2526845255 @@ -650,6 +632,15 @@ AnimationClip: isPPtrCurve: 0 isIntCurve: 0 isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2333811533 + attribute: 2659956753 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 pptrCurveMapping: [] m_AnimationClipSettings: serializedVersion: 2 @@ -792,36 +783,6 @@ AnimationClip: classID: 114 script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} flags: 0 - - serializedVersion: 2 - curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 0.16666667 - value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 - serializedVersion: 2 curve: serializedVersion: 2 @@ -912,6 +873,27 @@ AnimationClip: classID: 224 script: {fileID: 0} flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_EulerEditorCurves: [] m_HasGenericRootTransform: 0 m_HasMotionFloatCurves: 0 @@ -1101,20 +1083,20 @@ AnimationClip: - serializedVersion: 3 time: 0 value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 + inSlope: 0 + outSlope: 0 + tangentMode: 136 weightedMode: 0 inWeight: 0 outWeight: 0 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_PPtrCurves: [] m_SampleRate: 60 m_WrapMode: 0 @@ -1123,15 +1105,6 @@ AnimationClip: m_Extent: {x: 0, y: 0, z: 0} m_ClipBindingConstant: genericBindings: - - serializedVersion: 2 - path: 94248739 - attribute: 2086281974 - script: {fileID: 0} - typeID: 1 - customType: 0 - isPPtrCurve: 0 - isIntCurve: 0 - isSerializeReferenceCurve: 0 - serializedVersion: 2 path: 4080383872 attribute: 2526845255 @@ -1168,6 +1141,15 @@ AnimationClip: isPPtrCurve: 0 isIntCurve: 0 isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2333811533 + attribute: 2659956753 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 pptrCurveMapping: [] m_AnimationClipSettings: serializedVersion: 2 @@ -1281,20 +1263,20 @@ AnimationClip: - serializedVersion: 3 time: 0 value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 + inSlope: 0 + outSlope: 0 + tangentMode: 136 weightedMode: 0 inWeight: 0 outWeight: 0 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_EulerEditorCurves: [] m_HasGenericRootTransform: 0 m_HasMotionFloatCurves: 0 @@ -1485,20 +1467,20 @@ AnimationClip: - serializedVersion: 3 time: 0 value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 + inSlope: 0 + outSlope: 0 + tangentMode: 136 weightedMode: 0 inWeight: 0 outWeight: 0 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_PPtrCurves: [] m_SampleRate: 60 m_WrapMode: 0 @@ -1508,10 +1490,10 @@ AnimationClip: m_ClipBindingConstant: genericBindings: - serializedVersion: 2 - path: 94248739 - attribute: 2086281974 - script: {fileID: 0} - typeID: 1 + path: 2333811533 + attribute: 2659956753 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + typeID: 114 customType: 0 isPPtrCurve: 0 isIntCurve: 0 @@ -1545,20 +1527,20 @@ AnimationClip: - serializedVersion: 3 time: 0 value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 + inSlope: 0 + outSlope: 0 + tangentMode: 136 weightedMode: 0 inWeight: 0 outWeight: 0 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_EulerEditorCurves: [] m_HasGenericRootTransform: 0 m_HasMotionFloatCurves: 0 @@ -1697,20 +1679,20 @@ AnimationClip: - serializedVersion: 3 time: 0 value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 + inSlope: 0 + outSlope: 0 + tangentMode: 136 weightedMode: 0 inWeight: 0 outWeight: 0 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_PPtrCurves: [] m_SampleRate: 60 m_WrapMode: 0 @@ -1719,15 +1701,6 @@ AnimationClip: m_Extent: {x: 0, y: 0, z: 0} m_ClipBindingConstant: genericBindings: - - serializedVersion: 2 - path: 94248739 - attribute: 2086281974 - script: {fileID: 0} - typeID: 1 - customType: 0 - isPPtrCurve: 0 - isIntCurve: 0 - isSerializeReferenceCurve: 0 - serializedVersion: 2 path: 4080383872 attribute: 2526845255 @@ -1764,6 +1737,15 @@ AnimationClip: isPPtrCurve: 0 isIntCurve: 0 isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2333811533 + attribute: 2659956753 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 pptrCurveMapping: [] m_AnimationClipSettings: serializedVersion: 2 @@ -1877,20 +1859,20 @@ AnimationClip: - serializedVersion: 3 time: 0 value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 + inSlope: 0 + outSlope: 0 + tangentMode: 136 weightedMode: 0 inWeight: 0 outWeight: 0 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_EulerEditorCurves: [] m_HasGenericRootTransform: 0 m_HasMotionFloatCurves: 0 diff --git a/Assets/_DDD/_Addressables/AnimationController/TodayMenuSlotUi.controller b/Assets/_DDD/_Addressables/AnimationController/TodayMenuSlotUi.controller index 0e1678a08..51c7fda52 100644 --- a/Assets/_DDD/_Addressables/AnimationController/TodayMenuSlotUi.controller +++ b/Assets/_DDD/_Addressables/AnimationController/TodayMenuSlotUi.controller @@ -133,20 +133,20 @@ AnimationClip: - serializedVersion: 3 time: 0 value: 1 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 + inSlope: 0 + outSlope: 0 + tangentMode: 136 weightedMode: 0 inWeight: 0 outWeight: 0 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_PPtrCurves: [] m_SampleRate: 60 m_WrapMode: 0 @@ -155,15 +155,6 @@ AnimationClip: m_Extent: {x: 0, y: 0, z: 0} m_ClipBindingConstant: genericBindings: - - serializedVersion: 2 - path: 94248739 - attribute: 2086281974 - script: {fileID: 0} - typeID: 1 - customType: 0 - isPPtrCurve: 0 - isIntCurve: 0 - isSerializeReferenceCurve: 0 - serializedVersion: 2 path: 4080383872 attribute: 2526845255 @@ -200,6 +191,15 @@ AnimationClip: isPPtrCurve: 0 isIntCurve: 0 isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2333811533 + attribute: 2659956753 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 pptrCurveMapping: [] m_AnimationClipSettings: serializedVersion: 2 @@ -313,20 +313,20 @@ AnimationClip: - serializedVersion: 3 time: 0 value: 1 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 + inSlope: 0 + outSlope: 0 + tangentMode: 136 weightedMode: 0 inWeight: 0 outWeight: 0 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_EulerEditorCurves: [] m_HasGenericRootTransform: 0 m_HasMotionFloatCurves: 0 @@ -424,15 +424,6 @@ AnimationClip: weightedMode: 0 inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} - - serializedVersion: 3 - time: 0.16666667 - value: {x: 0.9, y: 0.9, z: 0.9} - inSlope: {x: 0, y: 0, z: 0} - outSlope: {x: 0, y: 0, z: 0} - tangentMode: 0 - weightedMode: 0 - inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} - outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 @@ -451,15 +442,6 @@ AnimationClip: weightedMode: 0 inWeight: 0.33333334 outWeight: 0.33333334 - - serializedVersion: 3 - time: 0.16666667 - value: 0.8980393 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 @@ -481,15 +463,6 @@ AnimationClip: weightedMode: 0 inWeight: 0.33333334 outWeight: 0.33333334 - - serializedVersion: 3 - time: 0.16666667 - value: 0.8588236 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 @@ -511,15 +484,6 @@ AnimationClip: weightedMode: 0 inWeight: 0.33333334 outWeight: 0.33333334 - - serializedVersion: 3 - time: 0.16666667 - value: 0.6 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 @@ -541,15 +505,6 @@ AnimationClip: weightedMode: 0 inWeight: 0.33333334 outWeight: 0.33333334 - - serializedVersion: 3 - time: 0.16666667 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 @@ -564,30 +519,21 @@ AnimationClip: m_Curve: - serializedVersion: 3 time: 0 - value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 0.16666667 - value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 weightedMode: 0 inWeight: 0 outWeight: 0 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_PPtrCurves: [] m_SampleRate: 60 m_WrapMode: 0 @@ -633,18 +579,18 @@ AnimationClip: isIntCurve: 0 isSerializeReferenceCurve: 0 - serializedVersion: 2 - path: 94248739 - attribute: 2086281974 - script: {fileID: 0} - typeID: 1 + path: 4080383872 + attribute: 304273561 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + typeID: 114 customType: 0 isPPtrCurve: 0 isIntCurve: 0 isSerializeReferenceCurve: 0 - serializedVersion: 2 - path: 4080383872 - attribute: 304273561 - script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + path: 2333811533 + attribute: 2659956753 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} typeID: 114 customType: 0 isPPtrCurve: 0 @@ -656,7 +602,7 @@ AnimationClip: m_AdditiveReferencePoseClip: {fileID: 0} m_AdditiveReferencePoseTime: 0 m_StartTime: 0 - m_StopTime: 0.16666667 + m_StopTime: 0 m_OrientationOffsetY: 0 m_Level: 0 m_CycleOffset: 0 @@ -685,15 +631,6 @@ AnimationClip: weightedMode: 0 inWeight: 0.33333334 outWeight: 0.33333334 - - serializedVersion: 3 - time: 0.16666667 - value: 0.8980393 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 @@ -715,15 +652,6 @@ AnimationClip: weightedMode: 0 inWeight: 0.33333334 outWeight: 0.33333334 - - serializedVersion: 3 - time: 0.16666667 - value: 0.8588236 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 @@ -745,15 +673,6 @@ AnimationClip: weightedMode: 0 inWeight: 0.33333334 outWeight: 0.33333334 - - serializedVersion: 3 - time: 0.16666667 - value: 0.6 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 @@ -775,15 +694,6 @@ AnimationClip: weightedMode: 0 inWeight: 0.33333334 outWeight: 0.33333334 - - serializedVersion: 3 - time: 0.16666667 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 @@ -792,36 +702,6 @@ AnimationClip: classID: 114 script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} flags: 0 - - serializedVersion: 2 - curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 0.16666667 - value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 - serializedVersion: 2 curve: serializedVersion: 2 @@ -835,15 +715,6 @@ AnimationClip: weightedMode: 0 inWeight: 0.33333334 outWeight: 0.33333334 - - serializedVersion: 3 - time: 0.16666667 - value: 0.9 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 @@ -865,15 +736,6 @@ AnimationClip: weightedMode: 0 inWeight: 0.33333334 outWeight: 0.33333334 - - serializedVersion: 3 - time: 0.16666667 - value: 0.9 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 @@ -895,15 +757,6 @@ AnimationClip: weightedMode: 0 inWeight: 0.33333334 outWeight: 0.33333334 - - serializedVersion: 3 - time: 0.16666667 - value: 0.9 - inSlope: 0 - outSlope: 0 - tangentMode: 136 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 @@ -912,6 +765,27 @@ AnimationClip: classID: 224 script: {fileID: 0} flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_EulerEditorCurves: [] m_HasGenericRootTransform: 0 m_HasMotionFloatCurves: 0 @@ -1101,20 +975,20 @@ AnimationClip: - serializedVersion: 3 time: 0 value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 + inSlope: 0 + outSlope: 0 + tangentMode: 136 weightedMode: 0 inWeight: 0 outWeight: 0 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_PPtrCurves: [] m_SampleRate: 60 m_WrapMode: 0 @@ -1123,15 +997,6 @@ AnimationClip: m_Extent: {x: 0, y: 0, z: 0} m_ClipBindingConstant: genericBindings: - - serializedVersion: 2 - path: 94248739 - attribute: 2086281974 - script: {fileID: 0} - typeID: 1 - customType: 0 - isPPtrCurve: 0 - isIntCurve: 0 - isSerializeReferenceCurve: 0 - serializedVersion: 2 path: 4080383872 attribute: 2526845255 @@ -1168,6 +1033,15 @@ AnimationClip: isPPtrCurve: 0 isIntCurve: 0 isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2333811533 + attribute: 2659956753 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 pptrCurveMapping: [] m_AnimationClipSettings: serializedVersion: 2 @@ -1281,20 +1155,20 @@ AnimationClip: - serializedVersion: 3 time: 0 value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 + inSlope: 0 + outSlope: 0 + tangentMode: 136 weightedMode: 0 inWeight: 0 outWeight: 0 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_EulerEditorCurves: [] m_HasGenericRootTransform: 0 m_HasMotionFloatCurves: 0 @@ -1469,27 +1343,6 @@ AnimationClip: m_PositionCurves: [] m_ScaleCurves: [] m_FloatCurves: - - serializedVersion: 2 - curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 - serializedVersion: 2 curve: serializedVersion: 2 @@ -1574,6 +1427,27 @@ AnimationClip: classID: 114 script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_PPtrCurves: [] m_SampleRate: 60 m_WrapMode: 0 @@ -1582,15 +1456,6 @@ AnimationClip: m_Extent: {x: 0, y: 0, z: 0} m_ClipBindingConstant: genericBindings: - - serializedVersion: 2 - path: 94248739 - attribute: 2086281974 - script: {fileID: 0} - typeID: 1 - customType: 0 - isPPtrCurve: 0 - isIntCurve: 0 - isSerializeReferenceCurve: 0 - serializedVersion: 2 path: 4080383872 attribute: 2526845255 @@ -1627,6 +1492,15 @@ AnimationClip: isPPtrCurve: 0 isIntCurve: 0 isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2333811533 + attribute: 2659956753 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 pptrCurveMapping: [] m_AnimationClipSettings: serializedVersion: 2 @@ -1649,27 +1523,6 @@ AnimationClip: m_HeightFromFeet: 0 m_Mirror: 0 m_EditorCurves: - - serializedVersion: 2 - curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 - serializedVersion: 2 curve: serializedVersion: 2 @@ -1754,6 +1607,27 @@ AnimationClip: classID: 114 script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_EulerEditorCurves: [] m_HasGenericRootTransform: 0 m_HasMotionFloatCurves: 0 @@ -1892,20 +1766,20 @@ AnimationClip: - serializedVersion: 3 time: 0 value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 + inSlope: 0 + outSlope: 0 + tangentMode: 136 weightedMode: 0 inWeight: 0 outWeight: 0 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_PPtrCurves: [] m_SampleRate: 60 m_WrapMode: 0 @@ -1914,15 +1788,6 @@ AnimationClip: m_Extent: {x: 0, y: 0, z: 0} m_ClipBindingConstant: genericBindings: - - serializedVersion: 2 - path: 94248739 - attribute: 2086281974 - script: {fileID: 0} - typeID: 1 - customType: 0 - isPPtrCurve: 0 - isIntCurve: 0 - isSerializeReferenceCurve: 0 - serializedVersion: 2 path: 4080383872 attribute: 2526845255 @@ -1959,6 +1824,15 @@ AnimationClip: isPPtrCurve: 0 isIntCurve: 0 isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 2333811533 + attribute: 2659956753 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 pptrCurveMapping: [] m_AnimationClipSettings: serializedVersion: 2 @@ -2072,20 +1946,20 @@ AnimationClip: - serializedVersion: 3 time: 0 value: 0 - inSlope: Infinity - outSlope: Infinity - tangentMode: 103 + inSlope: 0 + outSlope: 0 + tangentMode: 136 weightedMode: 0 inWeight: 0 outWeight: 0 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - attribute: m_IsActive - path: SelectedOutline - classID: 1 - script: {fileID: 0} - flags: 16 + attribute: propertyValue + path: Background/_OutlineAlpha Override + classID: 114 + script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} + flags: 0 m_EulerEditorCurves: [] m_HasGenericRootTransform: 0 m_HasMotionFloatCurves: 0 diff --git a/Assets/_DDD/_Addressables/Prefabs/Uis/ItemSlotUi.prefab b/Assets/_DDD/_Addressables/Prefabs/Uis/ItemSlotUi.prefab index 82281c06c..15e55cbb0 100644 --- a/Assets/_DDD/_Addressables/Prefabs/Uis/ItemSlotUi.prefab +++ b/Assets/_DDD/_Addressables/Prefabs/Uis/ItemSlotUi.prefab @@ -34,7 +34,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0} m_AnchorMax: {x: 1, y: 0} - m_AnchoredPosition: {x: -20, y: 15} + m_AnchoredPosition: {x: -30, y: 25} m_SizeDelta: {x: 30, y: 30} m_Pivot: {x: 1, y: 0} --- !u!222 &8540652785162385225 @@ -108,8 +108,6 @@ RectTransform: m_ConstrainProportionsScale: 1 m_Children: - {fileID: 3973346312149096682} - - {fileID: 2364321557392459264} - - {fileID: 2026018552117187495} - {fileID: 3241937078251618106} - {fileID: 5528041273083603964} - {fileID: 2305155522179591488} @@ -250,8 +248,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 0} - m_AnchoredPosition: {x: 0, y: 15} - m_SizeDelta: {x: -40, y: 25} + m_AnchoredPosition: {x: 0, y: 25} + m_SizeDelta: {x: -60, y: 25} m_Pivot: {x: 0.5, y: 0} --- !u!222 &2235499953358018031 CanvasRenderer: @@ -352,81 +350,6 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!1 &4960603354977620775 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2364321557392459264} - - component: {fileID: 8922009401383106673} - - component: {fileID: 4772930129477945835} - m_Layer: 5 - m_Name: Outline - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2364321557392459264 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4960603354977620775} - 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: 1 - m_Children: [] - m_Father: {fileID: 186537154872449206} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -20, y: -20} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &8922009401383106673 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4960603354977620775} - m_CullTransparentMesh: 1 ---- !u!114 &4772930129477945835 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4960603354977620775} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: b0f4b3f7eff669340b35ab31c1a06e65, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 3 --- !u!1 &5141141275122857504 GameObject: m_ObjectHideFlags: 0 @@ -438,6 +361,7 @@ GameObject: - component: {fileID: 3973346312149096682} - component: {fileID: 6814242016424598022} - component: {fileID: 2629700089687513121} + - component: {fileID: 3164307467709866316} m_Layer: 5 m_Name: Background m_TagString: Untagged @@ -456,7 +380,8 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 1 - m_Children: [] + m_Children: + - {fileID: 5660629238092796066} m_Father: {fileID: 186537154872449206} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -484,15 +409,15 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.8980393, g: 0.8588236, b: 0.7176471, a: 1} + m_Material: {fileID: 2100000, guid: 62523c9155dcc8c4696b91b10c7ef4dc, type: 2} + m_Color: {r: 0.89804, g: 0.85882, b: 0.71765, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 0} + m_Sprite: {fileID: 21300000, guid: a8b2a9a778c41bc4088946a66a05dac4, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -502,7 +427,19 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 ---- !u!1 &5733587565015662352 +--- !u!114 &3164307467709866316 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5141141275122857504} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ec7c531f67844491ae84a4f3d1575d01, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &5249074558182527543 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -510,73 +447,44 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 2026018552117187495} - - component: {fileID: 5388518051014973609} - - component: {fileID: 6485513727323019859} + - component: {fileID: 5660629238092796066} + - component: {fileID: 8525017117390620210} m_Layer: 5 - m_Name: SelectedOutline + m_Name: _OutlineAlpha Override m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &2026018552117187495 -RectTransform: +--- !u!4 &5660629238092796066 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5733587565015662352} + m_GameObject: {fileID: 5249074558182527543} + serializedVersion: 2 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: 1 m_Children: [] - m_Father: {fileID: 186537154872449206} + m_Father: {fileID: 3973346312149096682} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -8, y: -8} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5388518051014973609 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5733587565015662352} - m_CullTransparentMesh: 1 ---- !u!114 &6485513727323019859 +--- !u!114 &8525017117390620210 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5733587565015662352} + m_GameObject: {fileID: 5249074558182527543} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Script: {fileID: 11500000, guid: 035dcf41a5a94b9ba8c514a7714b4fbb, type: 3} m_Name: m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: b0f4b3f7eff669340b35ab31c1a06e65, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 3 + propertyName: _OutlineAlpha + propertyValue: 1 --- !u!1 &8231440998985588555 GameObject: m_ObjectHideFlags: 0 @@ -612,7 +520,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -40, y: -40} + m_SizeDelta: {x: -60, y: -60} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &3518282537249179397 CanvasRenderer: @@ -642,7 +550,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 0} + m_Sprite: {fileID: 21300000, guid: 7b0669364db4d5945b2764f2a5203be5, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 diff --git a/Assets/_DDD/_Addressables/Scenes/Restaurant.unity b/Assets/_DDD/_Addressables/Scenes/Restaurant.unity index 8ec0f8f72..3aae3f610 100644 --- a/Assets/_DDD/_Addressables/Scenes/Restaurant.unity +++ b/Assets/_DDD/_Addressables/Scenes/Restaurant.unity @@ -2511,6 +2511,947 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 04cb72fe661fd534b950283199ac4a83, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1001 &1013698577 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 574561958581785909, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 574561958581785909, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 574561958581785909, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 80.05 + objectReference: {fileID: 0} + - target: {fileID: 574561958581785909, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 49 + objectReference: {fileID: 0} + - target: {fileID: 574561958581785909, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 40.025 + objectReference: {fileID: 0} + - target: {fileID: 574561958581785909, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: -24.5 + objectReference: {fileID: 0} + - target: {fileID: 621513544542430591, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 621513544542430591, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 621513544542430591, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 621513544542430591, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 621513544542430591, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 621513544542430591, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 775559944225448954, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 775559944225448954, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 775559944225448954, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 775559944225448954, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 775559944225448954, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 775559944225448954, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 847569782515972274, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 847569782515972274, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 847569782515972274, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 46.620003 + objectReference: {fileID: 0} + - target: {fileID: 847569782515972274, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 847569782515972274, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 23.310001 + objectReference: {fileID: 0} + - target: {fileID: 847569782515972274, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: -25 + objectReference: {fileID: 0} + - target: {fileID: 902589941271221594, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 902589941271221594, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 902589941271221594, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 902589941271221594, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 902589941271221594, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 902589941271221594, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1059650812255381212, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1059650812255381212, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1059650812255381212, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 51.08 + objectReference: {fileID: 0} + - target: {fileID: 1059650812255381212, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 1059650812255381212, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 25.54 + objectReference: {fileID: 0} + - target: {fileID: 1059650812255381212, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: -25 + objectReference: {fileID: 0} + - target: {fileID: 1267700265221531591, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1267700265221531591, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1267700265221531591, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1267700265221531591, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1267700265221531591, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1267700265221531591, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1386833305572118779, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1623848246512314519, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1623848246512314519, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1623848246512314519, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1623848246512314519, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1623848246512314519, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1623848246512314519, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1635544877581240662, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1635544877581240662, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1635544877581240662, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 66.4 + objectReference: {fileID: 0} + - target: {fileID: 1635544877581240662, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 115.600006 + objectReference: {fileID: 0} + - target: {fileID: 1635544877581240662, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: -21.5 + objectReference: {fileID: 0} + - target: {fileID: 1647101859318024536, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1647101859318024536, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1647101859318024536, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 178.61 + objectReference: {fileID: 0} + - target: {fileID: 1647101859318024536, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 235.655 + objectReference: {fileID: 0} + - target: {fileID: 1647101859318024536, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: -2 + objectReference: {fileID: 0} + - target: {fileID: 1937044126227309791, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2222053490693558109, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2222053490693558109, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2222053490693558109, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2222053490693558109, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2222053490693558109, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2222053490693558109, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2276092046057847473, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2329681667901246021, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2694093827654810255, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2694093827654810255, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2694093827654810255, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 45.14 + objectReference: {fileID: 0} + - target: {fileID: 2694093827654810255, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 49 + objectReference: {fileID: 0} + - target: {fileID: 2694093827654810255, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 22.57 + objectReference: {fileID: 0} + - target: {fileID: 2694093827654810255, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: -24.5 + objectReference: {fileID: 0} + - target: {fileID: 2768372980201281944, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2768372980201281944, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2768372980201281944, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2768372980201281944, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2768372980201281944, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2923647488588574535, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2923647488588574535, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2923647488588574535, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2923647488588574535, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2923647488588574535, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3071485159024250861, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3071485159024250861, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3071485159024250861, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3071485159024250861, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3071485159024250861, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3071485159024250861, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3492020160202739040, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3492020160202739040, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3492020160202739040, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3492020160202739040, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3492020160202739040, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3492020160202739040, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3564139812230223400, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3564139812230223400, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3564139812230223400, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 44.78 + objectReference: {fileID: 0} + - target: {fileID: 3564139812230223400, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 3564139812230223400, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 22.39 + objectReference: {fileID: 0} + - target: {fileID: 3564139812230223400, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: -25 + objectReference: {fileID: 0} + - target: {fileID: 3569298798434135124, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3569298798434135124, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3569298798434135124, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3569298798434135124, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3569298798434135124, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3569298798434135124, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3765492434853619426, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3765492434853619426, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3765492434853619426, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 116.35 + objectReference: {fileID: 0} + - target: {fileID: 3765492434853619426, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 58.175 + objectReference: {fileID: 0} + - target: {fileID: 3765492434853619426, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: -2 + objectReference: {fileID: 0} + - target: {fileID: 3819522126440076046, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3819522126440076046, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3819522126440076046, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3819522126440076046, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3819522126440076046, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3819522126440076046, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3881877521820890268, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3881877521820890268, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3881877521820890268, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3881877521820890268, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3881877521820890268, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3925858938396269536, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3925858938396269536, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3925858938396269536, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3925858938396269536, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3925858938396269536, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3925858938396269536, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4344927872497180903, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4344927872497180903, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4344927872497180903, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4344927872497180903, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4344927872497180903, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4344927872497180903, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4750390231123831008, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4750390231123831008, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4750390231123831008, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4750390231123831008, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4750390231123831008, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5160925206641641752, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5160925206641641752, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5160925206641641752, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5160925206641641752, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5160925206641641752, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5160925206641641752, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5212022675791985057, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5282947747273609297, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5282947747273609297, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5282947747273609297, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5282947747273609297, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5282947747273609297, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5282947747273609297, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5669155925958102218, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5669155925958102218, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5669155925958102218, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5669155925958102218, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5669155925958102218, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5669155925958102218, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5760169274063006291, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5851667535313492392, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5851667535313492392, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5851667535313492392, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 66.009995 + objectReference: {fileID: 0} + - target: {fileID: 5851667535313492392, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 40.004997 + objectReference: {fileID: 0} + - target: {fileID: 5851667535313492392, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: -21.5 + objectReference: {fileID: 0} + - target: {fileID: 6599880288365032549, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6599880288365032549, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6599880288365032549, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6599880288365032549, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6599880288365032549, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6599880288365032549, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6838253471355869082, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_Name + value: UiManager + objectReference: {fileID: 0} + - target: {fileID: 7056278010476136806, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7056278010476136806, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7056278010476136806, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7056278010476136806, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7056278010476136806, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7086296103491844919, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7086296103491844919, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7086296103491844919, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7086296103491844919, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7086296103491844919, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7086296103491844919, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7125113852259692313, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7125113852259692313, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7125113852259692313, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7125113852259692313, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7125113852259692313, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7125113852259692313, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7215551430567514289, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7215551430567514289, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7797694985026872176, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7797694985026872176, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7797694985026872176, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7797694985026872176, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7797694985026872176, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7797694985026872176, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8157537725835147310, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8157537725835147310, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8157537725835147310, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 66.4 + objectReference: {fileID: 0} + - target: {fileID: 8157537725835147310, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 40.2 + objectReference: {fileID: 0} + - target: {fileID: 8157537725835147310, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: -21.5 + objectReference: {fileID: 0} + - target: {fileID: 8791806895220087988, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8791806895220087988, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8791806895220087988, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8791806895220087988, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8791806895220087988, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8791806895220087988, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8863896226978844747, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8863896226978844747, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8863896226978844747, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8863896226978844747, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 14906596fa615704fb8fa4ac3111fc3b, type: 3} --- !u!1 &1015166832 GameObject: m_ObjectHideFlags: 0 @@ -84301,3 +85242,4 @@ SceneRoots: - {fileID: 575217084} - {fileID: 7627145480117215977} - {fileID: 756009984} + - {fileID: 1013698577} diff --git a/Assets/_DDD/_ScriptAssets/Prefabs/UiManager.prefab b/Assets/_DDD/_ScriptAssets/Prefabs/UiManager.prefab index 076666769..9478c57fe 100644 --- a/Assets/_DDD/_ScriptAssets/Prefabs/UiManager.prefab +++ b/Assets/_DDD/_ScriptAssets/Prefabs/UiManager.prefab @@ -1373,15 +1373,15 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Padding: - m_Left: 14 + m_Left: 3 m_Right: 0 - m_Top: 12 + m_Top: 2 m_Bottom: 0 m_ChildAlignment: 0 m_StartCorner: 0 m_StartAxis: 0 - m_CellSize: {x: 132, y: 133} - m_Spacing: {x: -5, y: 5} + m_CellSize: {x: 151, y: 152} + m_Spacing: {x: -25, y: -16} m_Constraint: 0 m_ConstraintCount: 2 --- !u!114 &3584791728222390211 @@ -1453,15 +1453,15 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Padding: - m_Left: 125 + m_Left: 116 m_Right: 0 - m_Top: 5 + m_Top: -5 m_Bottom: 0 m_ChildAlignment: 0 m_StartCorner: 0 m_StartAxis: 0 - m_CellSize: {x: 132, y: 133} - m_Spacing: {x: -3, y: 7} + m_CellSize: {x: 151, y: 152} + m_Spacing: {x: -23, y: -13} m_Constraint: 1 m_ConstraintCount: 3 --- !u!1 &2280081284556110297 @@ -3714,15 +3714,15 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Padding: - m_Left: 58 + m_Left: 45 m_Right: 0 - m_Top: 5 + m_Top: -5 m_Bottom: 0 m_ChildAlignment: 0 m_StartCorner: 0 m_StartAxis: 0 - m_CellSize: {x: 132, y: 133} - m_Spacing: {x: -1, y: 0} + m_CellSize: {x: 151, y: 152} + m_Spacing: {x: -19, y: -18} m_Constraint: 1 m_ConstraintCount: 4 --- !u!1 &5774831677185062216 @@ -7224,6 +7224,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_005 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -7326,6 +7330,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_006 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} - target: {fileID: 8864952879369828923, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} propertyPath: m_Controller value: @@ -7902,6 +7910,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_006 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -8110,6 +8122,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_002 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -8678,6 +8694,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_002 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} - target: {fileID: 8864952879369828923, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} propertyPath: m_Controller value: @@ -8886,6 +8906,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -8988,6 +9012,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_005 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -9200,6 +9228,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_004 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} - target: {fileID: 8864952879369828923, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} propertyPath: m_Controller value: @@ -9306,6 +9338,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_007 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -9408,6 +9444,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_005 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} - target: {fileID: 8864952879369828923, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} propertyPath: m_Controller value: @@ -9514,6 +9554,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_004 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -11009,6 +11053,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_002 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -11425,6 +11473,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_001 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} - target: {fileID: 8864952879369828923, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} propertyPath: m_Controller value: @@ -11735,6 +11787,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_004 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -12137,6 +12193,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_003 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} - target: {fileID: 8864952879369828923, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} propertyPath: m_Controller value: @@ -12243,6 +12303,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_003 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -12835,6 +12899,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_007 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} - target: {fileID: 8864952879369828923, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} propertyPath: m_Controller value: @@ -13139,6 +13207,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_003 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -13241,6 +13313,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_001 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -13664,6 +13740,10 @@ PrefabInstance: propertyPath: m_Name value: ItemSlotUi_001 objectReference: {fileID: 0} + - target: {fileID: 8525017117390620210, guid: e349efbef7b74ce47af461f7985bfdc2, type: 3} + propertyPath: propertyValue + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] diff --git a/Assets/_DDD/_Scripts/GameUi/RestaurantManagementUi/ItemDetailView.cs b/Assets/_DDD/_Scripts/GameUi/RestaurantManagementUi/ItemDetailView.cs index eb15cde5c..dd4dfabff 100644 --- a/Assets/_DDD/_Scripts/GameUi/RestaurantManagementUi/ItemDetailView.cs +++ b/Assets/_DDD/_Scripts/GameUi/RestaurantManagementUi/ItemDetailView.cs @@ -41,8 +41,6 @@ private async void Start() _descriptionLabel.text = string.Empty; _cookwareImage.sprite = null; - ClearHashTags(); - _isInitialized.SetResult(true); } @@ -164,12 +162,12 @@ private void ClearHashTags() { foreach (Transform content in _tasteHashTagContent1) { - Destroy(content.gameObject); + Destroy(content?.gameObject); } foreach (Transform content in _tasteHashTagContent2) { - Destroy(content.gameObject); + Destroy(content?.gameObject); } } } diff --git a/Assets/_DDD/_Scripts/GameUi/RestaurantManagementUi/TodayMenuUi/TodayMenuView.cs b/Assets/_DDD/_Scripts/GameUi/RestaurantManagementUi/TodayMenuUi/TodayMenuView.cs index 03b6eb698..c67ded6d4 100644 --- a/Assets/_DDD/_Scripts/GameUi/RestaurantManagementUi/TodayMenuUi/TodayMenuView.cs +++ b/Assets/_DDD/_Scripts/GameUi/RestaurantManagementUi/TodayMenuUi/TodayMenuView.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Threading.Tasks; using UnityEngine; using UnityEngine.AddressableAssets; @@ -16,7 +17,7 @@ public class TodayMenuView : MonoBehaviour, IEventHandler, private void Start() { - Initialize(); + _ = Initialize(); } private void OnDestroy() @@ -25,11 +26,11 @@ private void OnDestroy() EventBus.Unregister(this); } - private async void Initialize() + private async Task Initialize() { _restaurantManagementSo = await AssetManager.LoadAsset(DataConstants.RestaurantManagementSo); Debug.Assert(_restaurantManagementSo != null, "_restaurantManagementSo != null"); - + foreach (Transform child in _todayFoodContent) { Destroy(child.gameObject); From d964eb647d969180ed9b3c7d0fa744cad2a2e325 Mon Sep 17 00:00:00 2001 From: NTG_Lenovo Date: Thu, 31 Jul 2025 18:50:25 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=EC=97=90=EC=85=8B=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Images/ItemBox.png.meta | 4 +- .../Images/WhiteBox.png | 3 + .../Images/WhiteBox.png.meta | 143 +++++++ .../Materials/BlackOutlineUi.mat | 373 ++++++++++++++++++ .../Materials/BlackOutlineUi.mat.meta | 8 + .../Materials/ItemSlotUi.mat | 1 - .../_ScriptAssets/Prefabs/UiManager.prefab | 12 +- 7 files changed, 535 insertions(+), 9 deletions(-) create mode 100644 Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/WhiteBox.png create mode 100644 Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/WhiteBox.png.meta create mode 100644 Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/BlackOutlineUi.mat create mode 100644 Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/BlackOutlineUi.mat.meta diff --git a/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/ItemBox.png.meta b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/ItemBox.png.meta index 716f3eb2a..b8030d1d4 100644 --- a/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/ItemBox.png.meta +++ b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/ItemBox.png.meta @@ -49,7 +49,7 @@ TextureImporter: alignment: 0 spritePivot: {x: 0.5, y: 0.5} spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteBorder: {x: 72, y: 72, z: 72, w: 72} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 alphaIsTransparency: 1 @@ -127,7 +127,7 @@ TextureImporter: physicsShape: [] bones: [] spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 + internalID: 1537655665 vertices: [] indices: edges: [] diff --git a/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/WhiteBox.png b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/WhiteBox.png new file mode 100644 index 000000000..983b93455 --- /dev/null +++ b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/WhiteBox.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e2b875fb8272edb34aa711693335ad656e9f523e481eaf4b893e02a0ee7d3dd +size 4946 diff --git a/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/WhiteBox.png.meta b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/WhiteBox.png.meta new file mode 100644 index 000000000..ac581c78d --- /dev/null +++ b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Images/WhiteBox.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: ef578a3fe05e5c144a45e8d84806fadb +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 2 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 72, y: 72, z: 72, w: 72} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 1537655665 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/BlackOutlineUi.mat b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/BlackOutlineUi.mat new file mode 100644 index 000000000..1c8294f85 --- /dev/null +++ b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/BlackOutlineUi.mat @@ -0,0 +1,373 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3760092364010213104 +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: BlackOutlineUi + m_Shader: {fileID: 4800000, guid: e320962886da01749b5c68627fde4db9, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - OUTBASE8DIR_ON + - OUTBASEPIXELPERF_ON + - OUTBASE_ON + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + 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} + - _ColorRampTex: + m_Texture: {fileID: 2800000, guid: 279657edc397ece4b8029c727adf6ddc, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ColorRampTexGradient: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ColorSwapTex: + 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} + - _DistortTex: + m_Texture: {fileID: 2800000, guid: 7aad8c583ef292e48b06af0d1f2fab97, type: 3} + 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} + - _FadeBurnTex: + m_Texture: {fileID: 2800000, guid: 677cca399782dea41aedc1d292ecb67d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FadeTex: + m_Texture: {fileID: 2800000, guid: 7aad8c583ef292e48b06af0d1f2fab97, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _GlowTex: + 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} + - _MainTexture: + 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} + - _OutlineDistortTex: + m_Texture: {fileID: 2800000, guid: 7aad8c583ef292e48b06af0d1f2fab97, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OutlineTex: + m_Texture: {fileID: 2800000, guid: 74087f6d03f233e4a8a142fa01f9e5cf, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OverlayTex: + m_Texture: {fileID: 2800000, guid: 677cca399782dea41aedc1d292ecb67d, type: 3} + 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} + - _ShineMask: + 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} + - _Texture2D: + m_Texture: {fileID: 2800000, guid: fab06e0be9375cc4d823efa71629885c, type: 3} + 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 + - _Alpha: 1 + - _AlphaClip: 0 + - _AlphaCutoffValue: 0.25 + - _AlphaOutlineBlend: 1 + - _AlphaOutlineGlow: 5 + - _AlphaOutlineMinAlpha: 0 + - _AlphaOutlinePower: 1 + - _AlphaRoundThreshold: 0.5 + - _AlphaToMask: 0 + - _BillboardY: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BlurHD: 0 + - _BlurIntensity: 10 + - _Brightness: 0 + - _BumpScale: 1 + - _ChromAberrAlpha: 0.4 + - _ChromAberrAmount: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _ClipUvDown: 0 + - _ClipUvLeft: 0 + - _ClipUvRight: 0 + - _ClipUvUp: 0 + - _ColorChangeLuminosity: 0 + - _ColorChangeTolerance: 0.25 + - _ColorChangeTolerance2: 0.25 + - _ColorChangeTolerance3: 0.25 + - _ColorMask: 15 + - _ColorRampBlend: 1 + - _ColorRampLuminosity: 0 + - _ColorRampOutline: 0 + - _ColorSwapBlend: 1 + - _ColorSwapBlueLuminosity: 0.5 + - _ColorSwapGreenLuminosity: 0.5 + - _ColorSwapRedLuminosity: 0.5 + - _Contrast: 1 + - _Cull: 2 + - _CullingOption: 0 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DistortAmount: 0.5 + - _DistortTexXSpeed: 5 + - _DistortTexYSpeed: 5 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EditorDrawers: 7 + - _EnvironmentReflections: 1 + - _FadeAmount: -0.1 + - _FadeBurnGlow: 2 + - _FadeBurnTransition: 0.075 + - _FadeBurnWidth: 0.025 + - _FishEyeUvAmount: 0.35 + - _FlickerAlpha: 0 + - _FlickerFreq: 0.2 + - _FlickerPercent: 0.05 + - _GhostBlend: 1 + - _GhostColorBoost: 1 + - _GhostTransparency: 0 + - _GlitchAmount: 3 + - _GlitchSize: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Glow: 10 + - _GlowGlobal: 1 + - _GradBlend: 1 + - _GradBoostX: 1.2 + - _GradBoostY: 1.2 + - _GradIsRadial: 0 + - _GrassManualAnim: 1 + - _GrassManualToggle: 0 + - _GrassRadialBend: 0.1 + - _GrassSpeed: 2 + - _GrassWind: 20 + - _GreyscaleBlend: 1 + - _GreyscaleLuminosity: 0 + - _GreyscaleOutline: 0 + - _Grid_Tiles: 24 + - _HandDrawnAmount: 10 + - _HandDrawnSpeed: 5 + - _HitEffectBlend: 1 + - _HitEffectGlow: 5 + - _HologramBlend: 1 + - _HologramMaxAlpha: 0.75 + - _HologramMinAlpha: 0.1 + - _HologramStripesAmount: 0.1 + - _HologramStripesSpeed: 4.5 + - _HologramUnmodAmount: 0 + - _HsvBright: 1 + - _HsvSaturation: 1 + - _HsvShift: 180 + - _InnerOutlineAlpha: 1 + - _InnerOutlineGlow: 4 + - _InnerOutlineThickness: 1 + - _MaxXUV: 1 + - _MaxYUV: 1 + - _Metallic: 0 + - _MinXUV: 0 + - _MinYUV: 0 + - _MotionBlurAngle: 0.1 + - _MotionBlurDist: 1.25 + - _MyDstMode: 10 + - _MySrcMode: 5 + - _NegativeAmount: 1 + - _OcclusionStrength: 1 + - _OffsetUvX: 0 + - _OffsetUvY: 0 + - _OnlyInnerOutline: 0 + - _OnlyOutline: 0 + - _OutlineAlpha: 1 + - _OutlineDistortAmount: 0.5 + - _OutlineDistortTexXSpeed: 5 + - _OutlineDistortTexYSpeed: 5 + - _OutlineGlow: 1 + - _OutlinePixelWidth: 30 + - _OutlineTexRotation: 136 + - _OutlineTexRotationSpeed: 15 + - _OutlineTexXSpeed: 0 + - _OutlineTexYSpeed: 10 + - _OutlineThickness: 1 + - _OutlineWidth: 0.051 + - _OverlayBlend: 1 + - _OverlayGlow: 1 + - _OverlayTextureScrollXSpeed: 0.25 + - _OverlayTextureScrollYSpeed: 0.25 + - _Parallax: 0.005 + - _PinchUvAmount: 0.35 + - _PixelateSize: 32 + - _PosterizeGamma: 0.75 + - _PosterizeNumColors: 8 + - _PosterizeOutline: 0 + - _QueueOffset: 0 + - _RadialClip: 45 + - _RadialClip2: 0 + - _RadialStartAngle: 90 + - _Radius: 0.2 + - _RandomSeed: 0 + - _ReceiveShadows: 1 + - _RectSize: 1 + - _RotateUvAmount: 0 + - _RoundWaveSpeed: 2 + - _RoundWaveStrength: 0.7 + - _ShadowAlpha: 0.5 + - _ShadowX: 0.1 + - _ShadowY: -0.05 + - _ShakeUvSpeed: 2.5 + - _ShakeUvX: 1.5 + - _ShakeUvY: 1 + - _ShineGlow: 1 + - _ShineLocation: 0.5 + - _ShineRotate: 0 + - _ShineWidth: 0.1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _Surface: 0 + - _TextureScrollXSpeed: 1 + - _TextureScrollYSpeed: 0 + - _Tilt: -0.3 + - _TwistUvAmount: 1 + - _TwistUvPosX: 0.5 + - _TwistUvPosY: 0.5 + - _TwistUvRadius: 0.75 + - _UIMaskSoftnessX: 1 + - _UIMaskSoftnessY: 1 + - _WarpScale: 0.5 + - _WarpSpeed: 8 + - _WarpStrength: 0.025 + - _WaveAmount: 7 + - _WaveSpeed: 10 + - _WaveStrength: 7.5 + - _WaveX: 0 + - _WaveY: 0.5 + - _WorkflowMode: 1 + - _XRMotionVectorsPass: 1 + - _ZTestMode: 0 + - _ZWrite: 0 + - _ZoomUvAmount: 0.5 + m_Colors: + - _AlphaOutlineColor: {r: 1, g: 0.033018887, b: 0.033018887, a: 1} + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _ClipRect: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _ColorChangeNewCol: {r: 1, g: 1, b: 0, a: 1} + - _ColorChangeNewCol2: {r: 1, g: 1, b: 0, a: 1} + - _ColorChangeNewCol3: {r: 1, g: 1, b: 0, a: 1} + - _ColorChangeTarget: {r: 1, g: 0, b: 0, a: 1} + - _ColorChangeTarget2: {r: 1, g: 0, b: 0, a: 1} + - _ColorChangeTarget3: {r: 1, g: 0, b: 0, a: 1} + - _ColorSwapBlue: {r: 1, g: 1, b: 1, a: 1} + - _ColorSwapGreen: {r: 1, g: 1, b: 1, a: 1} + - _ColorSwapRed: {r: 1, g: 1, b: 1, a: 1} + - _Dimensions: {r: 0.8, g: 0.6, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FadeBurnColor: {r: 1, g: 1, b: 0, a: 1} + - _GlowColor: {r: 1, g: 1, b: 1, a: 1} + - _GradBotLeftCol: {r: 0, g: 0, b: 1, a: 1} + - _GradBotRightCol: {r: 0, g: 1, b: 0, a: 1} + - _GradTopLeftCol: {r: 1, g: 0, b: 0, a: 1} + - _GradTopRightCol: {r: 1, g: 1, b: 0, a: 1} + - _GreyscaleTintColor: {r: 1, g: 1, b: 1, a: 1} + - _HitEffectColor: {r: 1, g: 1, b: 1, a: 1} + - _HologramStripeColor: {r: 0, g: 1, b: 1, a: 1} + - _InnerOutlineColor: {r: 1, g: 0, b: 0, a: 1} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _OverlayColor: {r: 1, g: 1, b: 1, a: 1} + - _ShadowColor: {r: 0, g: 0, b: 0, a: 1} + - _ShineColor: {r: 1, g: 1, b: 1, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/BlackOutlineUi.mat.meta b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/BlackOutlineUi.mat.meta new file mode 100644 index 000000000..44949ab8c --- /dev/null +++ b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/BlackOutlineUi.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c1b4e19defb7dc0439fba92a9ed33b93 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/ItemSlotUi.mat b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/ItemSlotUi.mat index b875abfff..273fcad67 100644 --- a/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/ItemSlotUi.mat +++ b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/ItemSlotUi.mat @@ -28,7 +28,6 @@ Material: - OUTBASE8DIR_ON - OUTBASEPIXELPERF_ON - OUTBASE_ON - - OUTTEX_ON m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 diff --git a/Assets/_DDD/_ScriptAssets/Prefabs/UiManager.prefab b/Assets/_DDD/_ScriptAssets/Prefabs/UiManager.prefab index 9478c57fe..a10a2dc16 100644 --- a/Assets/_DDD/_ScriptAssets/Prefabs/UiManager.prefab +++ b/Assets/_DDD/_ScriptAssets/Prefabs/UiManager.prefab @@ -2204,7 +2204,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &3002137859086354320 RectTransform: m_ObjectHideFlags: 0 @@ -3617,7 +3617,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -4, y: -4} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &4976429984415146619 CanvasRenderer: @@ -3639,7 +3639,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: - m_Material: {fileID: 0} + m_Material: {fileID: 2100000, guid: c1b4e19defb7dc0439fba92a9ed33b93, type: 2} m_Color: {r: 0.8862746, g: 0.83921576, b: 0.6745098, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} @@ -3647,8 +3647,8 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 0 + m_Sprite: {fileID: 21300000, guid: ef578a3fe05e5c144a45e8d84806fadb, type: 3} + m_Type: 1 m_PreserveAspect: 0 m_FillCenter: 1 m_FillMethod: 4 @@ -3656,7 +3656,7 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 + m_PixelsPerUnitMultiplier: 7 --- !u!1 &5645190433666691082 GameObject: m_ObjectHideFlags: 0 From f1c03eea80120a93de340d7639be5c405382a541 Mon Sep 17 00:00:00 2001 From: NTG_Lenovo Date: Thu, 31 Jul 2025 19:05:37 +0900 Subject: [PATCH 3/4] =?UTF-8?q?raw=20=ED=8F=B4=EB=8D=94=20=EC=B5=9C?= =?UTF-8?q?=EC=8B=A0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AssetGroups/Group.asset | 34 ++++++++-------- .../Materials/BlackOutlineUi.mat | 40 +++++++++---------- .../{ => Sprites}/OnlyAtlas.meta | 2 +- .../RestaurantManagementUi.spriteatlasv2 | 0 .../RestaurantManagementUi.spriteatlasv2.meta | 14 +++---- .../_DDD/_Addressables/{ => Sprites}/Ui.meta | 2 +- .../{ => Sprites}/Ui/Common.spriteatlasv2 | 0 .../Ui/Common.spriteatlasv2.meta | 14 +++---- .../{ => Sprites}/Ui/Drinks.spriteatlasv2 | 0 .../Ui/Drinks.spriteatlasv2.meta | 14 +++---- .../{ => Sprites}/Ui/Foods.spriteatlasv2 | 0 .../{ => Sprites}/Ui/Foods.spriteatlasv2.meta | 14 +++---- .../Ui/Ingredients.spriteatlasv2 | 0 .../Ui/Ingredients.spriteatlasv2.meta | 14 +++---- Assets/_DDD/_Raw/{ => Sprites}/OnlyAtlas.meta | 0 .../OnlyAtlas/RestaurantManagementUi.meta | 0 .../RestaurantManagementUi/CheckLine.png | 0 .../RestaurantManagementUi/CheckLine.png.meta | 10 ++--- .../CookwareDetailPanel.png | 0 .../CookwareDetailPanel.png.meta | 8 ++-- .../IngredientDetailPanel.png | 0 .../IngredientDetailPanel.png.meta | 6 +-- .../RecipeDetailPanel.png | 0 .../RecipeDetailPanel.png.meta | 6 +-- Assets/_DDD/_Raw/{ => Sprites}/Ui.meta | 0 Assets/_DDD/_Raw/{ => Sprites}/Ui/Common.meta | 0 .../_Raw/{ => Sprites}/Ui/Common/CheckNo.png | 0 .../{ => Sprites}/Ui/Common/CheckNo.png.meta | 0 .../_Raw/{ => Sprites}/Ui/Common/CheckYes.png | 0 .../{ => Sprites}/Ui/Common/CheckYes.png.meta | 0 .../{ => Sprites}/Ui/Common/EmptyDrink.png | 0 .../Ui/Common/EmptyDrink.png.meta | 0 .../{ => Sprites}/Ui/Common/EmptyFood.png | 0 .../Ui/Common/EmptyFood.png.meta | 0 Assets/_DDD/_Raw/{ => Sprites}/Ui/Drinks.meta | 0 .../Ui/Drinks/item_drink_001.png | 0 .../Ui/Drinks/item_drink_001.png.meta | 0 .../Ui/Drinks/item_drink_002.png | 0 .../Ui/Drinks/item_drink_002.png.meta | 0 .../Ui/Drinks/item_drink_003.png | 0 .../Ui/Drinks/item_drink_003.png.meta | 0 .../Ui/Drinks/item_drink_004.png | 0 .../Ui/Drinks/item_drink_004.png.meta | 0 Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods.meta | 0 .../{ => Sprites}/Ui/Foods/item_food_001.png | 0 .../Ui/Foods/item_food_001.png.meta | 0 .../{ => Sprites}/Ui/Foods/item_food_002.png | 0 .../Ui/Foods/item_food_002.png.meta | 0 .../{ => Sprites}/Ui/Foods/item_food_003.png | 0 .../Ui/Foods/item_food_003.png.meta | 0 .../{ => Sprites}/Ui/Foods/item_food_004.png | 0 .../Ui/Foods/item_food_004.png.meta | 0 .../{ => Sprites}/Ui/Foods/item_food_006.png | 0 .../Ui/Foods/item_food_006.png.meta | 0 .../{ => Sprites}/Ui/Foods/item_food_007.png | 0 .../Ui/Foods/item_food_007.png.meta | 0 .../{ => Sprites}/Ui/Foods/item_food_008.png | 0 .../Ui/Foods/item_food_008.png.meta | 0 .../{ => Sprites}/Ui/Foods/item_food_009.png | 0 .../Ui/Foods/item_food_009.png.meta | 0 .../{ => Sprites}/Ui/Foods/item_food_011.png | 0 .../Ui/Foods/item_food_011.png.meta | 0 .../{ => Sprites}/Ui/Foods/item_food_012.png | 0 .../Ui/Foods/item_food_012.png.meta | 0 .../{ => Sprites}/Ui/Foods/item_food_013.png | 0 .../Ui/Foods/item_food_013.png.meta | 0 .../{ => Sprites}/Ui/Foods/item_food_014.png | 0 .../Ui/Foods/item_food_014.png.meta | 0 .../{ => Sprites}/Ui/Foods/item_food_017.png | 0 .../Ui/Foods/item_food_017.png.meta | 0 .../_Raw/{ => Sprites}/Ui/Ingredients.meta | 0 .../Ui/Ingredients/item_ingredient_001.png | 0 .../Ingredients/item_ingredient_001.png.meta | 0 .../Ui/Ingredients/item_ingredient_002.png | 0 .../Ingredients/item_ingredient_002.png.meta | 0 .../Ui/Ingredients/item_ingredient_003.png | 0 .../Ingredients/item_ingredient_003.png.meta | 0 .../Ui/Ingredients/item_ingredient_004.png | 0 .../Ingredients/item_ingredient_004.png.meta | 0 .../Ui/Ingredients/item_ingredient_005.png | 0 .../Ingredients/item_ingredient_005.png.meta | 0 .../Ui/Ingredients/item_ingredient_006.png | 0 .../Ingredients/item_ingredient_006.png.meta | 0 .../Ui/Ingredients/item_ingredient_007.png | 0 .../Ingredients/item_ingredient_007.png.meta | 0 .../Ui/Ingredients/item_ingredient_008.png | 0 .../Ingredients/item_ingredient_008.png.meta | 0 .../Ui/Ingredients/item_ingredient_009.png | 0 .../Ingredients/item_ingredient_009.png.meta | 0 .../Ui/Ingredients/item_ingredient_010.png | 0 .../Ingredients/item_ingredient_010.png.meta | 0 .../Ui/Ingredients/item_ingredient_014.png | 0 .../Ingredients/item_ingredient_014.png.meta | 0 .../Ui/Ingredients/item_ingredient_015.png | 0 .../Ingredients/item_ingredient_015.png.meta | 0 .../Ui/Ingredients/item_ingredient_018.png | 0 .../Ingredients/item_ingredient_018.png.meta | 0 .../Ui/Ingredients/item_ingredient_021.png | 0 .../Ingredients/item_ingredient_021.png.meta | 0 .../Ui/Ingredients/item_ingredient_022.png | 0 .../Ingredients/item_ingredient_022.png.meta | 0 .../Ui/Ingredients/item_ingredient_023.png | 0 .../Ingredients/item_ingredient_023.png.meta | 0 .../AssetPostProcessors.cs | 21 +++++----- Assets/_DDD/_Scripts/Utilities/Constants.cs | 4 +- 105 files changed, 103 insertions(+), 100 deletions(-) rename Assets/_DDD/_Addressables/{ => Sprites}/OnlyAtlas.meta (77%) rename Assets/_DDD/_Addressables/{ => Sprites}/OnlyAtlas/RestaurantManagementUi.spriteatlasv2 (100%) rename Assets/_DDD/_Addressables/{ => Sprites}/OnlyAtlas/RestaurantManagementUi.spriteatlasv2.meta (73%) rename Assets/_DDD/_Addressables/{ => Sprites}/Ui.meta (77%) rename Assets/_DDD/_Addressables/{ => Sprites}/Ui/Common.spriteatlasv2 (100%) rename Assets/_DDD/_Addressables/{ => Sprites}/Ui/Common.spriteatlasv2.meta (73%) rename Assets/_DDD/_Addressables/{ => Sprites}/Ui/Drinks.spriteatlasv2 (100%) rename Assets/_DDD/_Addressables/{ => Sprites}/Ui/Drinks.spriteatlasv2.meta (73%) rename Assets/_DDD/_Addressables/{ => Sprites}/Ui/Foods.spriteatlasv2 (100%) rename Assets/_DDD/_Addressables/{ => Sprites}/Ui/Foods.spriteatlasv2.meta (73%) rename Assets/_DDD/_Addressables/{ => Sprites}/Ui/Ingredients.spriteatlasv2 (100%) rename Assets/_DDD/_Addressables/{ => Sprites}/Ui/Ingredients.spriteatlasv2.meta (73%) rename Assets/_DDD/_Raw/{ => Sprites}/OnlyAtlas.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/OnlyAtlas/RestaurantManagementUi.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/OnlyAtlas/RestaurantManagementUi/CheckLine.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/OnlyAtlas/RestaurantManagementUi/CheckLine.png.meta (97%) rename Assets/_DDD/_Raw/{ => Sprites}/OnlyAtlas/RestaurantManagementUi/CookwareDetailPanel.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/OnlyAtlas/RestaurantManagementUi/CookwareDetailPanel.png.meta (97%) rename Assets/_DDD/_Raw/{ => Sprites}/OnlyAtlas/RestaurantManagementUi/IngredientDetailPanel.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/OnlyAtlas/RestaurantManagementUi/IngredientDetailPanel.png.meta (98%) rename Assets/_DDD/_Raw/{ => Sprites}/OnlyAtlas/RestaurantManagementUi/RecipeDetailPanel.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/OnlyAtlas/RestaurantManagementUi/RecipeDetailPanel.png.meta (98%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Common.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Common/CheckNo.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Common/CheckNo.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Common/CheckYes.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Common/CheckYes.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Common/EmptyDrink.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Common/EmptyDrink.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Common/EmptyFood.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Common/EmptyFood.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Drinks.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Drinks/item_drink_001.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Drinks/item_drink_001.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Drinks/item_drink_002.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Drinks/item_drink_002.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Drinks/item_drink_003.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Drinks/item_drink_003.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Drinks/item_drink_004.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Drinks/item_drink_004.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_001.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_001.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_002.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_002.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_003.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_003.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_004.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_004.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_006.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_006.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_007.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_007.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_008.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_008.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_009.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_009.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_011.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_011.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_012.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_012.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_013.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_013.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_014.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_014.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_017.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Foods/item_food_017.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_001.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_001.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_002.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_002.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_003.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_003.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_004.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_004.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_005.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_005.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_006.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_006.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_007.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_007.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_008.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_008.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_009.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_009.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_010.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_010.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_014.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_014.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_015.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_015.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_018.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_018.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_021.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_021.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_022.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_022.png.meta (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_023.png (100%) rename Assets/_DDD/_Raw/{ => Sprites}/Ui/Ingredients/item_ingredient_023.png.meta (100%) diff --git a/Assets/AddressableAssetsData/AssetGroups/Group.asset b/Assets/AddressableAssetsData/AssetGroups/Group.asset index 47df4c876..13c5b9881 100644 --- a/Assets/AddressableAssetsData/AssetGroups/Group.asset +++ b/Assets/AddressableAssetsData/AssetGroups/Group.asset @@ -15,6 +15,12 @@ MonoBehaviour: m_GroupName: Group m_GUID: 30e7f67fe9aaa7849a34c9b6e2bc53ae m_SerializeEntries: + - m_GUID: 034ac52b4c3fe854193b7c9c2d353be5 + m_Address: Foods + m_ReadOnly: 0 + m_SerializedLabels: + - Atlas + FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 077fbb30d2367574db4211e2945acda0 m_Address: TodayMenuSlotUi m_ReadOnly: 0 @@ -32,8 +38,8 @@ MonoBehaviour: m_SerializedLabels: - Prefab FlaggedDuringContentUpdateRestriction: 0 - - m_GUID: 13bbbe2f81166d44688a0e9f581b8a8a - m_Address: Foods + - m_GUID: 2007acba03804024a801aee30991e439 + m_Address: Ingredients m_ReadOnly: 0 m_SerializedLabels: - Atlas @@ -66,29 +72,17 @@ MonoBehaviour: m_SerializedLabels: - Atlas FlaggedDuringContentUpdateRestriction: 0 - - m_GUID: 46f458d0dcf53304ebe8ae4c3b6e4453 - m_Address: Drinks - m_ReadOnly: 0 - m_SerializedLabels: - - Atlas - FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 47e757b9a170ab649af14c4d7b80ac41 m_Address: CreateRestaurantPlayerSo m_ReadOnly: 0 m_SerializedLabels: [] FlaggedDuringContentUpdateRestriction: 0 - - m_GUID: 58f31f9092125f740b7d78c711fc58b8 + - m_GUID: 79f90744c9c7ada498ba1ee8c60272d3 m_Address: Common m_ReadOnly: 0 m_SerializedLabels: - Atlas FlaggedDuringContentUpdateRestriction: 0 - - m_GUID: 5d82394aa19c5c44eb2e4c888189ec51 - m_Address: Ingredients - m_ReadOnly: 0 - m_SerializedLabels: - - Atlas - FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 83afdd7c8e0232443a83b09a90d0d3b1 m_Address: InventorySlotUi m_ReadOnly: 0 @@ -100,8 +94,8 @@ MonoBehaviour: m_ReadOnly: 0 m_SerializedLabels: [] FlaggedDuringContentUpdateRestriction: 0 - - m_GUID: 992ad55164428014d929f6d81e21f96f - m_Address: RestaurantManagementUi + - m_GUID: 91f41ed6ea0600f4abed98cf0bf53bc5 + m_Address: Drinks m_ReadOnly: 0 m_SerializedLabels: - Atlas @@ -117,6 +111,12 @@ MonoBehaviour: m_SerializedLabels: - Scene FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: a6e29c94b45be18498c195333e651353 + m_Address: RestaurantManagementUi + m_ReadOnly: 0 + m_SerializedLabels: + - Atlas + FlaggedDuringContentUpdateRestriction: 0 - m_GUID: c6d19267dabc844449cc778f2f03fb34 m_Address: SummerGrass01_SkeletonData m_ReadOnly: 0 diff --git a/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/BlackOutlineUi.mat b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/BlackOutlineUi.mat index 1c8294f85..ade7d76d2 100644 --- a/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/BlackOutlineUi.mat +++ b/Assets/_DDD/Restaurant/Ui/RestaurantManagementUi/Materials/BlackOutlineUi.mat @@ -25,8 +25,8 @@ Material: m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 m_ValidKeywords: + - GRADIENT2COL_ON - OUTBASE8DIR_ON - - OUTBASEPIXELPERF_ON - OUTBASE_ON m_InvalidKeywords: [] m_LightmapFlags: 4 @@ -81,11 +81,11 @@ Material: m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _FadeBurnTex: - m_Texture: {fileID: 2800000, guid: 677cca399782dea41aedc1d292ecb67d, type: 3} + m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _FadeTex: - m_Texture: {fileID: 2800000, guid: 7aad8c583ef292e48b06af0d1f2fab97, type: 3} + m_Texture: {fileID: 2800000, guid: b2ae57e82cd4b4d4ebfa9986f7c77c83, type: 3} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _GlowTex: @@ -117,7 +117,7 @@ Material: m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _OverlayTex: - m_Texture: {fileID: 2800000, guid: 677cca399782dea41aedc1d292ecb67d, type: 3} + m_Texture: {fileID: 2800000, guid: b2ae57e82cd4b4d4ebfa9986f7c77c83, type: 3} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _ParallaxMap: @@ -201,9 +201,9 @@ Material: - _EditorDrawers: 7 - _EnvironmentReflections: 1 - _FadeAmount: -0.1 - - _FadeBurnGlow: 2 - - _FadeBurnTransition: 0.075 - - _FadeBurnWidth: 0.025 + - _FadeBurnGlow: 1 + - _FadeBurnTransition: 0.01 + - _FadeBurnWidth: 0 - _FishEyeUvAmount: 0.35 - _FlickerAlpha: 0 - _FlickerFreq: 0.2 @@ -219,8 +219,8 @@ Material: - _Glow: 10 - _GlowGlobal: 1 - _GradBlend: 1 - - _GradBoostX: 1.2 - - _GradBoostY: 1.2 + - _GradBoostX: 5 + - _GradBoostY: 0.1 - _GradIsRadial: 0 - _GrassManualAnim: 1 - _GrassManualToggle: 0 @@ -267,17 +267,17 @@ Material: - _OutlineDistortTexXSpeed: 5 - _OutlineDistortTexYSpeed: 5 - _OutlineGlow: 1 - - _OutlinePixelWidth: 30 + - _OutlinePixelWidth: 50 - _OutlineTexRotation: 136 - - _OutlineTexRotationSpeed: 15 - - _OutlineTexXSpeed: 0 + - _OutlineTexRotationSpeed: 0 + - _OutlineTexXSpeed: 6.9 - _OutlineTexYSpeed: 10 - _OutlineThickness: 1 - - _OutlineWidth: 0.051 + - _OutlineWidth: 0.2 - _OverlayBlend: 1 - _OverlayGlow: 1 - - _OverlayTextureScrollXSpeed: 0.25 - - _OverlayTextureScrollYSpeed: 0.25 + - _OverlayTextureScrollXSpeed: 0 + - _OverlayTextureScrollYSpeed: 0 - _Parallax: 0.005 - _PinchUvAmount: 0.35 - _PixelateSize: 32 @@ -302,8 +302,8 @@ Material: - _ShakeUvX: 1.5 - _ShakeUvY: 1 - _ShineGlow: 1 - - _ShineLocation: 0.5 - - _ShineRotate: 0 + - _ShineLocation: 0.88 + - _ShineRotate: 0.72 - _ShineWidth: 0.1 - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 @@ -339,7 +339,7 @@ Material: - _ZWrite: 0 - _ZoomUvAmount: 0.5 m_Colors: - - _AlphaOutlineColor: {r: 1, g: 0.033018887, b: 0.033018887, a: 1} + - _AlphaOutlineColor: {r: 0, g: 0, b: 0, a: 1} - _BaseColor: {r: 1, g: 1, b: 1, a: 1} - _ClipRect: {r: 0, g: 0, b: 0, a: 0} - _Color: {r: 1, g: 1, b: 1, a: 1} @@ -354,12 +354,12 @@ Material: - _ColorSwapRed: {r: 1, g: 1, b: 1, a: 1} - _Dimensions: {r: 0.8, g: 0.6, b: 0, a: 0} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _FadeBurnColor: {r: 1, g: 1, b: 0, a: 1} + - _FadeBurnColor: {r: 1, g: 1, b: 1, a: 1} - _GlowColor: {r: 1, g: 1, b: 1, a: 1} - _GradBotLeftCol: {r: 0, g: 0, b: 1, a: 1} - _GradBotRightCol: {r: 0, g: 1, b: 0, a: 1} - _GradTopLeftCol: {r: 1, g: 0, b: 0, a: 1} - - _GradTopRightCol: {r: 1, g: 1, b: 0, a: 1} + - _GradTopRightCol: {r: 1, g: 1, b: 1, a: 1} - _GreyscaleTintColor: {r: 1, g: 1, b: 1, a: 1} - _HitEffectColor: {r: 1, g: 1, b: 1, a: 1} - _HologramStripeColor: {r: 0, g: 1, b: 1, a: 1} diff --git a/Assets/_DDD/_Addressables/OnlyAtlas.meta b/Assets/_DDD/_Addressables/Sprites/OnlyAtlas.meta similarity index 77% rename from Assets/_DDD/_Addressables/OnlyAtlas.meta rename to Assets/_DDD/_Addressables/Sprites/OnlyAtlas.meta index ad8999b41..bbdefb2af 100644 --- a/Assets/_DDD/_Addressables/OnlyAtlas.meta +++ b/Assets/_DDD/_Addressables/Sprites/OnlyAtlas.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 20b62c5b4c574374bb9724f447f4be13 +guid: abb68f5c46ccbd24c801bb8abf7b191d folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/_DDD/_Addressables/OnlyAtlas/RestaurantManagementUi.spriteatlasv2 b/Assets/_DDD/_Addressables/Sprites/OnlyAtlas/RestaurantManagementUi.spriteatlasv2 similarity index 100% rename from Assets/_DDD/_Addressables/OnlyAtlas/RestaurantManagementUi.spriteatlasv2 rename to Assets/_DDD/_Addressables/Sprites/OnlyAtlas/RestaurantManagementUi.spriteatlasv2 diff --git a/Assets/_DDD/_Addressables/OnlyAtlas/RestaurantManagementUi.spriteatlasv2.meta b/Assets/_DDD/_Addressables/Sprites/OnlyAtlas/RestaurantManagementUi.spriteatlasv2.meta similarity index 73% rename from Assets/_DDD/_Addressables/OnlyAtlas/RestaurantManagementUi.spriteatlasv2.meta rename to Assets/_DDD/_Addressables/Sprites/OnlyAtlas/RestaurantManagementUi.spriteatlasv2.meta index bc3e53405..3630008b2 100644 --- a/Assets/_DDD/_Addressables/OnlyAtlas/RestaurantManagementUi.spriteatlasv2.meta +++ b/Assets/_DDD/_Addressables/Sprites/OnlyAtlas/RestaurantManagementUi.spriteatlasv2.meta @@ -1,12 +1,12 @@ fileFormatVersion: 2 -guid: 992ad55164428014d929f6d81e21f96f +guid: a6e29c94b45be18498c195333e651353 SpriteAtlasImporter: externalObjects: {} textureSettings: serializedVersion: 2 - anisoLevel: 0 - compressionQuality: 0 - maxTextureSize: 0 + anisoLevel: 1 + compressionQuality: 50 + maxTextureSize: 2048 textureCompression: 0 filterMode: 1 generateMipMaps: 0 @@ -17,10 +17,10 @@ SpriteAtlasImporter: packingSettings: serializedVersion: 2 padding: 4 - blockOffset: 0 + blockOffset: 1 allowAlphaSplitting: 0 - enableRotation: 0 - enableTightPacking: 0 + enableRotation: 1 + enableTightPacking: 1 enableAlphaDilation: 0 secondaryTextureSettings: {} variantMultiplier: 1 diff --git a/Assets/_DDD/_Addressables/Ui.meta b/Assets/_DDD/_Addressables/Sprites/Ui.meta similarity index 77% rename from Assets/_DDD/_Addressables/Ui.meta rename to Assets/_DDD/_Addressables/Sprites/Ui.meta index ef0540fcf..785bd8d37 100644 --- a/Assets/_DDD/_Addressables/Ui.meta +++ b/Assets/_DDD/_Addressables/Sprites/Ui.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f800d5783de78f341bded6f4ed04ad8b +guid: 618e1f36a8cc9844fbe79896f29cba77 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/_DDD/_Addressables/Ui/Common.spriteatlasv2 b/Assets/_DDD/_Addressables/Sprites/Ui/Common.spriteatlasv2 similarity index 100% rename from Assets/_DDD/_Addressables/Ui/Common.spriteatlasv2 rename to Assets/_DDD/_Addressables/Sprites/Ui/Common.spriteatlasv2 diff --git a/Assets/_DDD/_Addressables/Ui/Common.spriteatlasv2.meta b/Assets/_DDD/_Addressables/Sprites/Ui/Common.spriteatlasv2.meta similarity index 73% rename from Assets/_DDD/_Addressables/Ui/Common.spriteatlasv2.meta rename to Assets/_DDD/_Addressables/Sprites/Ui/Common.spriteatlasv2.meta index fa8bdfd72..58358332f 100644 --- a/Assets/_DDD/_Addressables/Ui/Common.spriteatlasv2.meta +++ b/Assets/_DDD/_Addressables/Sprites/Ui/Common.spriteatlasv2.meta @@ -1,12 +1,12 @@ fileFormatVersion: 2 -guid: 58f31f9092125f740b7d78c711fc58b8 +guid: 79f90744c9c7ada498ba1ee8c60272d3 SpriteAtlasImporter: externalObjects: {} textureSettings: serializedVersion: 2 - anisoLevel: 0 - compressionQuality: 0 - maxTextureSize: 0 + anisoLevel: 1 + compressionQuality: 50 + maxTextureSize: 2048 textureCompression: 0 filterMode: 1 generateMipMaps: 0 @@ -17,10 +17,10 @@ SpriteAtlasImporter: packingSettings: serializedVersion: 2 padding: 4 - blockOffset: 0 + blockOffset: 1 allowAlphaSplitting: 0 - enableRotation: 0 - enableTightPacking: 0 + enableRotation: 1 + enableTightPacking: 1 enableAlphaDilation: 0 secondaryTextureSettings: {} variantMultiplier: 1 diff --git a/Assets/_DDD/_Addressables/Ui/Drinks.spriteatlasv2 b/Assets/_DDD/_Addressables/Sprites/Ui/Drinks.spriteatlasv2 similarity index 100% rename from Assets/_DDD/_Addressables/Ui/Drinks.spriteatlasv2 rename to Assets/_DDD/_Addressables/Sprites/Ui/Drinks.spriteatlasv2 diff --git a/Assets/_DDD/_Addressables/Ui/Drinks.spriteatlasv2.meta b/Assets/_DDD/_Addressables/Sprites/Ui/Drinks.spriteatlasv2.meta similarity index 73% rename from Assets/_DDD/_Addressables/Ui/Drinks.spriteatlasv2.meta rename to Assets/_DDD/_Addressables/Sprites/Ui/Drinks.spriteatlasv2.meta index f253a1259..362263291 100644 --- a/Assets/_DDD/_Addressables/Ui/Drinks.spriteatlasv2.meta +++ b/Assets/_DDD/_Addressables/Sprites/Ui/Drinks.spriteatlasv2.meta @@ -1,12 +1,12 @@ fileFormatVersion: 2 -guid: 46f458d0dcf53304ebe8ae4c3b6e4453 +guid: 91f41ed6ea0600f4abed98cf0bf53bc5 SpriteAtlasImporter: externalObjects: {} textureSettings: serializedVersion: 2 - anisoLevel: 0 - compressionQuality: 0 - maxTextureSize: 0 + anisoLevel: 1 + compressionQuality: 50 + maxTextureSize: 2048 textureCompression: 0 filterMode: 1 generateMipMaps: 0 @@ -17,10 +17,10 @@ SpriteAtlasImporter: packingSettings: serializedVersion: 2 padding: 4 - blockOffset: 0 + blockOffset: 1 allowAlphaSplitting: 0 - enableRotation: 0 - enableTightPacking: 0 + enableRotation: 1 + enableTightPacking: 1 enableAlphaDilation: 0 secondaryTextureSettings: {} variantMultiplier: 1 diff --git a/Assets/_DDD/_Addressables/Ui/Foods.spriteatlasv2 b/Assets/_DDD/_Addressables/Sprites/Ui/Foods.spriteatlasv2 similarity index 100% rename from Assets/_DDD/_Addressables/Ui/Foods.spriteatlasv2 rename to Assets/_DDD/_Addressables/Sprites/Ui/Foods.spriteatlasv2 diff --git a/Assets/_DDD/_Addressables/Ui/Foods.spriteatlasv2.meta b/Assets/_DDD/_Addressables/Sprites/Ui/Foods.spriteatlasv2.meta similarity index 73% rename from Assets/_DDD/_Addressables/Ui/Foods.spriteatlasv2.meta rename to Assets/_DDD/_Addressables/Sprites/Ui/Foods.spriteatlasv2.meta index 032730439..76713f1bc 100644 --- a/Assets/_DDD/_Addressables/Ui/Foods.spriteatlasv2.meta +++ b/Assets/_DDD/_Addressables/Sprites/Ui/Foods.spriteatlasv2.meta @@ -1,12 +1,12 @@ fileFormatVersion: 2 -guid: 13bbbe2f81166d44688a0e9f581b8a8a +guid: 034ac52b4c3fe854193b7c9c2d353be5 SpriteAtlasImporter: externalObjects: {} textureSettings: serializedVersion: 2 - anisoLevel: 0 - compressionQuality: 0 - maxTextureSize: 0 + anisoLevel: 1 + compressionQuality: 50 + maxTextureSize: 2048 textureCompression: 0 filterMode: 1 generateMipMaps: 0 @@ -17,10 +17,10 @@ SpriteAtlasImporter: packingSettings: serializedVersion: 2 padding: 4 - blockOffset: 0 + blockOffset: 1 allowAlphaSplitting: 0 - enableRotation: 0 - enableTightPacking: 0 + enableRotation: 1 + enableTightPacking: 1 enableAlphaDilation: 0 secondaryTextureSettings: {} variantMultiplier: 1 diff --git a/Assets/_DDD/_Addressables/Ui/Ingredients.spriteatlasv2 b/Assets/_DDD/_Addressables/Sprites/Ui/Ingredients.spriteatlasv2 similarity index 100% rename from Assets/_DDD/_Addressables/Ui/Ingredients.spriteatlasv2 rename to Assets/_DDD/_Addressables/Sprites/Ui/Ingredients.spriteatlasv2 diff --git a/Assets/_DDD/_Addressables/Ui/Ingredients.spriteatlasv2.meta b/Assets/_DDD/_Addressables/Sprites/Ui/Ingredients.spriteatlasv2.meta similarity index 73% rename from Assets/_DDD/_Addressables/Ui/Ingredients.spriteatlasv2.meta rename to Assets/_DDD/_Addressables/Sprites/Ui/Ingredients.spriteatlasv2.meta index 561dc1ea9..23ca45b4a 100644 --- a/Assets/_DDD/_Addressables/Ui/Ingredients.spriteatlasv2.meta +++ b/Assets/_DDD/_Addressables/Sprites/Ui/Ingredients.spriteatlasv2.meta @@ -1,12 +1,12 @@ fileFormatVersion: 2 -guid: 5d82394aa19c5c44eb2e4c888189ec51 +guid: 2007acba03804024a801aee30991e439 SpriteAtlasImporter: externalObjects: {} textureSettings: serializedVersion: 2 - anisoLevel: 0 - compressionQuality: 0 - maxTextureSize: 0 + anisoLevel: 1 + compressionQuality: 50 + maxTextureSize: 2048 textureCompression: 0 filterMode: 1 generateMipMaps: 0 @@ -17,10 +17,10 @@ SpriteAtlasImporter: packingSettings: serializedVersion: 2 padding: 4 - blockOffset: 0 + blockOffset: 1 allowAlphaSplitting: 0 - enableRotation: 0 - enableTightPacking: 0 + enableRotation: 1 + enableTightPacking: 1 enableAlphaDilation: 0 secondaryTextureSettings: {} variantMultiplier: 1 diff --git a/Assets/_DDD/_Raw/OnlyAtlas.meta b/Assets/_DDD/_Raw/Sprites/OnlyAtlas.meta similarity index 100% rename from Assets/_DDD/_Raw/OnlyAtlas.meta rename to Assets/_DDD/_Raw/Sprites/OnlyAtlas.meta diff --git a/Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi.meta b/Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi.meta similarity index 100% rename from Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi.meta rename to Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi.meta diff --git a/Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/CheckLine.png b/Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/CheckLine.png similarity index 100% rename from Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/CheckLine.png rename to Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/CheckLine.png diff --git a/Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/CheckLine.png.meta b/Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/CheckLine.png.meta similarity index 97% rename from Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/CheckLine.png.meta rename to Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/CheckLine.png.meta index d12e94f12..af1eda05d 100644 --- a/Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/CheckLine.png.meta +++ b/Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/CheckLine.png.meta @@ -21,7 +21,7 @@ TextureImporter: heightScale: 0.25 normalMapFilter: 0 flipGreenChannel: 0 - isReadable: 0 + isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 @@ -46,8 +46,8 @@ TextureImporter: spriteMode: 2 spriteExtrude: 2 spriteMeshType: 0 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} + alignment: 9 + spritePivot: {x: 0.5, y: 0.45117188} spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 @@ -123,7 +123,7 @@ TextureImporter: serializedVersion: 2 sprites: - serializedVersion: 2 - name: CheckLine_0 + name: CheckLine rect: serializedVersion: 2 x: 0 @@ -160,7 +160,7 @@ TextureImporter: - key: SpriteEditor.SliceSettings value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":64.0,"y":64.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"slicingType":0,"keepEmptyRects":false,"isAlternate":false}' nameFileIdTable: - CheckLine_0: -502432213 + CheckLine: -502432213 CheckLine_1: 1957413318 mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/CookwareDetailPanel.png b/Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/CookwareDetailPanel.png similarity index 100% rename from Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/CookwareDetailPanel.png rename to Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/CookwareDetailPanel.png diff --git a/Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/CookwareDetailPanel.png.meta b/Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/CookwareDetailPanel.png.meta similarity index 97% rename from Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/CookwareDetailPanel.png.meta rename to Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/CookwareDetailPanel.png.meta index 16ee4a295..0bda8ded9 100644 --- a/Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/CookwareDetailPanel.png.meta +++ b/Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/CookwareDetailPanel.png.meta @@ -21,7 +21,7 @@ TextureImporter: heightScale: 0.25 normalMapFilter: 0 flipGreenChannel: 0 - isReadable: 0 + isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 @@ -46,8 +46,8 @@ TextureImporter: spriteMode: 2 spriteExtrude: 2 spriteMeshType: 0 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} + alignment: 9 + spritePivot: {x: 0.5, y: 0.22851562} spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 @@ -72,7 +72,7 @@ TextureImporter: maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 - textureCompression: 1 + textureCompression: 0 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 diff --git a/Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/IngredientDetailPanel.png b/Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/IngredientDetailPanel.png similarity index 100% rename from Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/IngredientDetailPanel.png rename to Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/IngredientDetailPanel.png diff --git a/Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/IngredientDetailPanel.png.meta b/Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/IngredientDetailPanel.png.meta similarity index 98% rename from Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/IngredientDetailPanel.png.meta rename to Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/IngredientDetailPanel.png.meta index 78230bf1b..f4ee184f1 100644 --- a/Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/IngredientDetailPanel.png.meta +++ b/Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/IngredientDetailPanel.png.meta @@ -21,7 +21,7 @@ TextureImporter: heightScale: 0.25 normalMapFilter: 0 flipGreenChannel: 0 - isReadable: 0 + isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 @@ -46,8 +46,8 @@ TextureImporter: spriteMode: 2 spriteExtrude: 2 spriteMeshType: 0 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} + alignment: 9 + spritePivot: {x: 0.5, y: 0.22851562} spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 diff --git a/Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/RecipeDetailPanel.png b/Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/RecipeDetailPanel.png similarity index 100% rename from Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/RecipeDetailPanel.png rename to Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/RecipeDetailPanel.png diff --git a/Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/RecipeDetailPanel.png.meta b/Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/RecipeDetailPanel.png.meta similarity index 98% rename from Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/RecipeDetailPanel.png.meta rename to Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/RecipeDetailPanel.png.meta index 6ae441ce2..f32937c65 100644 --- a/Assets/_DDD/_Raw/OnlyAtlas/RestaurantManagementUi/RecipeDetailPanel.png.meta +++ b/Assets/_DDD/_Raw/Sprites/OnlyAtlas/RestaurantManagementUi/RecipeDetailPanel.png.meta @@ -21,7 +21,7 @@ TextureImporter: heightScale: 0.25 normalMapFilter: 0 flipGreenChannel: 0 - isReadable: 0 + isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 @@ -46,8 +46,8 @@ TextureImporter: spriteMode: 2 spriteExtrude: 2 spriteMeshType: 0 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} + alignment: 9 + spritePivot: {x: 0.5, y: 0.22851562} spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 diff --git a/Assets/_DDD/_Raw/Ui.meta b/Assets/_DDD/_Raw/Sprites/Ui.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui.meta rename to Assets/_DDD/_Raw/Sprites/Ui.meta diff --git a/Assets/_DDD/_Raw/Ui/Common.meta b/Assets/_DDD/_Raw/Sprites/Ui/Common.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Common.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Common.meta diff --git a/Assets/_DDD/_Raw/Ui/Common/CheckNo.png b/Assets/_DDD/_Raw/Sprites/Ui/Common/CheckNo.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Common/CheckNo.png rename to Assets/_DDD/_Raw/Sprites/Ui/Common/CheckNo.png diff --git a/Assets/_DDD/_Raw/Ui/Common/CheckNo.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Common/CheckNo.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Common/CheckNo.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Common/CheckNo.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Common/CheckYes.png b/Assets/_DDD/_Raw/Sprites/Ui/Common/CheckYes.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Common/CheckYes.png rename to Assets/_DDD/_Raw/Sprites/Ui/Common/CheckYes.png diff --git a/Assets/_DDD/_Raw/Ui/Common/CheckYes.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Common/CheckYes.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Common/CheckYes.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Common/CheckYes.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Common/EmptyDrink.png b/Assets/_DDD/_Raw/Sprites/Ui/Common/EmptyDrink.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Common/EmptyDrink.png rename to Assets/_DDD/_Raw/Sprites/Ui/Common/EmptyDrink.png diff --git a/Assets/_DDD/_Raw/Ui/Common/EmptyDrink.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Common/EmptyDrink.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Common/EmptyDrink.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Common/EmptyDrink.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Common/EmptyFood.png b/Assets/_DDD/_Raw/Sprites/Ui/Common/EmptyFood.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Common/EmptyFood.png rename to Assets/_DDD/_Raw/Sprites/Ui/Common/EmptyFood.png diff --git a/Assets/_DDD/_Raw/Ui/Common/EmptyFood.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Common/EmptyFood.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Common/EmptyFood.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Common/EmptyFood.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Drinks.meta b/Assets/_DDD/_Raw/Sprites/Ui/Drinks.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Drinks.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Drinks.meta diff --git a/Assets/_DDD/_Raw/Ui/Drinks/item_drink_001.png b/Assets/_DDD/_Raw/Sprites/Ui/Drinks/item_drink_001.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Drinks/item_drink_001.png rename to Assets/_DDD/_Raw/Sprites/Ui/Drinks/item_drink_001.png diff --git a/Assets/_DDD/_Raw/Ui/Drinks/item_drink_001.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Drinks/item_drink_001.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Drinks/item_drink_001.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Drinks/item_drink_001.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Drinks/item_drink_002.png b/Assets/_DDD/_Raw/Sprites/Ui/Drinks/item_drink_002.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Drinks/item_drink_002.png rename to Assets/_DDD/_Raw/Sprites/Ui/Drinks/item_drink_002.png diff --git a/Assets/_DDD/_Raw/Ui/Drinks/item_drink_002.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Drinks/item_drink_002.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Drinks/item_drink_002.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Drinks/item_drink_002.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Drinks/item_drink_003.png b/Assets/_DDD/_Raw/Sprites/Ui/Drinks/item_drink_003.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Drinks/item_drink_003.png rename to Assets/_DDD/_Raw/Sprites/Ui/Drinks/item_drink_003.png diff --git a/Assets/_DDD/_Raw/Ui/Drinks/item_drink_003.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Drinks/item_drink_003.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Drinks/item_drink_003.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Drinks/item_drink_003.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Drinks/item_drink_004.png b/Assets/_DDD/_Raw/Sprites/Ui/Drinks/item_drink_004.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Drinks/item_drink_004.png rename to Assets/_DDD/_Raw/Sprites/Ui/Drinks/item_drink_004.png diff --git a/Assets/_DDD/_Raw/Ui/Drinks/item_drink_004.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Drinks/item_drink_004.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Drinks/item_drink_004.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Drinks/item_drink_004.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Foods.meta b/Assets/_DDD/_Raw/Sprites/Ui/Foods.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Foods.meta diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_001.png b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_001.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_001.png rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_001.png diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_001.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_001.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_001.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_001.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_002.png b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_002.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_002.png rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_002.png diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_002.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_002.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_002.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_002.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_003.png b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_003.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_003.png rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_003.png diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_003.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_003.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_003.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_003.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_004.png b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_004.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_004.png rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_004.png diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_004.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_004.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_004.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_004.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_006.png b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_006.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_006.png rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_006.png diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_006.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_006.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_006.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_006.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_007.png b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_007.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_007.png rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_007.png diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_007.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_007.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_007.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_007.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_008.png b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_008.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_008.png rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_008.png diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_008.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_008.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_008.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_008.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_009.png b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_009.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_009.png rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_009.png diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_009.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_009.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_009.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_009.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_011.png b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_011.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_011.png rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_011.png diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_011.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_011.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_011.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_011.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_012.png b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_012.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_012.png rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_012.png diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_012.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_012.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_012.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_012.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_013.png b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_013.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_013.png rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_013.png diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_013.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_013.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_013.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_013.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_014.png b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_014.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_014.png rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_014.png diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_014.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_014.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_014.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_014.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_017.png b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_017.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_017.png rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_017.png diff --git a/Assets/_DDD/_Raw/Ui/Foods/item_food_017.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_017.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Foods/item_food_017.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Foods/item_food_017.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Ingredients.meta b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients.meta diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_001.png b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_001.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_001.png rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_001.png diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_001.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_001.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_001.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_001.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_002.png b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_002.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_002.png rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_002.png diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_002.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_002.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_002.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_002.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_003.png b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_003.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_003.png rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_003.png diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_003.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_003.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_003.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_003.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_004.png b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_004.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_004.png rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_004.png diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_004.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_004.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_004.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_004.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_005.png b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_005.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_005.png rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_005.png diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_005.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_005.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_005.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_005.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_006.png b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_006.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_006.png rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_006.png diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_006.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_006.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_006.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_006.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_007.png b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_007.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_007.png rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_007.png diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_007.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_007.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_007.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_007.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_008.png b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_008.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_008.png rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_008.png diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_008.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_008.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_008.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_008.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_009.png b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_009.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_009.png rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_009.png diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_009.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_009.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_009.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_009.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_010.png b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_010.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_010.png rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_010.png diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_010.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_010.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_010.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_010.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_014.png b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_014.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_014.png rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_014.png diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_014.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_014.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_014.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_014.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_015.png b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_015.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_015.png rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_015.png diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_015.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_015.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_015.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_015.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_018.png b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_018.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_018.png rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_018.png diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_018.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_018.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_018.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_018.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_021.png b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_021.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_021.png rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_021.png diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_021.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_021.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_021.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_021.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_022.png b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_022.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_022.png rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_022.png diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_022.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_022.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_022.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_022.png.meta diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_023.png b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_023.png similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_023.png rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_023.png diff --git a/Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_023.png.meta b/Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_023.png.meta similarity index 100% rename from Assets/_DDD/_Raw/Ui/Ingredients/item_ingredient_023.png.meta rename to Assets/_DDD/_Raw/Sprites/Ui/Ingredients/item_ingredient_023.png.meta diff --git a/Assets/_DDD/_Scripts/AssetPostprocessors/AssetPostProcessors.cs b/Assets/_DDD/_Scripts/AssetPostprocessors/AssetPostProcessors.cs index a2682ead5..19c7b32e5 100644 --- a/Assets/_DDD/_Scripts/AssetPostprocessors/AssetPostProcessors.cs +++ b/Assets/_DDD/_Scripts/AssetPostprocessors/AssetPostProcessors.cs @@ -15,15 +15,18 @@ private void OnPreprocessTexture() if (upperPath.Contains(PathConstants.RawUiPathUpper)) { - AssetPostprocessorSprite.OnPreprocessTextureForUi(importer); - } - else if (upperPath.Contains(PathConstants.RawSpritesPathUpper)) - { - AssetPostprocessorSprite.OnPreprocessTexture(importer); - } - else if (upperPath.Contains(PathConstants.RawOnlyAtlasPathUpper)) - { - AssetPostprocessorSprite.OnPreprocessTextureOnlyAtlas(importer); + if (upperPath.Contains(PathConstants.RawOnlyAtlasPathUpper)) + { + AssetPostprocessorSprite.OnPreprocessTextureOnlyAtlas(importer); + } + else if (upperPath.Contains(PathConstants.RawSpritesPathUpper)) + { + AssetPostprocessorSprite.OnPreprocessTexture(importer); + } + else + { + AssetPostprocessorSprite.OnPreprocessTextureForUi(importer); + } } } diff --git a/Assets/_DDD/_Scripts/Utilities/Constants.cs b/Assets/_DDD/_Scripts/Utilities/Constants.cs index f9acf6e3f..8de426db0 100644 --- a/Assets/_DDD/_Scripts/Utilities/Constants.cs +++ b/Assets/_DDD/_Scripts/Utilities/Constants.cs @@ -38,8 +38,8 @@ public static class RestaurantPlayerAnimation public static class PathConstants { public const string RawSpritesPathUpper = "ASSETS/_DDD/_RAW/SPRITES/"; - public const string RawUiPathUpper = "ASSETS/_DDD/_RAW/UI/"; - public const string RawOnlyAtlasPathUpper = "ASSETS/_DDD/_RAW/ONLYATLAS/"; + public const string RawUiPathUpper = "ASSETS/_DDD/_RAW/SPRITES/UI/"; + public const string RawOnlyAtlasPathUpper = "ASSETS/_DDD/_RAW/SPRITES/ONLYATLAS/"; public const string RawFolderPath = "/_Raw"; public const string AddressablesFolderPath = "/_Addressables"; } From 6feedab1e0171fb7730832a1aa4ec54216107b77 Mon Sep 17 00:00:00 2001 From: NTG_Lenovo Date: Thu, 31 Jul 2025 19:06:42 +0900 Subject: [PATCH 4/4] =?UTF-8?q?sprite=20atlas=20gitignore=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c3d7fec78..07047739f 100644 --- a/.gitignore +++ b/.gitignore @@ -97,4 +97,5 @@ packages-lock.json #Assets/_Datas/Raw/ # 특정 atlas 파일 무시 -#Assets/_Datas/Addressables/Sprites/Items.spriteatlasv2 \ No newline at end of file +# Unity SpriteAtlas auto-generated files +Assets/_DDD/_Addressables/Sprites/ \ No newline at end of file