From 72756712f7cc5a60b4ce077ebc1968e44901b116 Mon Sep 17 00:00:00 2001 From: SoulliesOfficial Date: Wed, 27 May 2026 15:15:28 -0400 Subject: [PATCH] =?UTF-8?q?UI=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Characters/Soullies/Coat.mat | 6 +- Assets/Characters/Soullies/Decorations.mat | 6 +- Assets/Characters/Soullies/Hair01.mat | 6 +- Assets/Characters/Soullies/Hair02.mat | 6 +- Assets/Characters/Soullies/Hands.mat | 6 +- Assets/Characters/Soullies/Head.mat | 6 +- Assets/Characters/Soullies/Legs.mat | 6 +- Assets/Characters/Soullies/Shirt Skirt.mat | 6 +- .../Materials/Arrow/BloodSplash.mat | 14 +- Assets/Fonts/SDF/ZQK/ZQK Font SDF Glow.mat | 682 +++++++++ .../SDF/ZQK/ZQK Font SDF Glow.mat.meta} | 6 +- Assets/Fonts/SDF/ZQK/ZQK Font SDF Outline.mat | 111 ++ .../SDF/ZQK/ZQK Font SDF Outline.mat.meta | 8 + .../Conditionals/CheckCooldownTimer.cs | 2 +- Assets/OtherPlugins/Le Tai's Asset.meta | 9 - .../OtherPlugins/Le Tai's Asset/Common.meta | 3 - .../Le Tai's Asset/Common/Editor/Assets.cs | 24 - .../Common/Editor/Assets.cs.meta | 10 - .../Common/Editor/EditorCustom.cs | 73 - .../Common/Editor/EditorCustom.cs.meta | 10 - .../Common/Editor/EditorInternal.cs | 69 - .../Common/Editor/EditorInternal.cs.meta | 10 - .../Common/Editor/EditorPrefValue.cs | 57 - .../Common/Editor/EditorPrefValue.cs.meta | 10 - .../Common/Editor/EditorProperty.cs | 96 -- .../Common/Editor/EditorUtils.cs | 67 - .../Common/Editor/EditorUtils.cs.meta | 10 - .../Le Tai's Asset/Common/Editor/Knob.cs | 114 -- .../Common/Editor/LeTai.Common.Editor.asmdef | 16 - .../Editor/LeTai.Common.Editor.asmdef.meta | 14 - .../Common/Editor/MathCustom.cs | 24 - .../Common/Editor/MathCustom.cs.meta | 10 - .../Common/Editor/SpringPropertyDrawer.cs | 52 - .../Editor/SpringPropertyDrawer.cs.meta | 10 - .../Common/Runtime/LeTai.Common.asmdef | 14 - .../Common/Runtime/LeTai.Common.asmdef.meta | 14 - .../Common/Runtime/MaterialUtils.cs | 37 - .../Common/Runtime/MaterialUtils.cs.meta | 10 - .../Le Tai's Asset/Common/Runtime/Packing.cs | 111 -- .../Common/Runtime/Packing.cs.meta | 10 - .../Common/Runtime/RectTransformUtility.cs | 44 - .../Runtime/RectTransformUtility.cs.meta | 10 - .../Common/Runtime/SpanUtils.cs | 45 - .../Common/Runtime/SpanUtils.cs.meta | 10 - .../Common/Runtime/TinyTween.cs | 245 ---- .../Common/Runtime/TinyTween.cs.meta | 10 - .../Le Tai's Asset/TranslucentImage.meta | 9 - .../TranslucentImage/CHANGELOG.txt | 346 ----- .../TranslucentImage/CHANGELOG.txt.meta | 14 - .../LeTai.TranslucentImage.asmdef | 21 - .../LeTai.TranslucentImage.asmdef.meta | 14 - .../Material/Default-Translucent.mat | 125 -- .../Material/Default-Translucent.mat.meta | 17 - .../Offline Documentation.pdf | Bin 771999 -> 0 bytes .../Offline Documentation.pdf.meta | 15 - .../Online Documentation (recommended).txt | 1 - ...nline Documentation (recommended).txt.meta | 14 - .../TranslucentImage/Resources.meta | 9 - .../Resources/Shaders/EfficientBlur.hlsl | 75 - .../Resources/Shaders/EfficientBlur.hlsl.meta | 10 - .../Resources/Shaders/EfficientBlur.shader | 28 - .../Shaders/EfficientBlur.shader.meta | 16 - .../Resources/Shaders/FillCrop.shader | 60 - .../Resources/Shaders/FillCrop.shader.meta | 16 - .../Resources/Shaders/TranslucentImage.hlsl | 199 --- .../Shaders/TranslucentImage.hlsl.meta | 10 - .../Resources/Shaders/TranslucentImage.shader | 106 -- .../Shaders/TranslucentImage.shader.meta | 16 - .../Resources/Shaders/blending.hlsl | 50 - .../Resources/Shaders/blending.hlsl.meta | 10 - .../Resources/Shaders/common.hlsl | 99 -- .../Resources/Shaders/common.hlsl.meta | 16 - .../Resources/Shaders/fullscreen.hlsl | 61 - .../Resources/Shaders/fullscreen.hlsl.meta | 10 - .../Resources/Shaders/interop_birp.cginc | 19 - .../Resources/Shaders/interop_birp.cginc.meta | 18 - .../Resources/Shaders/packing.hlsl | 71 - .../Resources/Shaders/packing.hlsl.meta | 10 - .../Translucent Image Default Resources.asset | 16 - ...slucent Image Default Resources.asset.meta | 16 - .../TranslucentImage/Resources/URP.meta | 8 - .../URP/EfficientBlur_UniversalRP.shader | 34 - .../URP/EfficientBlur_UniversalRP.shader.meta | 9 - .../Resources/URP/FillCrop_UniversalRP.shader | 58 - .../URP/FillCrop_UniversalRP.shader.meta | 9 - .../Resources/URP/interop_urp.hlsl | 6 - .../Resources/URP/interop_urp.hlsl.meta | 3 - .../TranslucentImage/Script.meta | 9 - .../TranslucentImage/Script/ActiveRegion.cs | 31 - .../Script/ActiveRegion.cs.meta | 10 - .../Script/ActiveRegionMergeJob.cs | 66 - .../Script/ActiveRegionMergeJob.cs.meta | 10 - .../TranslucentImage/Script/AssemblyInfo.cs | 4 - .../Script/AssemblyInfo.cs.meta | 10 - .../Script/BlurAlgorithm.meta | 3 - .../Script/BlurAlgorithm/BlurConfig.cs | 9 - .../Script/BlurAlgorithm/BlurConfig.cs.meta | 18 - .../Script/BlurAlgorithm/IBlurAlgorithm.cs | 44 - .../BlurAlgorithm/IBlurAlgorithm.cs.meta | 10 - .../Script/BlurAlgorithm/ScalableBlur.cs | 227 --- .../Script/BlurAlgorithm/ScalableBlur.cs.meta | 10 - .../BlurAlgorithm/ScalableBlurConfig.cs | 143 -- .../BlurAlgorithm/ScalableBlurConfig.cs.meta | 18 - .../Script/DefaultResources.cs | 40 - .../Script/DefaultResources.cs.meta | 10 - .../TranslucentImage/Script/Editor.meta | 9 - .../Script/Editor/AssemblyInfo.cs | 5 - .../Script/Editor/AssemblyInfo.cs.meta | 10 - ...LeTai.Asset.TranslucentImage.Editor.asmdef | 27 - ....Asset.TranslucentImage.Editor.asmdef.meta | 14 - .../Script/Editor/MaterialEditorGUI.cs | 39 - .../Script/Editor/MaterialEditorGUI.cs.meta | 10 - .../Script/Editor/MenuIntegration.cs | 176 --- .../Script/Editor/MenuIntegration.cs.meta | 19 - .../Script/Editor/Migration.cs | 79 - .../Script/Editor/Migration.cs.meta | 18 - .../Script/Editor/Resources.meta | 8 - .../Editor/Resources/BlurConfig Icon.png | 3 - .../Editor/Resources/BlurConfig Icon.png.meta | 114 -- .../Editor/Resources/BlurSource Icon.png | 3 - .../Editor/Resources/BlurSource Icon.png.meta | 114 -- .../Script/Editor/Resources/Knob_BG.png | 3 - .../Script/Editor/Resources/Knob_BG.png.meta | 142 -- .../Script/Editor/Resources/Knob_FG.png | 3 - .../Script/Editor/Resources/Knob_FG.png.meta | 142 -- .../Resources/TranslucentImage Icon.png | 3 - .../Resources/TranslucentImage Icon.png.meta | 114 -- .../Editor/Resources/round_corner_bl.png | 3 - .../Editor/Resources/round_corner_bl.png.meta | 142 -- .../Editor/Resources/round_corner_br.png | 3 - .../Editor/Resources/round_corner_br.png.meta | 142 -- .../Editor/Resources/round_corner_tl.png | 3 - .../Editor/Resources/round_corner_tl.png.meta | 142 -- .../Editor/Resources/round_corner_tr.png | 3 - .../Editor/Resources/round_corner_tr.png.meta | 142 -- .../Script/Editor/ScalableBlurConfigEditor.cs | 143 -- .../Editor/ScalableBlurConfigEditor.cs.meta | 10 - .../Script/Editor/ScenceGizmoAutoDisable.cs | 55 - .../Editor/ScenceGizmoAutoDisable.cs.meta | 10 - .../Script/Editor/TranslucentImageEditor.cs | 427 ------ .../Editor/TranslucentImageEditor.cs.meta | 19 - .../Editor/TranslucentImageShaderGUI.cs | 244 ---- .../Editor/TranslucentImageShaderGUI.cs.meta | 10 - .../Editor/TranslucentImageSourceEditor.cs | 107 -- .../TranslucentImageSourceEditor.cs.meta | 19 - .../Script/ParaformScaffold.meta | 8 - .../Script/ParaformScaffold/Editor.meta | 8 - .../LeTai.Paraform.Scaffold.Editor.asmdef | 20 - ...LeTai.Paraform.Scaffold.Editor.asmdef.meta | 14 - .../ParaformScaffold/Editor/ParaformEditor.cs | 197 --- .../Editor/ParaformEditor.cs.meta | 18 - .../Script/ParaformScaffold/Runtime.meta | 8 - .../ParaformScaffold/Runtime/AssemblyInfo.cs | 3 - .../Runtime/AssemblyInfo.cs.meta | 18 - .../Runtime/LeTai.Paraform.Scaffold.asmdef | 16 - .../LeTai.Paraform.Scaffold.asmdef.meta | 14 - .../Runtime/ParaformConfig.cs | 142 -- .../Runtime/ParaformConfig.cs.meta | 18 - .../Runtime/ParaformMaterial.cs | 134 -- .../Runtime/ParaformMaterial.cs.meta | 10 - .../Script/TranslucentImage.Paraform.cs | 171 --- .../Script/TranslucentImage.Paraform.cs.meta | 10 - .../Script/TranslucentImage.TrueShadow.cs | 32 - .../TranslucentImage.TrueShadow.cs.meta | 10 - .../Script/TranslucentImage.cs | 419 ------ .../Script/TranslucentImage.cs.meta | 18 - .../TranslucentImageEditorEnhancement.cs | 26 - .../TranslucentImageEditorEnhancement.cs.meta | 18 - .../Script/TranslucentImageSource.cs | 633 -------- .../Script/TranslucentImageSource.cs.meta | 18 - .../TranslucentImage/Script/URP.meta | 8 - .../TranslucentImage/Script/URP/Editor.meta | 8 - ...TranslucentImage.UniversalRP.Editor.asmdef | 18 - .../URP/Editor/RendererFeatureChecker.cs | 81 -- .../URP/Editor/RendererFeatureChecker.cs.meta | 11 - .../TranslucentImageBlurSourceEditor.cs | 31 - .../TranslucentImageBlurSourceEditor.cs.meta | 11 - .../LeTai.TranslucentImage.UniversalRP.asmdef | 24 - .../Script/URP/Render Pass.meta | 8 - .../TranslucentImageBlurRenderPass.cs | 187 --- .../TranslucentImageBlurRenderPass.cs.meta | 11 - ...anslucentImageBlurRenderPassRenderGraph.cs | 173 --- ...centImageBlurRenderPassRenderGraph.cs.meta | 11 - .../Render Pass/TranslucentImageBlurSource.cs | 361 ----- .../TranslucentImageBlurSource.cs.meta | 11 - .../TranslucentImage/Script/Utilities.meta | 8 - .../Script/Utilities/Blitter.cs | 65 - .../Script/Utilities/Blitter.cs.meta | 10 - .../Script/Utilities/BlurExecutor.cs | 73 - .../Script/Utilities/BlurExecutor.cs.meta | 18 - .../Script/Utilities/RectUtils.cs | 75 - .../Script/Utilities/RectUtils.cs.meta | 10 - .../Script/Utilities/ResizableScreenRect.cs | 179 --- .../Utilities/ResizableScreenRect.cs.meta | 18 - .../Script/Utilities/ShaderID.cs | 37 - .../Script/Utilities/ShaderID.cs.meta | 18 - .../Script/Utilities/Shims.cs | 36 - .../Script/Utilities/Shims.cs.meta | 18 - .../TranslucentImage/Script/VPMatrixCache.cs | 79 - .../Script/VPMatrixCache.cs.meta | 10 - .../TranslucentImage/URP README.txt | 5 - .../TranslucentImage/URP README.txt.meta | 14 - .../Common/Prefabs/Cube.prefab.meta | 4 +- .../Common/Prefabs/CubeRoup.prefab.meta | 4 +- .../Common/Prefabs/Env.prefab.meta | 4 +- .../Common/Prefabs/Plane.prefab.meta | 4 +- .../Prefabs/RuntimeBuildDemo.prefab.meta | 4 +- .../Prefabs/RuntimeDressUpDemo.prefab.meta | 4 +- .../Prefabs/SimpleImputManager.prefab.meta | 4 +- .../Common/Prefabs/Stage.prefab.meta | 4 +- .../Common/Prefabs/UI_KAGURA.prefab.meta | 4 +- .../Prefabs/UI_RuntimeBuild.prefab.meta | 4 +- .../Prefabs/UI_RuntimeDressUp.prefab.meta | 4 +- .../Common/Prefabs/UI_Wind.prefab.meta | 4 +- .../Common/Prefabs/WindDemo.prefab.meta | 4 +- .../Common/Prefabs/WindParticle.prefab.meta | 4 +- .../MC2_BoneCloth_Ribbon_Demo.json.meta | 4 +- .../Common/Scripts/AutoRotate.cs.meta | 4 +- .../Common/Scripts/CameraOrbit.cs.meta | 4 +- ...caCloth2UPMImporterShaderGraph.asmdef.meta | 4 +- .../ShaderGraph/UnityPackageImporter.cs.meta | 4 +- .../Scripts/GameObjectContainer.cs.meta | 4 +- .../Scripts/MagicaCloth2Example.asmdef.meta | 4 +- .../Common/Scripts/ModelController.cs.meta | 4 +- .../Common/Scripts/RuntimeBuildDemo.cs.meta | 4 +- .../Common/Scripts/RuntimeDressUpDemo.cs.meta | 4 +- .../Common/Scripts/SimpleInput.cs.meta | 4 +- .../Common/Scripts/SimpleInputManager.cs.meta | 4 +- .../Common/Scripts/SliderText.cs.meta | 4 +- .../Common/Scripts/TargetFPS.cs.meta | 4 +- .../Common/Scripts/WindDemo.cs.meta | 4 +- .../MC2_Common_Lit_Back.shadergraph.meta | 4 +- .../MC2_Common_Lit_Front.shadergraph.meta | 4 +- .../SD_UnityChan_Skirt_PaintMap.png.meta | 4 +- .../CoreRP/RuntimeBuild_CoreRP.unity.meta | 4 +- .../CoreRP/RuntimeDressUp_CoreRP.unity.meta | 4 +- .../CoreRP/UnityChanKAGURA_CoreRP.unity.meta | 4 +- .../MC2_SkyandFogSettingsProfile.asset.meta | 4 +- .../HDRP/RuntimeBuild_HDRP.unity.meta | 4 +- .../HDRP/RuntimeDressUp_HDRP.unity.meta | 4 +- .../HDRP/UnityChanKAGURA_HDRP.unity.meta | 4 +- .../DemoScenes/HDRP/Wind_HDRP.unity.meta | 4 +- .../URP/RuntimeBuild_URP.unity.meta | 4 +- .../URP/RuntimeDressUp_URP.unity.meta | 4 +- .../URP/UnityChanKAGURA_URP.unity.meta | 4 +- .../DemoScenes/URP/Wind_URP.unity.meta | 4 +- .../RuntimeBuild_HighDefinition3D.unity.meta | 4 +- ...RuntimeDressUp_HighDefinition3D.unity.meta | 4 +- ...nityChanKAGURA_HighDefinition3D.unity.meta | 4 +- .../Wind_HighDefinition3D.unity.meta | 4 +- .../RuntimeBuild_Universal3D.unity.meta | 4 +- .../RuntimeDressUp_Universal3D.unity.meta | 4 +- .../UnityChanKAGURA_Universal3D.unity.meta | 4 +- .../Universal3D/Wind_Universal3D.unity.meta | 4 +- .../UnityChan/Logo/Dark_Silhouette.png.meta | 4 +- .../SD_UnityChan.controller.meta | 4 +- .../Textures/body_sum.png.meta | 4 +- .../Textures/body_win.png.meta | 4 +- .../Textures/misaki_head.png.meta | 4 +- .../Textures/utc_all2.png.meta | 4 +- .../Textures/yuko_head.png.meta | 4 +- .../Utc_sum_humanoid (Body).prefab.meta | 4 +- .../Utc_sum_humanoid (Hair).prefab.meta | 4 +- .../Utc_sum_humanoid (Skeleton).prefab.meta | 4 +- ...nse Terms and Condition_EN_UCL2.0.pdf.meta | 4 +- ...s and Condition_Summary_EN_UCL2.0.pdf.meta | 4 +- ...03Indication of License_EN_UCL2.0.pdf.meta | 4 +- ...nse Terms and Condition_JP_UCL2.0.pdf.meta | 4 +- ...s and Condition_Summary_JP_UCL2.0.pdf.meta | 4 +- ...03Indication of License_JP_UCL2.0.pdf.meta | 4 +- .../License Logo/LUUL_LOGO_rules02.ai.meta | 4 +- .../License Logo/LUUL_LOGO_rules02.psd.meta | 4 +- .../License Logo/LUUL_logo-guideline.pdf.meta | 4 +- .../LUUL_logo-guideline_en.pdf.meta | 4 +- .../Others/jpg/Dark_Silhouette.jpg.meta | 4 +- .../Others/jpg/Light_Silhouette.jpg.meta | 4 +- .../Others/png/Dark_Silhouette.png.meta | 4 +- .../Others/png/Light_Frame.png.meta | 4 +- .../Others/png/Light_Silhouette.png.meta | 4 +- .../UnityChan/Unity-Chan License.txt.meta | 4 +- .../Animation/RUN00_F.anim.meta | 4 +- .../UC01_001_UniteInTheSky -WA-.fbx.meta | 4 +- .../Animation/WAIT02.anim.meta | 4 +- .../Animation/WAIT04.anim.meta | 4 +- .../Animation/WALK00_F.anim.meta | 4 +- .../UnityChanKAGURA/Animation/WIN00.anim.meta | 4 +- .../UnityChanKAGURA/Materials/Albedo.mat.meta | 4 +- .../Materials/TEX/PNG/Body_Base.png.meta | 4 +- .../Materials/TEX/PNG/Body_Emi.png.meta | 4 +- .../Materials/TEX/PNG/Body_SGM.png.meta | 4 +- .../Materials/TEX/PNG/Body_Shd1.png.meta | 4 +- .../Materials/TEX/PNG/Body_Shd2.png.meta | 4 +- .../Materials/TEX/PNG/Body_Spc.png.meta | 4 +- .../Materials/TEX/PNG/Face_Base.png.meta | 4 +- .../Materials/TEX/PNG/Face_Emi.png.meta | 4 +- .../Materials/TEX/PNG/Face_LSM.png.meta | 4 +- .../Materials/TEX/PNG/Face_Rim.png.meta | 4 +- .../Materials/TEX/PNG/Face_SGM.png.meta | 4 +- .../Materials/TEX/PNG/Face_Shd1.png.meta | 4 +- .../Materials/TEX/PNG/Face_Shd2.png.meta | 4 +- .../Materials/TEX/PNG/Hair_SGM.png.meta | 4 +- .../Materials/TEX/PNG/Headfgear_Base.png.meta | 4 +- .../Materials/TEX/PNG/Skin_Base.png.meta | 4 +- .../Materials/TEX/PNG/Skin_Emi.png.meta | 4 +- .../Materials/TEX/PNG/Skin_Nrm.png.meta | 4 +- .../Materials/TEX/PNG/Skin_Rim.png.meta | 4 +- .../Materials/TEX/PNG/Skin_SGM.png.meta | 4 +- .../Materials/TEX/PNG/Skin_Spc.png.meta | 4 +- .../Materials/TEX/PNG/Skin_SpcCol.png.meta | 4 +- .../UniteInTheSky.controller.meta | 4 +- .../UnityChanKAGURA/UnityCHanKAGURA.fbx.meta | 4 +- .../UnityCHanKAGURA_MC2.prefab.meta | 4 +- .../MagicaCloth2/MagicaCloth2.asmdef.meta | 4 +- .../OtherPlugins/MagicaCloth2/Readme.txt.meta | 4 +- .../MagicaCloth2/Readme_jpn.txt.meta | 4 +- .../MagicaCloth2/Res/Icon/icon-cloth.png.meta | 4 +- .../Res/Icon/icon-collider.png.meta | 4 +- .../Res/Icon/icon-settings.png.meta | 4 +- .../MagicaCloth2/Res/Icon/icon-wind.png.meta | 4 +- .../Res/Preset/MC2_Preset_Accessory.json.meta | 4 +- .../Res/Preset/MC2_Preset_Cape.json.meta | 4 +- .../Res/Preset/MC2_Preset_FrontHair.json.meta | 4 +- .../Preset/MC2_Preset_HardSpring.json.meta | 4 +- .../Res/Preset/MC2_Preset_LongHair.json.meta | 4 +- .../Preset/MC2_Preset_MiddleSpring.json.meta | 4 +- .../Res/Preset/MC2_Preset_ShortHair.json.meta | 4 +- .../Res/Preset/MC2_Preset_Skirt.json.meta | 4 +- .../Res/Preset/MC2_Preset_SoftSkirt.json.meta | 4 +- .../Preset/MC2_Preset_SoftSpring.json.meta | 4 +- .../Res/Preset/MC2_Preset_Tail.json.meta | 4 +- .../Cloth/CheckSliderSerializeData.cs.meta | 4 +- .../Scripts/Core/Cloth/ClothBehaviour.cs.meta | 4 +- .../Scripts/Core/Cloth/ClothDisableMode.cs | 22 + .../Core/Cloth/ClothDisableMode.cs.meta} | 12 +- .../Scripts/Core/Cloth/ClothForceMode.cs.meta | 4 +- .../Core/Cloth/ClothInitSerializeData.cs | 2 +- .../Core/Cloth/ClothInitSerializeData.cs.meta | 4 +- .../Core/Cloth/ClothMeshWriteMode.cs.meta | 4 +- .../Core/Cloth/ClothNormalAxis.cs.meta | 4 +- .../Core/Cloth/ClothParameters.cs.meta | 4 +- .../Scripts/Core/Cloth/ClothProcess.cs | 40 +- .../Scripts/Core/Cloth/ClothProcess.cs.meta | 4 +- .../Scripts/Core/Cloth/ClothProcessData.cs | 21 +- .../Core/Cloth/ClothProcessData.cs.meta | 4 +- .../Core/Cloth/ClothProcessGeneration.cs | 2 +- .../Core/Cloth/ClothProcessGeneration.cs.meta | 4 +- .../Scripts/Core/Cloth/ClothSerializeData.cs | 8 + .../Core/Cloth/ClothSerializeData.cs.meta | 4 +- .../Scripts/Core/Cloth/ClothSerializeData2.cs | 2 +- .../Core/Cloth/ClothSerializeData2.cs.meta | 4 +- .../Core/Cloth/ClothSerializeDataFunction.cs | 16 +- .../Cloth/ClothSerializeDataFunction.cs.meta | 4 +- .../Core/Cloth/ClothUpdateMode.cs.meta | 4 +- .../Core/Cloth/Collider/ColliderComponent.cs | 6 +- .../Cloth/Collider/ColliderComponent.cs.meta | 4 +- .../Collider/ColliderSymmetryMode.cs.meta | 4 +- .../Collider/MagicaCapsuleCollider.cs.meta | 4 +- .../Collider/MagicaPlaneCollider.cs.meta | 4 +- .../Collider/MagicaSphereCollider.cs.meta | 4 +- .../Cloth/Constraints/AngleConstraint.cs.meta | 4 +- .../ColliderCollisionConstraint.cs | 8 +- .../ColliderCollisionConstraint.cs.meta | 4 +- .../Constraints/DistanceConstraint.cs.meta | 4 +- .../Constraints/InertiaConstraint.cs.meta | 4 +- .../Constraints/MotionConstraint.cs.meta | 4 +- .../SelfCollisionConstraint.cs.meta | 4 +- .../Constraints/SpringConstraint.cs.meta | 4 +- .../Constraints/TetherConstraint.cs.meta | 4 +- .../TriangleBendingConstraint.cs.meta | 4 +- .../Core/Cloth/CullingSettings.cs.meta | 4 +- .../Core/Cloth/CurveSerializeData.cs.meta | 4 +- .../Core/Cloth/CustomSkinningSettings.cs | 6 +- .../Core/Cloth/CustomSkinningSettings.cs.meta | 4 +- .../Core/Cloth/GizmoSerializeData.cs.meta | 4 +- .../Scripts/Core/Cloth/MagicaCloth.cs | 2 +- .../Scripts/Core/Cloth/MagicaCloth.cs.meta | 4 +- .../Scripts/Core/Cloth/MagicaClothAPI.cs | 6 +- .../Scripts/Core/Cloth/MagicaClothAPI.cs.meta | 4 +- .../MagicaClothAnimationProperty.cs.meta | 4 +- .../Core/Cloth/NormalAlignmentSettings.cs | 8 +- .../Cloth/NormalAlignmentSettings.cs.meta | 4 +- .../Scripts/Core/Cloth/SelectionData.cs.meta | 4 +- .../Core/Cloth/Wind/MagicaWindZone.cs.meta | 4 +- .../Core/Cloth/Wind/WindParams.cs.meta | 4 +- .../Core/Cloth/Wind/WindSettings.cs.meta | 4 +- .../Scripts/Core/Define/ResultDefine.cs.meta | 4 +- .../Scripts/Core/Define/SystemDefine.cs.meta | 4 +- .../Scripts/Core/Interface/ICount.cs.meta | 4 +- .../Core/Interface/IDataValidate.cs.meta | 4 +- .../Scripts/Core/Interface/ITransform.cs | 2 +- .../Scripts/Core/Interface/ITransform.cs.meta | 4 +- .../Scripts/Core/Interface/IValid.cs.meta | 4 +- .../Core/Manager/Cloth/ClothManager.cs | 10 +- .../Core/Manager/Cloth/ClothManager.cs.meta | 4 +- .../Manager/Cloth/PreBuildManager.cs.meta | 4 +- .../Scripts/Core/Manager/IManager.cs.meta | 4 +- .../Core/Manager/MagicaManager.cs.meta | 4 +- .../Core/Manager/MagicaManagerAPI.cs.meta | 4 +- .../Core/Manager/MagicaSettings.cs.meta | 4 +- .../Scripts/Core/Manager/Render/RenderData.cs | 2 +- .../Core/Manager/Render/RenderData.cs.meta | 4 +- .../Core/Manager/Render/RenderManager.cs | 16 +- .../Core/Manager/Render/RenderManager.cs.meta | 4 +- .../Core/Manager/Render/RenderSetupData.cs | 56 +- .../Manager/Render/RenderSetupData.cs.meta | 4 +- .../Render/RenderSetupDataSerialization.cs | 6 +- .../RenderSetupDataSerialization.cs.meta | 4 +- .../Render/RenderSetupSerializeData.cs | 6 +- .../Render/RenderSetupSerializeData.cs.meta | 4 +- .../Simulation/ColliderManager.cs.meta | 4 +- .../Manager/Simulation/SimulationManager.cs | 5 + .../Simulation/SimulationManager.cs.meta | 4 +- .../Simulation/SimulationManagerNormal.cs | 20 +- .../SimulationManagerNormal.cs.meta | 4 +- .../Simulation/SimulationManagerSplit.cs | 21 +- .../Simulation/SimulationManagerSplit.cs.meta | 4 +- .../Manager/Simulation/TimeManager.cs.meta | 4 +- .../Manager/Simulation/WindManager.cs.meta | 4 +- .../Scripts/Core/Manager/Team/TeamManager.cs | 136 +- .../Core/Manager/Team/TeamManager.cs.meta | 4 +- .../Core/Manager/Team/TeamWindData.cs.meta | 4 +- .../Manager/TransformManager/TransformData.cs | 73 +- .../TransformManager/TransformData.cs.meta | 4 +- .../TransformDataSerialization.cs | 6 +- .../TransformDataSerialization.cs.meta | 4 +- .../TransformManager/TransformManager.cs.meta | 4 +- .../TransformManager/TransformRecord.cs | 16 +- .../TransformManager/TransformRecord.cs.meta | 4 +- .../TransformRecordSerializeData.cs | 6 +- .../TransformRecordSerializeData.cs.meta | 4 +- .../VirtualMesh/VirtualMeshManager.cs.meta | 4 +- .../PreBuild/PreBuildScriptableObject.cs.meta | 4 +- .../Core/PreBuild/PreBuildSerializeData.cs | 2 +- .../PreBuild/PreBuildSerializeData.cs.meta | 4 +- .../Core/PreBuild/SharePreBuildData.cs.meta | 4 +- .../Core/PreBuild/UniquePreBuildData.cs | 2 +- .../Core/PreBuild/UniquePreBuildData.cs.meta | 4 +- .../Core/Reduction/ReductionSettings.cs.meta | 4 +- .../Core/Reduction/ReductionWorkData.cs.meta | 4 +- .../Reduction/SameDistanceReduction.cs.meta | 4 +- .../Reduction/ShapeDistanceReduction.cs.meta | 4 +- .../Reduction/SimpleDistanceReduction.cs.meta | 4 +- .../Core/Reduction/StepReductionBase.cs.meta | 4 +- .../Core/Settings/ClothDebugSettings.cs.meta | 4 +- .../Settings/VirtualMeshDebugSettings.cs.meta | 4 +- .../Core/Utility/Data/DataUtility.cs.meta | 4 +- .../Core/Utility/Data/MagicaObjectId.cs | 98 ++ .../Core/Utility/Data/MagicaObjectId.cs.meta} | 12 +- .../Utility/Data/MultiDataBuilder.cs.meta | 4 +- .../Scripts/Core/Utility/Grid/GridMap.cs.meta | 4 +- .../Utility/Jobs/InterlockUtility.cs.meta | 4 +- .../Core/Utility/Jobs/JobUtility.cs.meta | 4 +- .../Scripts/Core/Utility/Math/AABB.cs.meta | 4 +- .../Scripts/Core/Utility/Math/IntAABB.cs.meta | 4 +- .../Core/Utility/Math/MathExtensions.cs.meta | 4 +- .../Core/Utility/Math/MathUtility.cs.meta | 4 +- .../Core/Utility/Math/MinimumData.cs.meta | 4 +- .../Core/Utility/Mesh/MeshUtility.cs.meta | 4 +- .../Scripts/Core/Utility/Misc/Develop.cs.meta | 4 +- .../Utility/Misc/StaticStringBuilder.cs.meta | 4 +- .../NativeCollection/DataChunk.cs.meta | 4 +- .../NativeCollection/ExBitFlag16.cs.meta | 4 +- .../NativeCollection/ExBitFlag8.cs.meta | 4 +- .../ExCostSortedList1.cs.meta | 4 +- .../ExCostSortedList4.cs.meta | 4 +- .../NativeCollection/ExNativeArray.cs.meta | 4 +- .../NativeCollection/ExProcessingList.cs.meta | 4 +- .../ExSimpleNativeArray.cs.meta | 4 +- .../ExTransformAccessArray.cs | 20 +- .../ExTransformAccessArray.cs.meta | 4 +- .../FixedList128BytesExtensions.cs.meta | 4 +- .../FixedList32BytesExtensions.cs.meta | 4 +- .../FixedList4096BytesExtensions.cs.meta | 4 +- .../FixedList512BytesExtensions.cs.meta | 4 +- .../FixedList64BytesExtensions.cs.meta | 4 +- .../NativeArrayExtensions.cs.meta | 4 +- .../NativeMultiHashMapExtensions.cs.meta | 4 +- .../NativeParallelHashMapExtensions.cs.meta | 4 +- .../NativeReferenceExtensions.cs.meta | 4 +- .../Core/Utility/ResultCode/Exception.cs.meta | 4 +- .../Utility/ResultCode/ResultCode.cs.meta | 4 +- .../Core/Utility/Time/TimeSpan.cs.meta | 4 +- .../Core/Utility/Time/UnityTimeSpan.cs.meta | 4 +- .../Function/VirtualMeshInputOutput.cs | 53 +- .../Function/VirtualMeshInputOutput.cs.meta | 4 +- .../Function/VirtualMeshMapping.cs | 8 +- .../Function/VirtualMeshMapping.cs.meta | 4 +- .../Function/VirtualMeshOptimization.cs | 7 +- .../Function/VirtualMeshOptimization.cs.meta | 4 +- .../VirtualMesh/Function/VirtualMeshProxy.cs | 8 +- .../Function/VirtualMeshProxy.cs.meta | 4 +- .../Function/VirtualMeshReduction.cs.meta | 4 +- .../Function/VirtualMeshSerialization.cs | 2 +- .../Function/VirtualMeshSerialization.cs.meta | 4 +- .../Function/VirtualMeshWork.cs.meta | 4 +- .../Core/VirtualMesh/VertexAttribute.cs.meta | 4 +- .../Core/VirtualMesh/VirtualMesh.cs.meta | 4 +- .../VirtualMesh/VirtualMeshBoneWeight.cs.meta | 4 +- .../VirtualMesh/VirtualMeshContainer.cs.meta | 4 +- .../VirtualMesh/VirtualMeshPrimitive.cs.meta | 4 +- .../VirtualMesh/VirtualMeshRaycastHit.cs.meta | 4 +- .../VirtualMesh/VirtualMeshTransform.cs.meta | 4 +- .../Cloth/ClothAssetPostprocessor.cs.meta | 4 +- .../Editor/Cloth/ClothEditorManager.cs | 18 +- .../Editor/Cloth/ClothEditorManager.cs.meta | 4 +- .../Editor/Cloth/ClothEditorUtility.cs.meta | 4 +- .../Cloth/ClothInspectorUtility.cs.meta | 4 +- .../Scripts/Editor/Cloth/ClothPainter.cs.meta | 4 +- .../Editor/Cloth/ClothPresetUtility.cs.meta | 4 +- .../Cloth/MagicaCapsuleColliderEditor.cs.meta | 4 +- .../Scripts/Editor/Cloth/MagicaClothEditor.cs | 8 + .../Editor/Cloth/MagicaClothEditor.cs.meta | 4 +- .../Editor/Cloth/MagicaEditorBase.cs.meta | 4 +- .../Cloth/MagicaPlaneColliderEditor.cs.meta | 4 +- .../Editor/Cloth/MagicaSettingsEditor.cs.meta | 4 +- .../Cloth/MagicaSphereColliderEditor.cs.meta | 4 +- .../Editor/Cloth/MagicaWindZoneEditor.cs.meta | 4 +- .../Cloth/VirtualMeshEditorUtility.cs.meta | 4 +- .../Editor/EditorExtension/AboutMenu.cs | 2 +- .../Editor/EditorExtension/AboutMenu.cs.meta | 4 +- .../CheckSliderSerializeDataDrawer.cs.meta | 4 +- .../CurveSerializeDataDrawer.cs.meta | 4 +- .../EditorExtension/DrawIconInHierarchy.cs | 9 + .../DrawIconInHierarchy.cs.meta | 4 +- .../EditorExtension/MenuItemScript.cs.meta | 4 +- .../SharePreBuildDataDrawer.cs.meta | 4 +- .../Editor/Gizmos/GizmoUtility.cs.meta | 4 +- .../MagicaCapsuleColliderGizmoDrawer.cs.meta | 4 +- .../Gizmos/MagicaClothGizmoDrawer.cs.meta | 4 +- .../MagicaPlaneColliderGizmoDrawer.cs.meta | 4 +- .../MagicaSphereColliderGizmoDrawer.cs.meta | 4 +- .../Gizmos/MagicaWindZoneGizmoDrawer.cs.meta | 4 +- .../Editor/MagicaCloth2.Editor.asmdef.meta | 4 +- .../Editor/PreBuild/PreBuildDataCreation.cs | 2 +- .../PreBuild/PreBuildDataCreation.cs.meta | 4 +- .../MagicaCloth2UPMImporterBurst.asmdef.meta | 4 +- .../Burst/UnityPackageImporter.cs.meta | 4 +- ...caCloth2UPMImporterCollections.asmdef.meta | 4 +- .../Collections/UnityPackageImporter.cs.meta | 4 +- .../Resources/ES3/ES3Defaults.asset | 4 - .../Materials/DemoMeshParticles.mat.meta | 4 +- .../BlurDemoParticleSystem.prefab.meta | 4 +- .../FlexibleBlur/Presets/DemoPreset1.asset | 6 +- .../Presets/DemoPreset1.asset.meta | 4 +- .../Presets/DemoPreset2.asset.meta | 4 +- .../Presets/DemoPreset3.asset.meta | 4 +- .../FlexibleBlur/Scenes/BatchedBlurs.unity | 165 ++- .../Scenes/BatchedBlurs.unity.meta | 4 +- .../Scenes/Blur Controller.unity.meta | 4 +- .../Scenes/Blur Dithering.unity.meta | 4 +- .../Scenes/Blur Padding.unity.meta | 4 +- .../Scenes/Diverse Blurs.unity.meta | 4 +- .../Scenes/Masked Blur.unity.meta | 4 +- ...ingle Camera UI Preserving Blur.unity.meta | 4 +- .../Stacked Blur Multi Camera.unity.meta | 4 +- .../Stacked Blur Shared Camera.unity.meta | 4 +- .../Scripts/DemoBlurController.cs.meta | 4 +- .../FlexibleBlur/Textures/CircleFade.png.meta | 4 +- .../Textures/RoundedCorners.png.meta | 4 +- .../Textures/RoundedReticle.png.meta | 4 +- .../Textures/SliderBackground.png.meta | 4 +- .../Textures/SliderHandle.png.meta | 4 +- .../Demos/Prefabs/DemoSceneCommon.prefab.meta | 4 +- .../Demos/Scripts/DemoSceneControl.cs.meta | 4 +- .../Demos/Scripts/InputModuleReplacer.cs.meta | 4 +- .../Demos/Scripts/SimpleFPSCounter.cs.meta | 4 +- .../Demos/Textures/Background0.png.meta | 4 +- .../Demos/Textures/Background1.png.meta | 4 +- .../Demos/Textures/Background2.png.meta | 4 +- .../FlexibleUI/Editor/EditorHelpers.cs.meta | 4 +- .../FlexibleBlur/BlurPresetEditor.cs.meta | 4 +- .../BlurReferenceProviderEditor.cs.meta | 4 +- .../FlexibleBlur/BlurredImageEditor.cs.meta | 4 +- .../DemoSceneFeatureCheckWindow.cs.meta | 4 +- .../FlexibleBlurFeatureBuildHelper.cs.meta | 4 +- .../FlexibleBlurFeatureEditor.cs.meta | 4 +- .../FlexibleBlurMenuItems.cs.meta | 4 +- .../Editor/FlexibleBlur/UIBlurEditor.cs.meta | 4 +- .../Editor/FlexibleUI.Editor.asmdef.meta | 4 +- .../FlexibleUI/Editor/MenuItemCommon.cs.meta | 4 +- .../FlexibleUI/Editor/PresetSavePath.cs.meta | 4 +- .../FlexibleUI/FilledMeshHelper.cs.meta | 4 +- .../FlexibleBlur/FlexibleBlur Manual.pdf.meta | 4 +- .../Resources/ComputeBlurs.compute.meta | 4 +- ...bleBlurIncludedShaders.shadervariants.meta | 4 +- .../Resources/VRComputeBlurs.compute.meta | 4 +- .../Scripts/BlurAlgorithms.cs.meta | 4 +- .../FlexibleBlur/Scripts/BlurPreset.cs.meta | 4 +- .../Scripts/BlurReferenceProvider.cs.meta | 4 +- .../FlexibleBlur/Scripts/BlurredImage.cs.meta | 4 +- .../Scripts/FlexibleBlurFeature.cs.meta | 4 +- .../Scripts/FlexibleBlurRenderGraph.cs | 2 +- .../Scripts/FlexibleBlurRenderGraph.cs.meta | 4 +- .../FlexibleBlur/Scripts/IBlur.cs.meta | 4 +- .../Scripts/PooledDictionary.cs.meta | 4 +- .../FlexibleBlur/Scripts/UIBlur.cs.meta | 4 +- .../FlexibleBlur/Scripts/UIBlurCommon.cs | 4 +- .../FlexibleBlur/Scripts/UIBlurCommon.cs.meta | 4 +- .../Shaders/BlurredImage.shader.meta | 4 +- .../FlexibleBlur/Shaders/Blurs.shader.meta | 4 +- .../Shaders/FullScreenBlits.shader.meta | 4 +- .../Shaders/QuadBlits.shader.meta | 4 +- .../Shaders/RegionalBlits.shader.meta | 4 +- .../FlexibleUI/FlexibleUI.Runtime.asmdef.meta | 4 +- .../M1_Suppression_Centurion.prefab | 26 +- .../Data/DualHarmony_FunctionData.asset | 201 ++- .../Data/FutureWand_FunctionData.asset | 166 ++- .../Data/Polychrome_FunctionData.asset | 375 ++++- .../Collection/ArmorPiercingRound.meta} | 2 +- .../ArmorPiercingRound_ContentData.asset | 62 + .../ArmorPiercingRound_ContentData.asset.meta | 8 + ...orPiercingRound_PassiveAttributeData.asset | 41 + ...rcingRound_PassiveAttributeData.asset.meta | 8 + .../Ascension_PassiveAttributeData.asset | 2 +- .../FusionInjector_FunctionData.asset | 88 +- .../IceCone/IceCone_FunctionData.asset | 88 +- .../Scanner/Scanner_FunctionData.asset | 88 +- ...sset => ThermalDetonator_AttackData.asset} | 2 +- ...=> ThermalDetonator_AttackData.asset.meta} | 0 ...set => ThermalDetonator_ContentData.asset} | 2 +- ...> ThermalDetonator_ContentData.asset.meta} | 0 ...et => ThermalDetonator_FunctionData.asset} | 90 +- ... ThermalDetonator_FunctionData.asset.meta} | 0 ...a.asset => ThermalDetonator_VFXData.asset} | 2 +- ...ta => ThermalDetonator_VFXData.asset.meta} | 0 .../VoidAnchor/VoidAnchor_FunctionData.asset | 88 +- .../MainWeaponFunctionIcon.prefab | 281 ++-- .../PlayerCanvas/SupportEquipmentIcon.prefab | 427 +++--- Assets/Resources/Items/Extender.meta | 8 - .../ArmorPiercingRound.prefab | 108 ++ .../ArmorPiercingRound.prefab.meta} | 4 +- .../PassiveEquipment/PhotonDissociator.prefab | 117 ++ .../PhotonDissociator.prefab.meta} | 4 +- .../PassiveEquipment/PhotonPolarizer.prefab | 117 ++ .../PhotonPolarizer.prefab.meta} | 5 +- Assets/Scenes/MainGame.unity | 1270 ++++++++--------- .../Submodules/ReactionSubmodule.cs | 4 +- .../Base/BuffSystem/BuffSubmodules.cs | 8 +- .../Subcontrollers/Reaction/BlockSubmodule.cs | 31 +- .../Subcontrollers/Reaction/DodgeSubmodule.cs | 33 +- .../Render/RenderSubcontrollerBase.cs | 2 + .../Base/Submodules/SelfTimeSubmodule.cs | 1 + .../Inventory/PlayerInventorySubcontroller.cs | 5 +- .../MainGame/GameRun/Map/MapManager.cs | 2 +- .../MainGame/Items/Data/FunctionData.cs | 52 +- .../MainGame/Items/Extenders/Polychrome.meta} | 2 +- .../Extenders/Polychrome/PhotonDissociator.cs | 13 + .../Polychrome/PhotonDissociator.cs.meta | 2 + .../Extenders/Polychrome/PhotonPolarizer.cs | 13 + .../Polychrome/PhotonPolarizer.cs.meta | 2 + .../MainGame/Items/MainWeapons/FutureWand.cs | 2 +- .../MainGame/Items/MainWeapons/Polychrome.cs | 169 ++- .../PassiveEquipments/ArmorPiercingRound.cs | 84 ++ .../ArmorPiercingRound.cs.meta | 2 + .../Items/PassiveEquipments/Ascension.cs | 2 - .../PassiveEquipments/CombustionEnhancer.cs | 36 + .../CombustionEnhancer.cs.meta | 2 + .../Items/Submodules/FunctionSubmodule.cs | 37 +- .../CombatRoomSubmodule.cs | 6 +- .../MusicBeatSystem/MusicBeatData.asset | 4 +- .../MainWeapon/MainWeaponDisplayer.cs | 5 +- .../MainWeapon/MainWeaponFunctionIcon.cs | 83 +- .../PlayerUI/MainWeapon/MainWeaponUIArea.cs | 30 +- .../SupportEquipments/SupportEquipmentIcon.cs | 101 +- .../SupportEquipmentsUIArea.cs | 1 + Assets/Scripts/SLSUtilities/General/Timer.cs | 47 +- .../Settings/Fullscreen FX Blur Config.asset | 21 - .../Fullscreen FX Blur Config.asset.meta | 15 - Assets/Settings/PC_Renderer.asset | 26 +- 669 files changed, 5361 insertions(+), 12268 deletions(-) create mode 100644 Assets/Fonts/SDF/ZQK/ZQK Font SDF Glow.mat rename Assets/{OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders.meta => Fonts/SDF/ZQK/ZQK Font SDF Glow.mat.meta} (52%) create mode 100644 Assets/Fonts/SDF/ZQK/ZQK Font SDF Outline.mat create mode 100644 Assets/Fonts/SDF/ZQK/ZQK Font SDF Outline.mat.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Editor/Assets.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Editor/Assets.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorCustom.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorCustom.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorInternal.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorInternal.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorPrefValue.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorPrefValue.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorProperty.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorUtils.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorUtils.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Editor/Knob.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Editor/LeTai.Common.Editor.asmdef delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Editor/LeTai.Common.Editor.asmdef.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Editor/MathCustom.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Editor/MathCustom.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Editor/SpringPropertyDrawer.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Editor/SpringPropertyDrawer.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/LeTai.Common.asmdef delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/LeTai.Common.asmdef.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/MaterialUtils.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/MaterialUtils.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/Packing.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/Packing.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/RectTransformUtility.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/RectTransformUtility.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/SpanUtils.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/SpanUtils.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/TinyTween.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/TinyTween.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/CHANGELOG.txt delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/CHANGELOG.txt.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/LeTai.TranslucentImage.asmdef delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/LeTai.TranslucentImage.asmdef.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Material/Default-Translucent.mat delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Material/Default-Translucent.mat.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Offline Documentation.pdf delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Offline Documentation.pdf.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Online Documentation (recommended).txt delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Online Documentation (recommended).txt.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/EfficientBlur.hlsl delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/EfficientBlur.hlsl.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/EfficientBlur.shader delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/EfficientBlur.shader.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/FillCrop.shader delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/FillCrop.shader.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.hlsl delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.hlsl.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.shader delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.shader.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/blending.hlsl delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/blending.hlsl.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/common.hlsl delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/common.hlsl.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/fullscreen.hlsl delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/fullscreen.hlsl.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/interop_birp.cginc delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/interop_birp.cginc.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/packing.hlsl delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/packing.hlsl.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Translucent Image Default Resources.asset delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Translucent Image Default Resources.asset.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/EfficientBlur_UniversalRP.shader delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/EfficientBlur_UniversalRP.shader.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/FillCrop_UniversalRP.shader delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/FillCrop_UniversalRP.shader.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/interop_urp.hlsl delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/interop_urp.hlsl.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ActiveRegion.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ActiveRegion.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ActiveRegionMergeJob.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ActiveRegionMergeJob.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/AssemblyInfo.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/AssemblyInfo.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/BlurConfig.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/BlurConfig.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/IBlurAlgorithm.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/IBlurAlgorithm.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/ScalableBlur.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/ScalableBlur.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/ScalableBlurConfig.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/ScalableBlurConfig.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/DefaultResources.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/DefaultResources.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/AssemblyInfo.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/AssemblyInfo.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/LeTai.Asset.TranslucentImage.Editor.asmdef delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/LeTai.Asset.TranslucentImage.Editor.asmdef.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/MaterialEditorGUI.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/MaterialEditorGUI.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/MenuIntegration.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/MenuIntegration.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Migration.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Migration.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/BlurConfig Icon.png delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/BlurConfig Icon.png.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/BlurSource Icon.png delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/BlurSource Icon.png.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/Knob_BG.png delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/Knob_BG.png.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/Knob_FG.png delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/Knob_FG.png.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/TranslucentImage Icon.png delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/TranslucentImage Icon.png.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_bl.png delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_bl.png.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_br.png delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_br.png.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_tl.png delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_tl.png.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_tr.png delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_tr.png.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/ScalableBlurConfigEditor.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/ScalableBlurConfigEditor.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/ScenceGizmoAutoDisable.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/ScenceGizmoAutoDisable.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageEditor.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageEditor.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageShaderGUI.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageShaderGUI.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageSourceEditor.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageSourceEditor.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor/LeTai.Paraform.Scaffold.Editor.asmdef delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor/LeTai.Paraform.Scaffold.Editor.asmdef.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor/ParaformEditor.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor/ParaformEditor.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/AssemblyInfo.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/AssemblyInfo.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/LeTai.Paraform.Scaffold.asmdef delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/LeTai.Paraform.Scaffold.asmdef.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/ParaformConfig.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/ParaformConfig.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/ParaformMaterial.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/ParaformMaterial.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.Paraform.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.Paraform.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.TrueShadow.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.TrueShadow.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImageEditorEnhancement.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImageEditorEnhancement.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImageSource.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImageSource.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/LeTai.TranslucentImage.UniversalRP.Editor.asmdef delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/RendererFeatureChecker.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/RendererFeatureChecker.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/TranslucentImageBlurSourceEditor.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/TranslucentImageBlurSourceEditor.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/LeTai.TranslucentImage.UniversalRP.asmdef delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurRenderPass.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurRenderPass.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurRenderPassRenderGraph.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurRenderPassRenderGraph.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurSource.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurSource.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/Blitter.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/Blitter.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/BlurExecutor.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/BlurExecutor.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/RectUtils.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/RectUtils.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/ResizableScreenRect.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/ResizableScreenRect.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/ShaderID.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/ShaderID.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/Shims.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/Shims.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/VPMatrixCache.cs delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/VPMatrixCache.cs.meta delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/URP README.txt delete mode 100644 Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/URP README.txt.meta create mode 100644 Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothDisableMode.cs rename Assets/OtherPlugins/{Le Tai's Asset/Common/Editor/Knob.cs.meta => MagicaCloth2/Scripts/Core/Cloth/ClothDisableMode.cs.meta} (52%) create mode 100644 Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Data/MagicaObjectId.cs rename Assets/OtherPlugins/{Le Tai's Asset/Common/Editor/EditorProperty.cs.meta => MagicaCloth2/Scripts/Core/Utility/Data/MagicaObjectId.cs.meta} (51%) rename Assets/{OtherPlugins/Le Tai's Asset/TranslucentImage/Material.meta => Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound.meta} (77%) create mode 100644 Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound/ArmorPiercingRound_ContentData.asset create mode 100644 Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound/ArmorPiercingRound_ContentData.asset.meta create mode 100644 Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound/ArmorPiercingRound_PassiveAttributeData.asset create mode 100644 Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound/ArmorPiercingRound_PassiveAttributeData.asset.meta rename Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/{VoidAnchor_AttackData.asset => ThermalDetonator_AttackData.asset} (99%) rename Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/{VoidAnchor_AttackData.asset.meta => ThermalDetonator_AttackData.asset.meta} (100%) rename Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/{VoidAnchor_ContentData.asset => ThermalDetonator_ContentData.asset} (97%) rename Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/{VoidAnchor_ContentData.asset.meta => ThermalDetonator_ContentData.asset.meta} (100%) rename Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/{VoidAnchor_FunctionData.asset => ThermalDetonator_FunctionData.asset} (54%) rename Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/{VoidAnchor_FunctionData.asset.meta => ThermalDetonator_FunctionData.asset.meta} (100%) rename Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/{VoidAnchor_VFXData.asset => ThermalDetonator_VFXData.asset} (99%) rename Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/{VoidAnchor_VFXData.asset.meta => ThermalDetonator_VFXData.asset.meta} (100%) delete mode 100644 Assets/Resources/Items/Extender.meta create mode 100644 Assets/Resources/Items/PassiveEquipment/ArmorPiercingRound.prefab rename Assets/{OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/LeTai.TranslucentImage.UniversalRP.Editor.asmdef.meta => Resources/Items/PassiveEquipment/ArmorPiercingRound.prefab.meta} (59%) create mode 100644 Assets/Resources/Items/PassiveEquipment/PhotonDissociator.prefab rename Assets/{OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/LeTai.TranslucentImage.UniversalRP.asmdef.meta => Resources/Items/PassiveEquipment/PhotonDissociator.prefab.meta} (59%) create mode 100644 Assets/Resources/Items/PassiveEquipment/PhotonPolarizer.prefab rename Assets/{OtherPlugins/Le Tai's Asset/Common/Editor.meta => Resources/Items/PassiveEquipment/PhotonPolarizer.prefab.meta} (57%) rename Assets/{OtherPlugins/Le Tai's Asset/Common/Runtime.meta => Scripts/MainGame/Items/Extenders/Polychrome.meta} (77%) create mode 100644 Assets/Scripts/MainGame/Items/Extenders/Polychrome/PhotonDissociator.cs create mode 100644 Assets/Scripts/MainGame/Items/Extenders/Polychrome/PhotonDissociator.cs.meta create mode 100644 Assets/Scripts/MainGame/Items/Extenders/Polychrome/PhotonPolarizer.cs create mode 100644 Assets/Scripts/MainGame/Items/Extenders/Polychrome/PhotonPolarizer.cs.meta create mode 100644 Assets/Scripts/MainGame/Items/PassiveEquipments/ArmorPiercingRound.cs create mode 100644 Assets/Scripts/MainGame/Items/PassiveEquipments/ArmorPiercingRound.cs.meta create mode 100644 Assets/Scripts/MainGame/Items/PassiveEquipments/CombustionEnhancer.cs create mode 100644 Assets/Scripts/MainGame/Items/PassiveEquipments/CombustionEnhancer.cs.meta delete mode 100644 Assets/Settings/Fullscreen FX Blur Config.asset delete mode 100644 Assets/Settings/Fullscreen FX Blur Config.asset.meta diff --git a/Assets/Characters/Soullies/Coat.mat b/Assets/Characters/Soullies/Coat.mat index 8846d3974..a807edcdf 100644 --- a/Assets/Characters/Soullies/Coat.mat +++ b/Assets/Characters/Soullies/Coat.mat @@ -909,13 +909,13 @@ Material: - _EmissionBlink: {r: 0, g: 0, b: 3.141593, a: 0} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _EmissionMap_ScrollRotate: {r: 0, g: 0, b: 0, a: 0} - - _FaceForward: {r: -0.0665922, g: -0.42889756, b: 0.9008953, a: 0} - - _FaceUp: {r: 0.061814837, g: 0.8993918, b: 0.43275094, a: 0} + - _FaceForward: {r: 0.03887351, g: -0.33023596, b: 0.9430976, a: 0} + - _FaceUp: {r: -0.02244219, g: 0.9432844, b: 0.3312264, a: 0} - _GlitterAtras: {r: 1, g: 1, b: 0, a: 0} - _GlitterColor: {r: 1, g: 1, b: 1, a: 1} - _GlitterParams1: {r: 256, g: 256, b: 0.16, a: 50} - _GlitterParams2: {r: 0.25, g: 0, b: 0, a: 0} - - _HeadWorldPos: {r: -0.0049033333, g: 1.6045952, b: 0.033351183, a: 0} + - _HeadWorldPos: {r: 0.005572671, g: 1.5960494, b: 0.025174975, a: 0} - _LightDirectionOverride: {r: 0.001, g: 0.002, b: 0.001, a: 0} - _Main2ndDissolveColor: {r: 1, g: 1, b: 1, a: 1} - _Main2ndDissolveNoiseMask_ScrollRotate: {r: 0, g: 0, b: 0, a: 0} diff --git a/Assets/Characters/Soullies/Decorations.mat b/Assets/Characters/Soullies/Decorations.mat index c9af4d2aa..009cdfe72 100644 --- a/Assets/Characters/Soullies/Decorations.mat +++ b/Assets/Characters/Soullies/Decorations.mat @@ -938,13 +938,13 @@ Material: - _EmissionBlink: {r: 0, g: 0, b: 3.141593, a: 0} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _EmissionMap_ScrollRotate: {r: 0, g: 0, b: 0, a: 0} - - _FaceForward: {r: -0.0665922, g: -0.42889756, b: 0.9008953, a: 0} - - _FaceUp: {r: 0.061814837, g: 0.8993918, b: 0.43275094, a: 0} + - _FaceForward: {r: 0.03887351, g: -0.33023596, b: 0.9430976, a: 0} + - _FaceUp: {r: -0.02244219, g: 0.9432844, b: 0.3312264, a: 0} - _GlitterAtras: {r: 1, g: 1, b: 0, a: 0} - _GlitterColor: {r: 1, g: 1, b: 1, a: 1} - _GlitterParams1: {r: 256, g: 256, b: 0.16, a: 50} - _GlitterParams2: {r: 0.25, g: 0, b: 0, a: 0} - - _HeadWorldPos: {r: -0.0049033333, g: 1.6045952, b: 0.033351183, a: 0} + - _HeadWorldPos: {r: 0.005572671, g: 1.5960494, b: 0.025174975, a: 0} - _LightDirectionOverride: {r: 0.001, g: 0.002, b: 0.001, a: 0} - _Main2ndDissolveColor: {r: 1, g: 1, b: 1, a: 1} - _Main2ndDissolveNoiseMask_ScrollRotate: {r: 0, g: 0, b: 0, a: 0} diff --git a/Assets/Characters/Soullies/Hair01.mat b/Assets/Characters/Soullies/Hair01.mat index 09c2a806e..3c5ba2d96 100644 --- a/Assets/Characters/Soullies/Hair01.mat +++ b/Assets/Characters/Soullies/Hair01.mat @@ -909,13 +909,13 @@ Material: - _EmissionBlink: {r: 0, g: 0, b: 3.141593, a: 0} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _EmissionMap_ScrollRotate: {r: 0, g: 0, b: 0, a: 0} - - _FaceForward: {r: -0.0665922, g: -0.42889756, b: 0.9008953, a: 0} - - _FaceUp: {r: 0.061814837, g: 0.8993918, b: 0.43275094, a: 0} + - _FaceForward: {r: 0.03887351, g: -0.33023596, b: 0.9430976, a: 0} + - _FaceUp: {r: -0.02244219, g: 0.9432844, b: 0.3312264, a: 0} - _GlitterAtras: {r: 1, g: 1, b: 0, a: 0} - _GlitterColor: {r: 1, g: 1, b: 1, a: 1} - _GlitterParams1: {r: 256, g: 256, b: 0.16, a: 50} - _GlitterParams2: {r: 0.25, g: 0, b: 0, a: 0} - - _HeadWorldPos: {r: -0.0049033333, g: 1.6045952, b: 0.033351183, a: 0} + - _HeadWorldPos: {r: 0.005572671, g: 1.5960494, b: 0.025174975, a: 0} - _LightDirectionOverride: {r: 0.001, g: 0.002, b: 0.001, a: 0} - _Main2ndDissolveColor: {r: 1, g: 1, b: 1, a: 1} - _Main2ndDissolveNoiseMask_ScrollRotate: {r: 0, g: 0, b: 0, a: 0} diff --git a/Assets/Characters/Soullies/Hair02.mat b/Assets/Characters/Soullies/Hair02.mat index 5aaf2b9a8..87a41d6f7 100644 --- a/Assets/Characters/Soullies/Hair02.mat +++ b/Assets/Characters/Soullies/Hair02.mat @@ -909,13 +909,13 @@ Material: - _EmissionBlink: {r: 0, g: 0, b: 3.141593, a: 0} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _EmissionMap_ScrollRotate: {r: 0, g: 0, b: 0, a: 0} - - _FaceForward: {r: -0.0665922, g: -0.42889756, b: 0.9008953, a: 0} - - _FaceUp: {r: 0.061814837, g: 0.8993918, b: 0.43275094, a: 0} + - _FaceForward: {r: 0.03887351, g: -0.33023596, b: 0.9430976, a: 0} + - _FaceUp: {r: -0.02244219, g: 0.9432844, b: 0.3312264, a: 0} - _GlitterAtras: {r: 1, g: 1, b: 0, a: 0} - _GlitterColor: {r: 1, g: 1, b: 1, a: 1} - _GlitterParams1: {r: 256, g: 256, b: 0.16, a: 50} - _GlitterParams2: {r: 0.25, g: 0, b: 0, a: 0} - - _HeadWorldPos: {r: -0.0049033333, g: 1.6045952, b: 0.033351183, a: 0} + - _HeadWorldPos: {r: 0.005572671, g: 1.5960494, b: 0.025174975, a: 0} - _LightDirectionOverride: {r: 0.001, g: 0.002, b: 0.001, a: 0} - _Main2ndDissolveColor: {r: 1, g: 1, b: 1, a: 1} - _Main2ndDissolveNoiseMask_ScrollRotate: {r: 0, g: 0, b: 0, a: 0} diff --git a/Assets/Characters/Soullies/Hands.mat b/Assets/Characters/Soullies/Hands.mat index 6d865414f..127ffb417 100644 --- a/Assets/Characters/Soullies/Hands.mat +++ b/Assets/Characters/Soullies/Hands.mat @@ -937,13 +937,13 @@ Material: - _EmissionBlink: {r: 0, g: 0, b: 3.141593, a: 0} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _EmissionMap_ScrollRotate: {r: 0, g: 0, b: 0, a: 0} - - _FaceForward: {r: -0.0665922, g: -0.42889756, b: 0.9008953, a: 0} - - _FaceUp: {r: 0.061814837, g: 0.8993918, b: 0.43275094, a: 0} + - _FaceForward: {r: 0.03887351, g: -0.33023596, b: 0.9430976, a: 0} + - _FaceUp: {r: -0.02244219, g: 0.9432844, b: 0.3312264, a: 0} - _GlitterAtras: {r: 1, g: 1, b: 0, a: 0} - _GlitterColor: {r: 1, g: 1, b: 1, a: 1} - _GlitterParams1: {r: 256, g: 256, b: 0.16, a: 50} - _GlitterParams2: {r: 0.25, g: 0, b: 0, a: 0} - - _HeadWorldPos: {r: -0.0049033333, g: 1.6045952, b: 0.033351183, a: 0} + - _HeadWorldPos: {r: 0.005572671, g: 1.5960494, b: 0.025174975, a: 0} - _LightDirectionOverride: {r: 0.001, g: 0.002, b: 0.001, a: 0} - _Main2ndDissolveColor: {r: 1, g: 1, b: 1, a: 1} - _Main2ndDissolveNoiseMask_ScrollRotate: {r: 0, g: 0, b: 0, a: 0} diff --git a/Assets/Characters/Soullies/Head.mat b/Assets/Characters/Soullies/Head.mat index 1eb0eb329..3d39c829d 100644 --- a/Assets/Characters/Soullies/Head.mat +++ b/Assets/Characters/Soullies/Head.mat @@ -908,13 +908,13 @@ Material: - _EmissionBlink: {r: 0, g: 0, b: 3.141593, a: 0} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _EmissionMap_ScrollRotate: {r: 0, g: 0, b: 0, a: 0} - - _FaceForward: {r: -0.0665922, g: -0.42889756, b: 0.9008953, a: 0} - - _FaceUp: {r: 0.061814837, g: 0.8993918, b: 0.43275094, a: 0} + - _FaceForward: {r: 0.03887351, g: -0.33023596, b: 0.9430976, a: 0} + - _FaceUp: {r: -0.02244219, g: 0.9432844, b: 0.3312264, a: 0} - _GlitterAtras: {r: 1, g: 1, b: 0, a: 0} - _GlitterColor: {r: 1, g: 1, b: 1, a: 1} - _GlitterParams1: {r: 256, g: 256, b: 0.16, a: 50} - _GlitterParams2: {r: 0.25, g: 0, b: 0, a: 0} - - _HeadWorldPos: {r: -0.0049033333, g: 1.6045952, b: 0.033351183, a: 0} + - _HeadWorldPos: {r: 0.005572671, g: 1.5960494, b: 0.025174975, a: 0} - _LightDirectionOverride: {r: 0.001, g: 0.002, b: 0.001, a: 0} - _Main2ndDissolveColor: {r: 1, g: 1, b: 1, a: 1} - _Main2ndDissolveNoiseMask_ScrollRotate: {r: 0, g: 0, b: 0, a: 0} diff --git a/Assets/Characters/Soullies/Legs.mat b/Assets/Characters/Soullies/Legs.mat index 05c13c5f1..086d95fcf 100644 --- a/Assets/Characters/Soullies/Legs.mat +++ b/Assets/Characters/Soullies/Legs.mat @@ -954,13 +954,13 @@ Material: - _EmissionBlink: {r: 0, g: 0, b: 3.141593, a: 0} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _EmissionMap_ScrollRotate: {r: 0, g: 0, b: 0, a: 0} - - _FaceForward: {r: -0.0665922, g: -0.42889756, b: 0.9008953, a: 0} - - _FaceUp: {r: 0.061814837, g: 0.8993918, b: 0.43275094, a: 0} + - _FaceForward: {r: 0.03887351, g: -0.33023596, b: 0.9430976, a: 0} + - _FaceUp: {r: -0.02244219, g: 0.9432844, b: 0.3312264, a: 0} - _GlitterAtras: {r: 1, g: 1, b: 0, a: 0} - _GlitterColor: {r: 1, g: 1, b: 1, a: 1} - _GlitterParams1: {r: 256, g: 256, b: 0.16, a: 50} - _GlitterParams2: {r: 0.25, g: 0, b: 0, a: 0} - - _HeadWorldPos: {r: -0.0049033333, g: 1.6045952, b: 0.033351183, a: 0} + - _HeadWorldPos: {r: 0.005572671, g: 1.5960494, b: 0.025174975, a: 0} - _HiLightColor: {r: 1, g: 1, b: 1, a: 1} - _LightDirectionOverride: {r: 0.001, g: 0.002, b: 0.001, a: 0} - _Main2ndDissolveColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/Characters/Soullies/Shirt Skirt.mat b/Assets/Characters/Soullies/Shirt Skirt.mat index 27c83f40d..799cd811a 100644 --- a/Assets/Characters/Soullies/Shirt Skirt.mat +++ b/Assets/Characters/Soullies/Shirt Skirt.mat @@ -909,13 +909,13 @@ Material: - _EmissionBlink: {r: 0, g: 0, b: 3.141593, a: 0} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _EmissionMap_ScrollRotate: {r: 0, g: 0, b: 0, a: 0} - - _FaceForward: {r: -0.0665922, g: -0.42889756, b: 0.9008953, a: 0} - - _FaceUp: {r: 0.061814837, g: 0.8993918, b: 0.43275094, a: 0} + - _FaceForward: {r: 0.03887351, g: -0.33023596, b: 0.9430976, a: 0} + - _FaceUp: {r: -0.02244219, g: 0.9432844, b: 0.3312264, a: 0} - _GlitterAtras: {r: 1, g: 1, b: 0, a: 0} - _GlitterColor: {r: 1, g: 1, b: 1, a: 1} - _GlitterParams1: {r: 256, g: 256, b: 0.16, a: 50} - _GlitterParams2: {r: 0.25, g: 0, b: 0, a: 0} - - _HeadWorldPos: {r: -0.0049033333, g: 1.6045952, b: 0.033351183, a: 0} + - _HeadWorldPos: {r: 0.005572671, g: 1.5960494, b: 0.025174975, a: 0} - _LightDirectionOverride: {r: 0.001, g: 0.002, b: 0.001, a: 0} - _Main2ndDissolveColor: {r: 1, g: 1, b: 1, a: 1} - _Main2ndDissolveNoiseMask_ScrollRotate: {r: 0, g: 0, b: 0, a: 0} diff --git a/Assets/External VFXs/MasterStylizedProjectiles/Materials/Arrow/BloodSplash.mat b/Assets/External VFXs/MasterStylizedProjectiles/Materials/Arrow/BloodSplash.mat index 7e7f8126c..6521dde4f 100644 --- a/Assets/External VFXs/MasterStylizedProjectiles/Materials/Arrow/BloodSplash.mat +++ b/Assets/External VFXs/MasterStylizedProjectiles/Materials/Arrow/BloodSplash.mat @@ -19,11 +19,13 @@ Material: m_LightmapFlags: 0 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 1 - m_CustomRenderQueue: -1 + m_CustomRenderQueue: 3000 stringTagMap: - RenderType: Opaque + RenderType: Transparent disabledShaderPasses: - GRABPASS + - DepthOnly + - SHADOWCASTER m_LockedProperties: m_SavedProperties: serializedVersion: 3 @@ -94,8 +96,8 @@ Material: - _DistortionEnabled: 0 - _DistortionStrength: 1 - _DistortionStrengthScaled: 0 - - _DstBlend: 0 - - _DstBlendAlpha: 0 + - _DstBlend: 1 + - _DstBlendAlpha: 1 - _EmissionEnabled: 0 - _FlipbookBlending: 0 - _FlipbookMode: 0 @@ -115,11 +117,11 @@ Material: - _SoftParticlesFarFadeDistance: 1 - _SoftParticlesNearFadeDistance: 0 - _SpecularHighlights: 1 - - _SrcBlend: 1 + - _SrcBlend: 5 - _SrcBlendAlpha: 1 - _Surface: 1 - _UVSec: 0 - - _ZWrite: 1 + - _ZWrite: 0 - __dirty: 0 m_Colors: - _BaseColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/Fonts/SDF/ZQK/ZQK Font SDF Glow.mat b/Assets/Fonts/SDF/ZQK/ZQK Font SDF Glow.mat new file mode 100644 index 000000000..fe0023093 --- /dev/null +++ b/Assets/Fonts/SDF/ZQK/ZQK Font SDF Glow.mat @@ -0,0 +1,682 @@ +%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: ZQK Font SDF Glow + m_Shader: {fileID: 4800000, guid: bb134d7d4389e3a45a6c49e898a344a4, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ISTEXTMESHPRO_ON + - _ISTEXT_ON + - _SHADERFADING_NONE + - _SHADERSPACE_UV + - _TEXTURELAYER1SHEETTOGGLE_ON + - _TEXTURELAYER2SHEETTOGGLE_ON + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AddColorMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _AddHueMask: + 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} + - _Cube: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CustomFadeFadeMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FaceTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FadingMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _InnerOutlineTintTexture: + m_Texture: {fileID: 2800000, guid: 5af9a397a8643994c829e696a24a7845, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: -478184148220021899, guid: 21262bfde877c70478b3fcaf0d725c46, type: 2} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetalMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OuterOutlineTintTexture: + m_Texture: {fileID: 2800000, guid: 5af9a397a8643994c829e696a24a7845, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OutlineTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PixelOutlineTintTexture: + m_Texture: {fileID: 2800000, guid: 5af9a397a8643994c829e696a24a7845, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _RecolorRGBTexture: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _RecolorRGBYCPTexture: + 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} + - _SineGlowMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _StrongTintMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TextureLayer1Texture: + m_Texture: {fileID: 2800000, guid: 9685c3a024e22a946a7e8c2ce3542300, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TextureLayer2Texture: + m_Texture: {fileID: 2800000, guid: 9685c3a024e22a946a7e8c2ce3542300, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _UVDistortMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _UberNoiseTexture: + m_Texture: {fileID: 2800000, guid: b8d18cd117976254d94a812a0bfc336e, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddColorContrast: 0.5 + - _AddColorContrastToggle: 0 + - _AddColorFade: 1 + - _AddColorMaskToggle: 0 + - _AddHueBrightness: 2 + - _AddHueContrast: 0.5 + - _AddHueFade: 1 + - _AddHueMaskToggle: 0 + - _AddHueSaturation: 1 + - _AddHueSpeed: 1 + - _AlphaTintFade: 1 + - _AlphaTintMinAlpha: 0.02 + - _Ambient: 0.5 + - _BakedMaterial: 0 + - _Bevel: 0.5 + - _BevelClamp: 0 + - _BevelOffset: 0 + - _BevelRoundness: 0 + - _BevelWidth: 0 + - _BlackTintFade: 1 + - _BlackTintPower: 4 + - _Brightness: 1 + - _BumpFace: 0 + - _BumpOutline: 0 + - _BurnEdgeNoiseFactor: 0.5 + - _BurnFade: 1 + - _BurnInsideContrast: 2 + - _BurnInsideNoiseFactor: 0.2 + - _BurnRadius: 5 + - _BurnSwirlFactor: 1 + - _BurnWidth: 0.1 + - _CamouflageAnimationToggle: 0 + - _CamouflageContrast: 1 + - _CamouflageDensityA: 0.4 + - _CamouflageDensityB: 0.4 + - _CamouflageFade: 1 + - _CamouflageSmoothnessA: 0.2 + - _CamouflageSmoothnessB: 0.2 + - _CheckerboardDarken: 0.5 + - _CheckerboardTiling: 1 + - _ColorMask: 15 + - _ColorReplaceContrast: 1 + - _ColorReplaceFade: 1 + - _ColorReplaceRange: 0.05 + - _ColorReplaceSmoothness: 0.1 + - _Contrast: 1 + - _CullMode: 0 + - _CustomFadeAlpha: 1 + - _CustomFadeNoiseFactor: 0 + - _CustomFadeSmoothness: 2 + - _Diffuse: 0.5 + - _DirectionalAlphaFadeFade: 0 + - _DirectionalAlphaFadeInvert: 0 + - _DirectionalAlphaFadeNoiseFactor: 0.2 + - _DirectionalAlphaFadeRotation: 0 + - _DirectionalAlphaFadeWidth: 0.2 + - _DirectionalDistortionFade: 0 + - _DirectionalDistortionInvert: 0 + - _DirectionalDistortionNoiseFactor: 0.2 + - _DirectionalDistortionRandomDirection: 0.1 + - _DirectionalDistortionRotation: 0 + - _DirectionalDistortionWidth: 0.5 + - _DirectionalGlowFadeFade: 0 + - _DirectionalGlowFadeInvert: 0 + - _DirectionalGlowFadeNoiseFactor: 0.2 + - _DirectionalGlowFadeRotation: 0 + - _DirectionalGlowFadeWidth: 0.1 + - _EnableAddColor: 0 + - _EnableAddHue: 0 + - _EnableAlphaTint: 0 + - _EnableBlackTint: 0 + - _EnableBrightness: 0 + - _EnableBurn: 0 + - _EnableCamouflage: 0 + - _EnableCheckerboard: 0 + - _EnableColorReplace: 0 + - _EnableContrast: 0 + - _EnableCustomFade: 0 + - _EnableDirectionalAlphaFade: 0 + - _EnableDirectionalDistortion: 0 + - _EnableDirectionalGlowFade: 0 + - _EnableEnchanted: 0 + - _EnableFlame: 0 + - _EnableFrozen: 0 + - _EnableFullAlphaDissolve: 0 + - _EnableFullDistortion: 0 + - _EnableFullGlowDissolve: 0 + - _EnableGaussianBlur: 0 + - _EnableGlitch: 0 + - _EnableHalftone: 0 + - _EnableHologram: 0 + - _EnableHue: 0 + - _EnableInkSpread: 0 + - _EnableInnerOutline: 0 + - _EnableMetal: 0 + - _EnableNegative: 0 + - _EnableOuterOutline: 0 + - _EnablePingPongGlow: 0 + - _EnablePixelOutline: 0 + - _EnablePixelate: 0 + - _EnablePoison: 0 + - _EnableRainbow: 0 + - _EnableRecolorRGB: 0 + - _EnableRecolorRGBYCP: 0 + - _EnableSaturation: 0 + - _EnableScreenTiling: 0 + - _EnableShadow: 0 + - _EnableSharpen: 0 + - _EnableShiftHue: 0 + - _EnableShifting: 0 + - _EnableShine: 0 + - _EnableSineGlow: 0 + - _EnableSineMove: 0 + - _EnableSineRotate: 0 + - _EnableSineScale: 0 + - _EnableSmoke: 0 + - _EnableSmoothPixelArt: 0 + - _EnableSourceAlphaDissolve: 0 + - _EnableSourceGlowDissolve: 0 + - _EnableSplitToning: 0 + - _EnableSqueeze: 0 + - _EnableSquish: 0 + - _EnableStrongTint: 0 + - _EnableTextureLayer1: 0 + - _EnableTextureLayer2: 0 + - _EnableUVDistort: 0 + - _EnableUVRotate: 0 + - _EnableUVScale: 0 + - _EnableUVScroll: 0 + - _EnableVibrate: 0 + - _EnableWiggle: 0 + - _EnableWind: 0 + - _EnableWorldTiling: 0 + - _EnchantedBrightness: 1 + - _EnchantedContrast: 0.5 + - _EnchantedFade: 1 + - _EnchantedLerpToggle: 0 + - _EnchantedRainbowDensity: 0.5 + - _EnchantedRainbowSaturation: 0.8 + - _EnchantedRainbowSpeed: 0.5 + - _EnchantedRainbowToggle: 0 + - _EnchantedReduce: 0 + - _FaceDilate: 0 + - _FaceUVSpeedX: 0 + - _FaceUVSpeedY: 0 + - _FadingFade: 1 + - _FadingNoiseFactor: 0.2 + - _FadingWidth: 0.3 + - _FlameBrightness: 10 + - _FlameNoiseFactor: 2.5 + - _FlameNoiseHeightFactor: 1.5 + - _FlameRadius: 0.2 + - _FlameSmooth: 2 + - _FrozenContrast: 2 + - _FrozenFade: 1 + - _FrozenHighlightContrast: 2 + - _FrozenHighlightDensity: 1 + - _FrozenSnowContrast: 1 + - _FrozenSnowDensity: 0.25 + - _FullAlphaDissolveFade: 0.5 + - _FullAlphaDissolveWidth: 0.5 + - _FullDistortionFade: 1 + - _FullGlowDissolveFade: 0.5 + - _FullGlowDissolveWidth: 0.5 + - _GaussianBlurFade: 1 + - _GaussianBlurOffset: 0.5 + - _GlitchBrightness: 4 + - _GlitchFade: 1 + - _GlitchHueSpeed: 1 + - _GlitchMaskMin: 0.4 + - _GlowInner: 0.05 + - _GlowOffset: 0 + - _GlowOuter: 0.05 + - _GlowPower: 0.75 + - _GradientScale: 9 + - _HalftoneFade: 1 + - _HalftoneFadeWidth: 1.5 + - _HalftoneInvert: 0 + - _HalftoneTiling: 4 + - _HologramContrast: 1 + - _HologramDistortionDensity: 0.5 + - _HologramDistortionOffset: 0.5 + - _HologramDistortionScale: 10 + - _HologramDistortionSpeed: 2 + - _HologramFade: 1 + - _HologramLineFrequency: 500 + - _HologramLineGap: 3 + - _HologramLineSpeed: 0.01 + - _HologramMinAlpha: 0.2 + - _Hue: 0 + - _InkSpreadContrast: 2 + - _InkSpreadDistance: 3 + - _InkSpreadFade: 1 + - _InkSpreadNoiseFactor: 0.5 + - _InkSpreadWidth: 0.2 + - _InnerOutlineDistortionToggle: 0 + - _InnerOutlineFade: 1 + - _InnerOutlineOutlineOnlyToggle: 0 + - _InnerOutlineTextureToggle: 0 + - _InnerOutlineWidth: 0.02 + - _IsText: 1 + - _IsTextMeshPro: 1 + - _LightAngle: 3.1416 + - _MaskSoftnessX: 0 + - _MaskSoftnessY: 0 + - _MetalContrast: 2 + - _MetalFade: 1 + - _MetalHighlightContrast: 2 + - _MetalHighlightDensity: 1 + - _MetalMaskToggle: 0 + - _NegativeFade: 1 + - _OuterOutlineDistortionToggle: 0 + - _OuterOutlineFade: 1 + - _OuterOutlineOutlineOnlyToggle: 0 + - _OuterOutlineTextureToggle: 0 + - _OuterOutlineWidth: 0.04 + - _OutlineSoftness: 0 + - _OutlineUVSpeedX: 0 + - _OutlineUVSpeedY: 0 + - _OutlineWidth: 0 + - _PerspectiveFilter: 0.875 + - _PingPongGlowContrast: 1 + - _PingPongGlowFade: 1 + - _PingPongGlowFrequency: 3 + - _PixelOutlineAlphaLimit: 0.5 + - _PixelOutlineFade: 1 + - _PixelOutlineOutlineOnlyToggle: 0 + - _PixelOutlineTextureToggle: 0 + - _PixelOutlineWidth: 1 + - _PixelPerfectSpace: 0 + - _PixelPerfectUV: 0 + - _PixelateFade: 1 + - _PixelatePixelDensity: 16 + - _PixelatePixelsPerUnit: 100 + - _PixelsPerUnit: 100 + - _PoisonDensity: 3 + - _PoisonFade: 1 + - _PoisonNoiseBrightness: 2 + - _PoisonRecolorFactor: 0.5 + - _PoisonShiftSpeed: 0.2 + - _RainbowBrightness: 2 + - _RainbowContrast: 1 + - _RainbowDensity: 0.5 + - _RainbowFade: 1 + - _RainbowNoiseFactor: 0.2 + - _RainbowSaturation: 1 + - _RainbowSpeed: 1 + - _RecolorRGBFade: 1 + - _RecolorRGBTextureToggle: 0 + - _RecolorRGBYCPFade: 1 + - _RecolorRGBYCPTextureToggle: 0 + - _RectHeight: 100 + - _RectWidth: 100 + - _Reflectivity: 10 + - _Saturation: 1 + - _ScaleRatioA: 0.8888889 + - _ScaleRatioB: 0.7222222 + - _ScaleRatioC: 0.7222222 + - _ScaleX: 1 + - _ScaleY: 1 + - _ScreenTilingPixelsPerUnit: 100 + - _ScreenWidthUnits: 10 + - _ShaderFading: 0 + - _ShaderFlags: 0 + - _ShaderSpace: 0 + - _ShadowFade: 1 + - _SharpenFactor: 4 + - _SharpenFade: 1 + - _SharpenOffset: 2 + - _Sharpness: 0 + - _ShiftHueSpeed: 0.5 + - _ShiftingBrightness: 1 + - _ShiftingContrast: 0.5 + - _ShiftingDensity: 1.5 + - _ShiftingFade: 1 + - _ShiftingRainbowToggle: 0 + - _ShiftingSaturation: 0.8 + - _ShiftingSpeed: 0.5 + - _ShineContrast: 2 + - _ShineFade: 1 + - _ShineFrequency: 0.3 + - _ShineMaskToggle: 0 + - _ShineRotation: 30 + - _ShineSaturation: 0.5 + - _ShineSmooth: 1 + - _ShineSpeed: 5 + - _ShineWidth: 0.1 + - _SineGlowContrast: 1 + - _SineGlowFade: 1 + - _SineGlowFrequency: 4 + - _SineGlowMaskToggle: 0 + - _SineGlowMax: 1 + - _SineGlowMin: 0 + - _SineMoveFade: 1 + - _SineRotateAngle: 15 + - _SineRotateFade: 1 + - _SineRotateFrequency: 1 + - _SineScaleFrequency: 2 + - _SmokeAlpha: 1 + - _SmokeDarkEdge: 1 + - _SmokeNoiseFactor: 0.4 + - _SmokeNoiseScale: 0.5 + - _SmokeSmoothness: 1 + - _SmokeVertexSeed: 0 + - _SourceAlphaDissolveFade: 1 + - _SourceAlphaDissolveInvert: 0 + - _SourceAlphaDissolveNoiseFactor: 0.2 + - _SourceAlphaDissolveWidth: 0.2 + - _SourceGlowDissolveFade: 1 + - _SourceGlowDissolveInvert: 0 + - _SourceGlowDissolveNoiseFactor: 0.2 + - _SourceGlowDissolveWidth: 0.1 + - _SpecularPower: 2 + - _SplitToningBalance: 1 + - _SplitToningContrast: 1 + - _SplitToningFade: 1 + - _SplitToningShift: 0 + - _SpriteSheetFix: 0 + - _SqueezeFade: 1 + - _SqueezePower: 1 + - _SquishFade: 1 + - _SquishFlip: 0 + - _SquishSquish: 0.1 + - _SquishStretch: 0.1 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _StrongTintContrast: 0 + - _StrongTintContrastToggle: 0 + - _StrongTintFade: 1 + - _StrongTintMaskToggle: 0 + - _TMPSmoothness: 5 + - _TMPThickness: -0.45 + - _TextureHeight: 1024 + - _TextureLayer1Columns: 3 + - _TextureLayer1Contrast: 1 + - _TextureLayer1ContrastToggle: 0 + - _TextureLayer1EdgeClip: 0.005 + - _TextureLayer1Fade: 1 + - _TextureLayer1Rows: 3 + - _TextureLayer1ScrollToggle: 0 + - _TextureLayer1SheetToggle: 1 + - _TextureLayer1Speed: 20 + - _TextureLayer1StartFrame: 0 + - _TextureLayer2Columns: 3 + - _TextureLayer2Contrast: 1 + - _TextureLayer2ContrastToggle: 0 + - _TextureLayer2EdgeClip: 0.005 + - _TextureLayer2Fade: 1 + - _TextureLayer2Rows: 3 + - _TextureLayer2ScrollToggle: 0 + - _TextureLayer2SheetToggle: 1 + - _TextureLayer2Speed: 20 + - _TextureLayer2StartFrame: 0 + - _TextureWidth: 1024 + - _TilingFix: 0 + - _TimeFPS: 5 + - _TimeFrequency: 2 + - _TimeRange: 0.5 + - _TimeSpeed: 1 + - _TimeValue: 0 + - _ToggleCustomTime: 0 + - _ToggleTimeFPS: 0 + - _ToggleTimeFrequency: 0 + - _ToggleTimeSpeed: 0 + - _ToggleUnscaledTime: 0 + - _UIVertexColorAlwaysGammaSpace: 0 + - _UVDistortFade: 1 + - _UVDistortMaskToggle: 0 + - _UVRotateSpeed: 1 + - _UnderlayDilate: 0 + - _UnderlayOffsetX: 0 + - _UnderlayOffsetY: 0 + - _UnderlaySoftness: 0 + - _UseUIAlphaClip: 0 + - _VertexOffsetX: 0 + - _VertexOffsetY: 0 + - _VertexTintFirst: 0 + - _VibrateFade: 1 + - _VibrateFrequency: 100 + - _VibrateOffset: 0.04 + - _VibrateRotation: 4 + - _WeightBold: 0.75 + - _WeightNormal: 0 + - _WiggleFade: 1 + - _WiggleFixedGroundToggle: 0 + - _WiggleFrequency: 2 + - _WiggleOffset: 0.02 + - _WiggleSpeed: 2 + - _WindFlip: 0 + - _WindHighQualityNoise: 0 + - _WindIsParallax: 0 + - _WindLocalWind: 0 + - _WindMaxIntensity: 0.4 + - _WindMaxRotation: 2 + - _WindMinIntensity: -0.4 + - _WindNoiseScale: 0.1 + - _WindNoiseSpeed: 1 + - _WindRotation: 0 + - _WindRotationWindFactor: 1 + - _WindSquishFactor: 0.3 + - _WindSquishWindFactor: 0 + - _WindXPosition: 0 + - _WorldTilingPixelsPerUnit: 100 + m_Colors: + - _AddColorColor: {r: 2.996078, g: 0, b: 0, a: 0} + - _AlphaTintColor: {r: 95.87451, g: 5.019608, b: 95.87451, a: 0} + - _BlackTintColor: {r: 0, g: 0, b: 1, a: 0} + - _BurnEdgeColor: {r: 11.98431, g: 1.129412, b: 0.1254902, a: 0} + - _BurnEdgeNoiseScale: {r: 0.3, g: 0.3, b: 0, a: 0} + - _BurnInsideColor: {r: 0.75, g: 0.5625, b: 0.525, a: 0} + - _BurnInsideNoiseColor: {r: 3084.047, g: 257.0039, b: 0, a: 0} + - _BurnInsideNoiseScale: {r: 0.5, g: 0.5, b: 0, a: 0} + - _BurnPosition: {r: 0, g: 5, b: 0, a: 0} + - _BurnSwirlNoiseScale: {r: 0.1, g: 0.1, b: 0, a: 0} + - _CamouflageBaseColor: {r: 0.7450981, g: 0.7254902, b: 0.5686274, a: 0} + - _CamouflageColorA: {r: 0.62745106, g: 0.5882353, b: 0.43137258, a: 0} + - _CamouflageColorB: {r: 0.47058815, g: 0.43137258, b: 0.31372547, a: 0} + - _CamouflageDistortionIntensity: {r: 0.1, g: 0.1, b: 0, a: 0} + - _CamouflageDistortionScale: {r: 0.5, g: 0.5, b: 0, a: 0} + - _CamouflageDistortionSpeed: {r: 0.1, g: 0.1, b: 0, a: 0} + - _CamouflageNoiseScaleA: {r: 0.25, g: 0.25, b: 0, a: 0} + - _CamouflageNoiseScaleB: {r: 0.25, g: 0.25, b: 0, a: 0} + - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _ColorReplaceFromColor: {r: 0, g: 0, b: 0, a: 0} + - _ColorReplaceToColor: {r: 0, g: 0, b: 0.2, a: 0} + - _CustomFadeNoiseScale: {r: 1, g: 1, b: 0, a: 0} + - _DirectionalAlphaFadeNoiseScale: {r: 0.3, g: 0.3, b: 0, a: 0} + - _DirectionalDistortionDistortion: {r: 0, g: 0.1, b: 0, a: 0} + - _DirectionalDistortionDistortionScale: {r: 1, g: 1, b: 0, a: 0} + - _DirectionalDistortionNoiseScale: {r: 0.4, g: 0.4, b: 0, a: 0} + - _DirectionalGlowFadeEdgeColor: {r: 11.98431, g: 0.6901961, b: 0.6901961, a: 0} + - _DirectionalGlowFadeNoiseScale: {r: 0.4, g: 0.4, b: 0, a: 0} + - _EnchantedHighColor: {r: 0, g: 0.7098798, b: 4.237095, a: 0} + - _EnchantedLowColor: {r: 2.996078, g: 0, b: 0, a: 0} + - _EnchantedScale: {r: 0.1, g: 0.1, b: 0, a: 0} + - _EnchantedSpeed: {r: 0, g: 1, b: 0, a: 0} + - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} + - _FaceColor: {r: 1, g: 1, b: 1, a: 1} + - _FadingNoiseScale: {r: 0.2, g: 0.2, b: 0, a: 0} + - _FadingPosition: {r: 0, g: 0, b: 0, a: 0} + - _FlameNoiseScale: {r: 1.2, g: 0.8, b: 0, a: 0} + - _FlameSpeed: {r: 0, g: -0.5, b: 0, a: 0} + - _FrozenHighlightColor: {r: 1.797647, g: 4.604501, b: 5.992157, a: 1} + - _FrozenHighlightDistortion: {r: 0.5, g: 0.5, b: 0, a: 0} + - _FrozenHighlightDistortionScale: {r: 0.2, g: 0.2, b: 0, a: 0} + - _FrozenHighlightDistortionSpeed: {r: -0.05, g: -0.05, b: 0, a: 0} + - _FrozenHighlightScale: {r: 0.2, g: 0.2, b: 0, a: 0} + - _FrozenHighlightSpeed: {r: 0.1, g: 0.1, b: 0, a: 0} + - _FrozenSnowColor: {r: 1.123529, g: 1.373203, b: 1.498039, a: 0} + - _FrozenSnowScale: {r: 0.1, g: 0.1, b: 0, a: 0} + - _FrozenTint: {r: 1.819608, g: 4.611765, b: 5.992157, a: 0} + - _FullAlphaDissolveNoiseScale: {r: 0.1, g: 0.1, b: 0, a: 0} + - _FullDistortionDistortion: {r: 0.2, g: 0.2, b: 0, a: 0} + - _FullDistortionNoiseScale: {r: 0.5, g: 0.5, b: 0, a: 0} + - _FullGlowDissolveEdgeColor: {r: 11.98431, g: 0.627451, b: 0.627451, a: 0} + - _FullGlowDissolveNoiseScale: {r: 0.1, g: 0.1, b: 0, a: 0} + - _GlitchDistortion: {r: 0.1, g: 0, b: 0, a: 0} + - _GlitchDistortionScale: {r: 0, g: 3, b: 0, a: 0} + - _GlitchDistortionSpeed: {r: 0, g: 1, b: 0, a: 0} + - _GlitchMaskScale: {r: 0, g: 0.2, b: 0, a: 0} + - _GlitchMaskSpeed: {r: 0, g: 4, b: 0, a: 0} + - _GlitchNoiseScale: {r: 0, g: 3, b: 0, a: 0} + - _GlitchNoiseSpeed: {r: 0, g: 1, b: 0, a: 0} + - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} + - _HalftonePosition: {r: 0, g: 0, b: 0, a: 0} + - _HologramTint: {r: 0.3137255, g: 1.662745, b: 2.996078, a: 1} + - _InkSpreadColor: {r: 8.47419, g: 5.013525, b: 0.08873497, a: 0} + - _InkSpreadNoiseScale: {r: 0.4, g: 0.4, b: 0, a: 0} + - _InkSpreadPosition: {r: 0.5, g: -1, b: 0, a: 0} + - _InnerOutlineColor: {r: 11.98431, g: 1.254902, b: 1.254902, a: 1} + - _InnerOutlineDistortionIntensity: {r: 0.01, g: 0.01, b: 0, a: 0} + - _InnerOutlineNoiseScale: {r: 4, g: 4, b: 0, a: 0} + - _InnerOutlineNoiseSpeed: {r: 0, g: 0.1, b: 0, a: 0} + - _InnerOutlineTextureSpeed: {r: 0.5, g: 0, b: 0, a: 0} + - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} + - _MetalColor: {r: 5.992157, g: 3.639216, b: 0.3137255, a: 1} + - _MetalHighlightColor: {r: 5.992157, g: 3.796078, b: 0.6588235, a: 1} + - _MetalNoiseDistortion: {r: 0.5, g: 0.5, b: 0, a: 0} + - _MetalNoiseDistortionScale: {r: 0.2, g: 0.2, b: 0, a: 0} + - _MetalNoiseDistortionSpeed: {r: -0.05, g: -0.05, b: 0, a: 0} + - _MetalNoiseScale: {r: 0.25, g: 0.25, b: 0, a: 0} + - _MetalNoiseSpeed: {r: 0.05, g: 0.05, b: 0, a: 0} + - _OuterOutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _OuterOutlineDistortionIntensity: {r: 0.01, g: 0.01, b: 0, a: 0} + - _OuterOutlineNoiseScale: {r: 4, g: 4, b: 0, a: 0} + - _OuterOutlineNoiseSpeed: {r: 0, g: 0.1, b: 0, a: 0} + - _OuterOutlineTextureSpeed: {r: 0.5, g: 0, b: 0, a: 0} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _PingPongGlowFrom: {r: 5.992157, g: 0.1882353, b: 0.1882353, a: 0} + - _PingPongGlowTo: {r: 0.1882353, g: 0.1882353, b: 5.992157, a: 0} + - _PixelOutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _PixelOutlineTextureSpeed: {r: 0.5, g: 0, b: 0, a: 0} + - _PoisonColor: {r: 0.3137255, g: 2.996078, b: 0.3137255, a: 0} + - _PoisonNoiseScale: {r: 0.2, g: 0.2, b: 0, a: 0} + - _PoisonNoiseSpeed: {r: 0, g: -0.2, b: 0, a: 0} + - _RainbowCenter: {r: 0, g: 0, b: 0, a: 0} + - _RainbowNoiseScale: {r: 0.2, g: 0.2, b: 0, a: 0} + - _RecolorRGBBlueTint: {r: 1, g: 1, b: 1, a: 0.5019608} + - _RecolorRGBGreenTint: {r: 1, g: 1, b: 1, a: 0.5019608} + - _RecolorRGBRedTint: {r: 1, g: 1, b: 1, a: 0.5019608} + - _RecolorRGBYCPBlueTint: {r: 1, g: 1, b: 1, a: 0.5019608} + - _RecolorRGBYCPCyanTint: {r: 1, g: 1, b: 1, a: 0.5019608} + - _RecolorRGBYCPGreenTint: {r: 1, g: 1, b: 1, a: 0.5019608} + - _RecolorRGBYCPPurpleTint: {r: 1, g: 1, b: 1, a: 0.5019608} + - _RecolorRGBYCPRedTint: {r: 1, g: 1, b: 1, a: 0.5019608} + - _RecolorRGBYCPYellowTint: {r: 1, g: 1, b: 1, a: 0.5019608} + - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _ScreenTilingOffset: {r: 0, g: 0, b: 0, a: 0} + - _ScreenTilingScale: {r: 1, g: 1, b: 0, a: 0} + - _ShadowColor: {r: 0, g: 0, b: 0, a: 0} + - _ShadowOffset: {r: 0.05, g: -0.05, b: 0, a: 0} + - _ShiftingColorA: {r: 1.498039, g: 0, b: 0, a: 0} + - _ShiftingColorB: {r: 1.498039, g: 0.7490196, b: 0, a: 0} + - _ShineColor: {r: 11.98431, g: 11.98431, b: 11.98431, a: 0} + - _SineGlowColor: {r: 0, g: 2.007843, b: 2.996078, a: 0} + - _SineMoveFrequency: {r: 1, g: 1, b: 0, a: 0} + - _SineMoveOffset: {r: 0, g: 0.5, b: 0, a: 0} + - _SineRotatePivot: {r: 0.5, g: 0.5, b: 0, a: 0} + - _SineScaleFactor: {r: 0.2, g: 0.2, b: 0, a: 0} + - _SourceAlphaDissolveNoiseScale: {r: 0.3, g: 0.3, b: 0, a: 0} + - _SourceAlphaDissolvePosition: {r: 0, g: 0, b: 0, a: 0} + - _SourceGlowDissolveEdgeColor: {r: 11.98431, g: 0.627451, b: 0.627451, a: 0} + - _SourceGlowDissolveNoiseScale: {r: 0.3, g: 0.3, b: 0, a: 0} + - _SourceGlowDissolvePosition: {r: 0, g: 0, b: 0, a: 0} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _SplitToningHighlightsColor: {r: 1, g: 0.1, b: 0.1, a: 0} + - _SplitToningShadowsColor: {r: 0.1, g: 0.4000002, b: 1, a: 0} + - _SpriteSheetRect: {r: 0, g: 0, b: 1, a: 1} + - _SqueezeCenter: {r: 0.5, g: 0.5, b: 0, a: 0} + - _SqueezeScale: {r: 2, g: 0, b: 0, a: 0} + - _StrongTintTint: {r: 1, g: 1, b: 1, a: 1} + - _TextureLayer1Color: {r: 0.4494117, g: 1.298301, b: 2.996079, a: 1} + - _TextureLayer1Offset: {r: 0, g: 0, b: 0, a: 0} + - _TextureLayer1Scale: {r: 1, g: 1, b: 0, a: 0} + - _TextureLayer1ScrollSpeed: {r: 0, g: 1, b: 0, a: 0} + - _TextureLayer2Color: {r: 0.4494117, g: 1.298301, b: 2.996079, a: 1} + - _TextureLayer2Offset: {r: 0, g: 0, b: 0, a: 0} + - _TextureLayer2Scale: {r: 1, g: 1, b: 0, a: 0} + - _TextureLayer2ScrollSpeed: {r: 0, g: 1, b: 0, a: 0} + - _UVDistortFrom: {r: -0.02, g: -0.02, b: 0, a: 0} + - _UVDistortNoiseScale: {r: 0.1, g: 0.1, b: 0, a: 0} + - _UVDistortSpeed: {r: 2, g: 2, b: 0, a: 0} + - _UVDistortTo: {r: 0.02, g: 0.02, b: 0, a: 0} + - _UVRotatePivot: {r: 0.5, g: 0.5, b: 0, a: 0} + - _UVScalePivot: {r: 0.5, g: 0.5, b: 0, a: 0} + - _UVScaleScale: {r: 1, g: 1, b: 0, a: 0} + - _UVScrollSpeed: {r: 0.2, g: 0, b: 0, a: 0} + - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} + - _WorldTilingOffset: {r: 0, g: 0, b: 0, a: 0} + - _WorldTilingScale: {r: 1, g: 1, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders.meta b/Assets/Fonts/SDF/ZQK/ZQK Font SDF Glow.mat.meta similarity index 52% rename from Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders.meta rename to Assets/Fonts/SDF/ZQK/ZQK Font SDF Glow.mat.meta index cc8f4b5a8..4513a6444 100644 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders.meta +++ b/Assets/Fonts/SDF/ZQK/ZQK Font SDF Glow.mat.meta @@ -1,8 +1,8 @@ fileFormatVersion: 2 -guid: f51589a19ab9f8f46834348da6cf70d0 -folderAsset: yes -DefaultImporter: +guid: d1840e4d5c5355a438fd745078e16187 +NativeFormatImporter: externalObjects: {} + mainObjectFileID: 2100000 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/Fonts/SDF/ZQK/ZQK Font SDF Outline.mat b/Assets/Fonts/SDF/ZQK/ZQK Font SDF Outline.mat new file mode 100644 index 000000000..14d3be2c4 --- /dev/null +++ b/Assets/Fonts/SDF/ZQK/ZQK Font SDF Outline.mat @@ -0,0 +1,111 @@ +%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: ZQK Font SDF Outline + m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, 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: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Cube: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FaceTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: -478184148220021899, guid: 21262bfde877c70478b3fcaf0d725c46, type: 2} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OutlineTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _Ambient: 0.5 + - _Bevel: 0.5 + - _BevelClamp: 0 + - _BevelOffset: 0 + - _BevelRoundness: 0 + - _BevelWidth: 0 + - _BumpFace: 0 + - _BumpOutline: 0 + - _ColorMask: 15 + - _CullMode: 0 + - _Diffuse: 0.5 + - _FaceDilate: 0 + - _FaceUVSpeedX: 0 + - _FaceUVSpeedY: 0 + - _GlowInner: 0.05 + - _GlowOffset: 0 + - _GlowOuter: 0.05 + - _GlowPower: 0.75 + - _GradientScale: 9 + - _LightAngle: 3.1416 + - _MaskSoftnessX: 0 + - _MaskSoftnessY: 0 + - _OutlineSoftness: 0 + - _OutlineUVSpeedX: 0 + - _OutlineUVSpeedY: 0 + - _OutlineWidth: 0.25 + - _PerspectiveFilter: 0.875 + - _Reflectivity: 10 + - _ScaleRatioA: 0.8888889 + - _ScaleRatioB: 0.7222222 + - _ScaleRatioC: 0.7222222 + - _ScaleX: 1 + - _ScaleY: 1 + - _ShaderFlags: 0 + - _Sharpness: 0 + - _SpecularPower: 2 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _TextureHeight: 1024 + - _TextureWidth: 1024 + - _UnderlayDilate: 0 + - _UnderlayOffsetX: 0 + - _UnderlayOffsetY: 0 + - _UnderlaySoftness: 0 + - _VertexOffsetX: 0 + - _VertexOffsetY: 0 + - _WeightBold: 0.75 + - _WeightNormal: 0 + m_Colors: + - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} + - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} + - _FaceColor: {r: 1, g: 1, b: 1, a: 1} + - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} + - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Fonts/SDF/ZQK/ZQK Font SDF Outline.mat.meta b/Assets/Fonts/SDF/ZQK/ZQK Font SDF Outline.mat.meta new file mode 100644 index 000000000..d06f5f824 --- /dev/null +++ b/Assets/Fonts/SDF/ZQK/ZQK Font SDF Outline.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 538d28bfaad57dc47b726847ab356ae6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Opsive/BehaviorDesigner/Add-Ons/CielonosPack/Conditionals/CheckCooldownTimer.cs b/Assets/Opsive/BehaviorDesigner/Add-Ons/CielonosPack/Conditionals/CheckCooldownTimer.cs index 1e9617e16..57a00c22f 100644 --- a/Assets/Opsive/BehaviorDesigner/Add-Ons/CielonosPack/Conditionals/CheckCooldownTimer.cs +++ b/Assets/Opsive/BehaviorDesigner/Add-Ons/CielonosPack/Conditionals/CheckCooldownTimer.cs @@ -15,7 +15,7 @@ namespace Cielonos.MainGame.Characters.AI public override TaskStatus OnUpdate() { CooldownTimer cooldownTimer = self.selfTimeSm.coolDownTimers[timerName.Value]; - bool conditionMet = checkIfCompleted ? cooldownTimer.IsCompleted : !cooldownTimer.IsCompleted; + bool conditionMet = checkIfCompleted ? cooldownTimer.isCompleted : !cooldownTimer.isCompleted; return conditionMet ? TaskStatus.Success : TaskStatus.Failure; } } diff --git a/Assets/OtherPlugins/Le Tai's Asset.meta b/Assets/OtherPlugins/Le Tai's Asset.meta deleted file mode 100644 index 6fa91733b..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 762edfd7b07d0234683a7363f84f98c8 -folderAsset: yes -timeCreated: 1489330932 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common.meta b/Assets/OtherPlugins/Le Tai's Asset/Common.meta deleted file mode 100644 index 41879c2dc..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 9e0a8b8cb3a94310a4032b06bb85bc40 -timeCreated: 1751091994 \ No newline at end of file diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/Assets.cs b/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/Assets.cs deleted file mode 100644 index 230f9acd3..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/Assets.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -using UnityEditor; -using UnityEngine; - -namespace LeTai.Common.Editor -{ -public static class Assets -{ - public static T Find(string assetName, string label = "TranslucentImageEditorResources") where T : Object - { - var guids = AssetDatabase.FindAssets($"l:{label} {assetName}"); - if (guids.Length == 0) - { - Debug.LogError($"Asset \"{assetName}\" not found. " + - $"Make sure it have the label \"TranslucentImageEditorResources\""); - return null; - } - - var path = AssetDatabase.GUIDToAssetPath(guids[0]); - return AssetDatabase.LoadAssetAtPath(path); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/Assets.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/Assets.cs.meta deleted file mode 100644 index 7640b7feb..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/Assets.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 62f3490712e742dbafd854da4b66319c -timeCreated: 1751092491 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/Common/Editor/Assets.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorCustom.cs b/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorCustom.cs deleted file mode 100644 index 04a2c1faa..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorCustom.cs +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -using System; -using UnityEditor; -using UnityEngine; - -namespace LeTai.Common.Editor -{ -public static class EditorCustom -{ - static readonly GUIContent LABEL = new GUIContent(); - - public class LabelWidthScope : GUI.Scope - { - readonly float oldLabelWidth; - - public LabelWidthScope(float labelWidth) - { - oldLabelWidth = EditorGUIUtility.labelWidth; - EditorGUIUtility.labelWidth = labelWidth; - } - - protected override void CloseScope() - { - EditorGUIUtility.labelWidth = oldLabelWidth; - } - } - - public static (Rect labelRect, Rect fieldRect) PrefixLabel(Rect rect, int id, GUIContent label) - { - var fieldRect = EditorGUI.PrefixLabel(rect, id, label); - var labelRect = new Rect(rect.x, rect.y, rect.width - fieldRect.width, rect.height); - - return (labelRect, fieldRect); - } - - public static float LabelFloatField(Rect rectControl, Rect rectLabel, GUIContent label, float value, GUIStyle styleLabel = null, GUIStyle styleField = null) - { - var controlId = GUIUtility.GetControlID(FocusType.Keyboard, rectControl); - EditorGUI.HandlePrefixLabel(rectControl, rectLabel, label, controlId, styleLabel); - return EditorInternal.DoFloatFieldInternal(rectControl, rectLabel, controlId, value, style: styleField); - } - - public static void ComputedPropertyField(SerializedProperty property, Func compute) - { - using var _ = new EditorGUILayout.HorizontalScope(); - EditorGUILayout.PropertyField(property); - EditorGUILayout.LabelField(compute(property), GUILayout.ExpandWidth(false)); - } - - public static bool LinkButton(string label, params GUILayoutOption[] options) - { - LABEL.text = label; - return LinkButton(LABEL, options); - } - - public static bool LinkButton(GUIContent label, params GUILayoutOption[] options) - { - var rect = GUILayoutUtility.GetRect(label, EditorStyles.linkLabel, options); - rect = EditorGUI.IndentedRect(rect); - - // var prevHandleColor = Handles.color; - // Handles.color = EditorStyles.linkLabel.normal.textColor; - // Handles.DrawLine(new Vector3(position.xMin + EditorStyles.linkLabel.padding.left, position.yMax), - // new Vector3(position.xMax - EditorStyles.linkLabel.padding.right, position.yMax)); - // Handles.color = prevHandleColor; - - EditorGUIUtility.AddCursorRect(rect, MouseCursor.Link); - - return GUI.Button(rect, label, EditorStyles.linkLabel); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorCustom.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorCustom.cs.meta deleted file mode 100644 index c564502c4..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorCustom.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: a42329183e3c49b9a43603047c1a7e92 -timeCreated: 1751092578 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/Common/Editor/EditorCustom.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorInternal.cs b/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorInternal.cs deleted file mode 100644 index 9499135fa..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorInternal.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System; -using System.Reflection; -using UnityEditor; -using UnityEngine; - -namespace LeTai.Common.Editor -{ -static class EditorInternal -{ - static readonly MethodInfo DO_FLOAT_FIELD_METHOD; -#if UNITY_6000_0_OR_NEWER - static readonly PropertyInfo RECYCLED_EDITOR_PROPERTY; -#else - static readonly FieldInfo RECYCLED_EDITOR_PROPERTY; -#endif - static readonly FieldInfo FLOAT_FIELD_FORMAT_STRING_CONST; - - static EditorInternal() - { - var editorGUIType = typeof(EditorGUI); - const BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Static; - - Type[] argumentTypes = { - Assembly.GetAssembly(editorGUIType).GetType("UnityEditor.EditorGUI+RecycledTextEditor"), - typeof(Rect), - typeof(Rect), - typeof(int), - typeof(float), - typeof(string), - typeof(GUIStyle), - typeof(bool) - }; - DO_FLOAT_FIELD_METHOD = editorGUIType.GetMethod("DoFloatField", flags, null, argumentTypes, null); -#if UNITY_6000_0_OR_NEWER - RECYCLED_EDITOR_PROPERTY = editorGUIType.GetProperty("s_RecycledEditor", flags); -#else - RECYCLED_EDITOR_PROPERTY = editorGUIType.GetField("s_RecycledEditor", flags); -#endif - FLOAT_FIELD_FORMAT_STRING_CONST = editorGUIType.GetField("kFloatFieldFormatString", flags); - } - - internal static float DoFloatFieldInternal( - Rect position, - Rect dragHotZone, - int id, - float value, - string formatString = null, - GUIStyle style = null, - bool draggable = true - ) - { - style = style ?? EditorStyles.numberField; - formatString = formatString ?? (string)FLOAT_FIELD_FORMAT_STRING_CONST.GetValue(null); - - var editor = RECYCLED_EDITOR_PROPERTY.GetValue(null); - - return (float)DO_FLOAT_FIELD_METHOD.Invoke(null, new[] { - editor, - position, - dragHotZone, - id, - value, - formatString, - style, - draggable - }); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorInternal.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorInternal.cs.meta deleted file mode 100644 index 63a658d8a..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorInternal.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: c8c94534f87244218d95b02d343eabf2 -timeCreated: 1695375609 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/Common/Editor/EditorInternal.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorPrefValue.cs b/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorPrefValue.cs deleted file mode 100644 index aeaf9682a..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorPrefValue.cs +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -using System; -using UnityEditor; - -namespace LeTai.Common.Editor -{ -public class EditorPrefValue -{ - readonly string key; - readonly T initialValue; - - public T Value - { - get - { - if (!EditorPrefs.HasKey(key)) - { - Value = initialValue; - return initialValue; - } - - return typeof(T) switch { - { } t when t == typeof(bool) => (T)(object)EditorPrefs.GetBool(key), - { } t when t == typeof(float) => (T)(object)EditorPrefs.GetFloat(key), - - _ => throw new ArgumentException("Type " + typeof(T) + " is not supported.") - }; - } - set - { - switch (value) - { - case bool v: - EditorPrefs.SetBool(key, v); - break; - case float v: - EditorPrefs.SetFloat(key, v); - break; - default: - throw new ArgumentException("Type " + typeof(T) + " is not supported."); - } - } - } - - public EditorPrefValue(string key, T initialValue = default) - { - this.key = key; - this.initialValue = initialValue; - } - - public static implicit operator T(EditorPrefValue value) - { - return value.Value; - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorPrefValue.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorPrefValue.cs.meta deleted file mode 100644 index cc10e51cf..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorPrefValue.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 6654bb5e80e849c999172d15fba0797d -timeCreated: 1751272512 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/Common/Editor/EditorPrefValue.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorProperty.cs b/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorProperty.cs deleted file mode 100644 index d78290481..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorProperty.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System; -using System.Reflection; -using System.Text; -using UnityEditor; -using UnityEngine; - -namespace LeTai.Common.Editor -{ -public class EditorProperty -{ - public readonly SerializedProperty serializedProperty; - - readonly SerializedObject serializedObject; - readonly MethodInfo propertySetter; - readonly SerializedProperty dirtyFlag; - - public EditorProperty(SerializedObject obj, string name, string serializedName = null) - { - serializedObject = obj; - serializedProperty = FindPropertyByName(serializedObject, name); - propertySetter = serializedObject.targetObject.GetType().GetProperty(name).SetMethod; - dirtyFlag = serializedObject.FindProperty("modifiedFromInspector"); - } - - static SerializedProperty FindPropertyByName(SerializedObject obj, string name) - { - var sb = new StringBuilder(name.Length + 1); - var lower = sb.Append(char.ToLowerInvariant(name[0])).Append(name[1..]).ToString(); - var property = obj.FindProperty(lower); - if (property != null) - return property; - - sb.Clear(); - property = obj.FindProperty(sb.Append('_').Append(lower).ToString()); - if (property != null) - return property; - - throw new ArgumentException($"Can't automatically find serialized name for property {name} in {obj.targetObject.GetType()}"); - } - - public void Draw(params GUILayoutOption[] options) - { - using (var scope = new EditorGUI.ChangeCheckScope()) - { - EditorGUILayout.PropertyField(serializedProperty, options); - - if (!scope.changed) - return; - - if (dirtyFlag != null) - dirtyFlag.boolValue = true; - - serializedObject.ApplyModifiedProperties(); - - if (serializedProperty.propertyType != SerializedPropertyType.Generic) // Not needed for now - { - var propertyValue = GetPropertyValue(); - CallSetters(propertyValue); - } - - // In case the setter changes any serialized data - serializedObject.Update(); - } - } - - public void CallSetters(object value) - { - foreach (var target in serializedObject.targetObjects) - propertySetter.Invoke(target, new[] { value }); - } - - object GetPropertyValue() - { - switch (serializedProperty.propertyType) - { - case SerializedPropertyType.ObjectReference: - return serializedProperty.objectReferenceValue; - case SerializedPropertyType.Float: - return serializedProperty.floatValue; - case SerializedPropertyType.Integer: - return serializedProperty.intValue; - case SerializedPropertyType.Rect: - return serializedProperty.rectValue; - case SerializedPropertyType.Enum: - return serializedProperty.enumValueIndex; - case SerializedPropertyType.Boolean: - return serializedProperty.boolValue; - case SerializedPropertyType.Color: - return serializedProperty.colorValue; - case SerializedPropertyType.Vector2: - return serializedProperty.vector2Value; - default: throw new NotImplementedException($"Type {serializedProperty.propertyType} is not implemented"); - } - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorUtils.cs b/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorUtils.cs deleted file mode 100644 index 4388e801d..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorUtils.cs +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -using System.Collections.Generic; -using System.Linq; -using UnityEditor; -using UnityEditor.Build; - -namespace LeTai.Common.Editor -{ -public static class EditorUtils -{ - public static List GetDefines(BuildTarget buildTarget = BuildTarget.NoTarget) - { - if (buildTarget == BuildTarget.NoTarget) - buildTarget = EditorUserBuildSettings.activeBuildTarget; - - var currentGroup = BuildPipeline.GetBuildTargetGroup(buildTarget); - string definesStr; -#if UNITY_2021_2_OR_NEWER - var namedBuildTarget = NamedBuildTarget.FromBuildTargetGroup(currentGroup); - definesStr = PlayerSettings.GetScriptingDefineSymbols(namedBuildTarget); -#else - definesStr = PlayerSettings.GetScriptingDefineSymbolsForGroup(currentGroup); -#endif - return definesStr.Split(';').ToList(); - } - - public static void SetDefines(IEnumerable defines, BuildTarget buildTarget = BuildTarget.NoTarget) - { - if (buildTarget == BuildTarget.NoTarget) - buildTarget = EditorUserBuildSettings.activeBuildTarget; - - var newDefinesStr = string.Join(";", defines); - - var currentGroup = BuildPipeline.GetBuildTargetGroup(buildTarget); -#if UNITY_2021_2_OR_NEWER - var namedBuildTarget = NamedBuildTarget.FromBuildTargetGroup(currentGroup); - PlayerSettings.SetScriptingDefineSymbols(namedBuildTarget, newDefinesStr); -#else - PlayerSettings.SetScriptingDefineSymbolsForGroup(currentGroup, newDefinesStr); -#endif - } - - public static void AddDefines(HashSet toAdd, BuildTarget buildTarget = BuildTarget.NoTarget) - { - if (buildTarget == BuildTarget.NoTarget) - buildTarget = EditorUserBuildSettings.activeBuildTarget; - - var defines = GetDefines(buildTarget); - var missing = toAdd.Except(defines).ToList(); - defines.AddRange(missing); - if (missing.Count > 0) - SetDefines(defines, buildTarget); - } - - public static void RemoveDefines(HashSet toRemove, BuildTarget buildTarget = BuildTarget.NoTarget) - { - if (buildTarget == BuildTarget.NoTarget) - buildTarget = EditorUserBuildSettings.activeBuildTarget; - - var defines = GetDefines(buildTarget); - var removed = defines.Except(toRemove).ToList(); - if (removed.Count < defines.Count) - SetDefines(removed, buildTarget); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorUtils.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorUtils.cs.meta deleted file mode 100644 index 89cb94a9f..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorUtils.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: cead91eb2ca046498697087e0c426513 -timeCreated: 1751099123 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/Common/Editor/EditorUtils.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/Knob.cs b/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/Knob.cs deleted file mode 100644 index 5c133b5b3..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/Knob.cs +++ /dev/null @@ -1,114 +0,0 @@ -using UnityEditor; -using UnityEngine; -using EGU = UnityEditor.EditorGUIUtility; - -namespace LeTai.Common.Editor -{ -public static class EditorGUICustom -{ - static readonly Texture2D KNOB_BG_TEXTURE = Assets.Find("Knob_BG"); - static readonly Texture2D KNOB_FG_TEXTURE = Assets.Find("Knob_FG"); - - static readonly Color KNOB_BG_COLOR; - static readonly Color KNOB_FG_COLOR; - static readonly Color KNOB_FG_COLOR_ACTIVE; - - static EditorGUICustom() - { - if (EGU.isProSkin) - { - KNOB_BG_COLOR = new Color(.164f, .164f, .164f); - KNOB_FG_COLOR = new Color(.701f, .701f, .701f); - KNOB_FG_COLOR_ACTIVE = new Color(.49f, .67f, .94f); - } - else - { - KNOB_BG_COLOR = new Color(.941f, .941f, .941f); - KNOB_FG_COLOR = new Color(.239f, .239f, .239f); - KNOB_FG_COLOR_ACTIVE = new Color(.054f, .274f, .549f); - } - } - - - public static float KnobField(GUIContent label, float angle, Vector2 zeroVector, float height = 0) - { - if (height <= 0) - height = EGU.singleLineHeight * 1.3f; - float knobSize = height + EGU.standardVerticalSpacing * (4 - 1); - float knobYOffset = (height - knobSize) / 2; - - Rect rect = EditorGUILayout.GetControlRect(true, height); - - var labelRect = new Rect(rect) { - y = rect.y + (height - EGU.singleLineHeight) / 2, - height = EGU.singleLineHeight - }; - - var oldLabelWidth = EGU.labelWidth; - EGU.labelWidth -= height; - - int fieldId = GUIUtility.GetControlID(FocusType.Keyboard, labelRect); - var fieldRect = EditorGUI.PrefixLabel(labelRect, fieldId, label); - labelRect.xMax = fieldRect.x; - fieldRect.x += height; - fieldRect.width -= height; - - Rect knobRect = new Rect(rect.x + EGU.labelWidth + knobYOffset, - rect.y + knobYOffset, - knobSize, knobSize); - - angle = Knob(knobRect, angle, zeroVector); - angle = EditorInternal.DoFloatFieldInternal(fieldRect, labelRect, fieldId, angle); - - EGU.labelWidth = oldLabelWidth; - - return angle; - } - - public static float Knob(Rect position, float angle, Vector2 zeroVector) - { - int controlID = GUIUtility.GetControlID(FocusType.Passive, position); - - if (Event.current != null) - { - if (Event.current.type == EventType.MouseDown && position.Contains(Event.current.mousePosition)) - { - GUIUtility.hotControl = controlID; - - var dir = (Event.current.mousePosition - position.center).normalized; - angle = MathCustom.VecToAngle360(zeroVector, dir); - - GUI.changed = true; - } - else if (Event.current.type == EventType.MouseUp && GUIUtility.hotControl == controlID) - { - GUIUtility.hotControl = 0; - } - else if (Event.current.type == EventType.MouseDrag && GUIUtility.hotControl == controlID) - { - var dir = (Event.current.mousePosition - position.center).normalized; - angle = MathCustom.VecToAngle360(zeroVector, dir); - - GUI.changed = true; - } - else if (Event.current.type == EventType.Repaint) - { - var notRotated = GUI.matrix; - var oldColor = GUI.color; - var highlighted = GUIUtility.hotControl == controlID; - - GUIUtility.RotateAroundPivot(angle, position.center); - GUI.color = KNOB_BG_COLOR; - GUI.DrawTexture(position, KNOB_BG_TEXTURE, ScaleMode.ScaleToFit, true, 1); - GUI.color = highlighted ? KNOB_FG_COLOR_ACTIVE : KNOB_FG_COLOR; - GUI.DrawTexture(position, KNOB_FG_TEXTURE, ScaleMode.ScaleToFit, true, 1); - - GUI.matrix = notRotated; - GUI.color = oldColor; - } - } - - return angle; - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/LeTai.Common.Editor.asmdef b/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/LeTai.Common.Editor.asmdef deleted file mode 100644 index ec86eb2f5..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/LeTai.Common.Editor.asmdef +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "LeTai.Common.Editor", - "rootNamespace": "LeTai.Common.Editor", - "references": ["GUID:07cd4d3e8f0583542ab74e7b8b032f7e"], - "includePlatforms": [ - "Editor" - ], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [], - "versionDefines": [], - "noEngineReferences": false -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/LeTai.Common.Editor.asmdef.meta b/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/LeTai.Common.Editor.asmdef.meta deleted file mode 100644 index 2b8613822..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/LeTai.Common.Editor.asmdef.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: 6329229812871a6488deb623f659955b -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/Common/Editor/LeTai.Common.Editor.asmdef - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/MathCustom.cs b/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/MathCustom.cs deleted file mode 100644 index 345b8ef35..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/MathCustom.cs +++ /dev/null @@ -1,24 +0,0 @@ -using UnityEngine; - -namespace LeTai.Common.Editor -{ -public static class MathCustom -{ - public static float VecToAngle360(Vector2 from, Vector2 to) - { - float angle = Vector2.SignedAngle(from, to); - return angle < 0 ? 360 + angle : angle; - } - - public static Vector2 Angle360ToVec(float angle, Vector2 zeroVector) - { - float sin = Mathf.Sin(angle * Mathf.Deg2Rad); - float cos = Mathf.Cos(angle * Mathf.Deg2Rad); - - return new Vector2( - zeroVector.x * cos - zeroVector.y * sin, - zeroVector.x * sin + zeroVector.y * cos - ); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/MathCustom.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/MathCustom.cs.meta deleted file mode 100644 index eb3d59bd6..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/MathCustom.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: cd2f496da54e4254ac9c1b0ca2e76fb1 -timeCreated: 1695714616 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/Common/Editor/MathCustom.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/SpringPropertyDrawer.cs b/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/SpringPropertyDrawer.cs deleted file mode 100644 index 4cc7e5127..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/SpringPropertyDrawer.cs +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -using UnityEditor; -using UnityEngine; - -namespace LeTai.Common.Editor -{ -[CustomPropertyDrawer(typeof(TinyTween.Spring))] -public class SpringDrawer : PropertyDrawer -{ - public override float GetPropertyHeight(SerializedProperty property, GUIContent label) - { - return EditorGUIUtility.singleLineHeight * 2 + EditorGUIUtility.standardVerticalSpacing; - } - - public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) - { - EditorGUI.BeginProperty(position, label, property); - - SerializedProperty approxDurationProp = property.FindPropertyRelative(nameof(TinyTween.Spring.approxDuration)); - SerializedProperty overshootProp = property.FindPropertyRelative(nameof(TinyTween.Spring.overshoot)); - SerializedProperty stiffnessProp = property.FindPropertyRelative(nameof(TinyTween.Spring.stiffness)); - SerializedProperty dampingProp = property.FindPropertyRelative(nameof(TinyTween.Spring.damping)); - - position = EditorGUI.PrefixLabel(position, label); - - using var _ = new EditorCustom.LabelWidthScope(64f); - using var changes = new EditorGUI.ChangeCheckScope(); - - float lineHeight = EditorGUIUtility.singleLineHeight; - Rect durationRect = new Rect(position.x, position.y, - position.width, lineHeight); - Rect overshootRect = new Rect(position.x, position.y + lineHeight + EditorGUIUtility.standardVerticalSpacing, - position.width, lineHeight); - - float approxDuration = EditorGUI.FloatField(durationRect, "Duration", approxDurationProp.floatValue); - float overshoot = EditorGUI.Slider(overshootRect, "Overshoot", overshootProp.floatValue, 0, .5f); - - if (changes.changed) - { - TinyTween.Spring s = TinyTween.Spring.DurationOvershoot(approxDuration, overshoot); - - approxDurationProp.floatValue = s.approxDuration; - overshootProp.floatValue = s.overshoot; - stiffnessProp.floatValue = s.stiffness; - dampingProp.floatValue = s.damping; - } - - EditorGUI.EndProperty(); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/SpringPropertyDrawer.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/SpringPropertyDrawer.cs.meta deleted file mode 100644 index f8ef2b161..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/SpringPropertyDrawer.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 03b5046c644a48e8a2078a44033e85d0 -timeCreated: 1754471011 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/Common/Editor/SpringPropertyDrawer.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/LeTai.Common.asmdef b/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/LeTai.Common.asmdef deleted file mode 100644 index e22da012d..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/LeTai.Common.asmdef +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "LeTai.Common", - "rootNamespace": "LeTai.Common", - "references": [], - "includePlatforms": [], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [], - "versionDefines": [], - "noEngineReferences": false -} \ No newline at end of file diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/LeTai.Common.asmdef.meta b/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/LeTai.Common.asmdef.meta deleted file mode 100644 index a9f373cad..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/LeTai.Common.asmdef.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: 07cd4d3e8f0583542ab74e7b8b032f7e -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/Common/Runtime/LeTai.Common.asmdef - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/MaterialUtils.cs b/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/MaterialUtils.cs deleted file mode 100644 index 50b71a8d0..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/MaterialUtils.cs +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -using System.Runtime.CompilerServices; -using UnityEngine; - -namespace LeTai.Common -{ -public static class MaterialUtils -{ - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static void SetKeyword(Material mat, string keyword, bool isOn) - { - if (isOn) - mat.EnableKeyword(keyword); - else - mat.DisableKeyword(keyword); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static void CopyKeyword(Material src, Material dst, string keyword) - { - SetKeyword(dst, keyword, src.IsKeywordEnabled(keyword)); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static void CopyFloat(Material src, Material dst, int id) - { - dst.SetFloat(id, src.GetFloat(id)); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static void CopyVector(Material src, Material dst, int id) - { - dst.SetVector(id, src.GetVector(id)); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/MaterialUtils.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/MaterialUtils.cs.meta deleted file mode 100644 index f70a6109b..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/MaterialUtils.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 7a120429bba141f3be27a147bcf46023 -timeCreated: 1752050295 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/Common/Runtime/MaterialUtils.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/Packing.cs b/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/Packing.cs deleted file mode 100644 index 911ab97d3..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/Packing.cs +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -using System; -using System.Runtime.CompilerServices; -using UnityEngine; - -namespace LeTai.Common -{ -public static class Packing -{ - /// - /// Packs floats into a single float, using up to 30 bits. - /// The mapping guarantees the resulting float is not NaN, Inf, or subnormal. - /// - public readonly struct FloatPacker - { - private readonly int _bitsPerFloat; - - private readonly uint _payload; - private readonly int _nBitsUsed; - - private FloatPacker(uint payload, int nBitsUsed, int bitsPerFloat) - { - _payload = payload; - _nBitsUsed = nBitsUsed; - _bitsPerFloat = bitsPerFloat; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static FloatPacker Varying() => new FloatPacker(0u, 0, 0); - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static FloatPacker Uniform(int bitsPerFloat) => new FloatPacker(0u, 0, bitsPerFloat); - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public FloatPacker Enqueue(float value, float min, float max, int nBits) - { - if (nBits == 0) - throw new ArgumentException($"Use {nameof(Uniform)} or specify {nameof(nBits)}"); - - uint q = Quantize(value, min, max, nBits); - return new FloatPacker((q << _nBitsUsed) | _payload, _nBitsUsed + nBits, _bitsPerFloat); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public FloatPacker Enqueue(float value, float min, float max) => Enqueue(value, min, max, _bitsPerFloat); - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public FloatPacker Enqueue(float value, float max) => Enqueue(value, 0, max, _bitsPerFloat); - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public float Finish() - { - if (_nBitsUsed > 30) - throw new ArgumentOutOfRangeException(nameof(_nBitsUsed), $"Must use <= 30 bits. Requesting {_nBitsUsed} bits"); - - uint bits = EnsureNormalFloatExponent(_payload); - return UintToFloatBits(bits); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static implicit operator float(FloatPacker packer) => packer.Finish(); - } - - - /// - /// Packs floats into a single float, using up to 30 bits. - /// The mapping guarantees the resulting float is not NaN, Inf, or subnormal. - /// - public static float PackFloatsSafe( - float a, float minA, float maxA, int nBitsA, - float b, float minB, float maxB, int nBitsB - ) - { - if (nBitsA + nBitsB > 30) - throw new ArgumentOutOfRangeException(nameof(nBitsA), $"{nameof(nBitsA)} + {nameof(nBitsB)} must be <= 30"); - - uint aQuantized = Quantize(a, minA, maxA, nBitsA); - uint bQuantized = Quantize(b, minB, maxB, nBitsB); - - uint payload = (aQuantized << nBitsB) | bQuantized; // [0, (1u << 30) - 1] - uint bits = EnsureNormalFloatExponent(payload); - - return UintToFloatBits(bits); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static uint Quantize(float x, float min, float max, int nBits) - { - // Not checking positive range for speed. - float normalized = Mathf.Clamp((x - min) / (max - min), 0f, 1f); - uint maxQuantized = (1u << nBits) - 1u; - return (uint)(normalized * maxQuantized + 0.5f); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static uint EnsureNormalFloatExponent(uint bits) - { - uint exponent = (bits >> 23) + 1; - uint mantissa = bits & 0x7FFFFFu; - return (exponent << 23) | mantissa; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static float UintToFloatBits(uint bits) - { - byte[] bytes = BitConverter.GetBytes(bits); - return BitConverter.ToSingle(bytes, 0); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/Packing.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/Packing.cs.meta deleted file mode 100644 index 7ede779f1..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/Packing.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 0f7cb69b8d944a1b9553e8795472f6e1 -timeCreated: 1750649405 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/Common/Runtime/Packing.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/RectTransformUtility.cs b/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/RectTransformUtility.cs deleted file mode 100644 index ade407954..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/RectTransformUtility.cs +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -using UnityEngine; - -namespace LeTai.Common -{ -public static class RectTransformUtilityPatch -{ - public static Ray ScreenPointToRay(Camera cam, Vector2 screenPos) - { - if (cam != null) - return cam.ScreenPointToRay(screenPos); - - Vector3 pos = screenPos; - pos.z -= 1e4f; // Larger offset to account for rotation - return new Ray(pos, Vector3.forward); - } - - public static bool ScreenPointToWorldPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector3 worldPoint) - { - worldPoint = Vector2.zero; - Ray ray = ScreenPointToRay(cam, screenPoint); - var plane = new Plane(rect.rotation * Vector3.back, rect.position); - - // Remove unnecessary parallel check - if (!plane.Raycast(ray, out var dist)) - return false; - - worldPoint = ray.GetPoint(dist); - return true; - } - - public static bool ScreenPointToLocalPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector2 localPoint) - { - localPoint = Vector2.zero; - if (ScreenPointToWorldPointInRectangle(rect, screenPoint, cam, out Vector3 worldPoint)) - { - localPoint = rect.InverseTransformPoint(worldPoint); - return true; - } - return false; - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/RectTransformUtility.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/RectTransformUtility.cs.meta deleted file mode 100644 index 12b01d0b3..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/RectTransformUtility.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: f995fa15a6db4214a82ce742668df43c -timeCreated: 1752649074 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/Common/Runtime/RectTransformUtility.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/SpanUtils.cs b/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/SpanUtils.cs deleted file mode 100644 index 9298d2298..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/SpanUtils.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -using System; -using UnityEngine; - -namespace LeTai.Common -{ -public static class SpanUtils -{ - public static Vector4 ToVector4(ReadOnlySpan span) - { - return new Vector4(span[0], span[1], span[2], span[3]); - } - - public static SpanWriter WriterFor(Span span) => new(span); -} - -public ref struct SpanWriter -{ - readonly Span _span; - int _nextIndex; - - public SpanWriter(Span span) - { - _span = span; - _nextIndex = 0; - } - - public void Reset() => _nextIndex = 0; - - public void Write(T value) - { - _span[_nextIndex++] = value; - } - - public void FillRest(T value = default) - { - if (_nextIndex == _span.Length) - return; - - _span[_nextIndex..].Fill(value); - _nextIndex = _span.Length; - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/SpanUtils.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/SpanUtils.cs.meta deleted file mode 100644 index 58a4f8eb5..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/SpanUtils.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: f5ce123a774b475b90b9794e77ef7e20 -timeCreated: 1758619324 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/Common/Runtime/SpanUtils.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/TinyTween.cs b/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/TinyTween.cs deleted file mode 100644 index a16482539..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/TinyTween.cs +++ /dev/null @@ -1,245 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -using System; -using System.Collections.Generic; -using UnityEngine; - -namespace LeTai.Common -{ -public class TinyTween : MonoBehaviour -{ - [Serializable] - public struct Spring - { - public float stiffness; - public float damping; - public float approxDuration; - public float overshoot; - - public static readonly Spring DEFAULT = DurationOvershoot(.5f, .1f); - - private Spring(float stiffness, float damping, float approxDuration, float overshoot) - { - this.stiffness = stiffness; - this.damping = damping; - this.approxDuration = approxDuration; - this.overshoot = overshoot; - } - - public static Spring DurationOvershoot(float approxDuration, float overshoot) - { - approxDuration = Mathf.Max(0.001f, approxDuration); - overshoot = Mathf.Clamp(overshoot, 0f, 0.999f); - - float z; - if (overshoot < 1e-3f) - { - z = 1f; - } - else - { - float lnOvershoot = Mathf.Log(overshoot); - z = -lnOvershoot / Mathf.Sqrt(Mathf.PI * Mathf.PI + lnOvershoot * lnOvershoot); - } - - float wn = 2f * Mathf.PI / approxDuration; - wn = -Mathf.Log(2e-3f) / (z * approxDuration); - - float k = wn * wn; - float c = 2f * z * wn; - - return new Spring(k, c, approxDuration, overshoot); - } - } - - private static class Ops - { - public static readonly Func ADD; - public static readonly Func SUB; - public static readonly Func MUL; - public static readonly Func IS_NEAR_ZERO; - - static Ops() - { - const float threshold = 2e-3f; - - Ops.ADD = (a, b) => a + b; - Ops.SUB = (a, b) => a - b; - Ops.MUL = (a, s) => a * s; - Ops.IS_NEAR_ZERO = v => Mathf.Abs(v) < threshold; - - Ops.ADD = (a, b) => a + b; - Ops.SUB = (a, b) => a - b; - Ops.MUL = (a, s) => a * s; - Ops.IS_NEAR_ZERO = v => v.sqrMagnitude < (threshold * threshold); - - Ops.ADD = (a, b) => a + b; - Ops.SUB = (a, b) => a - b; - Ops.MUL = (a, s) => a * s; - Ops.IS_NEAR_ZERO = v => v.sqrMagnitude < (threshold * threshold); - - Ops.ADD = (a, b) => a + b; - Ops.SUB = (a, b) => a - b; - Ops.MUL = (a, s) => a * s; - Ops.IS_NEAR_ZERO = c => (c.r * c.r + c.g * c.g + c.b * c.b + c.a * c.a) < (threshold * threshold); - } - } - - private static class Ops - { - public static T Add(T a, T b) => Ops.ADD(a, b); - public static T Sub(T a, T b) => Ops.SUB(a, b); - public static T Mul(T a, float s) => Ops.MUL(a, s); - public static bool IsNearZero(T v) => Ops.IS_NEAR_ZERO(v); - } - - private abstract class Tween - { - protected Spring spring; - - public abstract bool MaybeRetarget(object newContext, Delegate newOnUpdate, object newTarget); - public abstract bool Tick(float dt); - public abstract void Reset(); - } - - private static readonly Dictionary> TWEEN_POOLS = new(16); - private static TinyTween instance; - - private readonly List _activeTweens = new(); - - private class Tween : Tween where TCtx : class - { - private TCtx _context; - private Action _onUpdate; - private TVal _target; - private TVal _current; - private TVal _velocity; - - public void Setup(TCtx ctx, TVal from, TVal to, Spring spring, Action update) - { - _context = ctx; - _onUpdate = update; - _target = to; - _current = from; - _velocity = default; - - this.spring = spring; - } - - public override bool MaybeRetarget(object newContext, Delegate newOnUpdate, object newTarget) - { - if (newTarget is TVal val - && ReferenceEquals(_context, newContext) - && ReferenceEquals(_onUpdate, newOnUpdate)) - { - _target = val; - return true; - } - return false; - } - - public override bool Tick(float dt) - { - if (_context is UnityEngine.Object uc && !uc) - return true; - if (_context == null) - return true; - - TVal force = Ops.Mul(Ops.Sub(_target, _current), spring.stiffness); - TVal dampingForce = Ops.Mul(_velocity, spring.damping); - TVal acceleration = Ops.Sub(force, dampingForce); - _velocity = Ops.Add(_velocity, Ops.Mul(acceleration, dt)); - _current = Ops.Add(_current, Ops.Mul(_velocity, dt)); - - var shouldStop = Ops.IsNearZero(Ops.Sub(_target, _current)) - && Ops.IsNearZero(_velocity); - - if (shouldStop) - _current = _target; - - try - { - _onUpdate?.Invoke(_context, _current); - } - catch (Exception e) - { - Debug.LogException(e); - return true; - } - - return shouldStop; - } - - public override void Reset() - { - _context = null; - _onUpdate = null; - } - } - - public static void Animate(TCtx context, TVal from, TVal to, Action onUpdate, Spring? spring = null) where TCtx : class - { - if (!instance) - { - // ReSharper disable once Unity.PerformanceCriticalCodeInvocation - instance = new GameObject("[TinyTween]").AddComponent(); - DontDestroyOnLoad(instance.gameObject); - } - - for (int i = 0; i < instance._activeTweens.Count; i++) - { - // ReSharper disable once Unity.PerformanceCriticalCodeInvocation - if (instance._activeTweens[i].MaybeRetarget(context, onUpdate, to)) - return; - } - - Tween newTween = null; - Type tweenType = typeof(Tween); - if (TWEEN_POOLS.TryGetValue(tweenType, out var pool) && pool.Count > 0) - { - newTween = (Tween)pool.Pop(); - } - - newTween ??= new Tween(); - newTween.Setup(context, from, to, spring ?? Spring.DEFAULT, onUpdate); - instance._activeTweens.Add(newTween); - } - - private void Update() - { - if (_activeTweens.Count == 0) return; - - for (int i = _activeTweens.Count - 1; i >= 0; i--) - { - var tween = _activeTweens[i]; - if (tween.Tick(Time.deltaTime)) - { - SwapAndPop(_activeTweens, i); - tween.Reset(); - - Type tweenType = tween.GetType(); - if (!TWEEN_POOLS.TryGetValue(tweenType, out var pool)) - { - pool = new Stack(); - TWEEN_POOLS[tweenType] = pool; - } - pool.Push(tween); - } - } - } - - static void SwapAndPop(List list, int index) - { - int last = list.Count - 1; - list[index] = list[last]; - list.RemoveAt(last); - } - - public static void Move(RectTransform rt, Vector2 to, Spring? spring = null) - { - Animate(rt, rt.anchoredPosition, to, MOVE, spring); - } - - static readonly Action MOVE = static (rt, pos) => rt.anchoredPosition = pos; -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/TinyTween.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/TinyTween.cs.meta deleted file mode 100644 index 8867d851e..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime/TinyTween.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: ab81ce18ae98496393c4e9021cd90940 -timeCreated: 1752827241 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/Common/Runtime/TinyTween.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage.meta deleted file mode 100644 index 09b769a9a..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: f7d17cc01badd084cb6b9f7806e16fc6 -folderAsset: yes -timeCreated: 1474981563 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/CHANGELOG.txt b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/CHANGELOG.txt deleted file mode 100644 index be8d8d974..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/CHANGELOG.txt +++ /dev/null @@ -1,346 +0,0 @@ -Changelog: - -v6.5.0: - - Add selector to swap between multiple Sources on the same Camera - - Fix multiple sources not working in URP - - Fix editor error when using Source without Config - - Improve URP compatibility in certain configurations - - Fix demo looking incorrect - -v6.4.1: - - Fix compilation error in URP - - Fix brightness control not working correctly in gamma space - -v6.4.0: - - Finer brightness control at low brightness. You may need to adjust your brightness value to compensate. - - Fix dithering artifacts at high blur level - - Fix dithering being too visible at low brightness - - Fix blur Strength overwriting settings in Advanced mode when not interacted with - -v6.3.0: - - Add a shortcut to edit blur strength from Translucent Image - - Small bug fixes - -v6.2.2: - - Fix True Shadow integration - -v6.2.1: - - Fix culling not taking Ring Thickness into account - -v6.2.0: - - Paraform: Ring Thickness feature lets you create ring-shaped UIs. - -v6.1.0: - - Smoother blur - - New blur Modes: - - Performance mode costs the same as before while being a little bit smoother. - - Balanced mode is extra smooth and costs a bit more. - - Balanced is the new default. If you're targeting low-end hardware, consider setting it back to Performance. - - Fix blur quality being unstable at different resolution - - Fix blur strength not staying constant at different screen density and aspects. - This behavior is now configurable, but should not need to be configured in most cases - - Fix heap allocation when using Render Graph - - Fix minor editor issues - -v6.0.0: -!! This is a major release indicating breaking changes !! - - The minimum supported Unity version is now 2021.3 - - New Colorful Background Mode that maintains both background colors and foreground contrasts - - Move appearance properties out of material, improving scripting ergonomic, performance, and batching efficiency - - Fix dark background being slightly brighter than expected - - Improve URP performance. No longer requires CameraColorTexture - - No longer dispatch an empty render pass if no Translucent Images are visible - - Other minors under the hood fixes and improvements - *Migration* - - Use Tools > Translucent Image > Migrate to 6.0 to migrate all material settings in the opened scene - to the corresponding component. Make sure to have a backup. - - Optional: refactor spriteBlending -> foregroundOpacity - - Optional: try the new Colorful Background Mode. Appearance properties will need to be adjusted. - - -v5.5.0: - - Display Source's strength in Translucent Image's inspector Source picker to easier distinguish multiple Sources on the same Camera - - Fix some inspector values not updating immediately when changing blur config - - Fix nullref when destroying Translucent Images at runtime - - Fix Skip Culling not working in certain situations - - Fix background not working in certain situations - -v5.4.1: - - Fix Translucent Images temporarily stop working after undoing material settings - - Fix erroneous error logging - -v5.4.0: - - Fix demo scene colors - -v5.3.0: - - Fix vertex color, such as from mesh effect shadow and outline, not being applied correctly - -v5.2.0: - - Reduce banding - - Improve default settings - - Improve documentation - -v5.1.0: - - Increase the minimum supported Unity version to 2020.3 or BiRP and 2021.3 for URP - - New Cull Padding setting to account for UI movement while using limited Update Rate - - Culling now take into account the Camera's viewport - - Support Rect Mask Softness - - Support Canvas feature: Vertex Color Always In Gamma Color Space - - Fix artifact with certain sprites on hdr background - -v5.0.2: - - Fix exception in certain cases - -v5.0.1: - - Fix exception in certain cases - -v5.0.0: -!! This is a major release indicating breaking changes !! - - Culling system minimize GPU usage by only blur part of the screen covered by Translucent Images - - Significant improvement to CPU usage for scenes with a large number of Translucent Images - - Fix Flatten property not working correctly on dark Images - - Update the demo scenes for the Builtin Render Pipeline to be the same as URP - - Simpler API for controlling blur strength - - Improve compatibility with Unity 6 - - Other minor fixes and improvements -Breaking changes: - - Appearance properties on Translucent Image is deprecated. Instead, set these values on the material directly - - TranslucentImageSource.Request() is replaced by (Un)RegisterActivePointsProvider() . This is only needed if - you access the blurred texture directly. - - Extensions methods are moved into helper classes to avoid name collision - -v4.4.2: - - Fix blank background in the first frame - -v4.4.1: - - Improve compatibility with 2D renderer in Unity 2022 - - Improve compatibility with Unity 6 - - Improve editor performance when using URP - -v4.4.0: - - More stable blur Strength calculation - - Fix compilation error in very old 2021.3 patch releases - - Fix error when using extremely large blur - - Remove Max Depth property - - Under the hood changes to prepare for 2023.3 URP - -v4.3.0: -This is a re-release of the 4.1.0 release with hopefully less bugs. - - Preparation to support Unity 2023.3 URP - - Bug fixes - -v4.2.0: -- Temporarily rollback 4.1.0 due to bugs - -v4.1.0: - - Preparation to support Unity 2023.3 URP - - Fix spurious warning - -v4.0.1: - - Fix issue in build - -v4.0.0: -This is a major version bump signifying breaking changes. -Make sure you have your project committed to version control before upgrading - - - Automatically pause blurring when there are no Translucent Images active - - Allow filling the black void when using VR Passthrough and Underlay with a custom color - - Improves prefab support - - Other under-the-hood improvements - -v3.18.0: - - Improve support for newer versions of 2D Renderer - - Add workaround for buggy URP versions - - Blit mode selection is now completely automatic - -v3.17.0: - - Restore support for the URP 2D Renderer in newer Unity versions - -v3.16.2: - - Fix incorrect warning when used with True Shadow - -v3.16.1: - - Improve compatibility with Unity 2023 - -v3.16.0: - - Fix incorrect rendering when using non default viewport in URP. - As a result of this change, Blur Region is now relative to the actual viewport, instead of the one show in the Camera inspector. You may need to re-tune your Blur Region. - -v3.15.0: - - Fix color space mixed up. Your UIs appearance may change after this update. - -v3.14.6: - - Fix compatibility with 2021.3.13 URP - -v3.14.5: - - Fix editor script being included in build - - Reorder create asset menu - -v3.14.4: - - Fix phantom windows again - -v3.14.3: - - Fix phantom windows in some Unity versions - -v3.14.2: - - Warn if Renderer Feature is missing in URP project - -v3.14.1: - - Fix some gizmo icons not showing in newer Unity versions - -v3.14.0: - - Improve compatibility with URP 13 - -v3.13.0: - - Drop support for URP's 2D Renderer. It is too locked down and buggy at the moment - -v3.12.0: - - Improve compatibility with URP 12.1.7 - -v3.11.0: - - Allow rendering before post-processing to work-around URP 2D renderer issue. - -v3.10.3: - - Fix shader compilation on GLES 2.0 - -v3.10.2: - - Fix sprite blending property not applied correctly - -v3.10.1: - - Improve allocation behaviour - -v3.10.0: - - Fix Single Pass Instanced Stereo rendering - -v3.9.0: - - Improve error logging to be more relevant - - Assigning Source property on Translucent Image is now easier with automatic suggestions - - Fix compatibility with webgl in less capable browsers - - Improve compatibility with URP 12.1.2 - -v3.8.3: - - Workflow improvements on URP 12 - -v3.8.2: - - Fix some bugs on URP 12 - -v3.8.1: - - Fix some bugs on URP 12 - -v3.8.0: - - Support URP 12 - - Fix prefab mode warning - -v3.7.0: - - Support latest True Shadow release - - Fix spurious error messages - - Improve PlayStation compatibility - -v3.6.0: - - Support Single Pass Instanced Stereo Render Mode - - Reduce log level - -v3.5.1: - - Reduce error logging. - - Improve compatibility with Addressable. - -v3.5.0: - - Changing Sprite Blending from script is now applied immediately. - TranslucentImage.spriteBlending is now a property instead of a field. - - You can now move the asset to a different path - -v3.4.2: - - Fix blur config not saved - - Fix prefab instance not marked dirty - -v3.4.1: - - Improve documentation - -v3.4.0: - URP: - - Remove slow workaround for Unity bugs #1196219. Please update your URP package to 7.2.0 or newer. - - Downsampling and Blur Region now work with URP. - - - Various fixes and optimizations. - -v3.3.1: - - True Shadow integration: Fix shadow color not react correctly to Translucent Image color - -v3.3.0: - Breaking changes: - - Upgraded to Unity 2019.4 - - Remove deprecated LWRP package. URP continue to be supported. - - - Translucent Image is now compatible with True Shadow. - -v3.2.4: - - Fix memory leak when Translucent Image Source are destroyed. - -v3.2.3: - - Example scene for blurring UI in URP - -v3.2.2: - - Fix preview features sometime not work in URP - - Fix persistent black UI when not in play mode - - Hide some harmless errors in demo scene - - Fix RegisterSource() throw exception - - Some other small changes - -v3.2.1: - - Convert Image to Translucent Image with context menu item - - Some small fixes and enhancements - -v3.2.0: - Breaking changes: existing projects with Editor/Runtime version lower than these should not install this update. - - Upgraded to Unity 2018.4 to follow new Asset Store requirements - - Upgraded to .NET 4.x Equivalent Runtime, as .NET 3.5 is deprecated in Unity 2018 - - - Blur Region now can be controlled using on-screen GUI in the Game View when in Preview mode - - Help button on components now open appropriated documentation page - - Fix an issue with non fullscreen Camera Viewport Rect - - Fix missing namespace in some demo scripts - -v3.1.1: - - Fix issue with URP Post Processing - -v3.1.0: - *** Breaking change for LWRP project *** - - If you're using the asset in an existing LWRP project, please delete its folder first and import it again to avoid issue. - - If you're using the "Demo Forward Renderer" and "Demo LightweightRenderPipelineAsset", you'll have to replace them with the new one located in "Universal RP/'Configs" folder. I recommend creating your own, specific to your project. - *** - - - Added Universal RP support. LWRP support package is included for compatibility with older Unity version, but will not be updated anymore. - - Fix some small bugs. - -v3.0.5: - - Added demo and documentation for setting up Translucent Images in world space. - - Disable scene gizmos. - -v3.0.4: - - Better default file name when creating Blur Config from Translucent Image Source. - - Some improvement to error messages - -v3.0.3: - - Fixed some bugs in demo scene - -v3.0.2: - - Fixed some bugs on LWRP - - Added new demo for LWRP - -v3.0.1: - - Fix compatibility issue with Post Processing Stack on LWRP - -v3.0: -!!!Warning!!! Breaking changes: - - Blur Config now stored as asset file, allows for sharing of configuration between different Cameras/Scenes/Projects. You will need to re-config your all of your Translucent Image Sources. Settings on Translucent Images will be fine. - - Blur Size now called Radius to align with other software. - -Added: - - Initial LWRP support. Please visit the documentation for setup guide. - - Bug fixes and performance improvements. - - A lot of ground work for additional blur algorithms (none added yet). - - Probably bugs. 😩 - -Changed: - - Minimum supported Unity version is now 2017.4 - - Clearer preview box. diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/CHANGELOG.txt.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/CHANGELOG.txt.meta deleted file mode 100644 index c50cea7c3..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/CHANGELOG.txt.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: c5a3f80713b8e364e883263b67113edf -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/CHANGELOG.txt - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/LeTai.TranslucentImage.asmdef b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/LeTai.TranslucentImage.asmdef deleted file mode 100644 index 000542062..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/LeTai.TranslucentImage.asmdef +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "LeTai.Asset.TranslucentImage", - "rootNamespace": "", - "references": [ - "GUID:7ab3663edede26740845931880bf22af", - "GUID:e0cd26848372d4e5c891c569017e11f1", - "GUID:2665a8d13d1b3f18800f46e256720795", - "GUID:07cd4d3e8f0583542ab74e7b8b032f7e", - "GUID:c131f8808d09e154c956e66d97dd723c", - "GUID:f063c9eabb2dec74ca53a0523cc14584" - ], - "includePlatforms": [], - "excludePlatforms": [], - "allowUnsafeCode": true, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [], - "versionDefines": [], - "noEngineReferences": false -} \ No newline at end of file diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/LeTai.TranslucentImage.asmdef.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/LeTai.TranslucentImage.asmdef.meta deleted file mode 100644 index 8174369ac..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/LeTai.TranslucentImage.asmdef.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: ff218ee40fe2b8648ab3234d56415557 -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/LeTai.TranslucentImage.asmdef - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Material/Default-Translucent.mat b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Material/Default-Translucent.mat deleted file mode 100644 index 8d7367854..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Material/Default-Translucent.mat +++ /dev/null @@ -1,125 +0,0 @@ -%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: Default-Translucent - m_Shader: {fileID: 4800000, guid: b1115addd36579a429d5e6b4ffae668d, type: 3} - m_Parent: {fileID: 0} - m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _BACKGROUND_MODE_COLORFUL - m_InvalidKeywords: - - _EMISSION - - _FOREGROUND_MODE_COLORFUL - - _REFRACTION_MODE_ON - m_LightmapFlags: 1 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_LockedProperties: - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BlurTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _Mask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Ints: [] - m_Floats: - - _BACKGROUND_MODE: 1 - - _Brightness: 0.8 - - _BumpScale: 1 - - _ChromaticDispersion: 0.5 - - _ColorMask: 15 - - _Constrast: 0.1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _EDGE_LIGHT_MODE: 0 - - _EdgeGlint1Strength: 0.25 - - _EdgeGlint2Strength: 0.1 - - _EdgeGlintSharpness: 512 - - _EdgeGlintWrap: 1 - - _EdgeLight1Strength: 0.65 - - _EdgeLight2Strength: 0.25 - - _FOREGROUND_MODE: 1 - - _Flatten: 0 - - _ForegroundOpacity: 0.5 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Lightness: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _REFRACTION_MODE: 1 - - _RefractiveIndex: 1.5 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _Stencil: 0 - - _StencilComp: 8 - - _StencilOp: 0 - - _StencilReadMask: 255 - - _StencilWriteMask: 255 - - _USE_EDGE_GLINT: 0 - - _UVSec: 0 - - _UseUIAlphaClip: 0 - - _Vibrancy: 1.25 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EdgeGlintDirections: {r: -0.258819, g: 0.9659259, b: 0.2588191, a: -0.9659258} - - _EdgeLightDirections: {r: -1, g: 1, b: 1, a: -1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _RefractiveIndexRatios: {r: 0.666666, g: 0.666666, b: 0.666666, a: 0} - m_BuildTextureStacks: [] - m_AllowLocking: 1 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Material/Default-Translucent.mat.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Material/Default-Translucent.mat.meta deleted file mode 100644 index 91d3c44a3..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Material/Default-Translucent.mat.meta +++ /dev/null @@ -1,17 +0,0 @@ -fileFormatVersion: 2 -guid: 96c5704d0681e35408630c488fc0c234 -labels: -- TranslucentImageResource -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 0 - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Material/Default-Translucent.mat - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Offline Documentation.pdf b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Offline Documentation.pdf deleted file mode 100644 index 642b7a2c3dd9a19c5486ff4aecb876f0750858b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 771999 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

3fZrom#_A% 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 -1ed7l(YA3Fh0DPIW7sSoO9k4w=fG&S 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�w>PLpPbtUX)Kfg`N= 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 F{{ZOwc) . All rights reserved. Do not redistribute. - -#include "./common.hlsl" -#include "./fullscreen.hlsl" - -float2 _Offset; -float2 _TargetSize; -float4 _CropRegion; -half3 _BackgroundColor; - -int _IsLast; -// int _IsUp; - -#define BlurVertexInput FullScreenVertexInput - -struct BlurVertexOutput -{ - float4 position : SV_POSITION; - float2 texcoord : TEXCOORD0; - UNITY_VERTEX_OUTPUT_STEREO -}; - -BlurVertexOutput VertBlur(BlurVertexInput v) -{ - BlurVertexOutput o; - UNITY_SETUP_INSTANCE_ID(v); - UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); - - float4 posCS; - float2 screenUV; - GetFullScreenVertexData(v, posCS, screenUV); - - o.position = half4(posCS.xy, 0.0, 1.0); - - o.texcoord = UnCropUV(screenUV, _CropRegion); - - return o; -} - -half4 FragBlur(BlurVertexOutput i) : SV_Target -{ - UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); - - half2 dirs[] = { - half2(-1, -1), - half2(1, -1), - half2(1, 1), - half2(-1, 1), - }; - #if !USE_EXTRA_SAMPLE - half weight0 = 1.0h / 4.0h; - #else - half weight1 = 1.0h / 5.0h; - half weight0 = (1.0h - weight1) / 4.0h; - #endif - - half4 o = 0; - for (int j = 0; j < 4; ++j) - o += SAMPLE_SCREEN_TEX(_MainTex, i.texcoord + dirs[j] * _Offset) * weight0; - - #if USE_EXTRA_SAMPLE - o += SAMPLE_SCREEN_TEX(_MainTex, i.texcoord) * weight1; - #endif - - #if BACKGROUND_FILL_COLOR - o.rgb = lerp(_BackgroundColor, o.rgb, o.a); - o.a = 1.0h; - #endif - - // dithering every pass is more correct, but combined with the low sample rate and cheap pattern introduces too much error - if (_IsLast) - o = dither(o, i.texcoord * _TargetSize); - - return o; -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/EfficientBlur.hlsl.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/EfficientBlur.hlsl.meta deleted file mode 100644 index 3af1a5b0d..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/EfficientBlur.hlsl.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 9ba876e9f43e4360a9d4ee63c412ce07 -timeCreated: 1729669244 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/EfficientBlur.hlsl - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/EfficientBlur.shader b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/EfficientBlur.shader deleted file mode 100644 index 0d2afa057..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/EfficientBlur.shader +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -Shader "Hidden/EfficientBlur" -{ - SubShader - { - Cull Off ZWrite Off ZTest Always Blend Off - - Pass - { - CGPROGRAM - // #pragma enable_d3d11_debug_symbols - #pragma vertex VertBlur - #pragma fragment FragBlur - #pragma multi_compile_local BACKGROUND_FILL_NONE BACKGROUND_FILL_COLOR - #pragma multi_compile_local _ USE_EXTRA_SAMPLE - - #include "interop_birp.cginc" - - UNITY_DECLARE_SCREENSPACE_TEXTURE(_MainTex); - - #include "EfficientBlur.hlsl" - ENDCG - } - } - - FallBack Off -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/EfficientBlur.shader.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/EfficientBlur.shader.meta deleted file mode 100644 index fa611adcf..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/EfficientBlur.shader.meta +++ /dev/null @@ -1,16 +0,0 @@ -fileFormatVersion: 2 -guid: 12e87e7c7fde8e74db9f75172456c5c3 -ShaderImporter: - externalObjects: {} - defaultTextures: [] - nonModifiableTextures: [] - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/EfficientBlur.shader - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/FillCrop.shader b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/FillCrop.shader deleted file mode 100644 index 4cced848c..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/FillCrop.shader +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -Shader "Hidden/FillCrop" -{ - Properties - { - _MainTex ("Texture", 2D) = "white" {} - } - - SubShader - { - // No culling or depth - Cull Off ZWrite Off ZTest Always - - Pass - { - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - - #include "interop_birp.cginc" - #include "common.hlsl" - - struct VertexInput - { - float4 vertex : POSITION; - float2 uv : TEXCOORD0; - UNITY_VERTEX_INPUT_INSTANCE_ID - }; - - struct VertexOutput - { - float2 uv : TEXCOORD0; - float4 vertex : SV_POSITION; - UNITY_VERTEX_OUTPUT_STEREO - }; - - VertexOutput vert(VertexInput v) - { - VertexOutput o; - UNITY_SETUP_INSTANCE_ID(v); - UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); - o.vertex = UnityObjectToClipPos(v.vertex); - o.uv = v.uv; - return o; - } - - UNITY_DECLARE_SCREENSPACE_TEXTURE(_MainTex); - float4 _CropRegion; - - half4 frag(VertexOutput i) : SV_Target - { - UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i) - float2 uv = CropUV(i.uv, _CropRegion); - return all(uv == saturate(uv)) ? SAMPLE_SCREEN_TEX(_MainTex, uv) : half4(0, 0, 0, 1); - } - ENDCG - } - } -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/FillCrop.shader.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/FillCrop.shader.meta deleted file mode 100644 index 88c25b358..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/FillCrop.shader.meta +++ /dev/null @@ -1,16 +0,0 @@ -fileFormatVersion: 2 -guid: d996ab4381100014d99e25e68e9aac84 -timeCreated: 1540802700 -licenseType: Store -ShaderImporter: - defaultTextures: [] - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/FillCrop.shader - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.hlsl b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.hlsl deleted file mode 100644 index 3cebb0c9b..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.hlsl +++ /dev/null @@ -1,199 +0,0 @@ -#pragma once - -#include "UnityUI.cginc" -// UI shaders still use birp texture convention -#include "interop_birp.cginc" -#include "common.hlsl" -#include "packing.hlsl" -#include "blending.hlsl" - -uniform sampler2D _MainTex; -uniform fixed4 _TextureSampleAdd; -uniform float4 _ClipRect; -uniform float4 _MainTex_ST; -uniform float _UIMaskSoftnessX; -uniform float _UIMaskSoftnessY; -uniform int _UIVertexColorAlwaysGammaSpace; -UNITY_DECLARE_SCREENSPACE_TEXTURE(_BlurTex); - -uniform float4 _CropRegion; //xMin, yMin, xMax, yMax - -uniform half4 _Debug; - -struct VertexInput -{ - float4 vertex : POSITION; - half4 color : COLOR; - float2 texcoord : TEXCOORD0; - float4 packedData1 : TEXCOORD1; - #ifdef _USE_PARAFORM - float4 packedData2 : TEXCOORD2; - float4 packedData3 : TEXCOORD3; - #endif - UNITY_VERTEX_INPUT_INSTANCE_ID -}; - -struct VertexOutput -{ - float4 vertex : SV_POSITION; - half4 color : COLOR; - float4 mask : TEXCOORD0; - float2 texcoord : TEXCOORD1; - float4 worldPosition : TEXCOORD2; - float4 screenPos : TEXCOORD3; - float4 transfer1 : TEXCOORD4; - #ifdef _USE_PARAFORM - float4 transfer2 : TEXCOORD5; // need float for hq derivative on some opengl driver - half4 transfer3 : TEXCOORD6; - half4 transfer4 : TEXCOORD7; - half transfer5 : TEXCOORD8; - #endif - UNITY_VERTEX_OUTPUT_STEREO -}; - -struct Appearance -{ - half foregroundOpacity; - half vibrancy; - half brightness; - half flatten; -}; - -void unpackVertexData(VertexInput i, inout VertexOutput o) -{ - FloatUnpacker upk0 = CreateUnpacker(i.packedData1[0], 8); - FloatUnpacker upk1 = CreateUnpacker(i.packedData1[1], 10); - o.transfer1 = float4( - DequeueNonNegative(upk0, 1), - Dequeue(upk1, -1, 2), - Dequeue(upk1, -1, 1), - DequeueNonNegative(upk0, 1) - ); -} - -Appearance createAppearance(float4 transfer1) -{ - Appearance appearance; - appearance.foregroundOpacity = transfer1[0]; - appearance.vibrancy = transfer1[1]; - appearance.brightness = transfer1[2]; - appearance.flatten = transfer1[3]; - return appearance; -} - -VertexOutput vert(VertexInput IN) -{ - VertexOutput OUT = (VertexOutput)0; - - UNITY_SETUP_INSTANCE_ID(IN); - UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT); - - OUT.worldPosition = IN.vertex; - - float4 clipPos = UnityObjectToClipPos(IN.vertex); - OUT.vertex = clipPos; - - float2 pixelSize = clipPos.w; - pixelSize /= float2(1, 1) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); - float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); - OUT.mask = float4(IN.vertex.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_UIMaskSoftnessX, _UIMaskSoftnessY) + abs(pixelSize.xy))); - - if (_UIVertexColorAlwaysGammaSpace && !IsGammaSpace()) - { - IN.color.rgb = UIGammaToLinearShim(IN.color.rgb); - } - OUT.color = IN.color; - - OUT.texcoord = IN.texcoord; - - OUT.screenPos = ComputeNonStereoScreenPos(OUT.vertex); - #if UNITY_VERSION >= 202120 && UNITY_UV_STARTS_AT_TOP - if (_ProjectionParams.x > 0 && unity_MatrixVP[1][1] < 0) - OUT.screenPos.y = OUT.screenPos.w - OUT.screenPos.y; - #endif - - unpackVertexData(IN, OUT); - - return OUT; -} - -void fragSetup(inout VertexOutput IN, out half2 screenPos, out half4 foregroundColor, out Appearance appearance) -{ - //Round up the alpha color coming from the interpolator (to 1.0/256.0 steps) - //The incoming alpha could have numerical instability, which makes it very sensible to - //HDR color transparency blend, when it blends with the world's texture. - const half alphaPrecision = half(0xff); - const half invAlphaPrecision = half(1.0 / alphaPrecision); - IN.color.a = round(IN.color.a * alphaPrecision) * invAlphaPrecision; - - UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(IN); - - screenPos = IN.screenPos.xy / IN.screenPos.w; - foregroundColor = tex2D(_MainTex, IN.texcoord.xy) + _TextureSampleAdd; - foregroundColor *= IN.color; - - appearance = createAppearance(IN.transfer1); -} - -void fragFinish(VertexOutput IN, half2 screenPos, inout half4 color) -{ - // TODO: fix Shadow and Outline tinting somehow - // Multiplying last so glints work - // color *= IN.color; - - #ifdef UNITY_UI_CLIP_RECT - half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw); - color.a *= m.x * m.y; - #endif - - - #ifdef UNITY_UI_ALPHACLIP - clip(color.a - 0.001); - #endif - - color.rgb *= color.a; - color = dither(color, (screenPos.xy + 0) * _ScreenParams.xy); -} - -half3 sampleBackground(float2 screenPos) -{ - half2 blurTexcoord = CropUV(screenPos, _CropRegion); - half3 backgroundColor = SAMPLE_SCREEN_TEX(_BlurTex, blurTexcoord).rgb; - return backgroundColor; -} - -half4 blendBackground(half4 foregroundColor, half3 backgroundColor, Appearance appearance) -{ - half4 color; - color.a = foregroundColor.a; - - #if _BACKGROUND_MODE_NORMAL - - backgroundColor = saturate(backgroundColor + (.5 - backgroundColor) * appearance.flatten); - backgroundColor = saturate(lerp(LinearRgbToLuminance(backgroundColor), backgroundColor, appearance.vibrancy)); - half brightness = isGammaShim() - ? appearance.brightness - : appearance.brightness * appearance.brightness * sign(appearance.brightness); - backgroundColor = saturate(backgroundColor + brightness); - - color.rgb = lerp(backgroundColor, foregroundColor.rgb, appearance.foregroundOpacity); - - #else //#elif _BACKGROUND_MODE_COLORFUL - - half targetL = appearance.brightness / 2. + .5; - if (!isGammaShim()) - targetL = targetL * targetL; - - backgroundColor = /*saturate*/(lerp(LinearRgbToLuminance(backgroundColor), backgroundColor, appearance.vibrancy)); - backgroundColor = /*saturate*/(backgroundColor + (targetL - backgroundColor) * appearance.flatten); - backgroundColor = lerp( - backgroundColor, - setL(backgroundColor, LinearRgbToLuminance(backgroundColor), targetL), - appearance.foregroundOpacity - ); - color.rgb = gamutClip(backgroundColor * foregroundColor.rgb); - - #endif - - return color; -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.hlsl.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.hlsl.meta deleted file mode 100644 index fe858e859..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.hlsl.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: b01fb1ca47c849279f7a0d19d1f20e7a -timeCreated: 1752043759 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.hlsl - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.shader b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.shader deleted file mode 100644 index ecfaf29af..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.shader +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -Shader "UI/TranslucentImage" -{ - Properties - { - [PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {} - - [Header(Appearance)][Space] - [KeywordEnum(Normal, Colorful)] _BACKGROUND_MODE("Background Mode", int) = 0 - - [Header(Refraction)][Space] - [KeywordEnum(Off,On,Chromatic)] _REFRACTION_MODE("Refraction Mode", int) = 1 - // Singularity prevent reconstructions of control properties from _RefractiveIndexRatios - // so they need to be stored in the material - [PowerSlider(20)] _RefractiveIndex("Refractive Index", Range(1, 4.5)) = 1.5 - [PowerSlider(2)] _ChromaticDispersion("Chromatic Dispersion", Range(0, 2)) = 0.5 - _RefractiveIndexRatios("Refractive Index Ratio", Vector) = (0.666666, 0.666666, 0.666666, 0) - - [Header(Edge Glint)][Space] - [Toggle(_USE_EDGE_GLINT)] _USE_EDGE_GLINT("Enable Edge Glint", Float) = 0 - _EdgeGlintDirections("Edge Glint Directions", Vector) = (-0.258819, 0.9659259, 0.2588191, -0.9659258) - _EdgeGlint1Strength("Edge Glint 1 Strength", Range(0, 1)) = .25 - _EdgeGlint2Strength("Edge Glint 2 Strength", Range(0, 1)) = .1 - _EdgeGlintWrap("Edge Glint Wrap", Float) = 1 - _EdgeGlintSharpness("Edge Glint Sharpness", Float) = 512 - - //_Debug("Debug", Vector) = (0,0,0,0) - - [Header(Other)][Space] - _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 - [HideInInspector]_Color ("Dummy Color", Color) = (1,1,1,1) - - [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 One OneMinusSrcAlpha - ColorMask[_ColorMask] - - Pass - { - CGPROGRAM - // #pragma enable_d3d11_debug_symbols - #pragma target 3.0 - #pragma exclude_renderers d3d11_9x gles - - #pragma vertex vert - #pragma fragment frag - - #include "TranslucentImage.hlsl" - - #pragma multi_compile_local _ UNITY_UI_CLIP_RECT - #pragma multi_compile_local _ UNITY_UI_ALPHACLIP - - #pragma shader_feature_local_fragment _BACKGROUND_MODE_NORMAL _BACKGROUND_MODE_COLORFUL - - half4 frag(VertexOutput IN) : SV_Target - { - half2 screenPos; - half4 foregroundColor; - Appearance appearance; - fragSetup(IN, screenPos, foregroundColor, appearance); - - half3 backgroundColor = sampleBackground(screenPos); - half4 color = blendBackground(foregroundColor, backgroundColor, appearance); - - fragFinish(IN, screenPos, color); - - return color; - } - ENDCG - } - } - - CustomEditor "LeTai.Asset.TranslucentImage.Editor.TranslucentImageShaderGUI" -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.shader.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.shader.meta deleted file mode 100644 index 18b32b27e..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.shader.meta +++ /dev/null @@ -1,16 +0,0 @@ -fileFormatVersion: 2 -guid: b1115addd36579a429d5e6b4ffae668d -timeCreated: 1539852404 -licenseType: Store -ShaderImporter: - defaultTextures: [] - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.shader - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/blending.hlsl b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/blending.hlsl deleted file mode 100644 index e80dc94da..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/blending.hlsl +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -#include - -half3 blendOverlay(half3 a, half3 b) -{ - return a < .5 ? 2 * a * b : 1 - 2 * (1 - a) * (1 - b); -} - -half3 blendScreen(half3 a, half3 b) -{ - return 1 - (1 - a) * (1 - b); -} - -half3 setL(half3 a, half lumA, half lumB) -{ - return a + (lumB - lumA); -} - -half3 gamutClip(half3 color) -{ - half L = LinearRgbToLuminance(color); - half minComp = min(min(color.r, color.g), color.b); - half maxComp = max(max(color.r, color.g), color.b); - - // branches are never entered when the denom is 0 - - // if (minComp < 0) - // // color = L + (color - L) * L / (L - minComp); - // result = L * (result - minComp) / (L - minComp); - // if (maxComp > 1) - // result = L + (result - L) * (1 - L) / (maxComp - L); - - - // Assumption: under blurring, branches are more likely to be coherence than not - - // fully scalar - half scale = 1; - if (minComp < 0) - scale = L / (L - minComp); - if (maxComp > 1) - scale = min(scale, (1 - L) / (maxComp - L)); - - // skipping the vector path should be worth the branch - // if (scale < 1) - if (scale < 1) - color = L + (color - L) * scale; - - return color; -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/blending.hlsl.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/blending.hlsl.meta deleted file mode 100644 index fc84fae77..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/blending.hlsl.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 15df69990d05474f9845874424d84acf -timeCreated: 1750414240 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/blending.hlsl - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/common.hlsl b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/common.hlsl deleted file mode 100644 index bb9b4d86f..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/common.hlsl +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -#ifndef _TRANSLUCENTIMAGE_COMMON -#define _TRANSLUCENTIMAGE_COMMON - -float2 UnCropUV(float2 uvRelativeToCropped, float4 cropRegion) -{ - return lerp(cropRegion.xy, cropRegion.zw, uvRelativeToCropped); -} - -float2 CropUV(float2 uvRelativeToUnCropped, float4 cropRegion) -{ - return (uvRelativeToUnCropped - cropRegion.xy) / (cropRegion.zw - cropRegion.xy); -} - -// https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h -float sqrtApprox01(float inX) -{ - int x = asint(inX); - x = 0x1FBD1DF5 + (x >> 1); - return asfloat(x); -} - -// https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h -float rsqrtApprox01(float inX) -{ - int x = asint(inX); - x = 0x5F341A43 - (x >> 1); - return asfloat(x); -} - -// https://en.wikibooks.org/wiki/Algorithms/Distance_approximations -float lengthApproxOctagon(float2 v) -{ - float ax = abs(v.x); - float ay = abs(v.y); - float l = max(ax, ay); - float s = min(ax, ay); - - return .41 * s + .941246 * l; -} - -// https://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/ -inline float ggr21(float2 n) -{ - static const float g = 1.32471795724474602596; - static const float a1 = 1.0 / g; - static const float a2 = 1.0 / (g * g); - return frac(a1 * n.x + a2 * n.y); -} - -// https://www.shadertoy.com/view/4djSRW -float hash12(float2 p) -{ - float3 p3 = frac(float3(p.xyx) * .1031); - p3 += dot(p3, p3.yzx + 33.33); - return frac((p3.x + p3.y) * p3.z); -} - -half3 sdfViz(float d) -{ - half3 col = (d > 0.0) ? half3(0.9, 0.6, 0.3) : half3(0.65, 0.85, 1.0); - col *= 1.0 - exp(-12.0 * abs(d)); - col *= 0.8 + 0.2 * cos(150.0 * d); - return lerp(col, 1.0, 1.0 - smoothstep(0.0, 0.01, abs(d))); -} - -bool isGammaShim() -{ - #ifdef UNITY_COLORSPACE_GAMMA - return true; - #else - return false; - #endif -} - -half3 toPerceptual(half3 color) -{ - return isGammaShim() ? color : sqrt(color); -} - -half3 fromPerceptual(half3 color) -{ - return isGammaShim() ? color : color * color; -} - -half4 dither(half4 color, float2 coord) -{ - half noise = ggr21(coord) * 1. / 255. - .5 / 255.; - half4 result = color; - - result.rgb = toPerceptual(result); - result += noise; - result.rgb = fromPerceptual(result); - - return result; -} - -#endif diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/common.hlsl.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/common.hlsl.meta deleted file mode 100644 index 276fcfb79..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/common.hlsl.meta +++ /dev/null @@ -1,16 +0,0 @@ -fileFormatVersion: 2 -guid: a0f93ce7a1dcd4341947566d67947b0d -ShaderImporter: - externalObjects: {} - defaultTextures: [] - nonModifiableTextures: [] - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/common.hlsl - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/fullscreen.hlsl b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/fullscreen.hlsl deleted file mode 100644 index 6e379c1c3..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/fullscreen.hlsl +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -struct FullScreenVertexInput -{ - #if !SHADER_API_GLES - uint vertexID : SV_VertexID; - #else - float4 position : POSITION; - #endif - UNITY_VERTEX_INPUT_INSTANCE_ID -}; - -struct FullScreenVertexOutput -{ - float2 uv : TEXCOORD0; - float4 vertex : SV_POSITION; - UNITY_VERTEX_OUTPUT_STEREO -}; - - -float2 VertexToUV(float2 vertex) -{ - float2 texcoord = (vertex + 1.0) * 0.5; // triangle vert to uv - #if UNITY_UV_STARTS_AT_TOP - texcoord = texcoord * float2(1.0, -1.0) + float2(0.0, 1.0); - #endif - return texcoord; -} - - -// BiRP do not have these methods, so copy here and namespaced to avoid collision in URP - -// Generates a triangle in homogeneous clip space, s.t. -// v0 = (-1, -1, 1), v1 = (3, -1, 1), v2 = (-1, 3, 1). -float2 tai_GetFullScreenTriangleTexCoord(uint vertexID) -{ - #if UNITY_UV_STARTS_AT_TOP - return float2((vertexID << 1) & 2, 1.0 - (vertexID & 2)); - #else - return float2((vertexID << 1) & 2, vertexID & 2); - #endif -} - -float4 tai_GetFullScreenTriangleVertexPosition(uint vertexID, float z) -{ - // note: the triangle vertex position coordinates are x2 so the returned UV coordinates are in range -1, 1 on the screen. - float2 uv = float2((vertexID << 1) & 2, vertexID & 2); - float4 pos = float4(uv * 2.0 - 1.0, z, 1.0); - return pos; -} - -void GetFullScreenVertexData(FullScreenVertexInput v, out float4 posCS, out float2 screenUV) -{ - #if !SHADER_API_GLES - posCS = tai_GetFullScreenTriangleVertexPosition(v.vertexID, UNITY_NEAR_CLIP_VALUE); - screenUV = tai_GetFullScreenTriangleTexCoord(v.vertexID); - #else - posCS = v.position; - screenUV = VertexToUV(v.position.xy); - #endif -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/fullscreen.hlsl.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/fullscreen.hlsl.meta deleted file mode 100644 index c95a38725..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/fullscreen.hlsl.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: b1a79371c15c4beab2c91aa6e7f4c13e -timeCreated: 1729673279 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/fullscreen.hlsl - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/interop_birp.cginc b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/interop_birp.cginc deleted file mode 100644 index bb4280694..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/interop_birp.cginc +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -#include - -// This need to be a macro since the type of tex can change :( -#define SAMPLE_SCREEN_TEX(tex, uv) UNITY_SAMPLE_SCREENSPACE_TEXTURE(tex, UnityStereoTransformScreenSpaceTex(uv)) - -// This piecewise approximation has a precision better than 0.5 / 255 in gamma space over the [0..255] range -// i.e. abs(l2g_exact(g2l_approx(value)) - value) < 0.5 / 255 -// It is much more precise than GammaToLinearSpace but remains relatively cheap -half3 UIGammaToLinearShim(half3 value) -{ - half3 low = 0.0849710 * value - 0.000163029; - half3 high = value * (value * (value * 0.265885 + 0.736584) - 0.00980184) + 0.00319697; - - // We should be 0.5 away from any actual gamma value stored in an 8 bit channel - const half3 split = (half3)0.0725490; // Equals 18.5 / 255 - return (value < split) ? low : high; -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/interop_birp.cginc.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/interop_birp.cginc.meta deleted file mode 100644 index 661865bdc..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/interop_birp.cginc.meta +++ /dev/null @@ -1,18 +0,0 @@ -fileFormatVersion: 2 -guid: a8c68a14f2a58eb4eb95978229e5db5e -labels: -- TranslucentImageEditorResources -ShaderImporter: - externalObjects: {} - defaultTextures: [] - nonModifiableTextures: [] - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/interop_birp.cginc - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/packing.hlsl b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/packing.hlsl deleted file mode 100644 index 1ba2abf1a..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/packing.hlsl +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -#ifndef LETAI_PACKING -#define LETAI_PACKING - -struct FloatUnpacker -{ - uint payload; - uint nBitsConsumed; - uint bitsPerFloat; -}; - -FloatUnpacker CreateUnpacker(float packed, int bitsPerFloat = 0) -{ - uint bits = asuint(packed); - uint exponent = (bits >> 23) & 0xFFu; - uint mantissa = bits & 0x7FFFFFu; - - FloatUnpacker u; - u.payload = ((exponent - 1u) << 23) | mantissa; - u.nBitsConsumed = 0; - u.bitsPerFloat = bitsPerFloat; - return u; -} - -float Dequeue(inout FloatUnpacker u, float minVal, float maxVal, uint nBits = 0) -{ - if (nBits == 0) nBits = u.bitsPerFloat; - - uint mask = (1u << nBits) - 1u; - uint value = (u.payload >> u.nBitsConsumed) & mask; - u.nBitsConsumed += nBits; - - float norm = value * (1.0 / mask); - return norm * (maxVal - minVal) + minVal; -} - -float DequeueNonNegative(inout FloatUnpacker u, float maxVal, uint nBits = 0) -{ - return Dequeue(u, 0, maxVal, nBits); -} - - -void UnpackTwoFloatsSafe( - float packed, - float minA, float maxA, uint nBitsA, - float minB, float maxB, uint nBitsB, - out float a, out float b) -{ - uint bits = asuint(packed); - - uint exponent = (bits >> 23) & 0xFFu; - uint mantissa = bits & 0x7FFFFFu; - - uint payload = ((exponent - 1u) << 23) | mantissa; - - uint maskB = (1u << nBitsB) - 1u; - float aQuantized = payload >> nBitsB; - float bQuantized = payload & maskB; - - float maxAQuantized = (1u << nBitsA) - 1u; - float maxBQuantized = maskB; - - float aNormalized = aQuantized * (1. / maxAQuantized); - float bNormalized = bQuantized * (1. / maxBQuantized); - - a = aNormalized * (maxA - minA) + minA; - b = bNormalized * (maxB - minB) + minB; -} - -#endif diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/packing.hlsl.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/packing.hlsl.meta deleted file mode 100644 index dd773cf08..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Shaders/packing.hlsl.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 1513fde2dd7f474a803858cd7ae75356 -timeCreated: 1750650448 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/packing.hlsl - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Translucent Image Default Resources.asset b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Translucent Image Default Resources.asset deleted file mode 100644 index c67a337c2..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Translucent Image Default Resources.asset +++ /dev/null @@ -1,16 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - 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: c98b4a46667547b294b1c048ab4fc355, type: 3} - m_Name: Translucent Image Default Resources - m_EditorClassIdentifier: - material: {fileID: 2100000, guid: 96c5704d0681e35408630c488fc0c234, type: 2} - paraformMaterial: {fileID: 2100000, guid: c2c99768271516e4b8f434b56fc1cea0, type: 2} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Translucent Image Default Resources.asset.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Translucent Image Default Resources.asset.meta deleted file mode 100644 index 301b9534f..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/Translucent Image Default Resources.asset.meta +++ /dev/null @@ -1,16 +0,0 @@ -fileFormatVersion: 2 -guid: 06adab3c1d7cfaf4e8386d06623484fa -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Translucent Image Default - Resources.asset - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP.meta deleted file mode 100644 index e613c20af..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: bf78a7acb2cf96c468f81fe121a3301f -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/EfficientBlur_UniversalRP.shader b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/EfficientBlur_UniversalRP.shader deleted file mode 100644 index 742c4a30c..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/EfficientBlur_UniversalRP.shader +++ /dev/null @@ -1,34 +0,0 @@ -Shader "Hidden/EfficientBlur_UniversalRP" -{ - SubShader - { - Cull Off ZWrite Off ZTest Always Blend Off - - Pass - { - HLSLPROGRAM - // #pragma enable_d3d11_debug_symbols - - #pragma target 3.0 - //HLSLcc is not used by default on gles - #pragma prefer_hlslcc gles - //SRP don't support dx9 - #pragma exclude_renderers d3d11_9x - - #pragma vertex VertBlur - #pragma fragment FragBlur - #pragma multi_compile_local BACKGROUND_FILL_NONE BACKGROUND_FILL_COLOR - #pragma multi_compile_local _ USE_EXTRA_SAMPLE - - #include "interop_urp.hlsl" - - TEXTURE2D_X(_MainTex); - SAMPLER(sampler_MainTex); - - #include "../Shaders/EfficientBlur.hlsl" - ENDHLSL - } - } - - FallBack Off -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/EfficientBlur_UniversalRP.shader.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/EfficientBlur_UniversalRP.shader.meta deleted file mode 100644 index c0149a3d1..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/EfficientBlur_UniversalRP.shader.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 4a1d960bb7429ed49a23391385e9ca1b -ShaderImporter: - externalObjects: {} - defaultTextures: [] - nonModifiableTextures: [] - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/FillCrop_UniversalRP.shader b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/FillCrop_UniversalRP.shader deleted file mode 100644 index 89cc2e9f4..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/FillCrop_UniversalRP.shader +++ /dev/null @@ -1,58 +0,0 @@ -Shader "Hidden/FillCrop_UniversalRP" -{ - SubShader - { - // No culling or depth - Cull Off ZWrite Off ZTest Always - - Pass - { - HLSLPROGRAM - #pragma target 3.0 - //HLSLcc is not used by default on gles - #pragma prefer_hlslcc gles - //SRP don't support dx9 - #pragma exclude_renderers d3d11_9x - - #pragma vertex vert - #pragma fragment frag - - #include "./interop_urp.hlsl" - #include "../Shaders/fullscreen.hlsl" - #include "../Shaders/common.hlsl" - - struct v2f - { - float2 uv : TEXCOORD0; - float4 vertex : SV_POSITION; - UNITY_VERTEX_OUTPUT_STEREO - }; - - v2f vert(FullScreenVertexInput v) - { - v2f o; - UNITY_SETUP_INSTANCE_ID(v); - UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); - - float4 posCS; - float2 screenUV; - GetFullScreenVertexData(v, posCS, screenUV); - - o.vertex = half4(posCS.xy, 0.0, 1.0); - o.uv = screenUV; - return o; - } - - TEXTURE2D_X(_MainTex); - float4 _CropRegion; - - half4 frag(v2f i) : SV_Target - { - UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i) - float2 uv = CropUV(i.uv, _CropRegion); - return all(uv == saturate(uv)) ? SAMPLE_SCREEN_TEX(_MainTex, uv) : half4(0, 0, 0, 1); - } - ENDHLSL - } - } -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/FillCrop_UniversalRP.shader.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/FillCrop_UniversalRP.shader.meta deleted file mode 100644 index c14e3f380..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/FillCrop_UniversalRP.shader.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: be9460e8089353c42b6ec727f6fc3140 -ShaderImporter: - externalObjects: {} - defaultTextures: [] - nonModifiableTextures: [] - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/interop_urp.hlsl b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/interop_urp.hlsl deleted file mode 100644 index 17a5a631b..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/interop_urp.hlsl +++ /dev/null @@ -1,6 +0,0 @@ -#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" - -#if UNITY_VERSION < 600000 -SAMPLER(sampler_LinearClamp); -#endif -#define SAMPLE_SCREEN_TEX(tex, uv) SAMPLE_TEXTURE2D_X(tex, sampler_LinearClamp, UnityStereoTransformScreenSpaceTex(uv)) diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/interop_urp.hlsl.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/interop_urp.hlsl.meta deleted file mode 100644 index 922ac03eb..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Resources/URP/interop_urp.hlsl.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 005bb204b9b54cb7868e1aa065f00838 -timeCreated: 1562251098 \ No newline at end of file diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script.meta deleted file mode 100644 index 1f6cfda15..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: f086af857f26faa4ea62ddf64d9f44ec -folderAsset: yes -timeCreated: 1474981551 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ActiveRegion.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ActiveRegion.cs deleted file mode 100644 index a7c065409..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ActiveRegion.cs +++ /dev/null @@ -1,31 +0,0 @@ -using UnityEngine; - -namespace LeTai.Asset.TranslucentImage -{ -public readonly struct ActiveRegion -{ - public static readonly ActiveRegion INACTIVE = new ActiveRegion(Rect.zero, - Matrix4x4.zero, - VPMatrixCache.Index.INVALID); - - public readonly Rect rect; - public readonly Matrix4x4 localToWorld; - public readonly VPMatrixCache.Index vpMatrixCacheIndex; - public bool IsWorldSpace => vpMatrixCacheIndex.IsValid(); - - /// Use VPMatrixCache.Index.INVALID For Screen Space - Overlay Canvas. Otherwise, see - public ActiveRegion(Rect rect, Matrix4x4 localToWorld, VPMatrixCache.Index vpMatrixCacheIndex) - { - this.rect = rect; - this.localToWorld = localToWorld; - this.vpMatrixCacheIndex = vpMatrixCacheIndex; - } -} - -public interface IActiveRegionProvider -{ - bool HaveActiveRegion(); - // out params to avoid double allocation of the fat struct - void GetActiveRegion(VPMatrixCache vpMatrixCache, out ActiveRegion activeRegion); -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ActiveRegion.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ActiveRegion.cs.meta deleted file mode 100644 index c323f7b6d..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ActiveRegion.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 4adf6e4aab6f4d09ad8edf1d91e8fd9c -timeCreated: 1728639282 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/ActiveRegion.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ActiveRegionMergeJob.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ActiveRegionMergeJob.cs deleted file mode 100644 index 0c758dfed..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ActiveRegionMergeJob.cs +++ /dev/null @@ -1,66 +0,0 @@ -using Unity.Burst; -using Unity.Collections; -using Unity.Jobs; -using UnityEngine; - -namespace LeTai.Asset.TranslucentImage -{ -[BurstCompile(FloatMode = FloatMode.Fast)] -unsafe struct ActiveRegionMergeJob : IJob -{ - [ReadOnly] - public NativeList activeRegions; - [ReadOnly] - public NativeList vpMatrices; - public Vector2 screenSize; - public Rect viewport; - - public NativeArray merged; - - public void Execute() - { - var xMin = 1f; - var yMin = 1f; - var xMax = 0f; - var yMax = 0f; - - var screenSizeInv = new Vector2(1f / screenSize.x, 1f / screenSize.y); - - for (int i = 0; i < activeRegions.Length; i++) - { - var quad = activeRegions[i]; - var rect = quad.rect; - var corners = stackalloc[] { - new Vector2(rect.x, rect.y), - new Vector2(rect.x, rect.yMax), - new Vector2(rect.xMax, rect.yMax), - new Vector2(rect.xMax, rect.y), - }; - for (int j = 0; j < 4; j++) - { - Vector3 pointWorld = quad.localToWorld.MultiplyPoint3x4(corners[j]); - Vector2 pointScreen; - if (quad.IsWorldSpace) - { - Vector4 pointWorldHomo = pointWorld; - pointWorldHomo.w = 1; - Vector4 pointClip = vpMatrices[quad.vpMatrixCacheIndex.index] * pointWorldHomo; - pointScreen = new Vector2(pointClip.x, pointClip.y) / pointClip.w * .5f + new Vector2(.5f, .5f); - } - else - { - pointScreen = pointWorld * screenSizeInv; - pointScreen = (pointScreen - viewport.min) / viewport.size; - } - - xMin = Mathf.Min(xMin, pointScreen.x); - yMin = Mathf.Min(yMin, pointScreen.y); - xMax = Mathf.Max(xMax, pointScreen.x); - yMax = Mathf.Max(yMax, pointScreen.y); - } - } - - merged[0] = new Rect(xMin, yMin, xMax - xMin, yMax - yMin); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ActiveRegionMergeJob.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ActiveRegionMergeJob.cs.meta deleted file mode 100644 index 3857f8a03..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ActiveRegionMergeJob.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 998034a9a75347a4ad7404daa830d415 -timeCreated: 1728556086 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/ActiveRegionMergeJob.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/AssemblyInfo.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/AssemblyInfo.cs deleted file mode 100644 index 48a82e615..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/AssemblyInfo.cs +++ /dev/null @@ -1,4 +0,0 @@ -using System.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("LeTai.Asset.TranslucentImage.Editor")] -[assembly: InternalsVisibleTo("LeTai.Asset.TranslucentImage.Editor.Paraform")] diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/AssemblyInfo.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/AssemblyInfo.cs.meta deleted file mode 100644 index 760295885..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/AssemblyInfo.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: f5aa23395e6d4397a46bd5b2a1fb4f44 -timeCreated: 1694419168 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/AssemblyInfo.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm.meta deleted file mode 100644 index 24ff80a6a..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: f164c4c349ef428f8c7537ba4218516d -timeCreated: 1560157255 \ No newline at end of file diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/BlurConfig.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/BlurConfig.cs deleted file mode 100644 index 19ba28149..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/BlurConfig.cs +++ /dev/null @@ -1,9 +0,0 @@ -using UnityEngine; - -namespace LeTai.Asset.TranslucentImage -{ - public abstract class BlurConfig : ScriptableObject - { - public abstract float Strength { get; set; } - } -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/BlurConfig.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/BlurConfig.cs.meta deleted file mode 100644 index 40cf996a5..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/BlurConfig.cs.meta +++ /dev/null @@ -1,18 +0,0 @@ -fileFormatVersion: 2 -guid: 5a1c97a4c20d4c698acd8a00210f69fe -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: c2fc80b7e20a4104db1297bcddfd83b5, type: 3} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/BlurConfig.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/IBlurAlgorithm.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/IBlurAlgorithm.cs deleted file mode 100644 index c62ac2129..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/IBlurAlgorithm.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System; -using UnityEngine; -using UnityEngine.Rendering; - -namespace LeTai.Asset.TranslucentImage -{ -public enum BlurAlgorithmType -{ - ScalableBlur -} - -public enum BackgroundFillMode -{ - None, - Color -} - -[Serializable] -public class BackgroundFill -{ - public BackgroundFillMode mode = BackgroundFillMode.None; - public Color color = Color.white; -} - -public interface IBlurAlgorithm -{ - void Init(BlurConfig config, bool isBirp); - - void Blur( - CommandBuffer cmd, - RenderTargetIdentifier src, - Rect srcCropRegion, - Rect activeRegion, - BackgroundFill backgroundFill, - RenderTexture target - ); - - int GetScratchesCount(float targetWidth, float targetHeight); - - void GetNextScratchDescriptor(ref RenderTextureDescriptor prevDescriptor); - - void SetScratch(int index, RenderTargetIdentifier value); -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/IBlurAlgorithm.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/IBlurAlgorithm.cs.meta deleted file mode 100644 index 8107ed1c3..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/IBlurAlgorithm.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 6cf12665875748ef9dd9416b900b5143 -timeCreated: 1558514104 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/IBlurAlgorithm.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/ScalableBlur.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/ScalableBlur.cs deleted file mode 100644 index 8b3bc5049..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/ScalableBlur.cs +++ /dev/null @@ -1,227 +0,0 @@ -using System; -using UnityEngine; -using UnityEngine.Rendering; - -namespace LeTai.Asset.TranslucentImage -{ -public class ScalableBlur : IBlurAlgorithm -{ - readonly RenderTargetIdentifier[] scratches = new RenderTargetIdentifier[14]; - - bool isBirp; - Material material; - ScalableBlurConfig config; - MaterialPropertyBlock propertyBlock; - - LocalKeyword kwBackgroundFillNone; - LocalKeyword kwBackgroundFillColor; - LocalKeyword kwUseExtraSample; - - Material Material - { - get - { - if (material == null) - { - Material = new Material(Shader.Find(isBirp - ? "Hidden/EfficientBlur" - : "Hidden/EfficientBlur_UniversalRP")); - } - - return material; - } - set => material = value; - } - - public void Init(BlurConfig config, bool isBirp) - { - this.isBirp = isBirp; - this.config = (ScalableBlurConfig)config; - propertyBlock = propertyBlock ?? new MaterialPropertyBlock(); - } - - public void Blur( - CommandBuffer cmd, - RenderTargetIdentifier src, - Rect srcCropRegion, - Rect activeRegion, - BackgroundFill backgroundFill, - RenderTexture target - ) - { - (float strength, float radius, int iterations) = GetEffectiveConfig(target.width / srcCropRegion.width, - target.height / srcCropRegion.height); - var offsetDistanceDown = (radius / 2f) * Vector2.one; - var offsetDistanceUp = (radius / 2f /*- .5f*/) * Vector2.one; - - int stepCount = Mathf.Clamp(iterations * 2, 1, scratches.Length * 2 - 1); - float extent = strength; - - var activeRegionRelative = RectUtils.Intersect(activeRegion, srcCropRegion); - activeRegionRelative.x = (activeRegionRelative.x - srcCropRegion.x) / srcCropRegion.width; - activeRegionRelative.y = (activeRegionRelative.y - srcCropRegion.y) / srcCropRegion.height; - activeRegionRelative.width = activeRegionRelative.width / srcCropRegion.width; - activeRegionRelative.height = activeRegionRelative.height / srcCropRegion.height; - - if (activeRegionRelative.width == 0 || activeRegionRelative.height == 0) - return; - - ConfigMaterial(backgroundFill); - propertyBlock.Clear(); - propertyBlock.SetInteger("_IsLast", 0); - - if (stepCount > 1) - { - CropViewport(target.width >> 1, target.height >> 1, extent, out var viewportFirst, out var activeRegionFirst); - propertyBlock.SetVector(ShaderID.CROP_REGION, RectUtils.ToMinMaxVector(RectUtils.Crop(srcCropRegion, activeRegionFirst))); - - var targetSize1 = new Vector2(target.width >> 1, target.height >> 1); - propertyBlock.SetVector(ShaderID.TARGET_SIZE, targetSize1); - propertyBlock.SetVector(ShaderID.OFFSET, offsetDistanceDown / targetSize1); - - Blitter.Blit(cmd, src, scratches[0], Material, 0, propertyBlock, viewportFirst); - } - - var maxDepth = Mathf.Min(iterations - 1, scratches.Length - 1); - for (var i = 1; i < stepCount - 1; i++) - { - var fromIdx = SimplePingPong(i - 1, maxDepth); - var toIdx = SimplePingPong(i, maxDepth); - var targetDepth = toIdx + 1; - - CropViewport(target.width >> targetDepth, target.height >> targetDepth, extent, out var viewportStep, out var activeRegionStep); - propertyBlock.SetVector(ShaderID.CROP_REGION, RectUtils.ToMinMaxVector(activeRegionStep)); - - var targetSizeStep = new Vector2(target.width >> targetDepth, target.height >> targetDepth); - propertyBlock.SetVector(ShaderID.TARGET_SIZE, targetSizeStep); - propertyBlock.SetVector(ShaderID.OFFSET, i < maxDepth - ? offsetDistanceDown / targetSizeStep - : offsetDistanceUp / targetSizeStep); - - Blitter.Blit(cmd, scratches[fromIdx], scratches[toIdx], Material, 0, propertyBlock, viewportStep); - } - - CropViewport(target.width, target.height, 0, out var viewportLast, out var activeRegionLast); - activeRegionLast = stepCount > 1 ? activeRegionLast : RectUtils.Crop(srcCropRegion, activeRegionLast); - propertyBlock.SetVector(ShaderID.CROP_REGION, RectUtils.ToMinMaxVector(activeRegionLast)); - - var targetSizeFinal = new Vector2(target.width, target.height); - propertyBlock.SetVector(ShaderID.TARGET_SIZE, targetSizeFinal); - propertyBlock.SetVector(ShaderID.OFFSET, stepCount == 1 - ? offsetDistanceDown / targetSizeFinal - : offsetDistanceUp / targetSizeFinal); - propertyBlock.SetInteger(ShaderID.IS_LAST, 1); - - Blitter.Blit(cmd, - stepCount > 1 ? scratches[0] : src, - target, - Material, - 0, - propertyBlock, - viewportLast); - return; - - void CropViewport(int targetWidth, int targetHeight, float padding, out Rect viewport, out Rect activeRegionSnapped) - { - var x = activeRegionRelative.x * targetWidth; - var y = activeRegionRelative.y * targetHeight; - var xf = Mathf.Floor(x - padding); - var yf = Mathf.Floor(y - padding); - viewport = new Rect(xf, - yf, - Mathf.Ceil(x + activeRegionRelative.width * targetWidth + padding) - xf, - Mathf.Ceil(y + activeRegionRelative.height * targetHeight + padding) - yf); - - viewport.x = Mathf.Max(viewport.x, 0); - viewport.y = Mathf.Max(viewport.y, 0); - viewport.width = Mathf.Min(viewport.width, targetWidth); - viewport.height = Mathf.Min(viewport.height, targetHeight); - - activeRegionSnapped = new Rect( - viewport.x / targetWidth, - viewport.y / targetHeight, - viewport.width / targetWidth, - viewport.height / targetHeight - ); - } - } - - public int GetScratchesCount(float targetWidth, float targetHeight) - { - var (_, _, iterations) = GetEffectiveConfig(targetWidth, targetHeight); - return Mathf.Min(iterations, scratches.Length); - } - - public void GetNextScratchDescriptor(ref RenderTextureDescriptor prevDescriptor) - { - prevDescriptor.width >>= 1; - prevDescriptor.height >>= 1; - if (prevDescriptor.width <= 0) prevDescriptor.width = 1; - if (prevDescriptor.height <= 0) prevDescriptor.height = 1; - } - - public void SetScratch(int index, RenderTargetIdentifier value) - { - scratches[index] = value; - } - - protected void ConfigMaterial(BackgroundFill backgroundFill) - { - var mat = Material; - - if (kwUseExtraSample == default || !kwUseExtraSample.isValid) - InitKeywords(); - - switch (backgroundFill.mode) - { - case BackgroundFillMode.None: - mat.SetKeyword(kwBackgroundFillNone, true); - mat.SetKeyword(kwBackgroundFillNone, true); - mat.SetKeyword(kwBackgroundFillColor, false); - break; - case BackgroundFillMode.Color: - mat.SetKeyword(kwBackgroundFillColor, true); - mat.SetKeyword(kwBackgroundFillNone, false); - mat.SetColor(ShaderID.BACKGROUND_COLOR, backgroundFill.color); - break; - } - mat.SetKeyword(kwUseExtraSample, config.Mode == ScalableBlurConfig.BlurMode.Balanced); - } - - (float strength, float radius, int iteration) GetEffectiveConfig(float targetWidth, float targetHeight) - { - float scaleFactor = config.GetResolutionScaleFactor(targetWidth, targetHeight); - - float strength = config.Strength * scaleFactor; - float radius; - int iteration; - - if (!config.UseStrength) - { - radius = config.Radius * scaleFactor; - iteration = config.Iteration; - } - else - { - (radius, iteration) = ScalableBlurConfig.FromStrength(strength); - } - - return (strength, radius, iteration); - } - - static int SimplePingPong(int t, int max) - { - if (t > max) - return 2 * max - t; - return t; - } - - void InitKeywords() - { - var materialShader = Material.shader; - kwBackgroundFillNone = new LocalKeyword(materialShader, "BACKGROUND_FILL_NONE"); - kwBackgroundFillColor = new LocalKeyword(materialShader, "BACKGROUND_FILL_COLOR"); - kwUseExtraSample = new LocalKeyword(materialShader, "USE_EXTRA_SAMPLE"); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/ScalableBlur.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/ScalableBlur.cs.meta deleted file mode 100644 index db0445f4a..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/ScalableBlur.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 4406fc9923f04f9caf40ac4f57cb0eba -timeCreated: 1558514023 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/ScalableBlur.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/ScalableBlurConfig.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/ScalableBlurConfig.cs deleted file mode 100644 index fd4a1009d..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/ScalableBlurConfig.cs +++ /dev/null @@ -1,143 +0,0 @@ -using UnityEngine; -using UnityEngine.Serialization; - -namespace LeTai.Asset.TranslucentImage -{ -[CreateAssetMenu(fileName = "New Scalable Blur Config", - menuName = "Translucent Image/ Scalable Blur Config", - order = 100)] -public class ScalableBlurConfig : BlurConfig -{ - public enum BlurMode - { - Performance, - Balanced, - } - - [SerializeField] - [Tooltip("Use Balanced for light to medium blur or detailed background," + - " Performance for strong blur, smooth background or very low end hardware")] - BlurMode mode = BlurMode.Balanced; - - [SerializeField] - [Tooltip("Blurriness. Does NOT affect performance")] - float radius = 4; - [SerializeField] - [Tooltip("The number of times to run the algorithm to increase the smoothness of the effect. Can affect performance when increase")] - [Range(0, 8)] - int iteration = 4; - [SerializeField] - [Tooltip("How strong the blur is")] - float strength; - - [SerializeField] - [Tooltip("Resolution the blur strength is designed for. If the camera resolution is larger, the blur will be stronger, and if it's smaller, the blur will be weaker.")] - Vector2 referenceResolution = new(1920, 1080); - - [SerializeField] - [Tooltip("0 = Match width, 1 = Match height, choose depend on how your camera viewport change with resolution. By default, vertical viewport is constant so we should match width")] - [Range(0, 1)] - float matchWidthOrHeight = 0; - - [SerializeField] - bool useStrength = true; - - - public BlurMode Mode - { - get => mode; - set => mode = value; - } - - /// - /// Distance between the base texel and the texel to be sampled. - /// - public float Radius - { - get => radius; - set - { - UseStrength = false; - radius = Mathf.Max(0, value); - } - } - - /// - /// Half the number of time to process the image. It is half because the real number of iteration must alway be even. Using half also make calculation simpler - /// - /// - /// Must be non-negative - /// - public int Iteration - { - get => iteration; - set - { - UseStrength = false; - iteration = Mathf.Max(0, value); - } - } - - /// - /// User friendly property to control the amount of blur - /// - /// - /// Must be non-negative - /// - public override float Strength - { - get => strength; // = Radius * Mathf.Pow(2, Iteration); - set - { - UseStrength = true; - strength = Mathf.Clamp(value, 0, (1 << 14) * (1 << 14)); - (Radius, Iteration) = FromStrength(strength); - } - } - - public bool UseStrength - { - get => useStrength; - set => useStrength = value; - } - - public Vector2 ReferenceResolution - { - get => referenceResolution; - set => referenceResolution = value; - } - - public float MatchWidthOrHeight - { - get => matchWidthOrHeight; - set => matchWidthOrHeight = value; - } - - internal float GetResolutionScaleFactor(float width, float height) - { - if (referenceResolution.x == 0 || referenceResolution.y == 0) - return 1; - - float meanLog = Mathf.Lerp( - Mathf.Log(width / referenceResolution.x, 2), - Mathf.Log(height / referenceResolution.y, 2), - matchWidthOrHeight - ); - return Mathf.Pow(2, meanLog); - } - - internal static (float calcRadius, int calcIteration) FromStrength(float targetStrength) - { - var maxIterContribution = Mathf.Pow(targetStrength, .6f); // Make configurable? - - // Bit fiddling would be faster, but need unsafe or .NET Core 3.0+ - // for BitOperations, and BitConverter that doesn't creates garbages :( - var calcIteration = 0; - while ((1 << calcIteration) < maxIterContribution) - calcIteration++; - var calcRadius = targetStrength / (1 << calcIteration); - - return (calcRadius, calcIteration); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/ScalableBlurConfig.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/ScalableBlurConfig.cs.meta deleted file mode 100644 index 740f8012b..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/ScalableBlurConfig.cs.meta +++ /dev/null @@ -1,18 +0,0 @@ -fileFormatVersion: 2 -guid: 510c61cdec524e86b647525bb5947f82 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: c2fc80b7e20a4104db1297bcddfd83b5, type: 3} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/ScalableBlurConfig.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/DefaultResources.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/DefaultResources.cs deleted file mode 100644 index 42ce9ba76..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/DefaultResources.cs +++ /dev/null @@ -1,40 +0,0 @@ -using UnityEngine; -using Object = UnityEngine.Object; - -namespace LeTai.Asset.TranslucentImage -{ -[CreateAssetMenu(menuName = "Translucent Image/Default Resources")] -public class DefaultResources : ScriptableObject -{ - static DefaultResources instance; - - public static DefaultResources Instance - { - get - { - if (!instance) - { - var source = Resources.Load("Translucent Image Default Resources"); - instance = MakeTempCopy(source); - instance.material = MakeTempCopy(instance.material); - instance.paraformMaterial = MakeTempCopy(instance.paraformMaterial); - } - return instance; - } - } - - public Material material; - public Material paraformMaterial; - - static T MakeTempCopy(T obj) where T : Object - { - if (!obj) - return null; - - T copy = Instantiate(obj); - copy.name = obj.name; - copy.hideFlags = HideFlags.HideAndDontSave; - return copy; - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/DefaultResources.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/DefaultResources.cs.meta deleted file mode 100644 index df6142a82..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/DefaultResources.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: c98b4a46667547b294b1c048ab4fc355 -timeCreated: 1730360238 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/DefaultResources.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor.meta deleted file mode 100644 index ed819e6e2..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 1ffad624d21be844dbf9ce8159d864d1 -folderAsset: yes -timeCreated: 1475503998 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/AssemblyInfo.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/AssemblyInfo.cs deleted file mode 100644 index 22fcebc80..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/AssemblyInfo.cs +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -using System.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("LeTai.Asset.TranslucentImage.Editor.Paraform")] diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/AssemblyInfo.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/AssemblyInfo.cs.meta deleted file mode 100644 index 426f76568..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/AssemblyInfo.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 6d493deb8f174b23b6f7db38e3082aea -timeCreated: 1751021755 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/AssemblyInfo.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/LeTai.Asset.TranslucentImage.Editor.asmdef b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/LeTai.Asset.TranslucentImage.Editor.asmdef deleted file mode 100644 index aa66f5e11..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/LeTai.Asset.TranslucentImage.Editor.asmdef +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "LeTai.Asset.TranslucentImage.Editor", - "rootNamespace": "LeTai.Asset.TranslucentImage.Editor", - "references": [ - "GUID:6329229812871a6488deb623f659955b", - "GUID:ff218ee40fe2b8648ab3234d56415557", - "GUID:f063c9eabb2dec74ca53a0523cc14584", - "GUID:dbd67092ee33ae344825e5cf39a350f3" - ], - "includePlatforms": [ - "Editor" - ], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [], - "versionDefines": [ - { - "name": "com.unity.render-pipelines.universal", - "expression": "12", - "define": "URP12_OR_NEWER" - } - ], - "noEngineReferences": false -} \ No newline at end of file diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/LeTai.Asset.TranslucentImage.Editor.asmdef.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/LeTai.Asset.TranslucentImage.Editor.asmdef.meta deleted file mode 100644 index afe4195ef..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/LeTai.Asset.TranslucentImage.Editor.asmdef.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: 4cd721a6e0b119447afc3819b9015b13 -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/LeTai.Asset.TranslucentImage.Editor.asmdef - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/MaterialEditorGUI.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/MaterialEditorGUI.cs deleted file mode 100644 index 2e82ad46b..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/MaterialEditorGUI.cs +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -using System; -using UnityEditor; -using UnityEngine; - -namespace LeTai.Asset.TranslucentImage.Editor -{ -public static class MaterialEditorGUI -{ - internal static float Slider(string label, float value, float left, float right) - { - var labelWidth = EditorGUIUtility.labelWidth; - EditorGUIUtility.labelWidth = 0; - var newValue = EditorGUILayout.Slider(label, value, left, right); - EditorGUIUtility.labelWidth = labelWidth; - return newValue; - } - - public class PropertyScope : GUI.Scope - { - public bool Changed => _changeScope.changed; - - private readonly EditorGUI.ChangeCheckScope _changeScope; - - public PropertyScope(MaterialProperty prop) - { - _changeScope = new EditorGUI.ChangeCheckScope(); - EditorGUI.showMixedValue = prop.hasMixedValue; - } - - protected override void CloseScope() - { - EditorGUI.showMixedValue = false; - _changeScope.Dispose(); - } - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/MaterialEditorGUI.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/MaterialEditorGUI.cs.meta deleted file mode 100644 index 5ae8e90cf..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/MaterialEditorGUI.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: e036d3c54ac14463b116012c8f2119d7 -timeCreated: 1750924605 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/MaterialEditorGUI.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/MenuIntegration.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/MenuIntegration.cs deleted file mode 100644 index bd73d8b80..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/MenuIntegration.cs +++ /dev/null @@ -1,176 +0,0 @@ -using UnityEditor; -using UnityEngine; -using UnityEngine.EventSystems; -using UnityEngine.UI; - -namespace LeTai.Asset.TranslucentImage.Editor -{ -public class MenuIntegration : MonoBehaviour -{ - [MenuItem("GameObject/UI/Translucent Image", false, 3)] - static void CreateTranslucentImage(MenuCommand menuCommand) - { - // Create a custom game object - GameObject go = new GameObject("Translucent Image"); - go.AddComponent(); - PlaceUIElementRoot(go, menuCommand); - go.GetComponent().sizeDelta = new Vector2(200, 200); - } - - [MenuItem("CONTEXT/Image/Convert to Translucent Image", false, 3)] - static void ConvertToTranslucentImage(MenuCommand menuCommand) - { - var image = (Image) menuCommand.context; - - var go = image.gameObject; - Undo.DestroyObjectImmediate(image); - - var ti = Undo.AddComponent(go); - ti.sprite = image.sprite; - var color = image.color; - ti.color = new Color(color.r, color.g, color.b, - 1); // foreground opacity should be used instead of alpha most of the time - ti.raycastTarget = image.raycastTarget; - ti.type = image.type; - ti.useSpriteMesh = image.useSpriteMesh; - ti.preserveAspect = image.preserveAspect; - ti.fillCenter = image.fillCenter; - ti.fillMethod = image.fillMethod; - ti.fillOrigin = image.fillOrigin; - ti.fillAmount = image.fillAmount; - ti.fillClockwise = image.fillClockwise; - } - - -#region PlaceUIElementRoot - - static void PlaceUIElementRoot(GameObject element, MenuCommand menuCommand) - { - GameObject parent = menuCommand.context as GameObject; - if (parent == null || parent.GetComponentInParent() == null) - { - parent = GetOrCreateCanvasGameObject(); - } - - string uniqueName = GameObjectUtility.GetUniqueNameForSibling(parent.transform, element.name); - element.name = uniqueName; - Undo.RegisterCreatedObjectUndo(element, "Create " + element.name); - Undo.SetTransformParent(element.transform, parent.transform, "Parent " + element.name); - GameObjectUtility.SetParentAndAlign(element, parent); - if (parent != menuCommand.context) // not a context click, so center in sceneview - SetPositionVisibleinSceneView( - parent.GetComponent(), - element.GetComponent()); - - Selection.activeGameObject = element; - } - - // Helper function that returns a Canvas GameObject; preferably a parent of the selection, or other existing Canvas. - public static GameObject GetOrCreateCanvasGameObject() - { - GameObject selectedGo = Selection.activeGameObject; - - // Try to find a gameobject that is the selected GO or one if its parents. - Canvas canvas = (selectedGo != null) ? selectedGo.GetComponentInParent() : null; - if (canvas != null && canvas.gameObject.activeInHierarchy) - return canvas.gameObject; - - // No canvas in selection or its parents? Then use just any canvas.. - canvas = Shims.FindObjectOfType(); - if (canvas != null && canvas.gameObject.activeInHierarchy) - return canvas.gameObject; - - // No canvas in the scene at all? Then create a new one. - return CreateNewUI(); - } - - public static GameObject CreateNewUI() - { - // Root for the UI - var root = new GameObject("Canvas") {layer = LayerMask.NameToLayer("UI")}; - Canvas canvas = root.AddComponent(); - canvas.renderMode = RenderMode.ScreenSpaceOverlay; - root.AddComponent(); - root.AddComponent(); - Undo.RegisterCreatedObjectUndo(root, "Create " + root.name); - - // if there is no event system add one... - CreateEventSystem(false); - return root; - } - - static void CreateEventSystem(bool select, GameObject parent = null) - { - var esys = Shims.FindObjectOfType(); - if (esys == null) - { - var eventSystem = new GameObject("EventSystem"); - GameObjectUtility.SetParentAndAlign(eventSystem, parent); - esys = eventSystem.AddComponent(); - eventSystem.AddComponent(); - - Undo.RegisterCreatedObjectUndo(eventSystem, "Create " + eventSystem.name); - } - - if (select && esys != null) - { - Selection.activeGameObject = esys.gameObject; - } - } - - static void SetPositionVisibleinSceneView(RectTransform canvasRTransform, RectTransform itemTransform) - { - // Find the best scene view - SceneView sceneView = SceneView.lastActiveSceneView; - if (sceneView == null && SceneView.sceneViews.Count > 0) - sceneView = SceneView.sceneViews[0] as SceneView; - - // Couldn't find a SceneView. Don't set position. - if (sceneView == null || sceneView.camera == null) - return; - - // Create world space Plane from canvas position. - Vector2 localPlanePosition; - Camera camera = sceneView.camera; - Vector3 position = Vector3.zero; - if (RectTransformUtility.ScreenPointToLocalPointInRectangle( - canvasRTransform, - new Vector2(camera.pixelWidth / 2, camera.pixelHeight / 2), - camera, - out localPlanePosition)) - { - // Adjust for canvas pivot - localPlanePosition.x = localPlanePosition.x + canvasRTransform.sizeDelta.x * canvasRTransform.pivot.x; - localPlanePosition.y = localPlanePosition.y + canvasRTransform.sizeDelta.y * canvasRTransform.pivot.y; - - localPlanePosition.x = Mathf.Clamp(localPlanePosition.x, 0, canvasRTransform.sizeDelta.x); - localPlanePosition.y = Mathf.Clamp(localPlanePosition.y, 0, canvasRTransform.sizeDelta.y); - - // Adjust for anchoring - position.x = localPlanePosition.x - canvasRTransform.sizeDelta.x * itemTransform.anchorMin.x; - position.y = localPlanePosition.y - canvasRTransform.sizeDelta.y * itemTransform.anchorMin.y; - - Vector3 minLocalPosition; - minLocalPosition.x = canvasRTransform.sizeDelta.x * (0 - canvasRTransform.pivot.x) + - itemTransform.sizeDelta.x * itemTransform.pivot.x; - minLocalPosition.y = canvasRTransform.sizeDelta.y * (0 - canvasRTransform.pivot.y) + - itemTransform.sizeDelta.y * itemTransform.pivot.y; - - Vector3 maxLocalPosition; - maxLocalPosition.x = canvasRTransform.sizeDelta.x * (1 - canvasRTransform.pivot.x) - - itemTransform.sizeDelta.x * itemTransform.pivot.x; - maxLocalPosition.y = canvasRTransform.sizeDelta.y * (1 - canvasRTransform.pivot.y) - - itemTransform.sizeDelta.y * itemTransform.pivot.y; - - position.x = Mathf.Clamp(position.x, minLocalPosition.x, maxLocalPosition.x); - position.y = Mathf.Clamp(position.y, minLocalPosition.y, maxLocalPosition.y); - } - - itemTransform.anchoredPosition = position; - itemTransform.localRotation = Quaternion.identity; - itemTransform.localScale = Vector3.one; - } - -#endregion -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/MenuIntegration.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/MenuIntegration.cs.meta deleted file mode 100644 index d74dc565e..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/MenuIntegration.cs.meta +++ /dev/null @@ -1,19 +0,0 @@ -fileFormatVersion: 2 -guid: 99feb6419b119464aa5a3ad6549ea73c -timeCreated: 1539852386 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/MenuIntegration.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Migration.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Migration.cs deleted file mode 100644 index dea8b25e6..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Migration.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System.Diagnostics.CodeAnalysis; -using UnityEditor; -using UnityEditor.SceneManagement; -using UnityEngine; -using UnityEngine.Rendering; -using UnityEngine.SceneManagement; - -namespace LeTai.Asset.TranslucentImage.Editor -{ -public static class Migration -{ - [MenuItem("Tools/Translucent Image/Migrate to 6.0", false, 10000)] - [SuppressMessage("ReSharper", "Unity.PreferAddressByIdToGraphicsParams")] - static void MigrateTo60() - { - var tiArr = Shims.FindObjectsOfType(); - foreach (var ti in tiArr) - { - Undo.RecordObject(ti, "Migrate to 6.0"); - - var mat = ti.material; - var matSo = new SerializedObject(mat); - - // var shader = mat.shader; - // mat.SetKeyword(new LocalKeyword(shader, "_BACKGROUND_MODE_NORMAL"), mat.IsKeywordEnabled("_FOREGROUND_MODE_CONSISTENT")); - // mat.SetKeyword(new LocalKeyword(shader, "_BACKGROUND_MODE_COLORFUL"), mat.IsKeywordEnabled("_FOREGROUND_MODE_COLORFUL")); - // if (shader.name == "UI/TranslucentImage-Paraform") - // mat.SetKeyword(new LocalKeyword(shader, "_BACKGROUND_MODE_OPAQUE"), mat.IsKeywordEnabled("_FOREGROUND_MODE_ONLY")); - // mat.SetFloat("_BACKGROUND_MODE", (int)mat.GetFloat("_FOREGROUND_MODE")); - - - var savedProps = matSo.FindProperty("m_SavedProperties"); - if (TryFindOrphanMaterialProperty(savedProps, "_Vibrancy", out float vibrancy)) - ti.vibrancy = vibrancy; - if (TryFindOrphanMaterialProperty(savedProps, "_Brightness", out float brightness)) - ti.brightness = brightness; - if (TryFindOrphanMaterialProperty(savedProps, "_Flatten", out float flatten)) - ti.flatten = flatten; - if (TryFindOrphanMaterialProperty(savedProps, "_ForegroundOpacity", out float foregroundOpacity)) - ti.foregroundOpacity = foregroundOpacity; - - EditorUtility.SetDirty(mat); - EditorUtility.SetDirty(ti); - Debug.Log("Migrated " + ti.name); - } - var scene = SceneManager.GetActiveScene(); - EditorSceneManager.MarkSceneDirty(scene); - Debug.Log("Migrated scene " + scene.name); - } - - static bool TryFindOrphanMaterialProperty(SerializedProperty savedProps, string propertyName, out T value) - { - value = default; - - var arrayName = typeof(T) == typeof(float) ? "m_Floats" - : typeof(T) == typeof(Color) ? "m_Colors" - : typeof(T) == typeof(Texture) ? "m_Texs" - : null; - - if (arrayName == null) return false; - - var array = savedProps.FindPropertyRelative(arrayName); - for (var i = 0; i < array.arraySize; i++) - { - var matProp = array.GetArrayElementAtIndex(i); - if (matProp.FindPropertyRelative("first").stringValue == propertyName) - { - var valProp = matProp.FindPropertyRelative("second"); - value = typeof(T) == typeof(float) ? (T)(object)valProp.floatValue - : typeof(T) == typeof(Color) ? (T)(object)valProp.colorValue - : (T)(object)valProp.objectReferenceValue; - return true; - } - } - - return false; - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Migration.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Migration.cs.meta deleted file mode 100644 index 91f02a28c..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Migration.cs.meta +++ /dev/null @@ -1,18 +0,0 @@ -fileFormatVersion: 2 -guid: 69cb9068e80c2e44db80afedac9e414c -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/Migration.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources.meta deleted file mode 100644 index 3b81954ab..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ace044fc6a6bf3649a39e77c7a77f6c6 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/BlurConfig Icon.png b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/BlurConfig Icon.png deleted file mode 100644 index cdff700b1..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/BlurConfig Icon.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:22c0eb951a2951144f62d92776c13537893984d6ec2d8decfcf2f937523df48e -size 6133 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/BlurConfig Icon.png.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/BlurConfig Icon.png.meta deleted file mode 100644 index ac7b4b602..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/BlurConfig Icon.png.meta +++ /dev/null @@ -1,114 +0,0 @@ -fileFormatVersion: 2 -guid: c2fc80b7e20a4104db1297bcddfd83b5 -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 4 - 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 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapU: -1 - wrapV: -1 - wrapW: -1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - buildTarget: Standalone - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - buildTarget: Android - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - buildTarget: WebGL - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - spritePackingTag: - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/BlurConfig - Icon.png - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/BlurSource Icon.png b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/BlurSource Icon.png deleted file mode 100644 index 6f9482f82..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/BlurSource Icon.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:258db1e79d5850cadb97720924e019e9755e1641364d9097660a02818757355b -size 4866 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/BlurSource Icon.png.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/BlurSource Icon.png.meta deleted file mode 100644 index a3efa10c2..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/BlurSource Icon.png.meta +++ /dev/null @@ -1,114 +0,0 @@ -fileFormatVersion: 2 -guid: 4bc9a290ca74e434499699e3db41c3f9 -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 4 - 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 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapU: -1 - wrapV: -1 - wrapW: -1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - buildTarget: Standalone - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - buildTarget: Android - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - buildTarget: WebGL - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - spritePackingTag: - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/BlurSource - Icon.png - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/Knob_BG.png b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/Knob_BG.png deleted file mode 100644 index d7e722595..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/Knob_BG.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2af97d0062e643b80af65b837e907cd00c987c170294804101a9ce8ca5fb1053 -size 1090 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/Knob_BG.png.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/Knob_BG.png.meta deleted file mode 100644 index d93cf3615..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/Knob_BG.png.meta +++ /dev/null @@ -1,142 +0,0 @@ -fileFormatVersion: 2 -guid: 1cd4d3c69546e04408d9b94e5b4b11ab -labels: -- TranslucentImageEditorResources -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 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 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: 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: 1 - spriteTessellationDetail: -1 - textureType: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - 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: WebGL - 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: Android - 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: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/Knob_BG.png - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/Knob_FG.png b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/Knob_FG.png deleted file mode 100644 index d9ae8628c..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/Knob_FG.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8eb30ee5ad0b86891a6567e7190a5b8116ce94be8cfe4fe32a933d17e9cffa88 -size 1235 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/Knob_FG.png.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/Knob_FG.png.meta deleted file mode 100644 index ac8656def..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/Knob_FG.png.meta +++ /dev/null @@ -1,142 +0,0 @@ -fileFormatVersion: 2 -guid: fdf18819c7c4cfd48b44182ec0a87e15 -labels: -- TranslucentImageEditorResources -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 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 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: 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: 1 - spriteTessellationDetail: -1 - textureType: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - 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: WebGL - 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: Android - 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: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/Knob_FG.png - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/TranslucentImage Icon.png b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/TranslucentImage Icon.png deleted file mode 100644 index 99436bff0..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/TranslucentImage Icon.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d31ee189079a800d3b1135186b5288ef4cf7f33f1792a8f9f3ed1bacac6baacd -size 2749 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/TranslucentImage Icon.png.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/TranslucentImage Icon.png.meta deleted file mode 100644 index 6c9b6583f..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/TranslucentImage Icon.png.meta +++ /dev/null @@ -1,114 +0,0 @@ -fileFormatVersion: 2 -guid: 0764cd30e065b7340891d9f7f680a12f -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 4 - 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 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapU: -1 - wrapV: -1 - wrapW: -1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - buildTarget: Standalone - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - buildTarget: Android - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - buildTarget: WebGL - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - spritePackingTag: - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/TranslucentImage - Icon.png - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_bl.png b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_bl.png deleted file mode 100644 index 8602530fa..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_bl.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3a64491a706b6dfb8f4f1f7d62074aa7934ba83ba04fc248d87c950e9cc05ac9 -size 329 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_bl.png.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_bl.png.meta deleted file mode 100644 index e27990c62..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_bl.png.meta +++ /dev/null @@ -1,142 +0,0 @@ -fileFormatVersion: 2 -guid: a00d4db4afc81cb48bd1f0deb7c6aba7 -labels: -- TranslucentImageEditorResources -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 1 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 1 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 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: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - 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: WebGL - 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: Android - 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: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_bl.png - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_br.png b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_br.png deleted file mode 100644 index 6ebf80024..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_br.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:580a715ae32ef6838979a94aab2b4bd68d0c6b127e1201492f135dbae414a834 -size 318 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_br.png.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_br.png.meta deleted file mode 100644 index 293ca4f88..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_br.png.meta +++ /dev/null @@ -1,142 +0,0 @@ -fileFormatVersion: 2 -guid: e984439ef57f3a64399fa255d7c4ba16 -labels: -- TranslucentImageEditorResources -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 1 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 1 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 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: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - 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: WebGL - 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: Android - 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: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_br.png - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_tl.png b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_tl.png deleted file mode 100644 index b5513df48..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_tl.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0895294835ab186323d9806131b44f68dafb94e99df6ca3b47f95478d6ecdbf2 -size 343 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_tl.png.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_tl.png.meta deleted file mode 100644 index c391c3a5e..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_tl.png.meta +++ /dev/null @@ -1,142 +0,0 @@ -fileFormatVersion: 2 -guid: 0bdf2adb70adf36449bbc431fc921bbc -labels: -- TranslucentImageEditorResources -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 1 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 1 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 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: 1 - nPOTScale: 0 - 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: 1 - spriteTessellationDetail: -1 - textureType: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - 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: WebGL - 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: Android - 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: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_tl.png - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_tr.png b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_tr.png deleted file mode 100644 index eb7f38842..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_tr.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1dca30636af7f45ab8ab8e86c285e21878efe2af40e08e3901b031521b488aba -size 344 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_tr.png.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_tr.png.meta deleted file mode 100644 index 151e600ef..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_tr.png.meta +++ /dev/null @@ -1,142 +0,0 @@ -fileFormatVersion: 2 -guid: 28ffad455fa2c244c85c5d788e285cfc -labels: -- TranslucentImageEditorResources -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - mipmaps: - mipMapMode: 1 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 1 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 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: 1 - 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: 1 - spriteTessellationDetail: -1 - textureType: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - 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: WebGL - 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: Android - 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: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/Resources/round_corner_tr.png - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/ScalableBlurConfigEditor.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/ScalableBlurConfigEditor.cs deleted file mode 100644 index 6ab69bf10..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/ScalableBlurConfigEditor.cs +++ /dev/null @@ -1,143 +0,0 @@ -using System; -using LeTai.Common.Editor; -using UnityEditor; -using UnityEditor.AnimatedValues; -using UnityEngine; - -namespace LeTai.Asset.TranslucentImage.Editor -{ -[CustomEditor(typeof(ScalableBlurConfig))] -[CanEditMultipleObjects] -public class ScalableBlurConfigEditor : UnityEditor.Editor -{ - static readonly EditorPrefValue SHOW_RESOLUTION_MATCHING = new("TranslucentImage_ShowResolutionMatching", false); - - readonly AnimBool useAdvancedControl = new AnimBool(false); - - int tab, previousTab; - - EditorProperty radius; - EditorProperty iteration; - EditorProperty strength; - EditorProperty mode; - EditorProperty referenceResolution; - EditorProperty matchWidthOrHeight; - SerializedProperty useStrength; - - public void Awake() - { - LoadTabSelection(); - useAdvancedControl.value = tab > 0; - } - - public void OnEnable() - { - radius = new EditorProperty(serializedObject, nameof(ScalableBlurConfig.Radius)); - iteration = new EditorProperty(serializedObject, nameof(ScalableBlurConfig.Iteration)); - strength = new EditorProperty(serializedObject, nameof(ScalableBlurConfig.Strength)); - mode = new EditorProperty(serializedObject, nameof(ScalableBlurConfig.Mode)); - referenceResolution = new EditorProperty(serializedObject, nameof(ScalableBlurConfig.ReferenceResolution)); - matchWidthOrHeight = new EditorProperty(serializedObject, nameof(ScalableBlurConfig.MatchWidthOrHeight)); - useStrength = serializedObject.FindProperty("useStrength"); - - // Without this the editor will not Repaint automatically when animating - useAdvancedControl.valueChanged.AddListener(Repaint); - } - - public override void OnInspectorGUI() - { - Draw(); - } - - public void Draw() - { - using var changes = new EditorGUI.ChangeCheckScope(); - using var _ = new EditorGUILayout.VerticalScope(); - - mode.Draw(); - - EditorGUILayout.Space(); - - DrawTabBar(); - serializedObject.Update(); - DrawTabsContent(); - - EditorGUILayout.Space(); - - SHOW_RESOLUTION_MATCHING.Value = EditorGUILayout.BeginFoldoutHeaderGroup(SHOW_RESOLUTION_MATCHING, - "Resolution matching", - EditorStyles.foldout); - if (SHOW_RESOLUTION_MATCHING) - { - referenceResolution.Draw(); - matchWidthOrHeight.Draw(); - } - EditorGUILayout.EndFoldoutHeaderGroup(); - - if (changes.changed) - serializedObject.ApplyModifiedProperties(); - } - - void DrawTabBar() - { - using (var h = new EditorGUILayout.HorizontalScope()) - { - GUILayout.FlexibleSpace(); - - tab = GUILayout.Toolbar( - tab, - new[] { "Simple", "Advanced" }, - GUILayout.MinWidth(0), - GUILayout.MaxWidth(EditorGUIUtility.pixelsPerPoint * 192) - ); - - GUILayout.FlexibleSpace(); - } - - if (tab != previousTab) - { - GUI.FocusControl(""); // Defocus - SaveTabSelection(); - previousTab = tab; - } - - useAdvancedControl.target = tab == 1; - } - - void DrawTabsContent() - { - if (EditorGUILayout.BeginFadeGroup(1 - useAdvancedControl.faded)) - { - // EditorProperty dooesn't invoke getter. Not needed anywhere else. - _ = ((ScalableBlurConfig)target).Strength; - using var changes = new EditorGUI.ChangeCheckScope(); - strength.Draw(); - if (changes.changed) - useStrength.boolValue = true; - } - EditorGUILayout.EndFadeGroup(); - - if (EditorGUILayout.BeginFadeGroup(useAdvancedControl.faded)) - { - using var changes = new EditorGUI.ChangeCheckScope(); - radius.Draw(); - iteration.Draw(); - if (changes.changed) - useStrength.boolValue = false; - } - EditorGUILayout.EndFadeGroup(); - } - - //Persist selected tab between sessions and instances - void SaveTabSelection() - { - EditorPrefs.SetInt("LETAI_TRANSLUCENTIMAGE_TIS_TAB", tab); - } - - void LoadTabSelection() - { - if (EditorPrefs.HasKey("LETAI_TRANSLUCENTIMAGE_TIS_TAB")) - tab = EditorPrefs.GetInt("LETAI_TRANSLUCENTIMAGE_TIS_TAB"); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/ScalableBlurConfigEditor.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/ScalableBlurConfigEditor.cs.meta deleted file mode 100644 index 64c0b4910..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/ScalableBlurConfigEditor.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 771a13bc1eb042bc9d4ad186dd99dda5 -timeCreated: 1560160054 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/ScalableBlurConfigEditor.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/ScenceGizmoAutoDisable.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/ScenceGizmoAutoDisable.cs deleted file mode 100644 index 03a02c9c6..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/ScenceGizmoAutoDisable.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using System.Linq; -using System.Reflection; -using UnityEditor; - -namespace LeTai.Asset.TranslucentImage.Editor -{ -class ScenceGizmoAutoDisable : AssetPostprocessor -{ - static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) - { - if (!importedAssets.Any(p => p.Contains("TranslucentImage"))) - return; - - var structAnnotation = Type.GetType("UnityEditor.Annotation, UnityEditor"); - if (structAnnotation == null) return; - - var fieldClassId = structAnnotation.GetField("classID"); - var fieldScriptClass = structAnnotation.GetField("scriptClass"); - var fieldFlags = structAnnotation.GetField("flags"); - var fieldIconEnabled = structAnnotation.GetField("iconEnabled"); - - Type classAnnotationUtility = Type.GetType("UnityEditor.AnnotationUtility, UnityEditor"); - if (classAnnotationUtility == null) return; - - var methodGetAnnotations = classAnnotationUtility.GetMethod("GetAnnotations", BindingFlags.NonPublic | BindingFlags.Static); - if (methodGetAnnotations == null) return; - var methodSetIconEnabled = classAnnotationUtility.GetMethod("SetIconEnabled", BindingFlags.NonPublic | BindingFlags.Static); - if (methodSetIconEnabled == null) return; - - Array annotations = (Array)methodGetAnnotations.Invoke(null, null); - foreach (var a in annotations) - { - string scriptClass = (string)fieldScriptClass.GetValue(a); - - // built in types - if (string.IsNullOrEmpty(scriptClass)) continue; - - int classId = (int)fieldClassId.GetValue(a); - int flags = (int)fieldFlags.GetValue(a); - int iconEnabled = (int)fieldIconEnabled.GetValue(a); - - const int maskHasIcon = 1; - bool hasIconFlag = (flags & maskHasIcon) == maskHasIcon; - - if (hasIconFlag - && iconEnabled != 0 - && scriptClass.Contains("TranslucentImage")) - { - methodSetIconEnabled.Invoke(null, new object[] { classId, scriptClass, 0 }); - } - } - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/ScenceGizmoAutoDisable.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/ScenceGizmoAutoDisable.cs.meta deleted file mode 100644 index 03a172658..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/ScenceGizmoAutoDisable.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: d3c5df780c45454e820502d48a07db97 -timeCreated: 1575814101 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/ScenceGizmoAutoDisable.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageEditor.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageEditor.cs deleted file mode 100644 index d43b14c26..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageEditor.cs +++ /dev/null @@ -1,427 +0,0 @@ -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using System.Reflection; -using LeTai.Common.Editor; -using LeTai.Paraform.Scaffold.Editor; -using UnityEditor; -using UnityEditor.AnimatedValues; -using UnityEditor.UI; -using UnityEngine; -using Debug = System.Diagnostics.Debug; -using Image = UnityEngine.UI.Image; -using Object = UnityEngine.Object; - -#pragma warning disable CS0162 // Unreachable code detected - -namespace LeTai.Asset.TranslucentImage.Editor -{ -[CustomEditor(typeof(TranslucentImage))] -[CanEditMultipleObjects] -public class TranslucentImageEditor : ImageEditor -{ - SerializedProperty type; - SerializedProperty sprite; - SerializedProperty preserveAspect; - SerializedProperty useSpriteMesh; - - EditorProperty source; - EditorProperty foregroundOpacity; - EditorProperty _vibrancy; - EditorProperty _brightness; - EditorProperty _flatten; - - GUIStyle styleBtnSource; - - static readonly EditorPrefValue SHOW_PARAFORM_SHAPE_CONTROLS = new("TranslucentImage_ShowParaformShapeControls", HAVE_PARAFORM); - static readonly EditorPrefValue SHOW_MATERIAL_PROPERTIES = new("TranslucentImage_ShowMaterialProperties", true); - - AnimBool showTypeAnim; - - List tiList; - UnityEditor.Editor materialEditor; - - ParaformEditor paraformEditor; - - bool needValidateSource; - bool needValidateMaterial; - bool materialUsedInDifferentSource; - bool usingIncorrectShader; - int smallFontSize; - - const bool HAVE_PARAFORM = -#if LETAI_PARAFORM - true; -#else - false; -#endif - - protected override void OnEnable() - { - base.OnEnable(); - - typeof(ImageEditor).GetField("m_SpriteContent", BindingFlags.Instance | BindingFlags.NonPublic) - .SetValue(this, new GUIContent("Sprite")); - - sprite = serializedObject.FindProperty("m_Sprite"); - type = serializedObject.FindProperty("m_Type"); - preserveAspect = serializedObject.FindProperty("m_PreserveAspect"); - useSpriteMesh = serializedObject.FindProperty("m_UseSpriteMesh"); - - source = new EditorProperty(serializedObject, nameof(TranslucentImage.source), "_source"); - foregroundOpacity = new EditorProperty(serializedObject, nameof(TranslucentImage.foregroundOpacity)); - _vibrancy = new EditorProperty(serializedObject, nameof(TranslucentImage.vibrancy)); - _brightness = new EditorProperty(serializedObject, nameof(TranslucentImage.brightness)); - _flatten = new EditorProperty(serializedObject, nameof(TranslucentImage.flatten)); - paraformEditor = new ParaformEditor(serializedObject.FindProperty("paraformConfig")); - - showTypeAnim = new AnimBool(sprite.objectReferenceValue); - showTypeAnim.valueChanged.AddListener(Repaint); - - tiList = targets.Cast().ToList(); - if (tiList.Count > 0) - { - CheckMaterialUsedInDifferentSource(); - CheckCorrectShader(); - } - } - - void InitStyle() - { - if (styleBtnSource != null) - return; - - styleBtnSource = new GUIStyle(GUI.skin.button) { - alignment = TextAnchor.MiddleLeft, - richText = true, - }; - - smallFontSize = Mathf.RoundToInt(styleBtnSource.fontSize * .8f); - } - - public override void OnInspectorGUI() - { - InitStyle(); - - serializedObject.Update(); - - tiList = targets.Cast().ToList(); - Debug.Assert(tiList.Count > 0, "Translucent Image Editor serializedObject target is null"); - - DrawSourceControls(); - - DrawShapeControls(); - - EditorGUILayout.Space(); - - EditorGUILayout.LabelField("Appearance", EditorStyles.boldLabel); - - DrawSpriteControls(); - EditorGUILayout.PropertyField(m_Color); - foregroundOpacity.Draw(); - _vibrancy.Draw(); - _brightness.Draw(); - _flatten.Draw(); - EditorGUILayout.Space(); - DrawMaterialControls(); - DrawMaterialProperties(); - - EditorGUILayout.Space(); - EditorGUILayout.LabelField("Interaction", EditorStyles.boldLabel); - RaycastControlsGUI(); - MaskableControlsGUI(); - - serializedObject.ApplyModifiedProperties(); - - if (needValidateSource) ValidateSource(); - if (needValidateMaterial) ValidateMaterial(); - } - - void DrawSourceControls() - { - using (var changes = new EditorGUI.ChangeCheckScope()) - { - source.Draw(); - if (changes.changed) - needValidateSource = true; - } - - if (!source.serializedProperty.objectReferenceValue) - { - var existingSources = Shims.FindObjectsOfType(); - if (existingSources.Length > 0) - { - using (new EditorGUI.IndentLevelScope()) - { - using var h = new EditorGUILayout.HorizontalScope(); - - EditorGUILayout.PrefixLabel("From current Scene"); - using var v = new EditorGUILayout.VerticalScope(); - foreach (var s in existingSources) - { - SetSourceBtn($"{s.gameObject.name}\t{GetSourceDescriptionLabel(s)}", s); - } - } - - EditorGUILayout.Space(); - } - else - { - EditorGUILayout.HelpBox("No Translucent Image Source(s) found in current scene", MessageType.Warning); - } - } - else - { - using var _ = new EditorGUI.IndentLevelScope(1); - - var sourceObj = (TranslucentImageSource)source.serializedProperty.objectReferenceValue; - var config = sourceObj.BlurConfig; - - if (config) - { - var oldStrength = config.Strength; - var newStrength = EditorGUILayout.FloatField("Blur Strength", oldStrength); - - if (!Mathf.Approximately(newStrength, oldStrength)) - { - Undo.RecordObject(config, "Change blur config"); - config.Strength = newStrength; - EditorUtility.SetDirty(config); - } - } - else - { - using var h = new EditorGUILayout.HorizontalScope(); - EditorGUILayout.LabelField(" ", "No Blur Config"); - } - - var sameCameraSources = sourceObj.GetComponents(); - if (sameCameraSources.Length > 1) - { - using var h = new EditorGUILayout.HorizontalScope(); - EditorGUILayout.PrefixLabel("Other Sources"); - foreach (var s in sameCameraSources) - { - if (s == sourceObj) - continue; - - SetSourceBtn(GetSourceDescriptionLabel(s), s); - } - } - } - } - - string GetSourceDescriptionLabel(TranslucentImageSource s) - { - if (s.BlurConfig) - return $"STR: {s.BlurConfig.Strength:0.#}"; - - return $"No Blur Config"; - } - - void SetSourceBtn(string label, TranslucentImageSource newSource) - { - if (GUILayout.Button(label, styleBtnSource, GUILayout.ExpandWidth(false))) - { - Undo.RecordObject(target, $"Set source to {newSource.gameObject.name}"); - source.serializedProperty.objectReferenceValue = newSource; - source.CallSetters(newSource); - needValidateSource = true; - needValidateMaterial = true; - } - } - - [SuppressMessage("ReSharper", "ConditionIsAlwaysTrueOrFalse")] - [SuppressMessage("ReSharper", "HeuristicUnreachableCode")] - void DrawShapeControls() - { - var useParaform = tiList.Any(ti => ti.material && ti.material.shader.name.EndsWith("-Paraform")); - - using (new EditorGUILayout.HorizontalScope()) - { - var label = "Paraform"; - if (!HAVE_PARAFORM) - label += " (not installed)"; - else if (!useParaform) - label += " (Not supported by material)"; - SHOW_PARAFORM_SHAPE_CONTROLS.Value = EditorGUILayout.BeginFoldoutHeaderGroup(SHOW_PARAFORM_SHAPE_CONTROLS, label); - - if (HAVE_PARAFORM && !useParaform) - { - if (GUILayout.Button("Use Paraform Shader")) - { - foreach (var ti in tiList) - { - var mat = ti.material; - Undo.RecordObject(mat, "Use Paraform Shader"); - mat.shader = Shader.Find("UI/TranslucentImage-Paraform"); - } - } - } - } - - using var disabledGroupScope = new EditorGUI.DisabledGroupScope(!HAVE_PARAFORM || !useParaform); - - if (SHOW_PARAFORM_SHAPE_CONTROLS) - { - using var changes = new EditorGUI.ChangeCheckScope(); - - paraformEditor?.DrawShapeControls(); - - if (changes.changed) - { - serializedObject.ApplyModifiedProperties(); - foreach (var ti in tiList) ti.paraformConfig.NotifyChanged(); - } - - ParaformEditor.MaybeGetParaformLinkBtn(); - } - EditorGUILayout.EndFoldoutHeaderGroup(); - } - - void DrawSpriteControls() - { - SpriteGUI(); - showTypeAnim.target = sprite.objectReferenceValue != null; - if (EditorGUILayout.BeginFadeGroup(showTypeAnim.faded)) - TypeGUI(); - EditorGUILayout.EndFadeGroup(); - - Image.Type type = (Image.Type)this.type.enumValueIndex; - bool showNativeSize = (type == Image.Type.Simple || type == Image.Type.Filled) - && sprite.objectReferenceValue != null; - SetShowNativeSize(showNativeSize, false); - - if (EditorGUILayout.BeginFadeGroup(m_ShowNativeSize.faded)) - { - EditorGUI.indentLevel++; - - if ((Image.Type)this.type.enumValueIndex == Image.Type.Simple) - EditorGUILayout.PropertyField(useSpriteMesh); - - EditorGUILayout.PropertyField(preserveAspect); - EditorGUI.indentLevel--; - } - EditorGUILayout.EndFadeGroup(); - NativeSizeButtonGUI(); - } - - void DrawMaterialControls() - { - using var changes = new EditorGUI.ChangeCheckScope(); - EditorGUILayout.PropertyField(m_Material); - if (changes.changed) - needValidateMaterial = true; - - if (usingIncorrectShader) - { - EditorGUILayout.HelpBox("Material is using unsupported shader", MessageType.Warning); - } - if (materialUsedInDifferentSource) - { - EditorGUILayout.HelpBox("Translucent Images with different Sources" + - " should also use different Materials", - MessageType.Error); - } - } - - void DrawMaterialProperties() - { - using var change = new EditorGUI.ChangeCheckScope(); - var targetMaterials = tiList.Select(t => t.material).Cast().ToArray(); - - using (_ = new EditorGUI.IndentLevelScope()) - { - SHOW_MATERIAL_PROPERTIES.Value = EditorGUILayout.BeginFoldoutHeaderGroup(SHOW_MATERIAL_PROPERTIES, "Material settings"); - if (SHOW_MATERIAL_PROPERTIES) - { - bool prevGuiEnabled = GUI.enabled; - if (targetMaterials.Any(m => m.hideFlags == HideFlags.HideAndDontSave)) - { - using (new EditorGUILayout.HorizontalScope()) - { - EditorGUILayout.HelpBox("Create a new Material to edit", MessageType.Info); - if (GUILayout.Button("Create Material", GUILayout.ExpandHeight(true))) - { - var path = EditorUtility.SaveFilePanelInProject("Save New Material", "Translucent Image Material", "mat", ""); - if (!string.IsNullOrEmpty(path)) - { - var material = Instantiate(HAVE_PARAFORM - ? DefaultResources.Instance.paraformMaterial - : DefaultResources.Instance.material); - m_Material.objectReferenceValue = material; - AssetDatabase.CreateAsset(material, path); - } - } - } - GUI.enabled = false; - } - - CreateCachedEditor(targetMaterials, typeof(MaterialEditor), ref materialEditor); - var materialProperties = MaterialEditor.GetMaterialProperties(targetMaterials); - TranslucentImageShaderGUI.DrawProperties((MaterialEditor)materialEditor, materialProperties, true); - - GUI.enabled = prevGuiEnabled; - } - EditorGUILayout.EndFoldoutHeaderGroup(); - } - - - if (change.changed) - { - foreach (var ti in tiList) - { - if (ti.materialForRendering != ti.material) - { - Undo.RecordObject(ti.materialForRendering, $"Modify material {ti.material.name}"); - TranslucentImage.CopyMaterialPropertiesTo(ti.material, ti.materialForRendering); - } - } - } - } - - void ValidateSource() - { - CheckMaterialUsedInDifferentSource(); - needValidateSource = false; - } - - void ValidateMaterial() - { - CheckMaterialUsedInDifferentSource(); - CheckCorrectShader(); - needValidateMaterial = false; - } - - private void CheckCorrectShader() - { - usingIncorrectShader = tiList.Any(ti => !ti.material.shader.name.Contains("TranslucentImage")); - } - - private void CheckMaterialUsedInDifferentSource() - { - if (!tiList[0].source - || tiList[0].material.IsKeywordEnabled(ShaderID.KW_BACKGROUND_MODE_OPAQUE)) - { - materialUsedInDifferentSource = false; - return; - } - - var diffSource = Shims.FindObjectsOfType() - .Where(ti => ti.source != tiList[0].source) - .ToList(); - - if (!diffSource.Any()) - { - materialUsedInDifferentSource = false; - return; - } - - var sameMat = diffSource.GroupBy(ti => ti.material).ToList(); - - materialUsedInDifferentSource = sameMat.Any(group => group.Key == tiList[0].material); - - needValidateMaterial = false; - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageEditor.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageEditor.cs.meta deleted file mode 100644 index a5cb9c42d..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageEditor.cs.meta +++ /dev/null @@ -1,19 +0,0 @@ -fileFormatVersion: 2 -guid: 9a6952d1e37a4f0458848a0e61378de5 -timeCreated: 1539852386 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageEditor.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageShaderGUI.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageShaderGUI.cs deleted file mode 100644 index 29f8a9bf4..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageShaderGUI.cs +++ /dev/null @@ -1,244 +0,0 @@ -using System; -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using LeTai.Common.Editor; -using LeTai.Paraform.Scaffold; -using LeTai.Paraform.Scaffold.Editor; -using UnityEditor; -using UnityEngine; -using EGU = UnityEditor.EditorGUIUtility; - -namespace LeTai.Asset.TranslucentImage.Editor -{ -public class TranslucentImageShaderGUI : ShaderGUI -{ - static readonly EditorPrefValue SHOW_PARAFORM_MATERIAL_CONTROLS = new("TranslucentImage_ShowParaformMaterialControls", true); - - public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties) - { - DrawProperties(materialEditor, properties, false); - } - - [SuppressMessage("ReSharper", "ConditionIsAlwaysTrueOrFalse")] - public static void DrawProperties(MaterialEditor materialEditor, MaterialProperty[] properties, bool skipUnimportants) - { - float oldLabelWidth = EGU.labelWidth; - float oldFieldWidth = EGU.fieldWidth; - materialEditor.SetDefaultGUIWidths(); - - // ReSharper disable once ConvertToConstant.Local - bool haveParaform = false; -#if LETAI_PARAFORM - haveParaform = true; -#endif - - var useParaform = ((Material)materialEditor.target).shader.name == "UI/TranslucentImage-Paraform"; - - using var propIter = properties.AsEnumerable().GetEnumerator(); - - var reflectionModeProp = DrawDefaultUntil("_REFRACTION_MODE"); - - EditorGUILayout.Space(); - - var paraformLabel = "Paraform"; - if (!haveParaform) - paraformLabel += " (not installed)"; - SHOW_PARAFORM_MATERIAL_CONTROLS.Value = EditorGUILayout.Foldout( - SHOW_PARAFORM_MATERIAL_CONTROLS, paraformLabel, true, EditorStyles.foldoutHeader); - if (!SHOW_PARAFORM_MATERIAL_CONTROLS) - { - while (propIter.Current.name != "_StencilComp") - propIter.MoveNext(); - } - else - { - using (new EditorGUI.DisabledGroupScope(!haveParaform)) - { - if (haveParaform && !useParaform) - EditorGUILayout.HelpBox("Change the material's shader to UI/TranslucentImage-Paraform to enable", MessageType.Info); - - using (new EditorGUI.DisabledGroupScope(!useParaform)) - { - var refractiveIndexProp = ConsumeProp(); - var chromaticDispersionProp = ConsumeProp(); - var refractiveIndexRatiosProp = ConsumeProp(); - using (var changes = new EditorGUI.ChangeCheckScope()) - { - DrawDefault(reflectionModeProp); - var refractionMode = (RefractionMode)(int)reflectionModeProp.floatValue; - - using (new EditorGUI.DisabledScope(refractionMode == RefractionMode.Off)) - DrawDefault(refractiveIndexProp); - - using (new EditorGUI.DisabledScope(refractionMode != RefractionMode.Chromatic)) - DrawDefault(chromaticDispersionProp); - - if (changes.changed) - refractiveIndexRatiosProp.vectorValue = ParaformMaterial - .GetRefractiveIndexRatios( - refractiveIndexProp.floatValue, - refractionMode == RefractionMode.Chromatic ? chromaticDispersionProp.floatValue : 0 - ); - } - - - var useEdgeGlintProp = ConsumeProp(); - DrawDefault(useEdgeGlintProp); - using (new EditorGUI.DisabledScope(useEdgeGlintProp.floatValue == 0)) - { - var edgeGlintDirectionsProp = ConsumePropName("_EdgeGlintDirections"); - DrawEdgeGlintDirections(edgeGlintDirectionsProp); - - var edgeGlintWrapProp = DrawDefaultUntil("_EdgeGlintWrap"); - DrawEdgeGlintWrap(edgeGlintWrapProp); - - var edgeGlintSharpnessProp = ConsumePropName("_EdgeGlintSharpness"); - DrawEdgeGlintSharpness(edgeGlintSharpnessProp); - } - } - - if (!haveParaform) - ParaformEditor.MaybeGetParaformLinkBtn(); - - ConsumeProp(); - } - } - - if (!skipUnimportants) - { - do - { - DrawDefault(propIter.Current); - } while (propIter.MoveNext()); - } - - EditorGUILayout.Space(); - - if (!skipUnimportants) - { - EditorGUILayout.Space(); - if (UnityEngine.Rendering.SupportedRenderingFeatures.active.editableMaterialRenderQueue) - materialEditor.RenderQueueField(); - materialEditor.EnableInstancingField(); - materialEditor.DoubleSidedGIField(); - } - - EGU.labelWidth = oldLabelWidth; - EGU.fieldWidth = oldFieldWidth; - - return; - - MaterialProperty ConsumeProp() - { - return propIter.MoveNext() ? propIter.Current : null; - } - - MaterialProperty ConsumePropName(string name) - { - var next = ConsumeProp(); - if (next.name != name) - throw new ArgumentException($"Expect {name} but got {next.name}"); - return next; - } - - MaterialProperty DrawDefaultUntil(string name) - { - while (propIter.MoveNext() && propIter.Current.name != name) - DrawDefault(propIter.Current); - - return propIter.Current; - } - - void DrawDefault(MaterialProperty prop) - { - if ((prop.propertyFlags & UnityEngine.Rendering.ShaderPropertyFlags.HideInInspector) != 0) - return; - - if (skipUnimportants && (prop.propertyFlags & UnityEngine.Rendering.ShaderPropertyFlags.PerRendererData) != 0) - return; - - float h = materialEditor.GetPropertyHeight(prop, prop.displayName); - Rect r = EditorGUILayout.GetControlRect(true, h); - materialEditor.ShaderProperty(r, prop, GetPropGUIContent(prop)); - } - } - - static void DrawEdgeGlintDirections(MaterialProperty prop) - { - Vector4 value = prop.vectorValue; - - var angle1 = MathCustom.VecToAngle360(Vector2.right, new Vector2(value.x, -value.y)); - var angle2 = MathCustom.VecToAngle360(Vector2.right, new Vector2(value.z, -value.w)); - - EditorGUI.showMixedValue = prop.hasMixedValue; - using var changeScope = new EditorGUI.ChangeCheckScope(); - - LABEL.text = "Edge Glint 1 Direction"; - angle1 = EditorGUICustom.KnobField(LABEL, angle1, Vector2.right); - LABEL.text = "Edge Glint 2 Direction"; - angle2 = EditorGUICustom.KnobField(LABEL, angle2, Vector2.right); - - EditorGUI.showMixedValue = false; - if (changeScope.changed) - { - var dir1 = MathCustom.Angle360ToVec(angle1, Vector2.right); - var dir2 = MathCustom.Angle360ToVec(angle2, Vector2.right); - prop.vectorValue = new Vector4(dir1.x, -dir1.y, dir2.x, -dir2.y); - } - } - - static void DrawEdgeGlintWrap(MaterialProperty prop) - { - using var scope = new MaterialEditorGUI.PropertyScope(prop); - - var normalized = ParaformMaterial.EdgeGlintWrapFromRaw(prop.floatValue); - normalized = MaterialEditorGUI.Slider("Edge Glint Wrap", normalized, 0, 1); - - if (scope.Changed) - prop.floatValue = ParaformMaterial.EdgeGlintWrapToRaw(normalized); - } - - static void DrawEdgeGlintSharpness(MaterialProperty prop) - { - using var scope = new MaterialEditorGUI.PropertyScope(prop); - - var normalized = ParaformMaterial.EdgeGlintSharpnessFromRaw(prop.floatValue); - normalized = MaterialEditorGUI.Slider("Edge Glint Sharpness", normalized, 0.05f, .8f); - - if (scope.Changed) - prop.floatValue = ParaformMaterial.EdgeGlintSharpnessToRaw(normalized); - } - - static readonly GUIContent LABEL = new GUIContent(); - - static GUIContent GetPropGUIContent(MaterialProperty prop) - { - switch (prop.name) - { - case "_Vibrancy": - LABEL.tooltip = "(De)Saturate the image, 1 is normal, 0 is black and white, below zero make the image negative"; - break; - case "_Brightness": - LABEL.tooltip = "Brighten/darken the image"; - break; - case "_Flatten": - LABEL.tooltip = "Flatten the color behind to help keep contrast on varying background"; - break; - default: - LABEL.tooltip = ""; - break; - } - - LABEL.text = prop.displayName; - - return LABEL; - } - - enum RefractionMode - { - Off, - On, - Chromatic - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageShaderGUI.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageShaderGUI.cs.meta deleted file mode 100644 index b48bc649b..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageShaderGUI.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 193075a2a61d481290894aded6229d9e -timeCreated: 1729245462 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageShaderGUI.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageSourceEditor.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageSourceEditor.cs deleted file mode 100644 index e2a2b7fc3..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageSourceEditor.cs +++ /dev/null @@ -1,107 +0,0 @@ -using System; -using System.Linq; -using LeTai.Common.Editor; -using UnityEditor; -using UnityEngine; -using UnityEngine.SceneManagement; - -namespace LeTai.Asset.TranslucentImage.Editor -{ -[CustomEditor(typeof(TranslucentImageSource))] -[CanEditMultipleObjects] -public class TranslucentImageSourceEditor : UnityEditor.Editor -{ - ScalableBlurConfigEditor configEditor; - - EditorProperty blurConfig; - EditorProperty downsample; - EditorProperty blurRegion; - EditorProperty maxUpdateRate; - EditorProperty cullPadding; - EditorProperty backgroundFill; - EditorProperty preview; - EditorProperty skipCulling; - - void OnEnable() - { - blurConfig = new EditorProperty(serializedObject, nameof(TranslucentImageSource.BlurConfig)); - downsample = new EditorProperty(serializedObject, nameof(TranslucentImageSource.Downsample)); - blurRegion = new EditorProperty(serializedObject, nameof(TranslucentImageSource.BlurRegion)); - maxUpdateRate = new EditorProperty(serializedObject, nameof(TranslucentImageSource.MaxUpdateRate)); - cullPadding = new EditorProperty(serializedObject, nameof(TranslucentImageSource.CullPadding)); - backgroundFill = new EditorProperty(serializedObject, nameof(TranslucentImageSource.BackgroundFill)); - preview = new EditorProperty(serializedObject, nameof(TranslucentImageSource.Preview)); - skipCulling = new EditorProperty(serializedObject, nameof(TranslucentImageSource.SkipCulling)); - } - - void OnDisable() - { - if (configEditor) - DestroyImmediate(configEditor); - } - - public override void OnInspectorGUI() - { - EditorGUILayout.Space(); - - using (var configChange = new EditorGUI.ChangeCheckScope()) - { - blurConfig.Draw(); - - var curConfig = (ScalableBlurConfig)blurConfig.serializedProperty.objectReferenceValue; - if (!curConfig) - { - EditorGUILayout.HelpBox("Missing Blur Config", MessageType.Warning); - if (GUILayout.Button("New Blur Config File")) - { - ScalableBlurConfig newConfig = CreateInstance(); - - var path = AssetDatabase.GenerateUniqueAssetPath( - $"Assets/{SceneManager.GetActiveScene().name} {serializedObject.targetObject.name} Blur Config.asset"); - AssetDatabase.CreateAsset(newConfig, path); - AssetDatabase.SaveAssets(); - AssetDatabase.Refresh(); - EditorGUIUtility.PingObject(newConfig); - blurConfig.serializedProperty.objectReferenceValue = newConfig; - } - } - else - { - if (!configEditor || configChange.changed) - configEditor = (ScalableBlurConfigEditor)CreateEditor(curConfig); - - configEditor.Draw(); - } - } - - EditorGUILayout.Space(); - - downsample.Draw(); - using (var blurRegionChange = new EditorGUI.ChangeCheckScope()) - { - blurRegion.Draw(); - if (blurRegionChange.changed) - { - foreach (var source in targets.Cast()) - { - source.OnBlurRegionChanged(); - } - } - } - maxUpdateRate.Draw(); - if (maxUpdateRate.serializedProperty.floatValue < float.PositiveInfinity - && skipCulling.serializedProperty.boolValue == false) - { - cullPadding.Draw(); - if (cullPadding.serializedProperty.floatValue <= 0) - EditorGUILayout.HelpBox("When using a limited Max Update Rate with Culling enabled," + - " add some padding to prevent culled area being shown during UI movement.", MessageType.Warning); - } - backgroundFill.Draw(); - preview.Draw(); - skipCulling.Draw(); - - if (GUI.changed) serializedObject.ApplyModifiedProperties(); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageSourceEditor.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageSourceEditor.cs.meta deleted file mode 100644 index 32817c931..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageSourceEditor.cs.meta +++ /dev/null @@ -1,19 +0,0 @@ -fileFormatVersion: 2 -guid: ec905d5b1e2c40f40b5cdd580f727f3e -timeCreated: 1539852387 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Editor/TranslucentImageSourceEditor.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold.meta deleted file mode 100644 index d8b5ec61c..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 5a6b360fd65c8a7498e21776f5e921f7 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor.meta deleted file mode 100644 index 92a7f4511..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: fe939aeffd5b448fb6031672e72a89c5 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor/LeTai.Paraform.Scaffold.Editor.asmdef b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor/LeTai.Paraform.Scaffold.Editor.asmdef deleted file mode 100644 index 2b6f4fdd5..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor/LeTai.Paraform.Scaffold.Editor.asmdef +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "LeTai.Paraform.Scaffold.Editor", - "rootNamespace": "LeTai.Paraform.Scaffold.Editor", - "references": [ - "GUID:6329229812871a6488deb623f659955b", - "GUID:c131f8808d09e154c956e66d97dd723c", - "GUID:f063c9eabb2dec74ca53a0523cc14584" - ], - "includePlatforms": [ - "Editor" - ], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [], - "versionDefines": [], - "noEngineReferences": false -} \ No newline at end of file diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor/LeTai.Paraform.Scaffold.Editor.asmdef.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor/LeTai.Paraform.Scaffold.Editor.asmdef.meta deleted file mode 100644 index 6c46e29bf..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor/LeTai.Paraform.Scaffold.Editor.asmdef.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: dbd67092ee33ae344825e5cf39a350f3 -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor/LeTai.Paraform.Scaffold.Editor.asmdef - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor/ParaformEditor.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor/ParaformEditor.cs deleted file mode 100644 index 638d91c20..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor/ParaformEditor.cs +++ /dev/null @@ -1,197 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -using LeTai.Common.Editor; -using UnityEditor; -using UnityEngine; - -namespace LeTai.Paraform.Scaffold.Editor -{ -public class ParaformEditor -{ - readonly SerializedProperty cornerRadii; - readonly SerializedProperty isCornersLinked; - readonly SerializedProperty cornerCurvature; - readonly SerializedProperty filletCurvature; - readonly SerializedProperty bevelWidth; - readonly SerializedProperty ringThickness; - readonly SerializedProperty elevation; - - readonly GUIContent labelCornerRadii; - readonly GUIContent labelTR; - readonly GUIContent labelBR; - readonly GUIContent labelTL; - readonly GUIContent labelBL; - readonly GUIContent labelBtnLink; - - GUIStyle styleBtnLink; - GUIStyle styleCornerLabelTop; - GUIStyle styleCornerLabelBot; - - public ParaformEditor(SerializedProperty property) - { - cornerRadii = property.FindPropertyRelative(nameof(ParaformConfig.cornerRadii)); - isCornersLinked = property.FindPropertyRelative(nameof(ParaformConfig.isCornersLinked)); - cornerCurvature = property.FindPropertyRelative(nameof(ParaformConfig.cornerCurvature)); - filletCurvature = property.FindPropertyRelative(nameof(ParaformConfig.filletCurvature)); - bevelWidth = property.FindPropertyRelative(nameof(ParaformConfig.bevelWidth)); - ringThickness = property.FindPropertyRelative(nameof(ParaformConfig.ringThickness)); - elevation = property.FindPropertyRelative(nameof(ParaformConfig.elevation)); - - labelCornerRadii = new GUIContent(cornerRadii.displayName); - labelTR = new GUIContent(Assets.Find("round_corner_tr")); - labelBR = new GUIContent(Assets.Find("round_corner_br")); - labelTL = new GUIContent(Assets.Find("round_corner_tl")); - labelBL = new GUIContent(Assets.Find("round_corner_bl")); - labelBtnLink = new GUIContent(EditorGUIUtility.IconContent("Linked")); - } - - void InitStyles() - { - if (styleBtnLink != null) - return; - - styleBtnLink = new GUIStyle(EditorStyles.miniButton) { - fixedHeight = 0, - margin = new RectOffset(0, 0, 0, 0), - padding = new RectOffset(0, 0, -8, -8), - contentOffset = new Vector2(0, -1 * EditorGUIUtility.pixelsPerPoint), - }; - styleCornerLabelTop = new GUIStyle(EditorStyles.label) { - contentOffset = new Vector2(0, -1f * EditorGUIUtility.pixelsPerPoint) - }; - styleCornerLabelBot = new GUIStyle(styleCornerLabelTop) { - contentOffset = new Vector2(0, .5f * EditorGUIUtility.pixelsPerPoint) - }; - } - - public void DrawShapeControls() - { - using var changeScope = new EditorGUI.ChangeCheckScope(); - - DrawCornerRadiiControls(); - - EditorGUILayout.Space(); - - EditorGUILayout.PropertyField(cornerCurvature); - EditorGUILayout.PropertyField(filletCurvature); - EditorGUILayout.PropertyField(bevelWidth); - // var radii = cornerRadii.vector4Value; - // var maxBevelWidth = Mathf.Min(radii.x, radii.y, radii.z, radii.w); - // EditorCustom.ComputedPropertyField( - // bevelWidth, - // p => - // { - // var width = p.floatValue; - // return width <= maxBevelWidth - // ? width.ToString("0.##") - // : $"{maxBevelWidth:0.##} (clamped by radii)"; - // }); - EditorGUILayout.PropertyField(ringThickness); - EditorGUILayout.PropertyField(elevation); - } - - public void DrawCornerRadiiControls() - { - InitStyles(); - - var spacing = EditorGUIUtility.standardVerticalSpacing; - var lineHeight = EditorGUIUtility.singleLineHeight; - var labelWidth = EditorGUIUtility.singleLineHeight * 1f; - var btnLinkWidth = lineHeight * 1.5f; - var btnLinkHeight = lineHeight * 1f; - var totalRect = EditorGUILayout.GetControlRect(true, lineHeight * 2 + spacing); - - using var prop = new EditorGUI.PropertyScope(totalRect, labelCornerRadii, cornerRadii); - - var controlRect = EditorGUI.PrefixLabel(totalRect, prop.content); - - var floatControlWidth = controlRect.width * .4f; - - var btnLinkSpace = controlRect.width - floatControlWidth * 2; - var btnLinkMarginX = (btnLinkSpace - btnLinkWidth) / 2; - var btnLinkMarginY = (controlRect.height - btnLinkHeight) / 2; - - var rectLink = new Rect(controlRect.x + floatControlWidth + btnLinkMarginX, - controlRect.y + btnLinkMarginY, - btnLinkWidth, - btnLinkHeight); - using (var changes = new EditorGUI.ChangeCheckScope()) - { - isCornersLinked.boolValue = GUI.Toggle(rectLink, isCornersLinked.boolValue, labelBtnLink, styleBtnLink); - if (changes.changed && isCornersLinked.boolValue) - { - var newValue = cornerRadii.vector4Value.z; - cornerRadii.vector4Value = new Vector4(newValue, newValue, newValue, newValue); - } - } - - - using var labelWidthScope = new EditorCustom.LabelWidthScope(labelWidth); - - var rectFloatLabel = new Rect(0, 0, labelWidth, lineHeight); - var rectFloatField = new Rect(0, 0, floatControlWidth - labelWidth, lineHeight); - var gridH = new[] { - controlRect.x, - controlRect.x + labelWidth, - controlRect.xMax - floatControlWidth, - controlRect.xMax - labelWidth, - }; - var gridV = new[] { - controlRect.y, - controlRect.yMax - lineHeight, - }; - var rectLbTL = new Rect(rectFloatLabel) { x = gridH[0], y = gridV[0] }; - var rectTL = new Rect(rectFloatField) { x = gridH[1], y = gridV[0] }; - var rectTR = new Rect(rectFloatField) { x = gridH[2], y = gridV[0] }; - var rectLbTR = new Rect(rectFloatLabel) { x = gridH[3], y = gridV[0] }; - var rectLbBL = new Rect(rectFloatLabel) { x = gridH[0], y = gridV[1] }; - var rectBL = new Rect(rectFloatField) { x = gridH[1], y = gridV[1] }; - var rectBR = new Rect(rectFloatField) { x = gridH[2], y = gridV[1] }; - var rectLbBR = new Rect(rectFloatLabel) { x = gridH[3], y = gridV[1] }; - - using var changeCheck = new EditorGUI.ChangeCheckScope(); - var value = cornerRadii.vector4Value; - - var tl = Mathf.Max(0, EditorCustom.LabelFloatField(rectTL, rectLbTL, labelTL, value.z, styleCornerLabelTop)); - var tr = Mathf.Max(0, EditorCustom.LabelFloatField(rectTR, rectLbTR, labelTR, value.x, styleCornerLabelTop)); - var bl = Mathf.Max(0, EditorCustom.LabelFloatField(rectBL, rectLbBL, labelBL, value.w, styleCornerLabelBot)); - var br = Mathf.Max(0, EditorCustom.LabelFloatField(rectBR, rectLbBR, labelBR, value.y, styleCornerLabelBot)); - - if (changeCheck.changed) - { - var newRadii = new Vector4(tr, br, tl, bl); - - if (isCornersLinked.boolValue) - { - int changedIndex = 0; - for (int i = 1; i < 4; i++) - { - if (!Mathf.Approximately(newRadii[i], value[i])) - { - changedIndex = i; - break; - } - } - for (int i = 0; i < 4; i++) - { - newRadii[i] = newRadii[changedIndex]; - } - } - - cornerRadii.vector4Value = newRadii; - } - } - - public static void MaybeGetParaformLinkBtn() - { -#if !LETAI_PARAFORM - // DisabledGroupScope and co don't work here !? - var wasEnabled = GUI.enabled; - GUI.enabled = true; - if (EditorCustom.LinkButton("Get Paraform ↗", GUILayout.ExpandWidth(true))) - Application.OpenURL("https://leloctai.com/paraform/"); - GUI.enabled = wasEnabled; -#endif - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor/ParaformEditor.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor/ParaformEditor.cs.meta deleted file mode 100644 index ff9bd97fb..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor/ParaformEditor.cs.meta +++ /dev/null @@ -1,18 +0,0 @@ -fileFormatVersion: 2 -guid: 1dcd952c59f576d40829f67b617c661b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Editor/ParaformEditor.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime.meta deleted file mode 100644 index 399d0884f..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a9f3ce8eaf55a4a468c9ab96d21add88 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/AssemblyInfo.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/AssemblyInfo.cs deleted file mode 100644 index f1c10d130..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/AssemblyInfo.cs +++ /dev/null @@ -1,3 +0,0 @@ -using System.Runtime.CompilerServices; -[assembly:InternalsVisibleTo("LeTai.Paraform.Scaffold")] -[assembly:InternalsVisibleTo("LeTai.Paraform.Scaffold.Editor")] diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/AssemblyInfo.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/AssemblyInfo.cs.meta deleted file mode 100644 index 975a2f8e8..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/AssemblyInfo.cs.meta +++ /dev/null @@ -1,18 +0,0 @@ -fileFormatVersion: 2 -guid: 702ec2ed45e2f634aa9cd2e630fe307a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/AssemblyInfo.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/LeTai.Paraform.Scaffold.asmdef b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/LeTai.Paraform.Scaffold.asmdef deleted file mode 100644 index f35b2ff4f..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/LeTai.Paraform.Scaffold.asmdef +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "LeTai.Paraform.Scaffold", - "rootNamespace": "LeTai.Paraform.Scaffold", - "references": [ - "GUID:07cd4d3e8f0583542ab74e7b8b032f7e" - ], - "includePlatforms": [], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [], - "versionDefines": [], - "noEngineReferences": false -} \ No newline at end of file diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/LeTai.Paraform.Scaffold.asmdef.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/LeTai.Paraform.Scaffold.asmdef.meta deleted file mode 100644 index b260ed8de..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/LeTai.Paraform.Scaffold.asmdef.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: f063c9eabb2dec74ca53a0523cc14584 -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/LeTai.Paraform.Scaffold.asmdef - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/ParaformConfig.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/ParaformConfig.cs deleted file mode 100644 index f76eaf5a9..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/ParaformConfig.cs +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -using System; -using UnityEngine; -using UnityEngine.Serialization; - -namespace LeTai.Paraform.Scaffold -{ -[Serializable] -public struct ParaformConfig -{ - public static readonly ParaformConfig DEFAULT = new ParaformConfig { - cornerCurvature = 1.5f, - filletCurvature = 2.5f, - bevelWidth = 64, - ringThickness = 0, - elevation = 100, - cornerRadii = new Vector4(64, 64, 64, 64), - }; - - public event Action changed; - - -#if UNITY_EDITOR - [SerializeField] - internal bool isCornersLinked; -#endif - - [SerializeField] - [Tooltip("Indiviual corner radii. You can drag the rounded corner symbols to fine tune each radius. Click the link button to keep all corners the same.")] - internal Vector4 cornerRadii; - - public Vector4 CornerRadii - { - get => cornerRadii; - set - { - if (cornerRadii != value) - { - cornerRadii = value; - NotifyChanged(); - } - } - } - - [SerializeField] - [Range(0, 6)] - [Tooltip("0 is a flat diagonal corner. 1 is the perfect circle. Value > 1 increase curvature continuity target: 2 for G2 continuity, 3 for G3, and so on. Note that curvature continuity requires increased transition length, and is not guaranteed if the corner radius is too large compared to side length.")] - internal float cornerCurvature; - - public float CornerCurvature - { - get => cornerCurvature; - set - { - if (!Mathf.Approximately(cornerCurvature, value)) - { - cornerCurvature = value; - NotifyChanged(); - } - } - } - - [SerializeField] - [Range(0, 6)] - [Tooltip("0 is a flat diagonal corner. 1 is the perfect circle. Value > 1 increase curvature continuity target: 2 for G2 continuity, 3 for G3, and so on")] - internal float filletCurvature; - - public float FilletCurvature - { - get => filletCurvature; - set - { - if (!Mathf.Approximately(filletCurvature, value)) - { - filletCurvature = value; - NotifyChanged(); - } - } - } - - [FormerlySerializedAs("edgeWidth")] - [SerializeField] - [Min(0)] - [Tooltip("Bevel width or thickness")] - internal float bevelWidth; - - public float BevelWidth - { - get => bevelWidth; - set - { - if (!Mathf.Approximately(bevelWidth, value)) - { - bevelWidth = value; - NotifyChanged(); - } - } - } - - [SerializeField] - [Min(0)] - [Tooltip("Thickness of the ring shape. 0 to disable")] - internal float ringThickness; - - public float RingThickness - { - get => ringThickness; - set - { - if (!Mathf.Approximately(ringThickness, value)) - { - ringThickness = value; - NotifyChanged(); - } - } - } - - [SerializeField] - [Range(0, 1000)] - [Tooltip("Distance to the below surface, affecting refraction")] - internal float elevation; - - public float Elevation - { - get => elevation; - set - { - if (!Mathf.Approximately(elevation, value)) - { - elevation = value; - NotifyChanged(); - } - } - } - - public void NotifyChanged() - { - changed?.Invoke(); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/ParaformConfig.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/ParaformConfig.cs.meta deleted file mode 100644 index 6e6149f05..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/ParaformConfig.cs.meta +++ /dev/null @@ -1,18 +0,0 @@ -fileFormatVersion: 2 -guid: 28e4120e4fcac5c4287818023a1bcae4 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/ParaformConfig.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/ParaformMaterial.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/ParaformMaterial.cs deleted file mode 100644 index 1a5a97fd7..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/ParaformMaterial.cs +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -using UnityEngine; - -namespace LeTai.Paraform.Scaffold -{ -public static class ParaformMaterial -{ - public static class ShaderID - { - public static readonly int G_CANVAS_SCALE_FACTOR = Shader.PropertyToID("_LeTai_CanvasScaleFactor"); - - public const string REFRACTION_MODE_OFF = "_REFRACTION_MODE_OFF"; - public const string REFRACTION_MODE_ON = "_REFRACTION_MODE_ON"; - public const string REFRACTION_MODE_CHROMATIC = "_REFRACTION_MODE_CHROMATIC"; - public static readonly int REFRACTIVE_INDEX_DUMMY = Shader.PropertyToID("_RefractiveIndex"); - public static readonly int CHROMATIC_DISPERSION_DUMMY = Shader.PropertyToID("_ChromaticDispersion"); - public static readonly int REFRACTIVE_INDEX_RATIOS = Shader.PropertyToID("_RefractiveIndexRatios"); - - public const string USE_EDGE_GLINT = "_USE_EDGE_GLINT"; - public static readonly int EDGE_GLINT_DIRECTIONS = Shader.PropertyToID("_EdgeGlintDirections"); - public static readonly int EDGE_GLINT1_STRENGTH = Shader.PropertyToID("_EdgeGlint1Strength"); - public static readonly int EDGE_GLINT2_STRENGTH = Shader.PropertyToID("_EdgeGlint2Strength"); - public static readonly int EDGE_GLINT_WRAP_RAW = Shader.PropertyToID("_EdgeGlintWrap"); - public static readonly int EDGE_GLINT_SHARPNESS_RAW = Shader.PropertyToID("_EdgeGlintSharpness"); - } - - const float NA_D_LINE_UM = 0.5893f; - const float HED_LINE_UM = 0.58756f; - const float F_LINE_UM = 0.48613f; - const float C_LINE_UM = 0.65627f; - - static readonly Vector3 PRIMARIES_UM = new(.630f, .532f, .467f); - - static readonly float REF_COEFF = InvSq(NA_D_LINE_UM); - static readonly Vector3 PRIMARIES_COEFF = new(InvSq(PRIMARIES_UM[0]), - InvSq(PRIMARIES_UM[1]), - InvSq(PRIMARIES_UM[2])); - static readonly float DISPERSION_FC = InvSq(F_LINE_UM) - InvSq(C_LINE_UM); - static readonly float DISPERSION_HED_NA_D = InvSq(HED_LINE_UM) - REF_COEFF; - - public static Vector3 GetRefractiveIndexRatios(float iorAtNaDLine, float abbeRcp) - { - iorAtNaDLine = Mathf.Max(1, iorAtNaDLine); - abbeRcp = Mathf.Max(0, abbeRcp); - - if (abbeRcp == 0) - return new Vector3(1f / iorAtNaDLine, - 1f / iorAtNaDLine, - 1f / iorAtNaDLine); - - float cauchyB = (iorAtNaDLine - 1f) * abbeRcp / (DISPERSION_FC - abbeRcp * DISPERSION_HED_NA_D); - float cauchyA = iorAtNaDLine - cauchyB * REF_COEFF; - - var iors = new Vector3(cauchyA + cauchyB * PRIMARIES_COEFF[0], - cauchyA + cauchyB * PRIMARIES_COEFF[1], - cauchyA + cauchyB * PRIMARIES_COEFF[2]); - return new Vector3(1f / iors[0], - 1f / iors[1], - 1f / iors[2]); - } - - static float InvSq(float x) - { - return 1f / (x * x); - } - - public static void SetDispersion(Material material, float dispersion) - { - var ior = material.GetFloat(ShaderID.REFRACTIVE_INDEX_DUMMY); - material.SetFloat(ShaderID.CHROMATIC_DISPERSION_DUMMY, dispersion); - material.SetVector(ShaderID.REFRACTIVE_INDEX_RATIOS, GetRefractiveIndexRatios(ior, dispersion)); - } - - public static void SetRefractiveIndex(Material material, float refractiveIndex) - { - var dispersion = material.GetFloat(ShaderID.CHROMATIC_DISPERSION_DUMMY); - material.SetFloat(ShaderID.REFRACTIVE_INDEX_DUMMY, refractiveIndex); - material.SetVector(ShaderID.REFRACTIVE_INDEX_RATIOS, GetRefractiveIndexRatios(refractiveIndex, dispersion)); - } - - public static void SetRefractiveIndexRatios(Material material, float refractiveIndex, float chromaticDispersion) - { - material.SetFloat(ShaderID.REFRACTIVE_INDEX_DUMMY, refractiveIndex); - material.SetFloat(ShaderID.CHROMATIC_DISPERSION_DUMMY, chromaticDispersion); - material.SetVector(ShaderID.REFRACTIVE_INDEX_RATIOS, GetRefractiveIndexRatios(refractiveIndex, - chromaticDispersion)); - } - - const float EDGE_GLINT_WRAP_SCALE = 20; - const float EDGE_GLINT_WRAP_POWER = .25f; - - public static float EdgeGlintWrapToRaw(float edgeGlintWrap) - { - return (1 - Mathf.Pow(edgeGlintWrap, EDGE_GLINT_WRAP_POWER)) * EDGE_GLINT_WRAP_SCALE + 1; - } - - public static float EdgeGlintWrapFromRaw(float edgeGlintWrapRaw) - { - return Mathf.Pow((EDGE_GLINT_WRAP_SCALE - edgeGlintWrapRaw + 1) / EDGE_GLINT_WRAP_SCALE, - 1f / EDGE_GLINT_WRAP_POWER); - } - - public static float GetEdgeGlintWrap(Material material) - { - return EdgeGlintSharpnessFromRaw(material.GetFloat(ShaderID.EDGE_GLINT_WRAP_RAW)); - } - - public static void SetEdgeGlintWrap(Material material, float edgeGlintWrap) - { - material.SetFloat(ShaderID.EDGE_GLINT_WRAP_RAW, EdgeGlintSharpnessToRaw(edgeGlintWrap)); - } - - public static float EdgeGlintSharpnessToRaw(float edgeGlintSharpness) - { - return 2 / Mathf.Pow(1 - edgeGlintSharpness, 4); - } - - public static float EdgeGlintSharpnessFromRaw(float edgeGlintSharpnessRaw) - { - return 1 - Mathf.Pow(2 / edgeGlintSharpnessRaw, 1f / 4f); - } - - public static float GetEdgeGlintSharpness(Material material) - { - return EdgeGlintSharpnessFromRaw(material.GetFloat(ShaderID.EDGE_GLINT_SHARPNESS_RAW)); - } - - public static void SetEdgeGlintSharpness(Material material, float edgeGlintSharpness) - { - material.SetFloat(ShaderID.EDGE_GLINT_SHARPNESS_RAW, EdgeGlintSharpnessToRaw(edgeGlintSharpness)); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/ParaformMaterial.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/ParaformMaterial.cs.meta deleted file mode 100644 index a6618cf01..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/ParaformMaterial.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 75d4dcd6d5674cd2b1b57cfb76944ee7 -timeCreated: 1752476266 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/ParaformScaffold/Runtime/ParaformMaterial.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.Paraform.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.Paraform.cs deleted file mode 100644 index bbdcf5bcf..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.Paraform.cs +++ /dev/null @@ -1,171 +0,0 @@ -// Copyright (c) Le Loc Tai . All rights reserved. Do not redistribute. - -using System.Diagnostics; -using LeTai.Common; -using LeTai.Paraform; -using LeTai.Paraform.Scaffold; -using UnityEngine; - -namespace LeTai.Asset.TranslucentImage -{ -public partial class TranslucentImage -{ - public ParaformConfig paraformConfig = ParaformConfig.DEFAULT; - - float etaCache = 1 / 1.5f; - float previousScale = 0; - - private static float GetMaxRefractionOffset(float minDistance, float eta) - { - float k = 1.0f - eta * eta; - float offset = Mathf.Sqrt(k) * minDistance / eta; - return offset; - } - - [Conditional("LETAI_PARAFORM")] - private void PadRectForRefraction(ref Rect rect) - { - var offset = GetMaxRefractionOffset(paraformConfig.Elevation, etaCache); - float padX; - float padY; - - var minExtent = Mathf.Min(rect.width, rect.height) / 2f; - var ringThickness = Mathf.Max(0, Mathf.Min(paraformConfig.RingThickness, minExtent)); - if (ringThickness == 0 || ringThickness > minExtent) - { - padX = Mathf.Max(0, offset - rect.width); - padY = Mathf.Max(0, offset - rect.height); - } - else - { - padX = Mathf.Max(0, offset - ringThickness); - padY = Mathf.Max(0, offset - ringThickness); - } - - rect.x -= padX / 2; - rect.y -= padY / 2; - rect.width += padX; - rect.height += padY; - } - - [Conditional("LETAI_PARAFORM")] - private void CacheEta() - { - var etas = material.GetVector(ShaderID.REFRACTIVE_INDEX_RATIOS); - etaCache = Mathf.Min(etas.x, Mathf.Min(etas.y, etas.z)); - } - - [Conditional("LETAI_PARAFORM")] - void SetParaformShaderGlobal() - { - if (!canvas) // trigger on undo - return; - - Shader.SetGlobalFloat(ShaderID.G_CANVAS_SCALE_FACTOR, canvas.scaleFactor); - } - - [Conditional("LETAI_PARAFORM")] - void LateUpdate() - { - var localScale = rectTransform.localScale; - // var scale = (localScale.x + localScale.y) / 2f; - var scale = Mathf.Max(localScale.x, localScale.y); - if (Mathf.Abs(scale - previousScale) > 1e-5f) - { - SetVerticesDirty(); - previousScale = scale; - } - } - - [Conditional("LETAI_PARAFORM")] - public static void CopyParaformMaterialPropertiesTo(Material src, Material dst) - { - MaterialUtils.CopyKeyword(src, dst, ShaderID.REFRACTION_MODE_OFF); - MaterialUtils.CopyKeyword(src, dst, ShaderID.REFRACTION_MODE_ON); - MaterialUtils.CopyKeyword(src, dst, ShaderID.REFRACTION_MODE_CHROMATIC); - MaterialUtils.CopyKeyword(src, dst, ShaderID.USE_EDGE_GLINT); - - MaterialUtils.CopyFloat(src, dst, ShaderID.REFRACTIVE_INDEX_DUMMY); - MaterialUtils.CopyFloat(src, dst, ShaderID.CHROMATIC_DISPERSION_DUMMY); - MaterialUtils.CopyVector(src, dst, ShaderID.REFRACTIVE_INDEX_RATIOS); - - MaterialUtils.CopyVector(src, dst, ShaderID.EDGE_GLINT_DIRECTIONS); - MaterialUtils.CopyFloat(src, dst, ShaderID.EDGE_GLINT1_STRENGTH); - MaterialUtils.CopyFloat(src, dst, ShaderID.EDGE_GLINT2_STRENGTH); - MaterialUtils.CopyFloat(src, dst, ShaderID.EDGE_GLINT_WRAP_RAW); - MaterialUtils.CopyFloat(src, dst, ShaderID.EDGE_GLINT_SHARPNESS_RAW); - } - -#if LETAI_PARAFORM - public override bool IsRaycastLocationValid(Vector2 screenPoint, Camera eventCamera) - { - if (!RectTransformUtilityPatch.ScreenPointToLocalPointInRectangle(rectTransform, screenPoint, eventCamera, out var local)) - return false; - - Rect rect = GetPixelAdjustedRect(); - - var padding = raycastPadding; - rect.xMin += padding.x; - rect.yMin += padding.y; - rect.xMax -= padding.z; - rect.yMax -= padding.w; - - if (!ParaformUtils.IsRaycastLocationValid(paraformConfig, rect, local)) - return false; - - return base.IsRaycastLocationValid(screenPoint, eventCamera); - } - - protected override void OnDidApplyAnimationProperties() - { - SetVerticesDirty(); - base.OnDidApplyAnimationProperties(); - } - - /// - /// Convenience wrapper for . - /// For better performance, use that instead and manage the material yourself. - /// - public void SetDispersionSlow(float dispersion) - { - ParaformMaterial.SetDispersion(materialForRendering, dispersion); - } - - /// - /// Convenience wrapper for . - /// For better performance, use that instead and manage the material yourself. - /// - public void SetRefractiveIndexSlow(float refractiveIndex) - { - ParaformMaterial.SetRefractiveIndex(materialForRendering, refractiveIndex); - } - - /// - /// Convenience wrapper for . - /// For better performance, use that instead and manage the material yourself. - /// - public void SetRefractiveIndexRatiosSlow(float refractiveIndex, float chromaticDispersion) - { - ParaformMaterial.SetRefractiveIndexRatios(materialForRendering, refractiveIndex, chromaticDispersion); - } - - /// - /// Convenience wrapper for . - /// For better performance, use that instead and manage the material yourself. - /// - public void SetEdgeGlintWrap(float edgeGlintWrapNormalized) - { - ParaformMaterial.SetEdgeGlintWrap(materialForRendering, edgeGlintWrapNormalized); - } - - /// - /// Convenience wrapper for . - /// For better performance, use that instead and manage the material yourself. - /// - public void SetEdgeGlintSharpness(float edgeGlintSharpnessNormalized) - { - ParaformMaterial.SetEdgeGlintSharpness(materialForRendering, edgeGlintSharpnessNormalized); - } -#endif -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.Paraform.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.Paraform.cs.meta deleted file mode 100644 index 030a9ee86..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.Paraform.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: a3f6c5b69ce547e193b21d1ef62b0a7c -timeCreated: 1752477664 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.Paraform.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.TrueShadow.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.TrueShadow.cs deleted file mode 100644 index e2526ece2..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.TrueShadow.cs +++ /dev/null @@ -1,32 +0,0 @@ -#if LETAI_TRUESHADOW - -using System; -using LeTai.TrueShadow.PluginInterfaces; - -namespace LeTai.Asset.TranslucentImage -{ -public partial class TranslucentImage : ITrueShadowCustomHashProviderV2 -{ - public event Action trueShadowCustomHashChanged; - - partial void UpdateTrueShadowHash() - { - trueShadowCustomHashChanged?.Invoke( - HashUtils.CombineHashCodes( - paraformConfig.CornerRadii.GetHashCode(), - (int)(paraformConfig.CornerCurvature * 100), - (int)(paraformConfig.RingThickness * 100) - ) - ); - } -} -} -#endif - -namespace LeTai.Asset.TranslucentImage -{ -public partial class TranslucentImage -{ - partial void UpdateTrueShadowHash(); -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.TrueShadow.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.TrueShadow.cs.meta deleted file mode 100644 index 087a4b24b..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.TrueShadow.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 11c1c8c5084246f884409330a477c153 -timeCreated: 1688045792 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.TrueShadow.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.cs deleted file mode 100644 index a6358d421..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.cs +++ /dev/null @@ -1,419 +0,0 @@ -using System; -using System.Diagnostics.CodeAnalysis; -using LeTai.Common; -using UnityEngine; -using UnityEngine.Pool; -using UnityEngine.Rendering; -using UnityEngine.Serialization; -using UnityEngine.UI; - -namespace LeTai.Asset.TranslucentImage -{ -/// -/// Dynamic blur-behind UI element -/// -[HelpURL("https://leloctai.com/asset/translucentimage/docs/articles/customize.html#translucent-image")] -[SuppressMessage("ReSharper", "InconsistentNaming")] -public partial class TranslucentImage : Image, IActiveRegionProvider, IMeshModifier -{ - /// - /// Source of the blurred background for this image - /// - public TranslucentImageSource source - { - get => _source; - set - { - _source = value; - - // We need a separated variable, as the backing field is set before the setter is called from EditorProperty - if (_source == _sourcePrev) - return; - - DisconnectSource(_sourcePrev); - ConnectSource(_source); - _sourcePrev = source; - } - } - - [Obsolete("Use foregroundOpacity instead")] - public float spriteBlending - { - get => foregroundOpacity; - set => foregroundOpacity = value; - } - - /// - /// How much Sprite and Color contribute to the Image. Use this instead of Color.alpha - /// - public float foregroundOpacity - { - get => _foregroundOpacity; - set - { - _foregroundOpacity = value; - SetVerticesDirty(); - } - } - - /// - /// (De)Saturate the image, 1 is normal, 0 is grey scale, below zero make the image negative - /// - public float vibrancy - { - get => _vibrancy; - set - { - _vibrancy = value; - SetVerticesDirty(); - } - } - - /// - /// In Normal Background Mode: Brighten/darken the background. In Colorful Background Mode: Set the background overall brightness. - /// - public float brightness - { - get => _brightness; - set - { - _brightness = value; - SetVerticesDirty(); - } - } - - /// - /// Flatten the color behind to maintain color contrast on varying backgrounds - /// - public float flatten - { - get => _flatten; - set - { - _flatten = value; - SetVerticesDirty(); - } - } - - public override Material material - { - get => base.material; - set - { - base.material = value; - OnDirtyMaterial(); - } - } - - public override Material defaultMaterial - { - get - { -#if LETAI_PARAFORM - return DefaultResources.Instance.paraformMaterial; -#else - return DefaultResources.Instance.material; -#endif - } - } - - [FormerlySerializedAs("source")] - [Tooltip("Source of the blurred background for this image")] - [SerializeField] TranslucentImageSource _source; - - [FormerlySerializedAs("spriteBlending")] - [FormerlySerializedAs("m_spriteBlending")] - [Tooltip("How much Sprite and Color contribute to the Image. Use this instead of Color.alpha")] - [SerializeField] [Range(0, 1)] float _foregroundOpacity = .5f; - [FormerlySerializedAs("vibrancy")] - [Tooltip("(De)Saturate the image, 1 is normal, 0 is grey scale, below zero make the image negative")] - [SerializeField] [Range(-1, 2)] float _vibrancy = 1; - [FormerlySerializedAs("brightness")] - [Tooltip("In Normal Background Mode: Brighten/darken the background. In Colorful Background Mode: Set the background overall brightness.")] - [SerializeField] [Range(-1, 1)] float _brightness = 0; - [FormerlySerializedAs("flatten")] - [Tooltip("Flatten the color behind to maintain color contrast on varying backgrounds")] - [SerializeField] [Range(0, 1)] float _flatten = 0; - - bool shouldRun; - bool isBirp; - TranslucentImageSource _sourcePrev; - - protected override void Start() - { - isBirp = !GraphicsSettings.currentRenderPipeline; - - AutoAcquireSource(); - - if (material && source) - { - material.SetTexture(ShaderID.BLUR_TEX, source.BlurredScreen); - } - - m_OnDirtyMaterialCallback += OnDirtyMaterial; - if (canvas) - canvas.additionalShaderChannels |= AdditionalCanvasShaderChannels.TexCoord1 - | AdditionalCanvasShaderChannels.TexCoord2 - | AdditionalCanvasShaderChannels.TexCoord3; - } - - protected override void OnEnable() - { - base.OnEnable(); - SetVerticesDirty(); - - ConnectSource(source); - _sourcePrev = source; - - paraformConfig.changed += ParaformConfigChanged; - Canvas.willRenderCanvases += OnWillRenderCanvases; - -#if UNITY_EDITOR - if (!UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode) - { - Start(); - } - - UnityEditor.Undo.undoRedoPerformed += OnUndoRedoPerformed; -#endif - } - - void ParaformConfigChanged() - { - SetVerticesDirty(); - UpdateTrueShadowHash(); - } - - protected override void OnDisable() - { - SetVerticesDirty(); - base.OnDisable(); - - paraformConfig.changed -= ParaformConfigChanged; - Canvas.willRenderCanvases -= OnWillRenderCanvases; - - DisconnectSource(source); -#if UNITY_EDITOR - UnityEditor.Undo.undoRedoPerformed -= OnUndoRedoPerformed; -#endif - } - - void OnWillRenderCanvases() - { - SetParaformShaderGlobal(); - } - -// void Update() -// { -// #if DEBUG -// if (Application.isPlaying && !IsInPrefabMode()) -// { -// if (!source) -// Debug.LogWarning("TranslucentImageSource is missing. " + -// "Please add the TranslucentImageSource component to your main camera, " + -// "then assign it to the Source field of the Translucent Image(s)"); -// } -// #endif -// } - - public bool HaveActiveRegion() - { - return (bool)this && IsActive() && canvas && canvas.enabled; - } - - public void GetActiveRegion(VPMatrixCache vpMatrixCache, out ActiveRegion activeRegion) - { - VPMatrixCache.Index vpMatrixIndex; - if (canvas.renderMode == RenderMode.ScreenSpaceOverlay) - { - vpMatrixIndex = VPMatrixCache.Index.INVALID; - } - else - { - var refCamera = canvas.worldCamera; - if (!refCamera) - { - if (Application.isPlaying) - { - Debug.LogError("Translucent Image need an Event Camera for World Space Canvas"); - } - vpMatrixIndex = VPMatrixCache.Index.INVALID; - } - else - { - vpMatrixIndex = vpMatrixCache.IndexOf(refCamera); - if (!vpMatrixIndex.IsValid()) - vpMatrixIndex = vpMatrixCache.Add(refCamera); - } - } - - var rect = rectTransform.rect; - PadRectForRefraction(ref rect); - - activeRegion = new ActiveRegion(rect, - rectTransform.localToWorldMatrix, - vpMatrixIndex); - } - - /// - /// Copy material keywords state and properties, except stencil properties - /// - public static void CopyMaterialPropertiesTo(Material src, Material dst) - { - MaterialUtils.CopyKeyword(src, dst, ShaderID.KW_BACKGROUND_MODE_COLORFUL); - MaterialUtils.CopyKeyword(src, dst, ShaderID.KW_BACKGROUND_MODE_NORMAL); - MaterialUtils.CopyKeyword(src, dst, ShaderID.KW_BACKGROUND_MODE_OPAQUE); - - CopyParaformMaterialPropertiesTo(src, dst); - } - - void ConnectSource(TranslucentImageSource source) - { - if (!source) return; - - source.RegisterActiveRegionProvider(this); - source.blurredScreenChanged += SetBlurTex; - source.blurRegionChanged += SetBlurRegion; - SetBlurTex(); - SetBlurRegion(); - } - - void DisconnectSource(TranslucentImageSource source) - { - if (!source) return; - - source.UnRegisterActiveRegionProvider(this); - source.blurredScreenChanged -= SetBlurTex; - source.blurRegionChanged -= SetBlurRegion; - } - - void SetBlurTex() - { - if (!source) - return; - - materialForRendering.SetTexture(ShaderID.BLUR_TEX, source.BlurredScreen); - } - - void SetBlurRegion() - { - if ( - !source - || !canvas - || !canvas.enabled - ) - return; - - if (isBirp || canvas.renderMode == RenderMode.ScreenSpaceOverlay) - { - var minMaxVector = RectUtils.ToMinMaxVector(source.BlurRegionNormalizedScreenSpace); - materialForRendering.SetVector(ShaderID.CROP_REGION, minMaxVector); - } - else - { - materialForRendering.SetVector(ShaderID.CROP_REGION, RectUtils.ToMinMaxVector(source.BlurRegion)); - } - } - - void OnDirtyMaterial() - { - SetBlurTex(); - SetBlurRegion(); - - CacheEta(); - } - - bool IsInPrefabMode() - { -#if !UNITY_EDITOR - return false; -#else - var stage = UnityEditor.SceneManagement.PrefabStageUtility.GetCurrentPrefabStage(); - return stage != null; -#endif - } - - bool sourceAcquiredOnStart = false; - - void AutoAcquireSource() - { - if (IsInPrefabMode()) return; - if (sourceAcquiredOnStart) return; - - source = source ? source : Shims.FindObjectOfType(); - sourceAcquiredOnStart = true; - } - - void OnUndoRedoPerformed() - { - source = _source; - OnDirtyMaterial(); - UpdateTrueShadowHash(); - } - - void WriteVertexData(ref SpanWriter writer) - { - writer.Write(Packing.FloatPacker.Uniform(8) - .Enqueue(foregroundOpacity, 1) - .Enqueue(flatten, 1) - ); - writer.Write(Packing.FloatPacker.Uniform(10) - .Enqueue(vibrancy, -1, 2) - .Enqueue(brightness, -1, 1) - ); - } - - public virtual void ModifyMesh(VertexHelper vh) - { - ListPool.Get(out var vertices); - vh.GetUIVertexStream(vertices); - - Span data = stackalloc float[4]; - var writer = SpanUtils.WriterFor(data); - -#if LETAI_PARAFORM - Span dataParaform = stackalloc float[4 * 2]; - var writerParaformCommon = SpanUtils.WriterFor(dataParaform[..^2]); - var writerParaformVertex = SpanUtils.WriterFor(dataParaform[^2..]); - var paraformEncoder = new Paraform.ParaformVertexDataEncoder(rectTransform, paraformConfig); -#endif - - WriteVertexData(ref writer); - // writer.FillRest(); - var uv1 = SpanUtils.ToVector4(data); - -#if LETAI_PARAFORM - paraformEncoder.WriteCommon(ref writerParaformCommon); - var uv2 = SpanUtils.ToVector4(dataParaform[..4]); -#endif - - for (var i = 0; i < vertices.Count; i++) - { - UIVertex vert = vertices[i]; - - vert.uv1 = uv1; - -#if LETAI_PARAFORM - vert.uv2 = uv2; - paraformEncoder.WritePerVertex(ref writerParaformVertex, vert.position); - vert.uv3 = SpanUtils.ToVector4(dataParaform[4..8]); - writerParaformVertex.Reset(); -#endif - - vertices[i] = vert; - } - - vh.Clear(); - vh.AddUIVertexTriangleStream(vertices); - // ParaformVertexDataEncoder.ModifyMesh(this, paraformConfig, vh); - } - - public virtual void ModifyMesh(Mesh mesh) - { - using var vh = new VertexHelper(mesh); - - ModifyMesh(vh); - vh.FillMesh(mesh); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.cs.meta deleted file mode 100644 index e538e719a..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.cs.meta +++ /dev/null @@ -1,18 +0,0 @@ -fileFormatVersion: 2 -guid: 196bb08d6c2d3c9499c04e1281fd4ad3 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: 0764cd30e065b7340891d9f7f680a12f, type: 3} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/TranslucentImage.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImageEditorEnhancement.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImageEditorEnhancement.cs deleted file mode 100644 index 5e687b6a0..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImageEditorEnhancement.cs +++ /dev/null @@ -1,26 +0,0 @@ -#if UNITY_EDITOR -using UnityEditor; -using UnityEngine; - -namespace LeTai.Asset.TranslucentImage -{ -[ExecuteAlways] -[AddComponentMenu("UI/Translucent Image", 2)] -public partial class TranslucentImage -{ - protected override void Reset() - { - base.Reset(); - color = Color.white; - source = source ? source : Shims.FindObjectOfType(); - } - - protected override void OnValidate() - { - base.OnValidate(); - - SetVerticesDirty(); - } -} -} -#endif diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImageEditorEnhancement.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImageEditorEnhancement.cs.meta deleted file mode 100644 index 5232fa0ed..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImageEditorEnhancement.cs.meta +++ /dev/null @@ -1,18 +0,0 @@ -fileFormatVersion: 2 -guid: 828a3ac0ed3540dbb2883fb9b58158a4 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/TranslucentImageEditorEnhancement.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImageSource.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImageSource.cs deleted file mode 100644 index 4ae6f2756..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImageSource.cs +++ /dev/null @@ -1,633 +0,0 @@ -using System; -using System.Collections.Generic; -using Unity.Collections; -using Unity.Jobs; -using Unity.Profiling; -using UnityEngine; -using UnityEngine.Rendering; -#if ENABLE_VR -using UnityEngine.XR; -#endif - -namespace LeTai.Asset.TranslucentImage -{ -/// -/// Common source of blur for Translucent Images. -/// -[ExecuteAlways] -[RequireComponent(typeof(Camera))] -[AddComponentMenu("Image Effects/Tai Le Assets/Translucent Image Source")] -[HelpURL("https://leloctai.com/asset/translucentimage/docs/articles/customize.html#translucent-image-source")] -public partial class TranslucentImageSource : MonoBehaviour -{ -#region Private Field - [SerializeField] - BlurConfig blurConfig; - - [SerializeField] [Range(0, 3)] - [Tooltip("Reduce the size of the screen before processing. Increase will improve performance but create more artifact")] - int downsample; - - [SerializeField] - [Tooltip("Choose which part of the screen to blur. Smaller region is faster")] - Rect blurRegion = new Rect(0, 0, 1, 1); - - [SerializeField] - [Tooltip("How many time to blur per second. Reduce to increase performance and save battery for slow moving background")] - float maxUpdateRate = float.PositiveInfinity; - - [SerializeField] - [Tooltip("Expand the blurred area to avoid gap around moving UIs when using a low Max Update Rate." + - "\nUse higher value for lower Max Update Rate or faster UI movement. Use 0 for infinite Update Rate or static UIs." + - "\nFor the best culling effectiveness, set this at runtime while UIs are moving, and reset to 0 while they're static." + - "\nUnit: fraction of the screen's shorter side")] - [Range(0, 1)] - float cullPadding = 0; - - [SerializeField] - [Tooltip("Preview the effect fullscreen. Not recommended for runtime use")] - bool preview; - - [SerializeField] - [Tooltip("Fill the background where the frame buffer alpha is 0. Useful for VR Underlay and Passthrough, where these areas would otherwise be black")] - BackgroundFill backgroundFill = new BackgroundFill(); - - [SerializeField] - [Tooltip("Always blur the entire blur region to reduce cpu usage")] - bool skipCulling; - - int lastDownsample; - Rect lastBlurRegion = new Rect(0, 0, 1, 1); - Rect lastCamPixelRect = new Rect(0, 0, 1, 1); - Vector2Int lastCamPixelSize = Vector2Int.zero; - float lastUpdate; - - IBlurAlgorithm blurAlgorithm; - -#pragma warning disable 0108 - Camera camera; -#pragma warning restore 0108 - Material previewMaterial; - RenderTexture blurredScreen; - CommandBuffer cmd; -#pragma warning disable CS0169 - bool isForOverlayCanvas; -#pragma warning restore CS0169 - - bool needRegisterCanvasPreRenderCallback; - - readonly List activeRegionProviders = new List(); - VPMatrixCache vpMatrixCache; - NativeList activeRegions; - NativeArray activeRegionJobResult; - JobHandle findBoundsJobHandle; - - static readonly Rect FULLSCREEN_REGION = new Rect(0, 0, 1, 1); - - static ProfilerMarker profilerMarkerCull = new ProfilerMarker(nameof(TranslucentImageSource) + ".Culling"); -#endregion - - -#region Properties - public BlurConfig BlurConfig - { - get { return blurConfig; } - set - { - blurConfig = value; - InitializeBlurAlgorithm(); - } - } - - /// - /// The rendered image will be shrinked by a factor of 2^{{Downsample}} before bluring to reduce processing time - /// - /// - /// Must be non-negative. Default to 0 - /// - public int Downsample - { - get { return downsample; } - set { downsample = Mathf.Max(0, value); } - } - - /// - /// Define the rectangular area on screen that will be blurred. - /// - /// - /// Between 0 and 1 - /// - public Rect BlurRegion - { - get { return blurRegion; } - set - { - Vector2 min = new Vector2(1 / (float)Cam.pixelWidth, 1 / (float)Cam.pixelHeight); - blurRegion = value; - blurRegion.xMin = Mathf.Clamp(blurRegion.x, 0, 1 - min.x); - blurRegion.yMin = Mathf.Clamp(blurRegion.y, 0, 1 - min.y); - blurRegion.width = Mathf.Clamp(blurRegion.width, min.x, 1 - blurRegion.x); - blurRegion.height = Mathf.Clamp(blurRegion.height, min.y, 1 - blurRegion.y); - - OnBlurRegionChanged(); - } - } - - public Rect ActiveRegion { get; private set; } - - /// - /// Maximum number of times to update the blurred image each second - /// - public float MaxUpdateRate - { - get => maxUpdateRate; - set => maxUpdateRate = Mathf.Max(0, value); - } - - /// - /// Expand the blurred area to avoid gap around moving UIs when using a low Max Update Rate. - /// Use higher value for lower Max Update Rate or faster UI movement. Use 0 for infinite Update Rate or static UIs. - /// For the best culling effectiveness, set this at runtime while UIs are moving, and reset to 0 while they're static. - /// Unit: fraction of the screen's shorter side. - /// - public float CullPadding - { - get => cullPadding; - set => cullPadding = Mathf.Max(0, value); - } - - /// - /// Fill the background where the frame buffer alpha is 0. Useful for VR Underlay and Passthrough, where these areas would otherwise be black - /// - public BackgroundFill BackgroundFill - { - get => backgroundFill; - set => backgroundFill = value; - } - - /// - /// Render the blurred result to the render target - /// - public bool Preview - { - get => preview; - set => preview = value; - } - - /// - /// Always blur the entire blur region to reduce cpu usage - /// - public bool SkipCulling - { - get => skipCulling; - set => skipCulling = value; - } - - /// - /// Result of the image effect. Translucent Image use this as their content (read-only) - /// - public RenderTexture BlurredScreen - { - get { return blurredScreen; } - set { blurredScreen = value; } - } - - /// - /// Set in SRP to provide Cam.rect for overlay cameras - /// - public Rect CamRectOverride { get; set; } = Rect.zero; - - /// - /// Blur Region rect is relative to Cam.rect . This is relative to the full screen - /// - public Rect BlurRegionNormalizedScreenSpace - { - get => ViewportToScreen01Space(BlurRegion); - set => BlurRegion = Screen01ToViewportSpace(value); - } - - /// - /// The Camera attached to the same GameObject. Cached in field 'camera' - /// - internal Camera Cam - { - get { return camera ? camera : camera = GetComponent(); } - } - - /// - /// Minimum time in second to wait before refresh the blurred image. - /// If maxUpdateRate non-positive then just stop updating - /// - float MinUpdateCycle - { - get { return (MaxUpdateRate > 0) ? (1f / MaxUpdateRate) : float.PositiveInfinity; } - } - - bool ShouldCull - { - get - { - return !SkipCulling -#if ENABLE_VR - && !XRSettings.enabled -#endif - ; - } - } -#endregion - - public event Action blurredScreenChanged; - public event Action blurRegionChanged; - - public void OnBlurRegionChanged() - { - blurRegionChanged?.Invoke(); - } - - public void RegisterActiveRegionProvider(IActiveRegionProvider provider) - { - activeRegionProviders.Add(provider); - } - - public void UnRegisterActiveRegionProvider(IActiveRegionProvider provider) - { - activeRegionProviders.Remove(provider); - } - - void OnEnable() - { -#if UNITY_EDITOR - if (!UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode) - { - Init(); - } -#endif - - vpMatrixCache = new VPMatrixCache(); - activeRegions = new NativeList(4, Allocator.Persistent); - activeRegionJobResult = new NativeArray(1, Allocator.Persistent); - - needRegisterCanvasPreRenderCallback = true; - } - - void OnDisable() - { - needRegisterCanvasPreRenderCallback = false; - // Must unregister callback before collections disposal! - Canvas.willRenderCanvases -= OnWillRenderCanvases; - - CompleteCull(); - - vpMatrixCache.Dispose(); - activeRegions.Dispose(); - activeRegionJobResult.Dispose(); - } - - protected virtual void Start() - { - Init(); - } - -#if UNITY_EDITOR - /// - /// Attempt to filter out scene view calls. Not sure if this is robust enough - /// - bool isFirstOnWillRenderCanvas = false; -#endif - - void Update() - { - // Register this earlier would cause it to be called before the builtin Layout Groups - if (needRegisterCanvasPreRenderCallback) - { - Canvas.willRenderCanvases += OnWillRenderCanvases; - - needRegisterCanvasPreRenderCallback = false; - } -#if UNITY_EDITOR - isFirstOnWillRenderCanvas = true; -#endif - } - - void OnDestroy() - { - if (BlurredScreen) - BlurredScreen.Release(); - } - - private void OnRenderImage(RenderTexture source, RenderTexture destination) - { - if (cmd == null) - { - cmd = new CommandBuffer(); - cmd.name = "Translucent Image Source"; - } - - if (blurAlgorithm != null && BlurConfig != null) - { - if (ShouldUpdateBlur()) - { - cmd.Clear(); - - if (CompleteCull()) - { - ReallocateBlurTexIfNeeded(Cam.pixelRect); - blurAlgorithm.Init(BlurConfig, true); - var blurExecData = new BlurExecutor.BlurExecutionData(source, - this, - blurAlgorithm); - BlurExecutor.ExecuteBlurWithTempTextures(cmd, ref blurExecData); - - Graphics.ExecuteCommandBuffer(cmd); - } - } - - // Using custom Blit for this lead to warning: OnRenderImage() possibly didn't write anything to the destination texture - if (Preview) - { - previewMaterial.SetVector(ShaderID.CROP_REGION, RectUtils.ToMinMaxVector(BlurRegion)); - Graphics.Blit(BlurredScreen, destination, previewMaterial); - } - else - { - Graphics.Blit(source, destination); - } - } - else - { - Graphics.Blit(source, destination); - } - } - - - void Init() - { - previewMaterial = new Material(Shader.Find("Hidden/FillCrop")); - - InitializeBlurAlgorithm(); - ReallocateBlurTexIfNeeded(Cam.pixelRect); - - lastDownsample = Downsample; - } - - void InitializeBlurAlgorithm() - { - switch (blurConfig) - { - case ScalableBlurConfig _: - blurAlgorithm = new ScalableBlur(); - break; - default: - blurAlgorithm = new ScalableBlur(); - break; - } - } - - void OnWillRenderCanvases() - { -#if UNITY_EDITOR - if (!isFirstOnWillRenderCanvas) - return; - isFirstOnWillRenderCanvas = false; -#endif - StartCull(); - } - - void StartCull() - { - profilerMarkerCull.Begin(); - - findBoundsJobHandle.Complete(); // No way to cancel job - vpMatrixCache.Clear(); - activeRegions.Clear(); - - bool haveAnyActiveRegion = false; - - for (var i = 0; i < activeRegionProviders.Count; i++) - { - var provider = activeRegionProviders[i]; - if (!provider.HaveActiveRegion()) - continue; - - haveAnyActiveRegion = true; - if (!ShouldCull) - break; - - provider.GetActiveRegion(vpMatrixCache, out var activeRegion); - activeRegions.Add(activeRegion); - } - - if (haveAnyActiveRegion) - { - if (ShouldCull) - { - findBoundsJobHandle = new ActiveRegionMergeJob { - vpMatrices = vpMatrixCache.VpMatrices, - activeRegions = activeRegions, - screenSize = new Vector2(Screen.width, Screen.height), - viewport = GetActiveCameraRect(), - merged = activeRegionJobResult - }.Schedule(); - } - else - { - activeRegionJobResult[0] = ActiveRegion = FULLSCREEN_REGION; - } - } - else - { - // If not haveAnyActiveRegion, should skip blurring in XR, so use SkipCulling instead of ShouldCull - activeRegionJobResult[0] = ActiveRegion = SkipCulling ? FULLSCREEN_REGION : Rect.zero; - } - - profilerMarkerCull.End(); - } - - /// - /// Merge active regions into one - /// - /// False if the merged region is empty - public bool CompleteCull() - { - if (!ShouldCull) - return true; - - profilerMarkerCull.Begin(); - - findBoundsJobHandle.Complete(); - ActiveRegion = activeRegionJobResult[0]; - - const float minSize = 1e-5f; - if (MaxUpdateRate < float.PositiveInfinity - && ActiveRegion.width > minSize - && ActiveRegion.height > minSize) - { - var padding = new Vector2(CullPadding, CullPadding); - var aspect = Screen.width / (float)Screen.height; - if (aspect > 1) - { - padding.x /= aspect; - } - else - { - padding.y *= aspect; - } - ActiveRegion = RectUtils.Expand(ActiveRegion, padding); - } - - profilerMarkerCull.End(); - - return ActiveRegion.width > minSize && ActiveRegion.height > minSize; - } - - void CreateNewBlurredScreen(Vector2Int camPixelSize) - { - if (BlurredScreen) - BlurredScreen.Release(); - -#if ENABLE_VR - if (XRSettings.enabled) - { - BlurredScreen = new RenderTexture(XRSettings.eyeTextureDesc); - BlurredScreen.width = Mathf.RoundToInt(BlurredScreen.width * BlurRegion.width) >> Downsample; - BlurredScreen.height = Mathf.RoundToInt(BlurredScreen.height * BlurRegion.height) >> Downsample; - BlurredScreen.depth = 0; - } - else -#endif - { - BlurredScreen = new RenderTexture(Mathf.RoundToInt(camPixelSize.x * BlurRegion.width) >> Downsample, - Mathf.RoundToInt(camPixelSize.y * BlurRegion.height) >> Downsample, 0); - } - - BlurredScreen.antiAliasing = 1; - BlurredScreen.name = $"{gameObject.name} Translucent Image Source"; - BlurredScreen.filterMode = FilterMode.Bilinear; - BlurredScreen.useMipMap = false; - BlurredScreen.autoGenerateMips = false; - -#if LETAI_PARAFORM - // TODO: Make this configurable - // Why do mipmaps cause edge artifact? May need to re-enable edge dimming if use mips - // Can this be optimized? - // BlurredScreen.useMipMap = true; - // BlurredScreen.autoGenerateMips = true; - // BlurredScreen.filterMode = FilterMode.Trilinear; -#endif - - -#if UNITY_EDITOR - // Avoid error logging when dragging related fields in the inspector - if (BlurredScreen.width > 0 && BlurredScreen.height > 0) -#endif - BlurredScreen.Create(); - - blurredScreenChanged?.Invoke(); - } - - TextureDimension lastEyeTexDim; - - public void ReallocateBlurTexIfNeeded(Rect camPixelRect) - { - if (camPixelRect != lastCamPixelRect) - { - blurRegionChanged?.Invoke(); - lastCamPixelRect = camPixelRect; - } - - var camPixelSize = Vector2Int.RoundToInt(camPixelRect.size); - if ( - BlurredScreen == null - || !BlurredScreen.IsCreated() - || Downsample != lastDownsample - || !RectUtils.ApproximateEqual01(BlurRegion, lastBlurRegion) - || camPixelSize != lastCamPixelSize -#if ENABLE_VR - || XRSettings.deviceEyeTextureDimension != lastEyeTexDim -#endif - ) - { - CreateNewBlurredScreen(camPixelSize); - lastDownsample = Downsample; - lastBlurRegion = BlurRegion; - lastCamPixelSize = camPixelSize; -#if ENABLE_VR - lastEyeTexDim = XRSettings.deviceEyeTextureDimension; -#endif - } - - - lastUpdate = GetTrueCurrentTime(); - } - - public bool ShouldUpdateBlur() - { - if (!enabled) - return false; - - if (Preview) - return true; - - float now = GetTrueCurrentTime(); - bool should = now - lastUpdate >= MinUpdateCycle; - - return should; - } - - private static float GetTrueCurrentTime() - { -#if UNITY_EDITOR - return (float)UnityEditor.EditorApplication.timeSinceStartup; -#else - return Time.unscaledTime; -#endif - } - - Rect GetActiveCameraRect() - { - var camRect = CamRectOverride.width == 0 ? Cam.rect : CamRectOverride; - camRect.min = Vector2.Max(Vector2.zero, camRect.min); - camRect.max = Vector2.Min(Vector2.one, camRect.max); - return camRect; - } - - Rect ViewportToScreen01Space(Rect rect) - { - var camRect = GetActiveCameraRect(); - - return new Rect(camRect.position + rect.position * camRect.size, - rect.size * camRect.size); - } - - Rect Screen01ToViewportSpace(Rect rect) - { - var camRect = GetActiveCameraRect(); - - return new Rect((rect.position - camRect.position) / camRect.size, - rect.size / camRect.size); - } - -#if UNITY_EDITOR - - protected virtual void OnGUI() - { - if (!Preview) return; - - var curBlurRegionNSS = BlurRegionNormalizedScreenSpace; - var newBlurRegionNSS = ResizableScreenRect.Draw(curBlurRegionNSS, true); - - GUI.color = Color.green; - ResizableScreenRect.Draw(RectUtils.Intersect(curBlurRegionNSS, ViewportToScreen01Space(ActiveRegion))); - - if (newBlurRegionNSS != curBlurRegionNSS) - { - UnityEditor.Undo.RecordObject(this, "Change Blur Region"); - BlurRegionNormalizedScreenSpace = newBlurRegionNSS; - } - - if (!UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode) - UnityEditor.EditorApplication.QueuePlayerLoopUpdate(); - } -#endif -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImageSource.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImageSource.cs.meta deleted file mode 100644 index dab31f090..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/TranslucentImageSource.cs.meta +++ /dev/null @@ -1,18 +0,0 @@ -fileFormatVersion: 2 -guid: 4ee01e66702087b4798e633ca34c7956 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: 4bc9a290ca74e434499699e3db41c3f9, type: 3} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/TranslucentImageSource.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP.meta deleted file mode 100644 index e27bbb38b..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 5fa3650b00009764888b5f90e8ec5241 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor.meta deleted file mode 100644 index d22be6b2d..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: bba7ceb326d957d49bbc675bdf0856c0 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/LeTai.TranslucentImage.UniversalRP.Editor.asmdef b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/LeTai.TranslucentImage.UniversalRP.Editor.asmdef deleted file mode 100644 index 0882e4502..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/LeTai.TranslucentImage.UniversalRP.Editor.asmdef +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "LeTai.TranslucentImage.UniversalRP.Editor", - "references": [ - "GUID:e646286fd75dc0f44bb2f84ffb34408d", - "GUID:15fc0a57446b3144c949da3e2b9737a9" - ], - "includePlatforms": [ - "Editor" - ], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [], - "versionDefines": [], - "noEngineReferences": false -} \ No newline at end of file diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/RendererFeatureChecker.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/RendererFeatureChecker.cs deleted file mode 100644 index 3fbeea7b0..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/RendererFeatureChecker.cs +++ /dev/null @@ -1,81 +0,0 @@ -using System.Linq; -using System.Reflection; -using UnityEditor; -using UnityEngine; -using UnityEngine.Rendering; -using UnityEngine.Rendering.Universal; - -namespace LeTai.Asset.TranslucentImage.UniversalRP.Editor -{ -[InitializeOnLoad] -public class RendererFeatureChecker : EditorWindow -{ - static RendererFeatureChecker() - { - EditorApplication.update += DoCheck; - } - - static void DoCheck() - { - EditorApplication.update -= DoCheck; - - var pipelineAsset = GraphicsSettings.currentRenderPipeline as UniversalRenderPipelineAsset; - if (pipelineAsset == null) - return; - - var rendererData = (ScriptableRendererData) - typeof(UniversalRenderPipelineAsset) - .GetProperty("scriptableRendererData", BindingFlags.Instance | BindingFlags.NonPublic) - ?.GetValue(pipelineAsset); - - if (rendererData == null) - return; - - var haveFeature = rendererData.rendererFeatures.OfType().Any(); - - if (haveFeature) - return; - - const float width = 400f; - const float height = 200f; - var window = GetWindowWithRect( - new Rect( - (Screen.width - width) / 2f, - (Screen.height - height) / 2f, - width, height - ), - true, - "Translucent Image", - true - ); - - window.rendererData = rendererData; - } - - ScriptableRendererData rendererData; - - void OnGUI() - { - GUILayout.Label("Missing Renderer Feature", EditorStyles.largeLabel); - - EditorGUILayout.Space(); - - GUILayout.Label( - "Translucent Image needs a renderer feature added to the active Renderer Asset. Do you want to add it now?", - EditorStyles.wordWrappedLabel - ); - - if (GUILayout.Button("More info", EditorStyles.linkLabel)) - Application.OpenURL("https://leloctai.com/asset/translucentimage/docs/articles/universalrp.html"); - - GUILayout.FlexibleSpace(); - - if (GUILayout.Button("Select Current Renderer Asset")) - { - EditorGUIUtility.PingObject(rendererData); - Selection.activeObject = rendererData; - Close(); - } - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/RendererFeatureChecker.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/RendererFeatureChecker.cs.meta deleted file mode 100644 index f606557a0..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/RendererFeatureChecker.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6d7c06f482aa58a4ea6d2e6f18f373b3 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/TranslucentImageBlurSourceEditor.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/TranslucentImageBlurSourceEditor.cs deleted file mode 100644 index 531566f67..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/TranslucentImageBlurSourceEditor.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using System.Text.RegularExpressions; -using UnityEditor; -using UnityEngine; - -namespace LeTai.Asset.TranslucentImage.UniversalRP.Editor -{ -[CustomEditor(typeof(TranslucentImageBlurSource))] -public class TranslucentImageBlurSourceEditor : UnityEditor.Editor -{ - public override void OnInspectorGUI() - { - base.OnInspectorGUI(); - - var feature = (TranslucentImageBlurSource)target; - if (feature.rendererType == RendererType.Renderer2D) - { - var ver = Version.Parse(Regex.Replace(Application.unityVersion, @"[^\d.]", ".")); - if ( - ver >= new Version(2023, 1, 7) || - (ver.Major == 2022 && ver >= new Version(2022, 3, 7)) - ) - EditorGUILayout.HelpBox("The 2D Renderer is sometimes buggy with custom renderer features at the moment.\n\n" + - "If you're encountering problems, check if the built-in \"Full Screen Pass Renderer Feature\" is functioning correctly in the same setup. If it does not, Translucent Image is unlikely to be able to work either.\n\n" + - "Also, make sure you're on the latest Unity patch release for your minor version", MessageType.Warning, true); - else - EditorGUILayout.HelpBox("This version of the 2D Renderer includes a bug that prevents Translucent Image from working correctly in many cases. (UUM-14400)", MessageType.Error, true); - } - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/TranslucentImageBlurSourceEditor.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/TranslucentImageBlurSourceEditor.cs.meta deleted file mode 100644 index d923a55f6..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/TranslucentImageBlurSourceEditor.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6df7a801a41d7224f9848526015f4dd5 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/LeTai.TranslucentImage.UniversalRP.asmdef b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/LeTai.TranslucentImage.UniversalRP.asmdef deleted file mode 100644 index 89946a889..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/LeTai.TranslucentImage.UniversalRP.asmdef +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "LeTai.TranslucentImage.UniversalRP", - "rootNamespace": "", - "references": [ - "GUID:df380645f10b7bc4b97d4f5eb6303d95", - "GUID:15fc0a57446b3144c949da3e2b9737a9", - "GUID:ff218ee40fe2b8648ab3234d56415557" - ], - "includePlatforms": [], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [], - "versionDefines": [ - { - "name": "Unity", - "expression": "[2021.3,2021.3.13)", - "define": "UNITY_BUGGED_HAS_PASSES_AFTER_POSTPROCESS" - } - ], - "noEngineReferences": false -} \ No newline at end of file diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass.meta deleted file mode 100644 index a567949fe..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 59db9d0cfd142494ab067fbfbb1f1b6a -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurRenderPass.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurRenderPass.cs deleted file mode 100644 index c8ddbdf04..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurRenderPass.cs +++ /dev/null @@ -1,187 +0,0 @@ -#if UNITY_2022_3_OR_NEWER -#define HAS_DOUBLEBUFFER_BOTH -#endif - -#if UNITY_2023_3_OR_NEWER -#define HAS_RENDERGRAPH -#endif - -// ReSharper disable once RedundantUsingDirective -using System; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Rendering; -using UnityEngine.Rendering.Universal; -using UnityEngine.Scripting.APIUpdating; - -namespace LeTai.Asset.TranslucentImage.UniversalRP -{ -enum RendererType -{ - Universal, - Renderer2D -} - -[MovedFrom("LeTai.Asset.TranslucentImage.LWRP")] -public partial class TranslucentImageBlurRenderPass : ScriptableRenderPass -{ - internal struct PassData - { - public IReadOnlyList blurSources; - public IBlurAlgorithm blurAlgorithm; - public Rect camPixelRect; - public uint shouldUpdateBlurMask; - public int previewIndex; - public Material previewMaterial; - } - - internal struct SRPassData - { -#if !HAS_DOUBLEBUFFER_BOTH - public RendererType rendererType; - public RenderTargetIdentifier cameraColorTarget; - public TranslucentImageBlurSource.RenderOrder renderOrder; -#endif - public bool canvasDisappearWorkaround; - } - - public readonly struct PreviewExecutionData - { - public readonly TranslucentImageSource blurSource; - public readonly RenderTargetIdentifier previewTarget; - public readonly Material previewMaterial; - - public PreviewExecutionData( - TranslucentImageSource blurSource, - RenderTargetIdentifier previewTarget, - Material previewMaterial - ) - { - this.blurSource = blurSource; - this.previewTarget = previewTarget; - this.previewMaterial = previewMaterial; - } - } - - private const string PROFILER_TAG = "Translucent Image Source"; - - readonly URPRendererInternal urpRendererInternal; - - PassData currentPassData; - SRPassData currentSRPassData; - - internal TranslucentImageBlurRenderPass(URPRendererInternal urpRendererInternal) - { - this.urpRendererInternal = urpRendererInternal; - - RenderGraphInit(); -#if UNITY_6000_0_OR_NEWER - requiresIntermediateTexture = true; -#endif - } - -#if !HAS_DOUBLEBUFFER_BOTH - RenderTargetIdentifier GetAfterPostColor() - { - return urpRendererInternal.GetAfterPostColor(); - } -#endif - - internal void SetupSRP(SRPassData srPassData) - { - currentSRPassData = srPassData; - } - - public void Dispose() - { - RenderGraphDispose(); - } - - internal void Setup(PassData passData) - { - currentPassData = passData; - -#if !UNITY_6000_0_OR_NEWER - // Doesn't seem necessary after pretty comprehensive testing. - // Leaving it out avoids significant cost. Keeping it here in case any problem arises. - // ConfigureInput(ScriptableRenderPassInput.Color); -#endif - } - -#if HAS_RENDERGRAPH - [Obsolete("This rendering path is for compatibility mode only (when Render Graph is disabled). Use Render Graph API instead.", false)] -#endif - public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) - { - var cmd = CommandBufferPool.Get(PROFILER_TAG); - RenderTargetIdentifier sourceTex; - -#if !HAS_DOUBLEBUFFER_BOTH - var isPostProcessEnabled = renderingData.cameraData.postProcessEnabled; - void SetSource2DRenderer() - { - bool useAfterPostTex = isPostProcessEnabled; - useAfterPostTex &= currentSRPassData.renderOrder == TranslucentImageBlurSource.RenderOrder.AfterPostProcessing; - sourceTex = useAfterPostTex - ? GetAfterPostColor() - : currentSRPassData.cameraColorTarget; - } -#endif - -#if HAS_DOUBLEBUFFER_BOTH - sourceTex = urpRendererInternal.GetBackBuffer(); -#else - if (currentSRPassData.rendererType == RendererType.Universal) - { - sourceTex = urpRendererInternal.GetBackBuffer(); - } - else - { - SetSource2DRenderer(); - } -#endif - - bool shouldResetTarget = currentSRPassData.canvasDisappearWorkaround && renderingData.cameraData.resolveFinalTarget; - - var blurSources = currentPassData.blurSources; - for (var i = 0; i < blurSources.Count; i++) - { - var blurSource = blurSources[i]; - - if ((currentPassData.shouldUpdateBlurMask & (1 << i)) == 0) - continue; - - blurSource.ReallocateBlurTexIfNeeded(currentPassData.camPixelRect); - currentPassData.blurAlgorithm.Init(blurSource.BlurConfig, false); - var blurExecData = new BlurExecutor.BlurExecutionData(sourceTex, - blurSource, - currentPassData.blurAlgorithm); - BlurExecutor.ExecuteBlurWithTempTextures(cmd, ref blurExecData); - - if (shouldResetTarget) - CoreUtils.SetRenderTarget(cmd, BuiltinRenderTextureType.CameraTarget); - } - - - if (currentPassData.previewIndex != -1) - { - var previewTarget = shouldResetTarget ? BuiltinRenderTextureType.CameraTarget : sourceTex; - var previewExecData = new PreviewExecutionData(blurSources[currentPassData.previewIndex], - previewTarget, - currentPassData.previewMaterial); - ExecutePreview(cmd, ref previewExecData); - } - - context.ExecuteCommandBuffer(cmd); - CommandBufferPool.Release(cmd); - } - - public static void ExecutePreview(CommandBuffer cmd, ref PreviewExecutionData data) - { - var blurSource = data.blurSource; - - data.previewMaterial.SetVector(ShaderID.CROP_REGION, RectUtils.ToMinMaxVector(blurSource.BlurRegion)); - Blitter.Blit(cmd, blurSource.BlurredScreen, data.previewTarget, data.previewMaterial, 0); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurRenderPass.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurRenderPass.cs.meta deleted file mode 100644 index df34f8889..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurRenderPass.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 05ed55b26a77f1b4aa7fc2236c80b9e8 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: 4bc9a290ca74e434499699e3db41c3f9, type: 3} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurRenderPassRenderGraph.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurRenderPassRenderGraph.cs deleted file mode 100644 index 902f0f4f0..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurRenderPassRenderGraph.cs +++ /dev/null @@ -1,173 +0,0 @@ -#if UNITY_2023_3_OR_NEWER -#define HAS_RENDERGRAPH -#endif - -#if HAS_RENDERGRAPH -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Rendering; -using UnityEngine.Rendering.RenderGraphModule; -using UnityEngine.Rendering.Universal; -#endif - -namespace LeTai.Asset.TranslucentImage.UniversalRP -{ -public partial class TranslucentImageBlurRenderPass -{ -#if HAS_RENDERGRAPH - class BlurRGPassData - { - public TextureHandle sourceTex; - public TextureHandle[] scratches; - public TranslucentImageSource blurSource; - public IBlurAlgorithm blurAlgorithm; - public int scratchesCount; - } - - class PreviewRGPassData - { - public TranslucentImageSource blurSource; - public TextureHandle previewTarget; - public Material previewMaterial; - } - - readonly Dictionary blurredScreenHdlDict = new(); - - List scratchesList; - string[] scratchNames; - - void RenderGraphInit() - { - scratchesList = new List(2); - AddScratchList(); - scratchNames = new string[14]; - for (var i = 0; i < scratchNames.Length; i++) - { - scratchNames[i] = $"TI_intermediate_rt_{i}"; - } - } - - void AddScratchList() - { - scratchesList.Add(new TextureHandle[14]); - } - - void RenderGraphDispose() - { - foreach (var (_, hdl) in blurredScreenHdlDict) - { - hdl?.Release(); - } - } - - public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) - { - var blurSources = currentPassData.blurSources; - var blurAlgorithm = currentPassData.blurAlgorithm; - - for (var i = 0; i < blurSources.Count; i++) - { - var blurSource = blurSources[i]; - if (!blurSource - || !blurSource.BlurConfig) - continue; - if ((currentPassData.shouldUpdateBlurMask & (1 << i)) == 0) - continue; - - blurSource.ReallocateBlurTexIfNeeded(currentPassData.camPixelRect); - - var blurredScreen = blurSource.BlurredScreen; - blurredScreenHdlDict.TryGetValue(blurredScreen, out var blurredScreenHdl); - if (blurredScreenHdl == null || blurredScreenHdl.rt != blurredScreen) - { - blurredScreenHdl?.Release(); - blurredScreenHdl = RTHandles.Alloc(blurredScreen); - - blurredScreenHdlDict[blurredScreen] = blurredScreenHdl; - } - - // ReSharper disable once ConvertToUsingDeclaration - using (var builder = renderGraph.AddUnsafePass(PROFILER_TAG, out var data)) - { - blurAlgorithm.Init(blurSource.BlurConfig, false); - - var desc = blurSource.BlurredScreen.descriptor; - var cropRegionSize = blurSource.BlurRegion.size; - var scratchesCount = blurAlgorithm.GetScratchesCount(desc.width / cropRegionSize.x, - desc.height / cropRegionSize.y); - - var resourceData = frameData.Get(); - data.sourceTex = resourceData.activeColorTexture; - if (scratchesList.Count <= i) - AddScratchList(); - data.scratches = scratchesList[i]; - data.blurSource = blurSource; - data.blurAlgorithm = blurAlgorithm; - data.scratchesCount = scratchesCount; - - builder.UseTexture(data.sourceTex, AccessFlags.Read); - - - for (int j = 0; j < scratchesCount; j++) - { - blurAlgorithm.GetNextScratchDescriptor(ref desc); - data.scratches[j] = UniversalRenderer.CreateRenderGraphTexture(renderGraph, - desc, - scratchNames[j] + "--" + i, - false, - FilterMode.Bilinear, - TextureWrapMode.Clamp); - builder.UseTexture(data.scratches[j], AccessFlags.ReadWrite); - } - - var blurredScreenTHdl = renderGraph.ImportTexture(blurredScreenHdl); - builder.UseTexture(blurredScreenTHdl, AccessFlags.Write); - - builder.SetRenderFunc(static (BlurRGPassData data, UnsafeGraphContext context) => - { - data.blurAlgorithm.Init(data.blurSource.BlurConfig, true); - for (int j = 0; j < data.scratchesCount; j++) - data.blurAlgorithm.SetScratch(j, data.scratches[j]); - - var blurExecData = new BlurExecutor.BlurExecutionData( - data.sourceTex, - data.blurSource, - data.blurAlgorithm - ); - BlurExecutor.ExecuteBlur(CommandBufferHelpers.GetNativeCommandBuffer(context.cmd), ref blurExecData); - }); - } - } - - if (currentPassData.previewIndex != -1) - { - // ReSharper disable once ConvertToUsingDeclaration - using (var builder = renderGraph.AddUnsafePass(PROFILER_TAG, out var data)) - { - var resourceData = frameData.Get(); - data.blurSource = blurSources[currentPassData.previewIndex]; - data.previewMaterial = currentPassData.previewMaterial; - data.previewTarget = resourceData.activeColorTexture; - - builder.UseTexture(data.previewTarget, AccessFlags.Write); - - builder.SetRenderFunc(static (PreviewRGPassData data, UnsafeGraphContext context) => - { - var previewExecData = new PreviewExecutionData( - data.blurSource, - data.previewTarget, - data.previewMaterial - ); - ExecutePreview(CommandBufferHelpers.GetNativeCommandBuffer(context.cmd), ref previewExecData); - }); - } - } - } - -#else - void RenderGraphInit() { } - void RenderGraphDispose() { } - -#endif -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurRenderPassRenderGraph.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurRenderPassRenderGraph.cs.meta deleted file mode 100644 index cb7f96a0a..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurRenderPassRenderGraph.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9c44d0c2822b4034b31007221f773f14 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurSource.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurSource.cs deleted file mode 100644 index 72e699dad..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurSource.cs +++ /dev/null @@ -1,361 +0,0 @@ -#if !UNITY_2023_3_OR_NEWER -#define BUGGY_OVERLAY_CAM_PIXEL_RECT -#endif - -#if UNITY_2022_3_OR_NEWER -#define HAS_DOUBLEBUFFER_BOTH -#endif - -#if UNITY_2022_1_OR_NEWER -#define HAS_RTHANDLE -#define HAS_SETUP_OVERRIDE -#endif - - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Runtime.CompilerServices; -using UnityEngine; -using UnityEngine.Rendering; -using UnityEngine.Rendering.Universal; -using UnityEngine.Scripting.APIUpdating; -using Debug = UnityEngine.Debug; - - -#if HAS_RTHANDLE -using RTH = UnityEngine.Rendering.RTHandle; -#else -using RTH = UnityEngine.Rendering.Universal.RenderTargetHandle; -#endif - - -[assembly: InternalsVisibleTo("LeTai.TranslucentImage.UniversalRP.Editor")] - -namespace LeTai.Asset.TranslucentImage.UniversalRP -{ -class URPRendererInternal -{ - ScriptableRenderer renderer; - Func getBackBufferDelegate; - Func getAfterPostColorDelegate; - - - public void CacheRenderer(ScriptableRenderer renderer) - { - if (this.renderer == renderer) return; - - this.renderer = renderer; - - void CacheBackBufferGetter(object rd) - { -#if UNITY_2022_1_OR_NEWER - const string backBufferMethodName = "PeekBackBuffer"; -#else - const string backBufferMethodName = "GetBackBuffer"; -#endif - - // ReSharper disable once PossibleNullReferenceException - var cbs = rd.GetType() - .GetField("m_ColorBufferSystem", BindingFlags.NonPublic | BindingFlags.Instance) - .GetValue(rd); - var gbb = cbs.GetType() - .GetMethods(BindingFlags.Public | BindingFlags.Instance) - .First(m => m.Name == backBufferMethodName && m.GetParameters().Length == 0); - - getBackBufferDelegate = (Func)gbb.CreateDelegate(typeof(Func), cbs); - } - -#if HAS_DOUBLEBUFFER_BOTH - CacheBackBufferGetter(renderer); -#else - if (renderer is UniversalRenderer ur) - { - CacheBackBufferGetter(ur); - } - else - { - // ReSharper disable once PossibleNullReferenceException - getAfterPostColorDelegate = - (Func)renderer.GetType() - .GetProperty("afterPostProcessColorHandle", BindingFlags.NonPublic | BindingFlags.Instance) - .GetGetMethod(true) - .CreateDelegate(typeof(Func), renderer); - } -#endif - } - - public RenderTargetIdentifier GetBackBuffer() - { - Debug.Assert(getBackBufferDelegate != null); - - var r = getBackBufferDelegate.Invoke(); -#if HAS_RTHANDLE - return r.nameID; -#else - return r.Identifier(); -#endif - } - - public RenderTargetIdentifier GetAfterPostColor() - { - Debug.Assert(getAfterPostColorDelegate != null); - - var r = getAfterPostColorDelegate.Invoke(); -#if HAS_RTHANDLE - return r.nameID; -#else - return r.Identifier(); -#endif - } -} - -[MovedFrom("LeTai.Asset.TranslucentImage.LWRP")] -public class TranslucentImageBlurSource : ScriptableRendererFeature -{ - public enum RenderOrder - { - AfterPostProcessing, - BeforePostProcessing, - } - - public RenderOrder renderOrder = RenderOrder.AfterPostProcessing; - - public bool canvasDisappearWorkaround = false; - - internal RendererType rendererType; - - readonly Dictionary> blurSourceCache = new(); - readonly Dictionary baseCameraCache = new(); - - URPRendererInternal urpRendererInternal; - TranslucentImageBlurRenderPass pass; - IBlurAlgorithm blurAlgorithm; - Material previewMaterial; - - Material PreviewMaterial - { - get - { - if (!previewMaterial) - previewMaterial = CoreUtils.CreateEngineMaterial("Hidden/FillCrop_UniversalRP"); - - return previewMaterial; - } - } - - /// - /// When adding new Translucent Image Source to existing Camera at run time, the new Source must be registered here - /// - public void RegisterSource(Camera camera, TranslucentImageSource source) - { - if (!blurSourceCache.TryGetValue(camera, out var srcList)) - { - srcList = new List(); - blurSourceCache.Add(camera, srcList); - } - srcList.Add(source); - } - - - public override void Create() - { - blurAlgorithm = new ScalableBlur(); - urpRendererInternal = new URPRendererInternal(); - - var renderPassEvent = renderOrder == RenderOrder.BeforePostProcessing - ? RenderPassEvent.BeforeRenderingPostProcessing - : RenderPassEvent.AfterRenderingPostProcessing; - pass = new TranslucentImageBlurRenderPass(urpRendererInternal) { - renderPassEvent = renderPassEvent - }; - - blurSourceCache.Clear(); - } - - protected override void Dispose(bool disposing) - { - pass?.Dispose(); - CoreUtils.Destroy(previewMaterial); - } - - void SetupSRP(ScriptableRenderer renderer) - { - urpRendererInternal.CacheRenderer(renderer); - - if (renderer is UniversalRenderer) - rendererType = RendererType.Universal; - else - rendererType = RendererType.Renderer2D; - - - pass.SetupSRP(new TranslucentImageBlurRenderPass.SRPassData { -#if !HAS_DOUBLEBUFFER_BOTH - rendererType = rendererType, -#if HAS_RTHANDLE - cameraColorTarget = renderer.cameraColorTargetHandle, -#else - cameraColorTarget = renderer.cameraColorTarget, -#endif - renderOrder = renderOrder, -#endif // !HAS_DOUBLEBUFFER_BOTH - canvasDisappearWorkaround = canvasDisappearWorkaround, - }); - } - -#if HAS_SETUP_OVERRIDE - public override void SetupRenderPasses(ScriptableRenderer renderer, in RenderingData renderingData) - { - var cameraData = renderingData.cameraData; - var sourceList = GetBlurSources(cameraData.camera); - - if (sourceList.Count == 0) - return; - - SetupSRP(renderer); - } -#endif - - public override void AddRenderPasses( - ScriptableRenderer renderer, - ref RenderingData renderingData - ) - { - var cameraData = renderingData.cameraData; - - if (cameraData.cameraType != CameraType.Game) - return; - - var camera = renderingData.cameraData.camera; - var blurSources = GetBlurSources(camera); - - if (blurSources.Count == 0) - return; - - if (blurSources.Count > 32) - Debug.LogWarning("Only 32 Translucent Image Sources is supported per camera"); - - bool needAddPass = false; - uint shouldUpdateBlurMask = 0; - int previewIndex = -1; - - - for (int i = 0; i < blurSources.Count; i++) - { - if (!blurSources[i]) - continue; - if (!blurSources[i].BlurConfig) - continue; - - blurSources[i].CamRectOverride = Rect.zero; - - var shouldUpdate = blurSources[i].ShouldUpdateBlur(); - - if (shouldUpdate) - shouldUpdate = blurSources[i].CompleteCull(); - - if (shouldUpdate) - shouldUpdateBlurMask |= 1u << i; - - var needPreview = blurSources[i].Preview; - if (needPreview) - previewIndex = i; - - needAddPass |= shouldUpdate || needPreview; - } - - if (!needAddPass) - return; - -#if BUGGY_OVERLAY_CAM_PIXEL_RECT - if (cameraData.renderType == CameraRenderType.Overlay) - { - var baseCam = GetBaseCamera(camera); - if (baseCam) - { - foreach (var source in blurSources) source.CamRectOverride = baseCam.rect; - } - } -#endif - -#if UNITY_BUGGED_HAS_PASSES_AFTER_POSTPROCESS - bool applyFinalPostProcessing = renderingData.postProcessingEnabled - && cameraData.resolveFinalTarget - && cameraData.antialiasing == AntialiasingMode.FastApproximateAntialiasing; - pass.renderPassEvent = applyFinalPostProcessing ? RenderPassEvent.AfterRenderingPostProcessing : RenderPassEvent.AfterRendering; -#endif - - if (renderer is not UniversalRenderer) - pass.ConfigureInput(ScriptableRenderPassInput.Color); - - pass.Setup(new TranslucentImageBlurRenderPass.PassData { - blurAlgorithm = blurAlgorithm, - blurSources = blurSources, - camPixelRect = GetPixelRect(cameraData), - shouldUpdateBlurMask = shouldUpdateBlurMask, - previewIndex = previewIndex, - previewMaterial = PreviewMaterial - }); - -#if !HAS_SETUP_OVERRIDE - SetupSRP(renderer); -#endif - - renderer.EnqueuePass(pass); - } - - IReadOnlyList GetBlurSources(Camera camera) - { - if (!blurSourceCache.TryGetValue(camera, out var srcList)) - { - srcList = new List(); - srcList.AddRange(camera.GetComponents()); - blurSourceCache.Add(camera, srcList); - } - - return srcList; - } - -#if BUGGY_OVERLAY_CAM_PIXEL_RECT - Camera GetBaseCamera(Camera camera) - { - if (!baseCameraCache.ContainsKey(camera)) - { - Camera baseCamera = null; - - foreach (var uacd in Shims.FindObjectsOfType()) - { - if (uacd.renderType != CameraRenderType.Base) continue; - if (uacd.cameraStack == null) continue; - if (!uacd.cameraStack.Contains(camera)) continue; - - baseCamera = uacd.GetComponent(); - } - - baseCameraCache.Add(camera, baseCamera); - } - - return baseCameraCache[camera]; - } - - readonly FieldInfo cameraDataPixelRectField = typeof(CameraData).GetField("pixelRect", BindingFlags.Instance | BindingFlags.NonPublic); -#endif - - public Rect GetPixelRect(CameraData cameraData) - { -#if !BUGGY_OVERLAY_CAM_PIXEL_RECT - return cameraData.camera.pixelRect; -#else - if (cameraData.renderType == CameraRenderType.Base) - return cameraData.camera.pixelRect; - - if (cameraDataPixelRectField == null) - Debug.LogError("CameraData.pixelRect does not exists in this version of URP. Please report a bug."); - - // ReSharper disable once PossibleNullReferenceException - return (Rect)cameraDataPixelRectField.GetValue(cameraData); -#endif - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurSource.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurSource.cs.meta deleted file mode 100644 index 3e10796e8..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Render Pass/TranslucentImageBlurSource.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: c8e1eeeaa7fba944fb8e39c0af65b268 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: 4bc9a290ca74e434499699e3db41c3f9, type: 3} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities.meta deleted file mode 100644 index 8d70dca02..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e922b2483fd9e164ebbd098b4e9f7822 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/Blitter.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/Blitter.cs deleted file mode 100644 index 0f9b98acd..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/Blitter.cs +++ /dev/null @@ -1,65 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Rendering; - -namespace LeTai.Asset.TranslucentImage -{ -public static class Blitter -{ - static Mesh fullscreenTriangle; - - /// - /// A fullscreen triangle mesh. - /// - static Mesh FullscreenTriangle - { - get - { - if (fullscreenTriangle != null) - return fullscreenTriangle; - - fullscreenTriangle = new Mesh { name = "Fullscreen Triangle" }; - fullscreenTriangle.SetVertices( - new List { - new Vector3(-1f, -1f, 0f), - new Vector3(-1f, 3f, 0f), - new Vector3(3f, -1f, 0f) - } - ); - fullscreenTriangle.SetIndices(new[] { 0, 1, 2 }, MeshTopology.Triangles, 0, false); - fullscreenTriangle.UploadMeshData(false); - - return fullscreenTriangle; - } - } - - public static void Blit( - CommandBuffer cmd, - RenderTargetIdentifier source, - RenderTargetIdentifier destination, - Material material, - int passIndex, - MaterialPropertyBlock propertyBlock = null, - Rect viewport = default - ) - { - cmd.SetGlobalTexture(ShaderID.MAIN_TEX, source); - cmd.SetRenderTarget(new RenderTargetIdentifier(destination, 0, CubemapFace.Unknown, -1), - RenderBufferLoadAction.DontCare, - RenderBufferStoreAction.Store, - RenderBufferLoadAction.DontCare, - RenderBufferStoreAction.DontCare); - if (viewport.width != 0) - cmd.SetViewport(viewport); - - if (SystemInfo.graphicsShaderLevel >= 30 -#if !UNITY_2023_1_OR_NEWER - && SystemInfo.graphicsDeviceType != GraphicsDeviceType.OpenGLES2 -#endif - ) - cmd.DrawProcedural(Matrix4x4.identity, material, passIndex, MeshTopology.Triangles, 3, 1, propertyBlock); - else - cmd.DrawMesh(FullscreenTriangle, Matrix4x4.identity, material, 0, passIndex, propertyBlock); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/Blitter.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/Blitter.cs.meta deleted file mode 100644 index 740b59a62..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/Blitter.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 263b05d298234228b5e7ccfae5ac0b69 -timeCreated: 1730191817 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Utilities/Blitter.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/BlurExecutor.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/BlurExecutor.cs deleted file mode 100644 index 89ef501eb..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/BlurExecutor.cs +++ /dev/null @@ -1,73 +0,0 @@ -using UnityEngine; -using UnityEngine.Rendering; - -namespace LeTai.Asset.TranslucentImage -{ -public static class BlurExecutor -{ - static readonly int[] TEMP_RT = new int[14]; - - static BlurExecutor() - { - for (var i = 0; i < TEMP_RT.Length; i++) - { - TEMP_RT[i] = Shader.PropertyToID($"TI_intermediate_rt_{i}"); - } - } - - public readonly struct BlurExecutionData - { - public readonly RenderTargetIdentifier sourceTex; - public readonly TranslucentImageSource blurSource; - public readonly IBlurAlgorithm blurAlgorithm; - - public BlurExecutionData( - RenderTargetIdentifier sourceTex, - TranslucentImageSource blurSource, - IBlurAlgorithm blurAlgorithm - ) - { - this.sourceTex = sourceTex; - this.blurSource = blurSource; - this.blurAlgorithm = blurAlgorithm; - } - } - - public static void ExecuteBlurWithTempTextures(CommandBuffer cmd, ref BlurExecutionData data) - { - var desc = data.blurSource.BlurredScreen.descriptor; - desc.msaaSamples = 1; - desc.useMipMap = false; - desc.depthBufferBits = 0; - - var cropRegionSize = data.blurSource.BlurRegion.size; - var scratchesCount = data.blurAlgorithm.GetScratchesCount(desc.width / cropRegionSize.x, - desc.height / cropRegionSize.y); - for (int i = 0; i < scratchesCount; i++) - { - data.blurAlgorithm.GetNextScratchDescriptor(ref desc); - cmd.GetTemporaryRT(TEMP_RT[i], desc, FilterMode.Bilinear); - data.blurAlgorithm.SetScratch(i, TEMP_RT[i]); - } - - { - ExecuteBlur(cmd, ref data); - } - - for (int i = 0; i < scratchesCount; i++) - cmd.ReleaseTemporaryRT(TEMP_RT[i]); - } - - public static void ExecuteBlur(CommandBuffer cmd, ref BlurExecutionData data) - { - var blurSource = data.blurSource; - - data.blurAlgorithm.Blur(cmd, - data.sourceTex, - blurSource.BlurRegion, - blurSource.ActiveRegion, - blurSource.BackgroundFill, - blurSource.BlurredScreen); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/BlurExecutor.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/BlurExecutor.cs.meta deleted file mode 100644 index d6236e822..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/BlurExecutor.cs.meta +++ /dev/null @@ -1,18 +0,0 @@ -fileFormatVersion: 2 -guid: 8fff8a033240e1c4491e2587b6d285e9 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Utilities/BlurExecutor.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/RectUtils.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/RectUtils.cs deleted file mode 100644 index 1f1d0c994..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/RectUtils.cs +++ /dev/null @@ -1,75 +0,0 @@ -using UnityEngine; - -namespace LeTai.Asset.TranslucentImage -{ -public static class RectUtils -{ - /// - /// Fast approximate equal for rect position and size in range [0,1] - /// - internal static bool ApproximateEqual01(Rect a, Rect b) - { - return QuickApproximate01(a.x, b.x) - && QuickApproximate01(a.y, b.y) - && QuickApproximate01(a.width, b.width) - && QuickApproximate01(a.height, b.height); - } - - - private static bool QuickApproximate01(float a, float b) - { - const float epsilon01 = 5.9604644e-8f; // different between 1 and largest float < 1 - return Mathf.Abs(b - a) < epsilon01; - } - - public static Rect Intersect(Rect a, Rect b) - { - float xMin = Mathf.Max(a.xMin, b.xMin); - float xMax = Mathf.Min(a.xMax, b.xMax); - float yMin = Mathf.Max(a.yMin, b.yMin); - float yMax = Mathf.Min(a.yMax, b.yMax); - - if (xMin < xMax && yMin < yMax) - { - return new Rect(xMin, yMin, xMax - xMin, yMax - yMin); - } - - return Rect.zero; - } - - public static Rect Crop(Rect src, Rect cropRegion) - { - var rect = src; - rect.x += cropRegion.x * rect.width; - rect.y += cropRegion.y * rect.height; - rect.width *= cropRegion.width; - rect.height *= cropRegion.height; - - return rect; - } - - public static Vector4 ToMinMaxVector(Rect rect) - { - return new Vector4(rect.xMin, - rect.yMin, - rect.xMax, - rect.yMax); - } - - public static Vector4 ToVector4(Rect rect) - { - return new Vector4(rect.xMin, - rect.yMin, - rect.width, - rect.height); - } - - public static Rect Expand(Rect rect, Vector2 padding) - { - return new Rect(rect.x - padding.x, - rect.y - padding.y, - rect.width + 2 * padding.x, - rect.height + 2 * padding.y); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/RectUtils.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/RectUtils.cs.meta deleted file mode 100644 index 33bbda593..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/RectUtils.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 29b4a2967894477c93934b7e21ce2d5b -timeCreated: 1558521365 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Utilities/RectUtils.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/ResizableScreenRect.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/ResizableScreenRect.cs deleted file mode 100644 index c46b38474..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/ResizableScreenRect.cs +++ /dev/null @@ -1,179 +0,0 @@ -// Due to the use of asmdef in the ../Editor folder, this class cannot be put there, -// as then it cannot be referenced outside of the assembly -// The Blur region GUI requires the use of OnGUI for interactivity, -// so it cannot be completely done within the custom Editor either - -#if UNITY_EDITOR -using UnityEditor; -using UnityEngine; - -namespace LeTai.Asset.TranslucentImage -{ -public static class ResizableScreenRect -{ - const float BORDER_THICKNESS = 2; - const float DRAG_EXTEND = 16; - - delegate void DragHandlerDelegate(Vector2 delta, ref Rect rect); - - static DragHandlerDelegate currentDragHandler; - - static void DrawSquareFromCenter(Vector2 postion, float extent) - { - var v = Vector2.one * extent; - GUI.DrawTexture(new Rect(postion - v, v * 2), Texture2D.whiteTexture); - } - - public static Rect Draw(Rect normalizedScreenRect, bool interactable = false) - { - var guiRect = normalizedScreenRect; - guiRect.y = 1 - guiRect.y - guiRect.height; - guiRect.x *= Screen.width; - guiRect.width *= Screen.width; - guiRect.y *= Screen.height; - guiRect.height *= Screen.height; - - var borderThickness = BORDER_THICKNESS * EditorGUIUtility.pixelsPerPoint; - GUI.DrawTexture(new Rect(guiRect.x - borderThickness, - guiRect.y - borderThickness, - borderThickness, - guiRect.height + borderThickness * 2), - Texture2D.whiteTexture); - GUI.DrawTexture(new Rect(guiRect.x, - guiRect.y - borderThickness, - guiRect.width + 1, - borderThickness), - Texture2D.whiteTexture); - GUI.DrawTexture(new Rect(guiRect.xMax, - guiRect.y - borderThickness, - borderThickness, - guiRect.height + borderThickness * 2), - Texture2D.whiteTexture); - GUI.DrawTexture(new Rect(guiRect.x, - guiRect.yMax, - guiRect.width + 1, - borderThickness), - Texture2D.whiteTexture); - if (interactable) - { - var boxExtend = borderThickness * 2; - DrawSquareFromCenter(guiRect.min, boxExtend); - DrawSquareFromCenter(guiRect.max, boxExtend); - DrawSquareFromCenter(new Vector2(guiRect.xMax, guiRect.yMin), boxExtend); - DrawSquareFromCenter(new Vector2(guiRect.xMin, guiRect.yMax), boxExtend); - } - - if (interactable) - guiRect = HandleEvent(guiRect); - - - var result = guiRect; - - result.x /= Screen.width; - result.y /= Screen.height; - result.width /= Screen.width; - result.height /= Screen.height; - result.y = 1 - result.y - result.height; - - result.xMin = Mathf.Max(0, result.xMin); - result.yMin = Mathf.Max(0, result.yMin); - result.width = Mathf.Min(1, result.width); - result.height = Mathf.Min(1, result.height); - - return result; - } - - static Rect HandleEvent(Rect guiRect) - { - var ev = Event.current; - if (ev.type == EventType.MouseDown && ev.button == 0) - { - currentDragHandler = ChooseDragHandler(guiRect, ev.mousePosition); - } - else if (ev.type == EventType.MouseUp) - { - currentDragHandler = null; - } - else if (ev.type == EventType.MouseDrag) - { - currentDragHandler?.Invoke(ev.delta, ref guiRect); - } - - return guiRect; - } - - static DragHandlerDelegate ChooseDragHandler(Rect rect, Vector2 pointer) - { - float extend = DRAG_EXTEND * EditorGUIUtility.pixelsPerPoint; - - bool PointerXNear(float point) => Mathf.Abs(point - pointer.x) <= extend; - bool PointerYNear(float point) => Mathf.Abs(point - pointer.y) <= extend; - - if (PointerXNear(rect.xMin)) - { - if (PointerYNear(rect.yMin)) return DRAG_HANDLER_TOP_LEFT; - if (PointerYNear(rect.yMax)) return DRAG_HANDLER_BOTTOM_LEFT; - return DRAG_HANDLER_LEFT; - } - - if (PointerXNear(rect.xMax)) - { - if (PointerYNear(rect.yMin)) return DRAG_HANDLER_TOP_RIGHT; - if (PointerYNear(rect.yMax)) return DRAG_HANDLER_BOTTOM_RIGHT; - return DRAG_HANDLER_RIGHT; - } - - if (PointerYNear(rect.yMin)) return DRAG_HANDLER_TOP; - if (PointerYNear(rect.yMax)) return DRAG_HANDLER_BOTTOM; - - if (!rect.Contains(pointer)) - return null; - - return DRAG_HANDLER_CENTER; - } - - static readonly DragHandlerDelegate DRAG_HANDLER_CENTER = - (Vector2 delta, ref Rect rect) => { rect.position += delta; }; - - static readonly DragHandlerDelegate DRAG_HANDLER_LEFT = - (Vector2 delta, ref Rect rect) => { rect.xMin += delta.x; }; - - static readonly DragHandlerDelegate DRAG_HANDLER_TOP = - (Vector2 delta, ref Rect rect) => { rect.yMin += delta.y; }; - - static readonly DragHandlerDelegate DRAG_HANDLER_BOTTOM = - (Vector2 delta, ref Rect rect) => { rect.yMax += delta.y; }; - - static readonly DragHandlerDelegate DRAG_HANDLER_RIGHT = - (Vector2 delta, ref Rect rect) => { rect.xMax += delta.x; }; - - static readonly DragHandlerDelegate DRAG_HANDLER_TOP_LEFT = - (Vector2 delta, ref Rect rect) => - { - rect.xMin += delta.x; - rect.yMin += delta.y; - }; - - static readonly DragHandlerDelegate DRAG_HANDLER_TOP_RIGHT = - (Vector2 delta, ref Rect rect) => - { - rect.xMax += delta.x; - rect.yMin += delta.y; - }; - - static readonly DragHandlerDelegate DRAG_HANDLER_BOTTOM_RIGHT = - (Vector2 delta, ref Rect rect) => - { - rect.xMax += delta.x; - rect.yMax += delta.y; - }; - - static readonly DragHandlerDelegate DRAG_HANDLER_BOTTOM_LEFT = - (Vector2 delta, ref Rect rect) => - { - rect.xMin += delta.x; - rect.yMax += delta.y; - }; -} -} -#endif diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/ResizableScreenRect.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/ResizableScreenRect.cs.meta deleted file mode 100644 index beeb1d093..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/ResizableScreenRect.cs.meta +++ /dev/null @@ -1,18 +0,0 @@ -fileFormatVersion: 2 -guid: b71ecc50ad61ec745a62fe5d0c7f8810 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Utilities/ResizableScreenRect.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/ShaderID.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/ShaderID.cs deleted file mode 100644 index 37f9b6e22..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/ShaderID.cs +++ /dev/null @@ -1,37 +0,0 @@ -using LeTai.Paraform.Scaffold; -using UnityEngine; - -namespace LeTai.Asset.TranslucentImage -{ -public static class ShaderID -{ - public static readonly int BLUR_TEX = Shader.PropertyToID("_BlurTex"); - public static readonly int MAIN_TEX = Shader.PropertyToID("_MainTex"); - public static readonly int OFFSET = Shader.PropertyToID("_Offset"); - public static readonly int TARGET_SIZE = Shader.PropertyToID("_TargetSize"); - public static readonly int BACKGROUND_COLOR = Shader.PropertyToID("_BackgroundColor"); - public static readonly int CROP_REGION = Shader.PropertyToID("_CropRegion"); - public static readonly int IS_LAST = Shader.PropertyToID("_IsLast"); - // public static readonly int ENV_TEX = Shader.PropertyToID("_EnvTex"); - - public const string KW_BACKGROUND_MODE_COLORFUL = "_BACKGROUND_MODE_COLORFUL"; - public const string KW_BACKGROUND_MODE_NORMAL = "_BACKGROUND_MODE_NORMAL"; - public const string KW_BACKGROUND_MODE_OPAQUE = "_BACKGROUND_MODE_OPAQUE"; - - public static readonly int G_CANVAS_SCALE_FACTOR = ParaformMaterial.ShaderID.G_CANVAS_SCALE_FACTOR; - - public const string REFRACTION_MODE_OFF = ParaformMaterial.ShaderID.REFRACTION_MODE_OFF; - public const string REFRACTION_MODE_ON = ParaformMaterial.ShaderID.REFRACTION_MODE_ON; - public const string REFRACTION_MODE_CHROMATIC = ParaformMaterial.ShaderID.REFRACTION_MODE_CHROMATIC; - public static readonly int REFRACTIVE_INDEX_DUMMY = ParaformMaterial.ShaderID.REFRACTIVE_INDEX_DUMMY; - public static readonly int CHROMATIC_DISPERSION_DUMMY = ParaformMaterial.ShaderID.CHROMATIC_DISPERSION_DUMMY; - public static readonly int REFRACTIVE_INDEX_RATIOS = ParaformMaterial.ShaderID.REFRACTIVE_INDEX_RATIOS; - - public const string USE_EDGE_GLINT = ParaformMaterial.ShaderID.USE_EDGE_GLINT; - public static readonly int EDGE_GLINT_DIRECTIONS = ParaformMaterial.ShaderID.EDGE_GLINT_DIRECTIONS; - public static readonly int EDGE_GLINT1_STRENGTH = ParaformMaterial.ShaderID.EDGE_GLINT1_STRENGTH; - public static readonly int EDGE_GLINT2_STRENGTH = ParaformMaterial.ShaderID.EDGE_GLINT2_STRENGTH; - public static readonly int EDGE_GLINT_WRAP_RAW = ParaformMaterial.ShaderID.EDGE_GLINT_WRAP_RAW; - public static readonly int EDGE_GLINT_SHARPNESS_RAW = ParaformMaterial.ShaderID.EDGE_GLINT_SHARPNESS_RAW; -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/ShaderID.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/ShaderID.cs.meta deleted file mode 100644 index 016af8c04..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/ShaderID.cs.meta +++ /dev/null @@ -1,18 +0,0 @@ -fileFormatVersion: 2 -guid: e531f31ceeeb4a2d99d46564b2754c17 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Utilities/ShaderID.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/Shims.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/Shims.cs deleted file mode 100644 index 81db4f0e7..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/Shims.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Runtime.CompilerServices; -using UnityEngine; - -namespace LeTai.Asset.TranslucentImage -{ -public static class Shims -{ - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static T FindObjectOfType(bool includeInactive = false, bool sorted = true) where T : Object - { -#if UNITY_2023_1_OR_NEWER - if (sorted) - return Object.FindFirstObjectByType(includeInactive ? FindObjectsInactive.Include : FindObjectsInactive.Exclude); - else - return Object.FindAnyObjectByType(includeInactive ? FindObjectsInactive.Include : FindObjectsInactive.Exclude); -#elif UNITY_2020_1_OR_NEWER - return Object.FindObjectOfType(includeInactive); -#else - return Object.FindObjectOfType(); -#endif - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static T[] FindObjectsOfType(bool includeInactive = false) where T : Object - { -#if UNITY_2023_1_OR_NEWER - return Object.FindObjectsByType(includeInactive ? FindObjectsInactive.Include : FindObjectsInactive.Exclude, - FindObjectsSortMode.None); -#elif UNITY_2020_1_OR_NEWER - return Object.FindObjectsOfType(includeInactive); -#else - return Object.FindObjectsOfType(); -#endif - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/Shims.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/Shims.cs.meta deleted file mode 100644 index b65a737ba..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/Utilities/Shims.cs.meta +++ /dev/null @@ -1,18 +0,0 @@ -fileFormatVersion: 2 -guid: aa7ab5ec42143544499feb36b80d3720 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/Utilities/Shims.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/VPMatrixCache.cs b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/VPMatrixCache.cs deleted file mode 100644 index 629b8163c..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/VPMatrixCache.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System; -using System.Collections.Generic; -using Unity.Collections; -using UnityEngine; - -namespace LeTai.Asset.TranslucentImage -{ -/// -/// Optimized for a small number of entries and the ability to be read in Jobs -/// Since VP matrices are expensive to get, use IndexOf to check if the related Camera is cached before calling Add -/// -public class VPMatrixCache : IDisposable -{ - public readonly struct Index - { - public static readonly Index INVALID = new Index(-1); - - internal readonly int index; - - public Index(int index) - { - this.index = index; - } - - public bool IsValid() - { - return index >= 0; - } - } - - readonly List cameras = new List(2); - public NativeList VpMatrices { get; } = new NativeList(2, Allocator.Persistent); - - /// - /// Check if the Camera's VP matrix is cached - /// - /// The index of the camera if found; otherwise, -1. - public Index IndexOf(Camera camera) - { - return new Index(cameras.IndexOf(camera)); - } - - /// - /// Add to the cache. No duplicate check is done. Make sure to call IndexOf first - /// - /// The camera to get the matrix is from - /// The index in the cache where the matrix is stored - public Index Add(Camera camera) - { - var matrix = camera.projectionMatrix * camera.worldToCameraMatrix; - return Add(camera, matrix); - } - - /// - /// Add to the cache. No duplicate check is done. Make sure to call IndexOf first - /// - /// The camera from which the matrix is from - /// camera.projectionMatrix * camera.worldToCameraMatrix - /// The index in the cache where the matrix is stored - public Index Add(Camera camera, Matrix4x4 vpMatrix) - { - var index = cameras.Count; - cameras.Add(camera); - VpMatrices.Add(vpMatrix); - return new Index(index); - } - - public void Clear() - { - cameras.Clear(); - VpMatrices.Clear(); - } - - public void Dispose() - { - VpMatrices.Dispose(); - } -} -} diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/VPMatrixCache.cs.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/VPMatrixCache.cs.meta deleted file mode 100644 index f8e303092..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/VPMatrixCache.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: c67c201d9783428680302068286ab7d0 -timeCreated: 1729064473 -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/VPMatrixCache.cs - uploadId: 824068 diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/URP README.txt b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/URP README.txt deleted file mode 100644 index 0eee7dca3..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/URP README.txt +++ /dev/null @@ -1,5 +0,0 @@ -For use with URP, please follow the instruction at http://leloctai.com/asset/translucentimage/docs/articles/universalrp.html - -TLDR: - - Import "URP support.unitypackage" - - Add TranslucentImageBlurSource Renderer Features to each Universal Renderer Assets diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/URP README.txt.meta b/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/URP README.txt.meta deleted file mode 100644 index 8d068bcce..000000000 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/URP README.txt.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: b12c9ba0e5d5cab45a39404b57693e5b -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/TranslucentImage/URP README.txt - uploadId: 824068 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Cube.prefab.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Cube.prefab.meta index 171bcbfe7..c96a17531 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Cube.prefab.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Cube.prefab.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Cube.prefab - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/CubeRoup.prefab.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/CubeRoup.prefab.meta index 2551a1d17..b5780cf5c 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/CubeRoup.prefab.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/CubeRoup.prefab.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/CubeRoup.prefab - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Env.prefab.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Env.prefab.meta index c4ad41c67..d4ef3ecff 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Env.prefab.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Env.prefab.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Env.prefab - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Plane.prefab.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Plane.prefab.meta index 621fa0a71..5aa55c123 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Plane.prefab.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Plane.prefab.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Plane.prefab - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/RuntimeBuildDemo.prefab.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/RuntimeBuildDemo.prefab.meta index e8c095051..822ea96bb 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/RuntimeBuildDemo.prefab.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/RuntimeBuildDemo.prefab.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/RuntimeBuildDemo.prefab - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/RuntimeDressUpDemo.prefab.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/RuntimeDressUpDemo.prefab.meta index 4fa159121..610b86709 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/RuntimeDressUpDemo.prefab.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/RuntimeDressUpDemo.prefab.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/RuntimeDressUpDemo.prefab - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/SimpleImputManager.prefab.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/SimpleImputManager.prefab.meta index 09ff93124..d1c7fa4e2 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/SimpleImputManager.prefab.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/SimpleImputManager.prefab.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/SimpleImputManager.prefab - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Stage.prefab.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Stage.prefab.meta index 2f9a7d157..8f297e214 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Stage.prefab.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Stage.prefab.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/Stage.prefab - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_KAGURA.prefab.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_KAGURA.prefab.meta index f80ded2b4..149bc0aee 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_KAGURA.prefab.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_KAGURA.prefab.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_KAGURA.prefab - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_RuntimeBuild.prefab.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_RuntimeBuild.prefab.meta index 8b6b965dc..d0ff2b4da 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_RuntimeBuild.prefab.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_RuntimeBuild.prefab.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_RuntimeBuild.prefab - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_RuntimeDressUp.prefab.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_RuntimeDressUp.prefab.meta index ccd5525c3..4d052ef4a 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_RuntimeDressUp.prefab.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_RuntimeDressUp.prefab.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_RuntimeDressUp.prefab - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_Wind.prefab.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_Wind.prefab.meta index c34790214..1a9911fb4 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_Wind.prefab.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_Wind.prefab.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/UI_Wind.prefab - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/WindDemo.prefab.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/WindDemo.prefab.meta index 87e20892c..3ed10e9a5 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/WindDemo.prefab.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/WindDemo.prefab.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/WindDemo.prefab - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/WindParticle.prefab.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/WindParticle.prefab.meta index e29126c52..94dff1e96 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/WindParticle.prefab.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/WindParticle.prefab.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Prefabs/WindParticle.prefab - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Resources/MC2_BoneCloth_Ribbon_Demo.json.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Resources/MC2_BoneCloth_Ribbon_Demo.json.meta index 03641655c..cb690e10a 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Resources/MC2_BoneCloth_Ribbon_Demo.json.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Resources/MC2_BoneCloth_Ribbon_Demo.json.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Resources/MC2_BoneCloth_Ribbon_Demo.json - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/AutoRotate.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/AutoRotate.cs.meta index e6ac8b69c..462f97a22 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/AutoRotate.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/AutoRotate.cs.meta @@ -14,6 +14,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/AutoRotate.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/CameraOrbit.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/CameraOrbit.cs.meta index c0abe7569..4da1a4a6a 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/CameraOrbit.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/CameraOrbit.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/CameraOrbit.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/Editor/ShaderGraph/MagicaCloth2UPMImporterShaderGraph.asmdef.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/Editor/ShaderGraph/MagicaCloth2UPMImporterShaderGraph.asmdef.meta index b6f93031f..0456cce21 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/Editor/ShaderGraph/MagicaCloth2UPMImporterShaderGraph.asmdef.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/Editor/ShaderGraph/MagicaCloth2UPMImporterShaderGraph.asmdef.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/Editor/ShaderGraph/MagicaCloth2UPMImporterShaderGraph.asmdef - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/Editor/ShaderGraph/UnityPackageImporter.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/Editor/ShaderGraph/UnityPackageImporter.cs.meta index d12cf7c89..1dfe26093 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/Editor/ShaderGraph/UnityPackageImporter.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/Editor/ShaderGraph/UnityPackageImporter.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/Editor/ShaderGraph/UnityPackageImporter.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/GameObjectContainer.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/GameObjectContainer.cs.meta index ed8a41fae..0334c1a6a 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/GameObjectContainer.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/GameObjectContainer.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/GameObjectContainer.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/MagicaCloth2Example.asmdef.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/MagicaCloth2Example.asmdef.meta index 286731ade..44d64a92b 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/MagicaCloth2Example.asmdef.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/MagicaCloth2Example.asmdef.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/MagicaCloth2Example.asmdef - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/ModelController.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/ModelController.cs.meta index 665a61141..d5af35d82 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/ModelController.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/ModelController.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/ModelController.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/RuntimeBuildDemo.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/RuntimeBuildDemo.cs.meta index e2230b3db..558fb6c56 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/RuntimeBuildDemo.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/RuntimeBuildDemo.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/RuntimeBuildDemo.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/RuntimeDressUpDemo.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/RuntimeDressUpDemo.cs.meta index 3889a77de..15ef6e0e4 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/RuntimeDressUpDemo.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/RuntimeDressUpDemo.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/RuntimeDressUpDemo.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/SimpleInput.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/SimpleInput.cs.meta index 2d04c60be..1336745ff 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/SimpleInput.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/SimpleInput.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/SimpleInput.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/SimpleInputManager.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/SimpleInputManager.cs.meta index 4c5aecaa9..03a6aeb24 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/SimpleInputManager.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/SimpleInputManager.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/SimpleInputManager.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/SliderText.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/SliderText.cs.meta index e73da0a5b..129beef52 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/SliderText.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/SliderText.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/SliderText.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/TargetFPS.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/TargetFPS.cs.meta index 5dd6ddeb4..15a402512 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/TargetFPS.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/TargetFPS.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/TargetFPS.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/WindDemo.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/WindDemo.cs.meta index 68808b5a6..32ebc7620 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/WindDemo.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/WindDemo.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Scripts/WindDemo.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Shaders/MC2_Common_Lit_Back.shadergraph.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Shaders/MC2_Common_Lit_Back.shadergraph.meta index bb0521bb8..07b9d9c27 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Shaders/MC2_Common_Lit_Back.shadergraph.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Shaders/MC2_Common_Lit_Back.shadergraph.meta @@ -12,6 +12,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Shaders/MC2_Common_Lit_Back.shadergraph - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Shaders/MC2_Common_Lit_Front.shadergraph.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Shaders/MC2_Common_Lit_Front.shadergraph.meta index f9c8f206a..4fcda1d58 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Shaders/MC2_Common_Lit_Front.shadergraph.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Shaders/MC2_Common_Lit_Front.shadergraph.meta @@ -12,6 +12,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Shaders/MC2_Common_Lit_Front.shadergraph - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Textures/SD_UnityChan_Skirt_PaintMap.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Textures/SD_UnityChan_Skirt_PaintMap.png.meta index 4313437bd..f52f620d2 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Textures/SD_UnityChan_Skirt_PaintMap.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Textures/SD_UnityChan_Skirt_PaintMap.png.meta @@ -137,6 +137,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/Common/Textures/SD_UnityChan_Skirt_PaintMap.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/CoreRP/RuntimeBuild_CoreRP.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/CoreRP/RuntimeBuild_CoreRP.unity.meta index 48840054e..aa433fed4 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/CoreRP/RuntimeBuild_CoreRP.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/CoreRP/RuntimeBuild_CoreRP.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/CoreRP/RuntimeBuild_CoreRP.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/CoreRP/RuntimeDressUp_CoreRP.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/CoreRP/RuntimeDressUp_CoreRP.unity.meta index ef8cfa053..dfcc79827 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/CoreRP/RuntimeDressUp_CoreRP.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/CoreRP/RuntimeDressUp_CoreRP.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/CoreRP/RuntimeDressUp_CoreRP.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/CoreRP/UnityChanKAGURA_CoreRP.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/CoreRP/UnityChanKAGURA_CoreRP.unity.meta index 975b86de2..f15e6dbf1 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/CoreRP/UnityChanKAGURA_CoreRP.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/CoreRP/UnityChanKAGURA_CoreRP.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/CoreRP/UnityChanKAGURA_CoreRP.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/MC2_SkyandFogSettingsProfile.asset.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/MC2_SkyandFogSettingsProfile.asset.meta index 556889f24..1c4fe48b7 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/MC2_SkyandFogSettingsProfile.asset.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/MC2_SkyandFogSettingsProfile.asset.meta @@ -10,6 +10,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/MC2_SkyandFogSettingsProfile.asset - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/RuntimeBuild_HDRP.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/RuntimeBuild_HDRP.unity.meta index 11a356336..43695ece0 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/RuntimeBuild_HDRP.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/RuntimeBuild_HDRP.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/RuntimeBuild_HDRP.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/RuntimeDressUp_HDRP.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/RuntimeDressUp_HDRP.unity.meta index 734b43527..d3b3bdb40 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/RuntimeDressUp_HDRP.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/RuntimeDressUp_HDRP.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/RuntimeDressUp_HDRP.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/UnityChanKAGURA_HDRP.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/UnityChanKAGURA_HDRP.unity.meta index 08d55816c..61ade6555 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/UnityChanKAGURA_HDRP.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/UnityChanKAGURA_HDRP.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/UnityChanKAGURA_HDRP.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/Wind_HDRP.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/Wind_HDRP.unity.meta index 9b7b2e323..8b6981fc4 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/Wind_HDRP.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/Wind_HDRP.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/HDRP/Wind_HDRP.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/RuntimeBuild_URP.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/RuntimeBuild_URP.unity.meta index a0e899a71..6bba83bfb 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/RuntimeBuild_URP.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/RuntimeBuild_URP.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/RuntimeBuild_URP.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/RuntimeDressUp_URP.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/RuntimeDressUp_URP.unity.meta index 5dade8d6a..4f17eecc2 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/RuntimeDressUp_URP.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/RuntimeDressUp_URP.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/RuntimeDressUp_URP.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/UnityChanKAGURA_URP.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/UnityChanKAGURA_URP.unity.meta index 7d27e17c8..346a0fa87 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/UnityChanKAGURA_URP.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/UnityChanKAGURA_URP.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/UnityChanKAGURA_URP.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/Wind_URP.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/Wind_URP.unity.meta index bcd58bff4..4f3f49956 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/Wind_URP.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/Wind_URP.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes/URP/Wind_URP.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/RuntimeBuild_HighDefinition3D.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/RuntimeBuild_HighDefinition3D.unity.meta index e1428868c..d94a6ee5c 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/RuntimeBuild_HighDefinition3D.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/RuntimeBuild_HighDefinition3D.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/RuntimeBuild_HighDefinition3D.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/RuntimeDressUp_HighDefinition3D.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/RuntimeDressUp_HighDefinition3D.unity.meta index 10c8be0a9..0d833f422 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/RuntimeDressUp_HighDefinition3D.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/RuntimeDressUp_HighDefinition3D.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/RuntimeDressUp_HighDefinition3D.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/UnityChanKAGURA_HighDefinition3D.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/UnityChanKAGURA_HighDefinition3D.unity.meta index 7d80a8957..b05624279 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/UnityChanKAGURA_HighDefinition3D.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/UnityChanKAGURA_HighDefinition3D.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/UnityChanKAGURA_HighDefinition3D.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/Wind_HighDefinition3D.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/Wind_HighDefinition3D.unity.meta index 7756cdc61..068ead4d4 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/Wind_HighDefinition3D.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/Wind_HighDefinition3D.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/HighDefinition3D/Wind_HighDefinition3D.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/RuntimeBuild_Universal3D.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/RuntimeBuild_Universal3D.unity.meta index 8246a372f..522e3e732 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/RuntimeBuild_Universal3D.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/RuntimeBuild_Universal3D.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/RuntimeBuild_Universal3D.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/RuntimeDressUp_Universal3D.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/RuntimeDressUp_Universal3D.unity.meta index 9dbbb7a6a..ab186afd4 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/RuntimeDressUp_Universal3D.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/RuntimeDressUp_Universal3D.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/RuntimeDressUp_Universal3D.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/UnityChanKAGURA_Universal3D.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/UnityChanKAGURA_Universal3D.unity.meta index 85e92acae..5f3d152bc 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/UnityChanKAGURA_Universal3D.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/UnityChanKAGURA_Universal3D.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/UnityChanKAGURA_Universal3D.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/Wind_Universal3D.unity.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/Wind_Universal3D.unity.meta index 46acbec91..a773e93df 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/Wind_Universal3D.unity.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/Wind_Universal3D.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/DemoScenes_Unity_6.1_or_Higher/Universal3D/Wind_Universal3D.unity - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/Logo/Dark_Silhouette.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/Logo/Dark_Silhouette.png.meta index 454730986..77c0aacfb 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/Logo/Dark_Silhouette.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/Logo/Dark_Silhouette.png.meta @@ -137,6 +137,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/Logo/Dark_Silhouette.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/SD_UnityChan.controller.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/SD_UnityChan.controller.meta index 7fb6bc905..0b8412e1a 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/SD_UnityChan.controller.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/SD_UnityChan.controller.meta @@ -10,6 +10,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/SD_UnityChan.controller - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/body_sum.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/body_sum.png.meta index 79bdd6db4..89f61d1e9 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/body_sum.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/body_sum.png.meta @@ -137,6 +137,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/body_sum.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/body_win.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/body_win.png.meta index dc159c4d7..fc6f07e69 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/body_win.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/body_win.png.meta @@ -137,6 +137,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/body_win.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/misaki_head.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/misaki_head.png.meta index d25e3a545..1a803170c 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/misaki_head.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/misaki_head.png.meta @@ -137,6 +137,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/misaki_head.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/utc_all2.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/utc_all2.png.meta index 95c3c5bd3..4db9b4db9 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/utc_all2.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/utc_all2.png.meta @@ -137,6 +137,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/utc_all2.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/yuko_head.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/yuko_head.png.meta index fde4a73ca..ece53ec2c 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/yuko_head.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/yuko_head.png.meta @@ -137,6 +137,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Textures/yuko_head.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Utc_sum_humanoid (Body).prefab.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Utc_sum_humanoid (Body).prefab.meta index b47d0aa6d..cc4ff6eec 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Utc_sum_humanoid (Body).prefab.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Utc_sum_humanoid (Body).prefab.meta @@ -9,7 +9,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Utc_sum_humanoid (Body).prefab - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Utc_sum_humanoid (Hair).prefab.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Utc_sum_humanoid (Hair).prefab.meta index 8796c8732..9596e74f7 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Utc_sum_humanoid (Hair).prefab.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Utc_sum_humanoid (Hair).prefab.meta @@ -9,7 +9,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Utc_sum_humanoid (Hair).prefab - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Utc_sum_humanoid (Skeleton).prefab.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Utc_sum_humanoid (Skeleton).prefab.meta index 6ba1cba69..c0bd35b3d 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Utc_sum_humanoid (Skeleton).prefab.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Utc_sum_humanoid (Skeleton).prefab.meta @@ -9,7 +9,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Utc_sum_humanoid (Skeleton).prefab - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/English/01Unity-Chan License Terms and Condition_EN_UCL2.0.pdf.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/English/01Unity-Chan License Terms and Condition_EN_UCL2.0.pdf.meta index 827400dbd..76a7679f6 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/English/01Unity-Chan License Terms and Condition_EN_UCL2.0.pdf.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/English/01Unity-Chan License Terms and Condition_EN_UCL2.0.pdf.meta @@ -9,7 +9,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/English/01Unity-Chan License Terms and Condition_EN_UCL2.0.pdf - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/English/02Unity-Chan License Terms and Condition_Summary_EN_UCL2.0.pdf.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/English/02Unity-Chan License Terms and Condition_Summary_EN_UCL2.0.pdf.meta index c33a3e18a..6c6993872 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/English/02Unity-Chan License Terms and Condition_Summary_EN_UCL2.0.pdf.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/English/02Unity-Chan License Terms and Condition_Summary_EN_UCL2.0.pdf.meta @@ -9,7 +9,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/English/02Unity-Chan License Terms and Condition_Summary_EN_UCL2.0.pdf - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/English/03Indication of License_EN_UCL2.0.pdf.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/English/03Indication of License_EN_UCL2.0.pdf.meta index 013951899..ba94be99e 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/English/03Indication of License_EN_UCL2.0.pdf.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/English/03Indication of License_EN_UCL2.0.pdf.meta @@ -9,7 +9,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/English/03Indication of License_EN_UCL2.0.pdf - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/Japanese/01Unity-Chan License Terms and Condition_JP_UCL2.0.pdf.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/Japanese/01Unity-Chan License Terms and Condition_JP_UCL2.0.pdf.meta index 7f4102d24..ce7e14609 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/Japanese/01Unity-Chan License Terms and Condition_JP_UCL2.0.pdf.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/Japanese/01Unity-Chan License Terms and Condition_JP_UCL2.0.pdf.meta @@ -9,7 +9,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/Japanese/01Unity-Chan License Terms and Condition_JP_UCL2.0.pdf - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/Japanese/02Unity-Chan License Terms and Condition_Summary_JP_UCL2.0.pdf.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/Japanese/02Unity-Chan License Terms and Condition_Summary_JP_UCL2.0.pdf.meta index 1324e856c..9a7e8e800 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/Japanese/02Unity-Chan License Terms and Condition_Summary_JP_UCL2.0.pdf.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/Japanese/02Unity-Chan License Terms and Condition_Summary_JP_UCL2.0.pdf.meta @@ -9,7 +9,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/Japanese/02Unity-Chan License Terms and Condition_Summary_JP_UCL2.0.pdf - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/Japanese/03Indication of License_JP_UCL2.0.pdf.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/Japanese/03Indication of License_JP_UCL2.0.pdf.meta index e1cb17fdb..f6c1816db 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/Japanese/03Indication of License_JP_UCL2.0.pdf.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/Japanese/03Indication of License_JP_UCL2.0.pdf.meta @@ -9,7 +9,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/Japanese/03Indication of License_JP_UCL2.0.pdf - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_LOGO_rules02.ai.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_LOGO_rules02.ai.meta index 812943fe6..7a85a3f49 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_LOGO_rules02.ai.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_LOGO_rules02.ai.meta @@ -9,7 +9,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_LOGO_rules02.ai - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_LOGO_rules02.psd.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_LOGO_rules02.psd.meta index cfed2a041..1adc96a43 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_LOGO_rules02.psd.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_LOGO_rules02.psd.meta @@ -137,7 +137,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_LOGO_rules02.psd - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_logo-guideline.pdf.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_logo-guideline.pdf.meta index 753a7327e..7ad27ab14 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_logo-guideline.pdf.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_logo-guideline.pdf.meta @@ -9,7 +9,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_logo-guideline.pdf - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_logo-guideline_en.pdf.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_logo-guideline_en.pdf.meta index 2f6af2e4d..4fda43dde 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_logo-guideline_en.pdf.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_logo-guideline_en.pdf.meta @@ -9,7 +9,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/LUUL_logo-guideline_en.pdf - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/jpg/Dark_Silhouette.jpg.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/jpg/Dark_Silhouette.jpg.meta index 3e7e15520..fd0935d2d 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/jpg/Dark_Silhouette.jpg.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/jpg/Dark_Silhouette.jpg.meta @@ -137,7 +137,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/jpg/Dark_Silhouette.jpg - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/jpg/Light_Silhouette.jpg.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/jpg/Light_Silhouette.jpg.meta index b8325902b..83c4b1e0a 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/jpg/Light_Silhouette.jpg.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/jpg/Light_Silhouette.jpg.meta @@ -137,7 +137,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/jpg/Light_Silhouette.jpg - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/png/Dark_Silhouette.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/png/Dark_Silhouette.png.meta index 37c26221d..a928fafbd 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/png/Dark_Silhouette.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/png/Dark_Silhouette.png.meta @@ -137,7 +137,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/png/Dark_Silhouette.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/png/Light_Frame.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/png/Light_Frame.png.meta index 19c7343be..1fdda5159 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/png/Light_Frame.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/png/Light_Frame.png.meta @@ -137,7 +137,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/png/Light_Frame.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/png/Light_Silhouette.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/png/Light_Silhouette.png.meta index acd9b682b..35187acbe 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/png/Light_Silhouette.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/png/Light_Silhouette.png.meta @@ -137,7 +137,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UCL2.0/License Logo/Others/png/Light_Silhouette.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/Unity-Chan License.txt.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/Unity-Chan License.txt.meta index 37ced1cf5..b0136520b 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/Unity-Chan License.txt.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/Unity-Chan License.txt.meta @@ -9,7 +9,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/Unity-Chan License.txt - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/RUN00_F.anim.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/RUN00_F.anim.meta index 51a76330e..4c697476a 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/RUN00_F.anim.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/RUN00_F.anim.meta @@ -10,6 +10,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/RUN00_F.anim - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/UC01_001_UniteInTheSky -WA-.fbx.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/UC01_001_UniteInTheSky -WA-.fbx.meta index 64afa005e..f6131ab3d 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/UC01_001_UniteInTheSky -WA-.fbx.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/UC01_001_UniteInTheSky -WA-.fbx.meta @@ -1143,7 +1143,7 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/UC01_001_UniteInTheSky -WA-.fbx - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WAIT02.anim.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WAIT02.anim.meta index 506e81e4d..199b15fdd 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WAIT02.anim.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WAIT02.anim.meta @@ -10,6 +10,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WAIT02.anim - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WAIT04.anim.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WAIT04.anim.meta index e3f7b9b3b..d251766b4 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WAIT04.anim.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WAIT04.anim.meta @@ -10,6 +10,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WAIT04.anim - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WALK00_F.anim.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WALK00_F.anim.meta index 937146ae7..55f178084 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WALK00_F.anim.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WALK00_F.anim.meta @@ -10,6 +10,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WALK00_F.anim - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WIN00.anim.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WIN00.anim.meta index d8bcb87ba..8ebcfb75a 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WIN00.anim.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WIN00.anim.meta @@ -10,6 +10,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Animation/WIN00.anim - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Albedo.mat.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Albedo.mat.meta index bd95769da..2a49444ab 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Albedo.mat.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Albedo.mat.meta @@ -10,6 +10,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Albedo.mat - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Base.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Base.png.meta index d2564dfcc..2ec0b2354 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Base.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Base.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Base.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Emi.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Emi.png.meta index e3b890b29..069a3a20d 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Emi.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Emi.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Emi.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_SGM.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_SGM.png.meta index 0d9aa3742..aa291edf9 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_SGM.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_SGM.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_SGM.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Shd1.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Shd1.png.meta index dd626f585..0e0bcc37b 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Shd1.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Shd1.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Shd1.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Shd2.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Shd2.png.meta index 5f70fbfb1..1d605d370 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Shd2.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Shd2.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Shd2.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Spc.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Spc.png.meta index c982588c8..5863c6bd5 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Spc.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Spc.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Body_Spc.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Base.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Base.png.meta index 53785957c..ed916c4a7 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Base.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Base.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Base.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Emi.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Emi.png.meta index b32d2ea8e..219fab282 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Emi.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Emi.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Emi.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_LSM.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_LSM.png.meta index 5d7e570f2..24bbf5df9 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_LSM.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_LSM.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_LSM.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Rim.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Rim.png.meta index 3327fcb3f..c0fc3871e 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Rim.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Rim.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Rim.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_SGM.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_SGM.png.meta index 11406a71c..cda2b8d00 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_SGM.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_SGM.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_SGM.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Shd1.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Shd1.png.meta index efce9a595..135bd0eb2 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Shd1.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Shd1.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Shd1.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Shd2.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Shd2.png.meta index 4c4c044dc..7fe1223fe 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Shd2.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Shd2.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Face_Shd2.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Hair_SGM.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Hair_SGM.png.meta index 520c17ffe..dced61065 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Hair_SGM.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Hair_SGM.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Hair_SGM.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Headfgear_Base.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Headfgear_Base.png.meta index 604c172e6..6c75cf226 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Headfgear_Base.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Headfgear_Base.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Headfgear_Base.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Base.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Base.png.meta index 17300872a..95e6872db 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Base.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Base.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Base.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Emi.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Emi.png.meta index 2b0106797..6d671a8c7 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Emi.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Emi.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Emi.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Nrm.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Nrm.png.meta index baab0a9c9..defb0c299 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Nrm.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Nrm.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Nrm.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Rim.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Rim.png.meta index e1bf0e1b0..be551af61 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Rim.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Rim.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Rim.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_SGM.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_SGM.png.meta index d0a5cec0e..bb4f019a1 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_SGM.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_SGM.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_SGM.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Spc.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Spc.png.meta index 23307e659..b02c42987 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Spc.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Spc.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_Spc.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_SpcCol.png.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_SpcCol.png.meta index bd908b681..5ab654a21 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_SpcCol.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_SpcCol.png.meta @@ -142,6 +142,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/TEX/PNG/Skin_SpcCol.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/UniteInTheSky.controller.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/UniteInTheSky.controller.meta index 5c2c0418b..f3443a7a1 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/UniteInTheSky.controller.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/UniteInTheSky.controller.meta @@ -10,6 +10,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/UniteInTheSky.controller - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/UnityCHanKAGURA.fbx.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/UnityCHanKAGURA.fbx.meta index a7353f1dd..79100079c 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/UnityCHanKAGURA.fbx.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/UnityCHanKAGURA.fbx.meta @@ -2261,6 +2261,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/UnityCHanKAGURA.fbx - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/UnityCHanKAGURA_MC2.prefab.meta b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/UnityCHanKAGURA_MC2.prefab.meta index 1b54d1f1f..47c5d8876 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/UnityCHanKAGURA_MC2.prefab.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/UnityCHanKAGURA_MC2.prefab.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/UnityCHanKAGURA_MC2.prefab - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/MagicaCloth2.asmdef.meta b/Assets/OtherPlugins/MagicaCloth2/MagicaCloth2.asmdef.meta index 968f93211..437002344 100644 --- a/Assets/OtherPlugins/MagicaCloth2/MagicaCloth2.asmdef.meta +++ b/Assets/OtherPlugins/MagicaCloth2/MagicaCloth2.asmdef.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/MagicaCloth2.asmdef - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Readme.txt.meta b/Assets/OtherPlugins/MagicaCloth2/Readme.txt.meta index 3880274ee..23608a569 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Readme.txt.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Readme.txt.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Readme.txt - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Readme_jpn.txt.meta b/Assets/OtherPlugins/MagicaCloth2/Readme_jpn.txt.meta index a4462f1d0..774de6a51 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Readme_jpn.txt.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Readme_jpn.txt.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Readme_jpn.txt - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-cloth.png.meta b/Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-cloth.png.meta index 4fe8d3392..f926dd07f 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-cloth.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-cloth.png.meta @@ -126,6 +126,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-cloth.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-collider.png.meta b/Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-collider.png.meta index c576cb925..06c94a5ad 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-collider.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-collider.png.meta @@ -138,6 +138,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-collider.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-settings.png.meta b/Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-settings.png.meta index 050f27b52..34edc79df 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-settings.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-settings.png.meta @@ -137,6 +137,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-settings.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-wind.png.meta b/Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-wind.png.meta index 7b5906d20..d40b02951 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-wind.png.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-wind.png.meta @@ -137,6 +137,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Res/Icon/icon-wind.png - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Accessory.json.meta b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Accessory.json.meta index 410cdb70c..6a350536e 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Accessory.json.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Accessory.json.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Accessory.json - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Cape.json.meta b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Cape.json.meta index c1892f476..6a6540a98 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Cape.json.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Cape.json.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Cape.json - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_FrontHair.json.meta b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_FrontHair.json.meta index dfdd5ec74..cafc434d6 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_FrontHair.json.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_FrontHair.json.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_FrontHair.json - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_HardSpring.json.meta b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_HardSpring.json.meta index a61f38561..ac7e52ece 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_HardSpring.json.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_HardSpring.json.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_HardSpring.json - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_LongHair.json.meta b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_LongHair.json.meta index da72b8b23..d84114500 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_LongHair.json.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_LongHair.json.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_LongHair.json - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_MiddleSpring.json.meta b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_MiddleSpring.json.meta index 63440fb3d..284ab8cd7 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_MiddleSpring.json.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_MiddleSpring.json.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_MiddleSpring.json - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_ShortHair.json.meta b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_ShortHair.json.meta index c99f51bb5..a447294fd 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_ShortHair.json.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_ShortHair.json.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_ShortHair.json - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Skirt.json.meta b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Skirt.json.meta index 5da95fd43..d08620f0c 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Skirt.json.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Skirt.json.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Skirt.json - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_SoftSkirt.json.meta b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_SoftSkirt.json.meta index 41708d3e1..88c424b02 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_SoftSkirt.json.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_SoftSkirt.json.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_SoftSkirt.json - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_SoftSpring.json.meta b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_SoftSpring.json.meta index c9706af4b..282fe17b1 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_SoftSpring.json.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_SoftSpring.json.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_SoftSpring.json - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Tail.json.meta b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Tail.json.meta index 375d020bf..fb0990563 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Tail.json.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Tail.json.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Res/Preset/MC2_Preset_Tail.json - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CheckSliderSerializeData.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CheckSliderSerializeData.cs.meta index 148257bad..816f03258 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CheckSliderSerializeData.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CheckSliderSerializeData.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CheckSliderSerializeData.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothBehaviour.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothBehaviour.cs.meta index 30fa2c448..38b7322c8 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothBehaviour.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothBehaviour.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothBehaviour.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothDisableMode.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothDisableMode.cs new file mode 100644 index 000000000..a41135ba6 --- /dev/null +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothDisableMode.cs @@ -0,0 +1,22 @@ +// Magica Cloth 2. +// Copyright (c) 2026 MagicaSoft. +// https://magicasoft.jp + +namespace MagicaCloth2 +{ + /// + /// Simulation Disable Mode + /// + public enum ClothDisableMode + { + /// + /// Reset the simulation. + /// + Reset = 0, + + /// + /// Maintain the simulation. + /// + Keep = 1, + } +} diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/Knob.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothDisableMode.cs.meta similarity index 52% rename from Assets/OtherPlugins/Le Tai's Asset/Common/Editor/Knob.cs.meta rename to Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothDisableMode.cs.meta index 560a0b5fb..5d60b7ad6 100644 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/Knob.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothDisableMode.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8785778a8d728904589c40f715ae793d +guid: b7f7df74e3431e84199fe50874a58668 MonoImporter: externalObjects: {} serializedVersion: 2 @@ -11,8 +11,8 @@ MonoImporter: assetBundleVariant: AssetOrigin: serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/Common/Editor/Knob.cs - uploadId: 824068 + productId: 242307 + packageName: Magica Cloth 2 + packageVersion: 2.18.1 + assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothDisableMode.cs + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothForceMode.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothForceMode.cs.meta index 650dfacb0..17049156f 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothForceMode.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothForceMode.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothForceMode.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothInitSerializeData.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothInitSerializeData.cs index 7e3e4ab40..a4a3b465d 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothInitSerializeData.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothInitSerializeData.cs @@ -167,7 +167,7 @@ namespace MagicaCloth2 clothSetupDataList?.ForEach(x => x.GetUsedTransform(transformSet)); } - public void ReplaceTransform(Dictionary replaceDict) + public void ReplaceTransform(Dictionary replaceDict) { clothTransformRecord?.ReplaceTransform(replaceDict); normalAdjustmentTransformRecord?.ReplaceTransform(replaceDict); diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothInitSerializeData.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothInitSerializeData.cs.meta index 5609d3701..81039230f 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothInitSerializeData.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothInitSerializeData.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothInitSerializeData.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothMeshWriteMode.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothMeshWriteMode.cs.meta index 3d5e946c3..977825af2 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothMeshWriteMode.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothMeshWriteMode.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothMeshWriteMode.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothNormalAxis.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothNormalAxis.cs.meta index 652221aa6..9f1309f1a 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothNormalAxis.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothNormalAxis.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothNormalAxis.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothParameters.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothParameters.cs.meta index 4803a51a3..252352050 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothParameters.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothParameters.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothParameters.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcess.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcess.cs index 106aee893..389388b8f 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcess.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcess.cs @@ -170,8 +170,8 @@ namespace MagicaCloth2 // 初期化データの参照 RenderSetupSerializeData initSetupData = useInitData ? sdata2.initData.clothSetupDataList[i] : null; - int handle = AddRenderer(ren, setup, uniquePreBuildSetupData, initSetupData); - if (handle == 0) + MagicaObjectId handle = AddRenderer(ren, setup, uniquePreBuildSetupData, initSetupData); + if (handle.IsValid() == false) { result.SetError(Define.Result.ClothInit_FailedAddRenderer); throw new OperationCanceledException(); @@ -221,7 +221,7 @@ namespace MagicaCloth2 if (syncPartnerCloth) { // partner - MagicaManager.Team.comp2SyncPartnerCompMap.Add(cloth.GetInstanceID(), syncPartnerCloth.GetInstanceID()); + MagicaManager.Team.comp2SyncPartnerCompMap.Add(cloth.GetMagicaId(), syncPartnerCloth.GetMagicaId()); // top // デッドロック対策 @@ -237,7 +237,7 @@ namespace MagicaCloth2 } Debug.Assert(c); SyncTopCloth = c; - MagicaManager.Team.comp2SyncTopCompMap.Add(cloth.GetInstanceID(), SyncTopCloth.GetInstanceID()); + MagicaManager.Team.comp2SyncTopCompMap.Add(cloth.GetMagicaId(), SyncTopCloth.GetMagicaId()); } result.SetSuccess(); @@ -275,7 +275,7 @@ namespace MagicaCloth2 /// /// /// レンダー情報ハンドル - int AddRenderer( + MagicaObjectId AddRenderer( Renderer ren, RenderSetupData referenceSetupData, RenderSetupData.UniqueSerializationData referenceUniqueSetupData, @@ -283,16 +283,16 @@ namespace MagicaCloth2 ) { if (ren == null) - return 0; + return MagicaObjectId.Invalid; if (renderHandleList == null) - return 0; + return MagicaObjectId.Invalid; - int handle = ren.GetInstanceID(); + MagicaObjectId handle = ren.GetMagicaId(); if (renderHandleList.Contains(handle) == false) { // レンダラーの利用開始 handle = MagicaManager.Render.AddRenderer(ren, referenceSetupData, referenceUniqueSetupData, referenceInitSetupData); - if (handle != 0) + if (handle.IsValid()) { lock (lockObject) { @@ -365,12 +365,12 @@ namespace MagicaCloth2 SetState(State_Enable, now); // チーム - MagicaManager.Team.SetEnable(TeamId, now); + MagicaManager.Team.SetEnable(this, TeamId, now); // レンダラー if (renderHandleList != null) { - foreach (int renderHandle in renderHandleList) + foreach (MagicaObjectId renderHandle in renderHandleList) { if (now) MagicaManager.Render.StartUse(this, renderHandle); @@ -514,7 +514,7 @@ namespace MagicaCloth2 result.SetError(Define.Result.CreateCloth_VertexAttributeListIsNull); throw new MagicaClothProcessingException(); } - int renderHandle = renderHandleList[i]; + MagicaObjectId renderHandle = renderHandleList[i]; var renderData = MagicaManager.Render.GetRendererData(renderHandle); if (renderData.setupData.vertexCount != vertexAttributeArray.Length) { @@ -550,15 +550,15 @@ namespace MagicaCloth2 SelectionData selectionData = (usePaintMap || useManualVertexAttribute) ? new SelectionData() : sdata2.selectionData.Clone(); // BoneCloth/BoneSpringでシリアライズ2にTransformと属性辞書がある場合はIDと属性の辞書に変換(スレッドではアクセスできないため) - Dictionary boneAttributeDict = null; + Dictionary boneAttributeDict = null; if (sdata2.boneAttributeDict.Count > 0) { - boneAttributeDict = new Dictionary(sdata2.boneAttributeDict.Count); + boneAttributeDict = new Dictionary(sdata2.boneAttributeDict.Count); foreach (var kv in sdata2.boneAttributeDict) { if (kv.Key) { - boneAttributeDict.Add(kv.Key.GetInstanceID(), kv.Value); + boneAttributeDict.Add(kv.Key.GetMagicaId(), kv.Value); } } } @@ -575,7 +575,7 @@ namespace MagicaCloth2 ct.ThrowIfCancellationRequested(); proxyMesh = new VirtualMesh("Proxy"); proxyMesh.result.SetProcess(); - List copyRenderHandleList = null; + List copyRenderHandleList = null; if (clothType == ClothType.MeshCloth) { // MeshClothではクロストランスフォームを追加しておく @@ -583,7 +583,7 @@ namespace MagicaCloth2 lock (lockObject) { - copyRenderHandleList = new List(renderHandleList); + copyRenderHandleList = new List(renderHandleList); } } @@ -606,7 +606,7 @@ namespace MagicaCloth2 { ct.ThrowIfCancellationRequested(); - int renderHandle = copyRenderHandleList[i]; + MagicaObjectId renderHandle = copyRenderHandleList[i]; // レンダーメッシュ作成 var renderData = MagicaManager.Render.GetRendererData(renderHandle); @@ -719,7 +719,7 @@ namespace MagicaCloth2 selectionData.Fill(VertexAttribute.Move); // 次にルートのみ固定 - foreach (int id in boneClothSetupData.rootTransformIdList) + foreach (MagicaObjectId id in boneClothSetupData.rootTransformIdList) { int rootIndex = boneClothSetupData.GetTransformIndexFromId(id); selectionData.attributes[rootIndex] = VertexAttribute.Fixed; @@ -1476,7 +1476,7 @@ namespace MagicaCloth2 renderMeshContainerList[i] = null; // レンダーハンドル - int renderHandle = renderHandleList[i]; + MagicaObjectId renderHandle = renderHandleList[i]; var renderData = MagicaManager.Render.GetRendererData(renderHandle); // MappingMesh登録 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcess.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcess.cs.meta index a8165d076..82f552e0e 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcess.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcess.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcess.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcessData.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcessData.cs index 20cc15227..eb6a22391 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcessData.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcessData.cs @@ -57,7 +57,7 @@ namespace MagicaCloth2 /// レンダー情報へのハンドル /// (レンダラーのセットアップデータ) /// - internal List renderHandleList = new List(); + internal List renderHandleList = new List(); /// /// BoneClothのセットアップデータ @@ -69,7 +69,7 @@ namespace MagicaCloth2 /// public class RenderMeshInfo { - public int renderHandle; + public MagicaObjectId renderHandle; public VirtualMeshContainer renderMeshContainer; public DataChunk mappingChunk; //public DataChunk renderMeshPositionAndNormalChunk; @@ -187,12 +187,12 @@ namespace MagicaCloth2 /// /// 現在アンカーとして設定されているTransformのインスタンスID /// - internal int anchorTransformId = 0; + internal MagicaObjectId anchorTransformId = MagicaObjectId.Invalid; /// /// 現在距離カリングの参照として設定されているオブジェクトのインスタンスID /// - internal int distanceReferenceObjectId = 0; + internal MagicaObjectId distanceReferenceObjectId = MagicaObjectId.Invalid; /// /// コンポーネントの登録TransformIndex @@ -341,7 +341,7 @@ namespace MagicaCloth2 renderMeshInfoList = null; // レンダーデータの利用終了 - foreach (int renderHandle in renderHandleList) + foreach (MagicaObjectId renderHandle in renderHandleList) { MagicaManager.Render?.RemoveRenderer(renderHandle); } @@ -366,7 +366,7 @@ namespace MagicaCloth2 // 作業バッファ破棄 SyncTopCloth = null; - int compId = cloth.GetInstanceID(); + MagicaObjectId compId = cloth.GetMagicaId(); MagicaManager.Team?.comp2SuspendCounterMap.Remove(compId); MagicaManager.Team?.comp2TeamIdMap.Remove(compId); MagicaManager.Team?.comp2SyncPartnerCompMap.Remove(compId); @@ -385,7 +385,7 @@ namespace MagicaCloth2 { //suspendCounter++; var tm = MagicaManager.Team; - int compId = cloth.GetInstanceID(); + MagicaObjectId compId = cloth.GetMagicaId(); if (tm.comp2SuspendCounterMap.TryGetValue(compId, out int cnt)) { cnt++; @@ -400,12 +400,11 @@ namespace MagicaCloth2 { //suspendCounter--; var tm = MagicaManager.Team; - int compId = cloth.GetInstanceID(); + MagicaObjectId compId = cloth.GetMagicaId(); if (tm.comp2SuspendCounterMap.TryGetValue(compId, out int cnt)) { cnt--; if (cnt > 0) - //tm.comp2SuspendCounterMap.Add(compId, cnt); tm.comp2SuspendCounterMap[compId] = cnt; else tm.comp2SuspendCounterMap.Remove(compId); @@ -416,7 +415,7 @@ namespace MagicaCloth2 { //return suspendCounter; var tm = MagicaManager.Team; - int compId = cloth.GetInstanceID(); + MagicaObjectId compId = cloth.GetMagicaId(); if (tm.comp2SuspendCounterMap.TryGetValue(compId, out int cnt)) return cnt; else @@ -451,7 +450,7 @@ namespace MagicaCloth2 transformSet.Remove(null); } - public void ReplaceTransform(Dictionary replaceDict) + public void ReplaceTransform(Dictionary replaceDict) { cloth.SerializeData.ReplaceTransform(replaceDict); cloth.serializeData2.ReplaceTransform(replaceDict); diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcessData.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcessData.cs.meta index 29ae62d6b..1bad2c5d8 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcessData.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcessData.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcessData.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcessGeneration.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcessGeneration.cs index 0d69d07da..6533e44c0 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcessGeneration.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcessGeneration.cs @@ -106,7 +106,7 @@ namespace MagicaCloth2 { if (rt) { - int index = setupData.GetTransformIndexFromId(rt.GetInstanceID()); + int index = setupData.GetTransformIndexFromId(rt.GetMagicaId()); selectionData.attributes[index] = VertexAttribute.Fixed; } } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcessGeneration.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcessGeneration.cs.meta index ed2590613..48481d164 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcessGeneration.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcessGeneration.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothProcessGeneration.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeData.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeData.cs index 209cb6727..1d8cf9ad1 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeData.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeData.cs @@ -109,6 +109,14 @@ namespace MagicaCloth2 /// public ClothUpdateMode updateMode = ClothUpdateMode.AnimatorLinkage; + /// + /// Set the disable mode. + /// Component inactive behavior. + /// [OK] Runtime changes. + /// [NG] Export/Import with Presets + /// + public ClothDisableMode disableMode = ClothDisableMode.Reset; + /// /// Blend ratio between initial pose and animation pose. /// [OK] Runtime changes. diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeData.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeData.cs.meta index 47d6b0ebb..a6649160c 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeData.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeData.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeData.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeData2.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeData2.cs index fda9bd42f..9fec43e09 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeData2.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeData2.cs @@ -85,7 +85,7 @@ namespace MagicaCloth2 preBuildData.GetUsedTransform(transformSet); } - public void ReplaceTransform(Dictionary replaceDict) + public void ReplaceTransform(Dictionary replaceDict) { initData.ReplaceTransform(replaceDict); preBuildData.ReplaceTransform(replaceDict); diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeData2.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeData2.cs.meta index 025cd430c..e6bff684c 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeData2.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeData2.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeData2.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeDataFunction.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeDataFunction.cs index 289622191..14484f5e7 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeDataFunction.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeDataFunction.cs @@ -122,7 +122,7 @@ namespace MagicaCloth2 int hash = 0; hash += (int)clothType; foreach (var ren in sourceRenderers) - hash += ren != null ? ren.GetInstanceID() : NullHash; + hash += ren != null ? ren.GetMagicaId().GetHashCode() : NullHash; foreach (var t in rootBones) { var stack = new Stack(30); @@ -135,7 +135,7 @@ namespace MagicaCloth2 hash += NullHash; continue; } - hash += t2.GetInstanceID(); + hash += t2.GetMagicaId().GetHashCode(); hash += t2.localPosition.GetHashCode(); hash += t2.localRotation.GetHashCode(); int cnt = t2.childCount; @@ -153,7 +153,7 @@ namespace MagicaCloth2 { if (map) { - hash += map.GetInstanceID(); + hash += map.GetMagicaId().GetHashCode(); hash += map.isReadable ? 1 : 0; } } @@ -213,6 +213,7 @@ namespace MagicaCloth2 float rotationalInterpolation; float rootRotation; ClothUpdateMode updateMode; + ClothDisableMode disableMode; float animationPoseRatio; ReductionSettings reductionSetting; CustomSkinningSettings customSkinningSetting; @@ -245,6 +246,7 @@ namespace MagicaCloth2 rotationalInterpolation = sdata.rotationalInterpolation; rootRotation = sdata.rootRotation; updateMode = sdata.updateMode; + disableMode = sdata.disableMode; animationPoseRatio = sdata.animationPoseRatio; reductionSetting = sdata.reductionSetting.Clone(); customSkinningSetting = sdata.customSkinningSetting.Clone(); @@ -273,6 +275,7 @@ namespace MagicaCloth2 sdata.rotationalInterpolation = rotationalInterpolation; sdata.rootRotation = rootRotation; sdata.updateMode = updateMode; + sdata.disableMode = disableMode; sdata.animationPoseRatio = animationPoseRatio; sdata.reductionSetting = reductionSetting; sdata.customSkinningSetting = customSkinningSetting; @@ -354,6 +357,7 @@ namespace MagicaCloth2 rotationalInterpolation = sdata.rotationalInterpolation; rootRotation = sdata.rootRotation; updateMode = sdata.updateMode; + disableMode = sdata.disableMode; animationPoseRatio = sdata.animationPoseRatio; reductionSetting = sdata.reductionSetting.Clone(); customSkinningSetting = sdata.customSkinningSetting.Clone(); @@ -408,14 +412,14 @@ namespace MagicaCloth2 colliderCollisionConstraint.GetUsedTransform(transformSet); } - public void ReplaceTransform(Dictionary replaceDict) + public void ReplaceTransform(Dictionary replaceDict) { for (int i = 0; i < rootBones.Count; i++) { var t = rootBones[i]; - if (t && replaceDict.ContainsKey(t.GetInstanceID())) + if (t && replaceDict.ContainsKey(t.GetMagicaId())) { - rootBones[i] = replaceDict[t.GetInstanceID()]; + rootBones[i] = replaceDict[t.GetMagicaId()]; } } customSkinningSetting.ReplaceTransform(replaceDict); diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeDataFunction.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeDataFunction.cs.meta index 617b1b175..0fa1f81e3 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeDataFunction.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeDataFunction.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothSerializeDataFunction.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothUpdateMode.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothUpdateMode.cs.meta index 1f565160a..5adcfca43 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothUpdateMode.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothUpdateMode.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/ClothUpdateMode.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/ColliderComponent.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/ColliderComponent.cs index 927ec2b4a..6a70d2c80 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/ColliderComponent.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/ColliderComponent.cs @@ -378,12 +378,12 @@ namespace MagicaCloth2 transformSet.Add(symmetryTarget); } - public void ReplaceTransform(Dictionary replaceDict) + public void ReplaceTransform(Dictionary replaceDict) { if (symmetryTarget) { - int id = symmetryTarget.GetInstanceID(); - if (id != 0 && replaceDict.ContainsKey(id)) + MagicaObjectId id = symmetryTarget.GetMagicaId(); + if (id.IsValid() && replaceDict.ContainsKey(id)) symmetryTarget = replaceDict[id]; } } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/ColliderComponent.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/ColliderComponent.cs.meta index 1e0e0c37b..d388086db 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/ColliderComponent.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/ColliderComponent.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/ColliderComponent.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/ColliderSymmetryMode.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/ColliderSymmetryMode.cs.meta index 516fb6857..333b5a61a 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/ColliderSymmetryMode.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/ColliderSymmetryMode.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/ColliderSymmetryMode.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/MagicaCapsuleCollider.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/MagicaCapsuleCollider.cs.meta index b7968b042..dad17aa8d 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/MagicaCapsuleCollider.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/MagicaCapsuleCollider.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/MagicaCapsuleCollider.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/MagicaPlaneCollider.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/MagicaPlaneCollider.cs.meta index 6444e33ca..7cd5fe9ac 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/MagicaPlaneCollider.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/MagicaPlaneCollider.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/MagicaPlaneCollider.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/MagicaSphereCollider.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/MagicaSphereCollider.cs.meta index 6359c6920..cc66bd6f5 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/MagicaSphereCollider.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/MagicaSphereCollider.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Collider/MagicaSphereCollider.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/AngleConstraint.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/AngleConstraint.cs.meta index 9ec7cb838..4e77791f8 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/AngleConstraint.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/AngleConstraint.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/AngleConstraint.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/ColliderCollisionConstraint.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/ColliderCollisionConstraint.cs index 2afc02a27..8850b3eae 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/ColliderCollisionConstraint.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/ColliderCollisionConstraint.cs @@ -103,7 +103,7 @@ namespace MagicaCloth2 foreach (var t in collisionBones) { if (t) - hash += t.GetInstanceID(); + hash += t.GetMagicaId().GetHashCode(); } return hash; @@ -123,7 +123,7 @@ namespace MagicaCloth2 } } - public void ReplaceTransform(Dictionary replaceDict) + public void ReplaceTransform(Dictionary replaceDict) { colliderList.ForEach(x => { @@ -133,9 +133,9 @@ namespace MagicaCloth2 for (int i = 0; i < collisionBones.Count; i++) { var t = collisionBones[i]; - if (t && replaceDict.ContainsKey(t.GetInstanceID())) + if (t && replaceDict.ContainsKey(t.GetMagicaId())) { - collisionBones[i] = replaceDict[t.GetInstanceID()]; + collisionBones[i] = replaceDict[t.GetMagicaId()]; } } } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/ColliderCollisionConstraint.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/ColliderCollisionConstraint.cs.meta index c15de82cd..1d0efd8cd 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/ColliderCollisionConstraint.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/ColliderCollisionConstraint.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/ColliderCollisionConstraint.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/DistanceConstraint.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/DistanceConstraint.cs.meta index d027e8627..ee56a89d1 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/DistanceConstraint.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/DistanceConstraint.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/DistanceConstraint.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/InertiaConstraint.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/InertiaConstraint.cs.meta index 530b25628..5c12762f7 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/InertiaConstraint.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/InertiaConstraint.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/InertiaConstraint.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/MotionConstraint.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/MotionConstraint.cs.meta index 3b6e190f4..5ef8f0b26 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/MotionConstraint.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/MotionConstraint.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/MotionConstraint.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/SelfCollisionConstraint.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/SelfCollisionConstraint.cs.meta index dda1e9adc..302382540 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/SelfCollisionConstraint.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/SelfCollisionConstraint.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/SelfCollisionConstraint.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/SpringConstraint.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/SpringConstraint.cs.meta index 3facfff3c..2662b4fa7 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/SpringConstraint.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/SpringConstraint.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/SpringConstraint.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/TetherConstraint.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/TetherConstraint.cs.meta index 283e1fa01..7abb9bb06 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/TetherConstraint.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/TetherConstraint.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/TetherConstraint.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/TriangleBendingConstraint.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/TriangleBendingConstraint.cs.meta index 2bcf0a12b..e13691fe1 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/TriangleBendingConstraint.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/TriangleBendingConstraint.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Constraints/TriangleBendingConstraint.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CullingSettings.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CullingSettings.cs.meta index 2bc1f2bb5..563ccaffa 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CullingSettings.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CullingSettings.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CullingSettings.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CurveSerializeData.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CurveSerializeData.cs.meta index ad8933078..73eea6d0c 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CurveSerializeData.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CurveSerializeData.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CurveSerializeData.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CustomSkinningSettings.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CustomSkinningSettings.cs index 347d00d3e..3cec209ce 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CustomSkinningSettings.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CustomSkinningSettings.cs @@ -85,14 +85,14 @@ namespace MagicaCloth2 } } - public void ReplaceTransform(Dictionary replaceDict) + public void ReplaceTransform(Dictionary replaceDict) { for (int i = 0; i < skinningBones.Count; i++) { var t = skinningBones[i]; - if (t && replaceDict.ContainsKey(t.GetInstanceID())) + if (t && replaceDict.ContainsKey(t.GetMagicaId())) { - skinningBones[i] = replaceDict[t.GetInstanceID()]; + skinningBones[i] = replaceDict[t.GetMagicaId()]; } } } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CustomSkinningSettings.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CustomSkinningSettings.cs.meta index 55053fcc3..48645f47c 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CustomSkinningSettings.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CustomSkinningSettings.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/CustomSkinningSettings.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/GizmoSerializeData.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/GizmoSerializeData.cs.meta index 0976944e9..6d4c639d1 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/GizmoSerializeData.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/GizmoSerializeData.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/GizmoSerializeData.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaCloth.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaCloth.cs index e5ceef752..4ad84f26a 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaCloth.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaCloth.cs @@ -135,7 +135,7 @@ namespace MagicaCloth2 public override int GetMagicaHashCode() { int hash = SerializeData.GetHashCode() + serializeData2.GetHashCode(); - hash += isActiveAndEnabled ? GetInstanceID() : 0; // component active. + hash += isActiveAndEnabled ? this.GetMagicaId().GetHashCode() : 0; // component active. return hash; } } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaCloth.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaCloth.cs.meta index 02b57ea09..f56a05a5a 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaCloth.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaCloth.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaCloth.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaClothAPI.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaClothAPI.cs index ca5fe6b5e..1ccaebb75 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaClothAPI.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaClothAPI.cs @@ -159,12 +159,12 @@ namespace MagicaCloth2 // 置換処理用の辞書を作成 // key:置換対象トランスフォームのインスタンスID // value:入れ替えるトランスフォーム - var replaceDict = new Dictionary(); + var replaceDict = new Dictionary(); foreach (var t in useTransformSet) { if (t && targetTransformDict.ContainsKey(t.name)) { - replaceDict.Add(t.GetInstanceID(), targetTransformDict[t.name]); + replaceDict.Add(t.GetMagicaId(), targetTransformDict[t.name]); } } @@ -307,7 +307,7 @@ namespace MagicaCloth2 { if (IsValid() == false || ren == null) return null; - int handle = ren.GetInstanceID(); + MagicaObjectId handle = ren.GetMagicaId(); return MagicaManager.Render.GetRendererData(handle); } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaClothAPI.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaClothAPI.cs.meta index 7e0527836..7dc456e8a 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaClothAPI.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaClothAPI.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaClothAPI.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaClothAnimationProperty.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaClothAnimationProperty.cs.meta index 956c14f64..f3779c8e6 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaClothAnimationProperty.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaClothAnimationProperty.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/MagicaClothAnimationProperty.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/NormalAlignmentSettings.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/NormalAlignmentSettings.cs index d0c35e103..bef9e8d6d 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/NormalAlignmentSettings.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/NormalAlignmentSettings.cs @@ -83,7 +83,7 @@ namespace MagicaCloth2 hash += (int)alignmentMode * 105; if (adjustmentTransform) { - hash += adjustmentTransform.GetInstanceID(); + hash += adjustmentTransform.GetMagicaId().GetHashCode(); hash += adjustmentTransform.position.GetHashCode(); } @@ -96,11 +96,11 @@ namespace MagicaCloth2 transformSet.Add(adjustmentTransform); } - public void ReplaceTransform(Dictionary replaceDict) + public void ReplaceTransform(Dictionary replaceDict) { - if (adjustmentTransform && replaceDict.ContainsKey(adjustmentTransform.GetInstanceID())) + if (adjustmentTransform && replaceDict.ContainsKey(adjustmentTransform.GetMagicaId())) { - adjustmentTransform = replaceDict[adjustmentTransform.GetInstanceID()]; + adjustmentTransform = replaceDict[adjustmentTransform.GetMagicaId()]; } } } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/NormalAlignmentSettings.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/NormalAlignmentSettings.cs.meta index 24abe6e85..92c0db3cd 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/NormalAlignmentSettings.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/NormalAlignmentSettings.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/NormalAlignmentSettings.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/SelectionData.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/SelectionData.cs.meta index 6f80b50c7..33edaca2b 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/SelectionData.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/SelectionData.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/SelectionData.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Wind/MagicaWindZone.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Wind/MagicaWindZone.cs.meta index ddecfe88d..1a50165c4 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Wind/MagicaWindZone.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Wind/MagicaWindZone.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Wind/MagicaWindZone.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Wind/WindParams.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Wind/WindParams.cs.meta index 5f5c23b20..8a5e35ab8 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Wind/WindParams.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Wind/WindParams.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Wind/WindParams.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Wind/WindSettings.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Wind/WindSettings.cs.meta index 8ec17c928..182a702c1 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Wind/WindSettings.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Wind/WindSettings.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Cloth/Wind/WindSettings.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Define/ResultDefine.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Define/ResultDefine.cs.meta index 5b77a44ad..1c35e0305 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Define/ResultDefine.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Define/ResultDefine.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Define/ResultDefine.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Define/SystemDefine.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Define/SystemDefine.cs.meta index 1693d13af..77ce58d61 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Define/SystemDefine.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Define/SystemDefine.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Define/SystemDefine.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/ICount.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/ICount.cs.meta index 0f5af9ed5..4287697ee 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/ICount.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/ICount.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/ICount.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/IDataValidate.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/IDataValidate.cs.meta index 3a1418bfb..eade0a8b1 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/IDataValidate.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/IDataValidate.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/IDataValidate.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/ITransform.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/ITransform.cs index e41bfe686..44d55c953 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/ITransform.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/ITransform.cs @@ -20,6 +20,6 @@ namespace MagicaCloth2 /// value:入れ替えるトランスフォーム /// /// - void ReplaceTransform(Dictionary replaceDict); + void ReplaceTransform(Dictionary replaceDict); } } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/ITransform.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/ITransform.cs.meta index ef067aedd..c692e2c3f 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/ITransform.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/ITransform.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/ITransform.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/IValid.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/IValid.cs.meta index 8cce09719..bc4ab7477 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/IValid.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/IValid.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Interface/IValid.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Cloth/ClothManager.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Cloth/ClothManager.cs index 26856b2f6..ae39b2328 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Cloth/ClothManager.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Cloth/ClothManager.cs @@ -24,8 +24,8 @@ namespace MagicaCloth2 internal HashSet meshClothSet = new HashSet(); //========================================================================================= - Dictionary animatorVisibleDict = new Dictionary(30); - Dictionary rendererVisibleDict = new Dictionary(100); + Dictionary animatorVisibleDict = new Dictionary(30); + Dictionary rendererVisibleDict = new Dictionary(100); //========================================================================================= /// @@ -121,7 +121,7 @@ namespace MagicaCloth2 } // チームマネージャの作業バッファへ登録 - MagicaManager.Team.comp2TeamIdMap.Add(cprocess.cloth.GetInstanceID(), teamId); + MagicaManager.Team.comp2TeamIdMap.Add(cprocess.cloth.GetMagicaId(), teamId); return teamId; } @@ -290,7 +290,7 @@ namespace MagicaCloth2 { if (ani) { - int id = ani.GetInstanceID(); + MagicaObjectId id = ani.GetMagicaId(); if (animatorVisibleDict.ContainsKey(id)) return animatorVisibleDict[id]; @@ -311,7 +311,7 @@ namespace MagicaCloth2 if (ren) { bool visible; - int id = ren.GetInstanceID(); + MagicaObjectId id = ren.GetMagicaId(); if (rendererVisibleDict.ContainsKey(id)) { visible = rendererVisibleDict[id]; diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Cloth/ClothManager.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Cloth/ClothManager.cs.meta index f19b94753..eb4c7ce84 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Cloth/ClothManager.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Cloth/ClothManager.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Cloth/ClothManager.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Cloth/PreBuildManager.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Cloth/PreBuildManager.cs.meta index 3b4af2e22..542b131d6 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Cloth/PreBuildManager.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Cloth/PreBuildManager.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Cloth/PreBuildManager.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/IManager.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/IManager.cs.meta index 548f82830..56b5a6512 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/IManager.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/IManager.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/IManager.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/MagicaManager.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/MagicaManager.cs.meta index e34358fdd..58888e37b 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/MagicaManager.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/MagicaManager.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/MagicaManager.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/MagicaManagerAPI.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/MagicaManagerAPI.cs.meta index b636d396b..016f6826c 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/MagicaManagerAPI.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/MagicaManagerAPI.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/MagicaManagerAPI.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/MagicaSettings.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/MagicaSettings.cs.meta index 980f5ce06..ff0bd78fc 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/MagicaSettings.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/MagicaSettings.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/MagicaSettings.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderData.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderData.cs index d69332767..14473bbe4 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderData.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderData.cs @@ -73,7 +73,7 @@ namespace MagicaCloth2 setupData?.GetUsedTransform(transformSet); } - public void ReplaceTransform(Dictionary replaceDict) + public void ReplaceTransform(Dictionary replaceDict) { setupData?.ReplaceTransform(replaceDict); } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderData.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderData.cs.meta index 6822f2b3f..85f088e62 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderData.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderData.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderData.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderManager.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderManager.cs index 8572bffcb..7c3053148 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderManager.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderManager.cs @@ -18,7 +18,7 @@ namespace MagicaCloth2 /// /// 描画データをint型ハンドルで管理する /// - Dictionary renderDataDict = new Dictionary(); + Dictionary renderDataDict = new Dictionary(); //========================================================================================= // ■RenderData @@ -159,7 +159,7 @@ namespace MagicaCloth2 /// /// /// - public int AddRenderer( + public MagicaObjectId AddRenderer( Renderer ren, RenderSetupData referenceSetupData, RenderSetupData.UniqueSerializationData referenceUniqueSetupData, @@ -167,11 +167,11 @@ namespace MagicaCloth2 ) { if (isValid == false) - return 0; + return MagicaObjectId.Invalid; Debug.Assert(ren); // 制御ハンドル - int handle = ren.GetInstanceID(); + MagicaObjectId handle = ren.GetMagicaId(); lock (renderDataDict) { @@ -190,7 +190,7 @@ namespace MagicaCloth2 return handle; } - public bool RemoveRenderer(int handle) + public bool RemoveRenderer(MagicaObjectId handle) { if (isValid == false) return false; @@ -221,7 +221,7 @@ namespace MagicaCloth2 return delete; } - public RenderData GetRendererData(int handle) + public RenderData GetRendererData(MagicaObjectId handle) { if (isValid == false) return null; @@ -327,7 +327,7 @@ namespace MagicaCloth2 /// 有効化 /// /// - public void StartUse(ClothProcess cprocess, int handle) + public void StartUse(ClothProcess cprocess, MagicaObjectId handle) { GetRendererData(handle)?.StartUse(cprocess); } @@ -336,7 +336,7 @@ namespace MagicaCloth2 /// 無効化 /// /// - public void EndUse(ClothProcess cprocess, int handle) + public void EndUse(ClothProcess cprocess, MagicaObjectId handle) { GetRendererData(handle)?.EndUse(cprocess); } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderManager.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderManager.cs.meta index f25b0eddb..8a7459424 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderManager.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderManager.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderManager.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupData.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupData.cs index 2d6477362..893b4bfd1 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupData.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupData.cs @@ -59,7 +59,7 @@ namespace MagicaCloth2 public NativeArray localTangents; // Bone --------------------------------------------------------------- - public List rootTransformIdList; + public List rootTransformIdList; public enum BoneConnectionMode { // line only. @@ -85,9 +85,9 @@ namespace MagicaCloth2 // Transform情報 // 通常メッシュはrenderTransorm100%のスキニングとして扱われる public List transformList; // skin bonesは[0]~skinBoneCountまで - public List transformIdList; - public List transformParentIdList; // 親ID(0=なし) - public List> transformChildIdList; // 子IDリスト + public List transformIdList; + public List transformParentIdList; // 親ID(0=なし) + public List> transformChildIdList; // 子IDリスト public NativeArray transformPositions; public NativeArray transformRotations; public NativeArray transformLocalPositions; @@ -443,10 +443,10 @@ namespace MagicaCloth2 } // root transform id - rootTransformIdList = new List(rootTransforms.Count); + rootTransformIdList = new List(rootTransforms.Count); foreach (var t in rootTransforms) { - rootTransformIdList.Add(t.GetInstanceID()); + rootTransformIdList.Add(t.GetMagicaId()); } // collision transform (use BoneSpring) @@ -583,18 +583,20 @@ namespace MagicaCloth2 } // id / parent id - transformIdList = new List(tcnt); - transformParentIdList = new List(tcnt); + transformIdList = new List(tcnt); + transformParentIdList = new List(tcnt); for (int i = 0; i < tcnt; i++) { - int id = 0, pid = 0; + //int id = 0, pid = 0; + MagicaObjectId id = MagicaObjectId.Invalid; + MagicaObjectId pid = MagicaObjectId.Invalid; var t = transformList[i]; if (t) { - id = t.GetInstanceID(); + id = t.GetMagicaId(); if (includeChilds && t.parent) - pid = t.parent.GetInstanceID(); + pid = t.parent.GetMagicaId(); } transformIdList.Add(id); transformParentIdList.Add(pid); @@ -603,17 +605,17 @@ namespace MagicaCloth2 // child id if (includeChilds) { - transformChildIdList = new List>(tcnt); + transformChildIdList = new List>(tcnt); for (int i = 0; i < tcnt; i++) { var t = transformList[i]; - var clist = new FixedList512Bytes(); + var clist = new FixedList512Bytes(); if (t && t.childCount > 0) { for (int j = 0; j < t.childCount; j++) { var ct = t.GetChild(j); - clist.Add(ct.GetInstanceID()); + clist.Add(ct.GetMagicaId()); } } transformChildIdList.Add(clist); @@ -733,33 +735,33 @@ namespace MagicaCloth2 } } - public void ReplaceTransform(Dictionary replaceDict) + public void ReplaceTransform(Dictionary replaceDict) { if (rootTransformIdList != null) { for (int i = 0; i < rootTransformIdList.Count; i++) { - int id = rootTransformIdList[i]; + MagicaObjectId id = rootTransformIdList[i]; if (replaceDict.ContainsKey(id)) { - rootTransformIdList[i] = replaceDict[id].GetInstanceID(); + rootTransformIdList[i] = replaceDict[id].GetMagicaId(); } } } for (int i = 0; i < TransformCount; i++) { - int id = transformIdList[i]; + MagicaObjectId id = transformIdList[i]; if (replaceDict.ContainsKey(id)) { var t = replaceDict[id]; - transformIdList[i] = t.GetInstanceID(); + transformIdList[i] = t.GetMagicaId(); transformList[i] = t; } - int pid = transformParentIdList[i]; + MagicaObjectId pid = transformParentIdList[i]; if (replaceDict.ContainsKey(pid)) { var t = replaceDict[pid]; - transformParentIdList[i] = t.GetInstanceID(); + transformParentIdList[i] = t.GetMagicaId(); } if (transformChildIdList != null) @@ -767,11 +769,11 @@ namespace MagicaCloth2 var cidlist = transformChildIdList[i]; for (int j = 0; j < cidlist.Length; j++) { - int cid = cidlist[j]; + MagicaObjectId cid = cidlist[j]; if (replaceDict.ContainsKey(cid)) { var t = replaceDict[cid]; - cidlist[j] = t.GetInstanceID(); + cidlist[j] = t.GetMagicaId(); } } transformChildIdList[i] = cidlist; @@ -789,7 +791,7 @@ namespace MagicaCloth2 return transformList[renderTransformIndex]; } - public int GetRenderTransformId() + public MagicaObjectId GetRenderTransformId() { return transformIdList[renderTransformIndex]; } @@ -812,12 +814,12 @@ namespace MagicaCloth2 return transformList[skinRootBoneIndex]; } - public int GetSkinRootTransformId() + public MagicaObjectId GetSkinRootTransformId() { return transformIdList[skinRootBoneIndex]; } - public int GetTransformIndexFromId(int id) + public int GetTransformIndexFromId(MagicaObjectId id) { return transformIdList.IndexOf(id); } @@ -830,7 +832,7 @@ namespace MagicaCloth2 /// なし(-1) public int GetParentTransformIndex(int index, bool centerExcluded) { - int pid = transformParentIdList[index]; + MagicaObjectId pid = transformParentIdList[index]; int i = transformIdList.IndexOf(pid); if (centerExcluded && i == renderTransformIndex) i = -1; diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupData.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupData.cs.meta index 002343f0c..d9534a727 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupData.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupData.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupData.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupDataSerialization.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupDataSerialization.cs index 13e1cc18f..8389defa7 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupDataSerialization.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupDataSerialization.cs @@ -155,7 +155,7 @@ namespace MagicaCloth2 }); } - public void ReplaceTransform(Dictionary replaceDict) + public void ReplaceTransform(Dictionary replaceDict) { if (transformList != null) { @@ -164,8 +164,8 @@ namespace MagicaCloth2 var t = transformList[i]; if (t) { - int id = t.GetInstanceID(); - if (id != 0 && replaceDict.ContainsKey(id)) + MagicaObjectId id = t.GetMagicaId(); + if (id.IsValid() && replaceDict.ContainsKey(id)) { transformList[i] = replaceDict[id]; } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupDataSerialization.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupDataSerialization.cs.meta index 5ff0fbe97..8e072f5c6 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupDataSerialization.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupDataSerialization.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupDataSerialization.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupSerializeData.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupSerializeData.cs index 518364115..48687e6cd 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupSerializeData.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupSerializeData.cs @@ -338,16 +338,16 @@ namespace MagicaCloth2 } } - public void ReplaceTransform(Dictionary replaceDict) + public void ReplaceTransform(Dictionary replaceDict) { if (transformArray == null) return; for (int i = 0; i < transformArray.Length; i++) { var t = transformArray[i]; - if (t && replaceDict.ContainsKey(t.GetInstanceID())) + if (t && replaceDict.ContainsKey(t.GetMagicaId())) { - transformArray[i] = replaceDict[t.GetInstanceID()]; + transformArray[i] = replaceDict[t.GetMagicaId()]; } } } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupSerializeData.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupSerializeData.cs.meta index 854e5cc77..708896f3d 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupSerializeData.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupSerializeData.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Render/RenderSetupSerializeData.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/ColliderManager.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/ColliderManager.cs.meta index c3f9daf6e..dc88eb5a9 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/ColliderManager.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/ColliderManager.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/ColliderManager.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManager.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManager.cs index 9caf1949c..e8fee4791 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManager.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManager.cs @@ -654,6 +654,11 @@ namespace MagicaCloth2 // buffer stepBasicPositionBuffer = stepBasicPositionBuffer, stepBasicRotationBuffer = stepBasicRotationBuffer, + // temp + tempVectorBufferA = tempVectorBufferA, + tempVectorBufferB = tempVectorBufferB, + tempCountBuffer = tempCountBuffer, + tempFloatBufferA = tempFloatBufferA, }; splitClothJobHandle = splitStep_B_job.Schedule(splitClothTeamCount * workerCount, 1, splitClothJobHandle); diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManager.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManager.cs.meta index bdcb07107..0930aa023 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManager.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManager.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManager.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManagerNormal.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManagerNormal.cs index a5b99143d..e5a3dd536 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManagerNormal.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManagerNormal.cs @@ -459,7 +459,12 @@ namespace MagicaCloth2 ref frictionArray, // buffer ref stepBasicPositionBuffer, - ref stepBasicRotationBuffer + ref stepBasicRotationBuffer, + // temp + ref tempVectorBufferA, + ref tempVectorBufferB, + ref tempCountBuffer, + ref tempFloatBufferA ); // 制約解決のためのステップごとの基準姿勢を計算 @@ -1070,7 +1075,12 @@ namespace MagicaCloth2 ref NativeArray frictionArray, // buffer ref NativeArray stepBasicPositionBuffer, - ref NativeArray stepBasicRotationBuffer + ref NativeArray stepBasicRotationBuffer, + // temp buffer + ref NativeArray tempVectorBufferA, + ref NativeArray tempVectorBufferB, + ref NativeArray tempCountBuffer, + ref NativeArray tempFloatBufferA ) { // 速度更新、外力の影響、慣性シフト @@ -1225,6 +1235,12 @@ namespace MagicaCloth2 // 予測位置格納 nextPosArray[pindex] = nextPos; + + // 作業バッファクリア + tempVectorBufferA[pindex] = 0; + tempVectorBufferB[pindex] = 0; + tempCountBuffer[pindex] = 0; + tempFloatBufferA[pindex] = 0; } } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManagerNormal.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManagerNormal.cs.meta index b4272cf4f..3ae3516e6 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManagerNormal.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManagerNormal.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManagerNormal.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManagerSplit.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManagerSplit.cs index 12f7eeb4b..d85f72d43 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManagerSplit.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManagerSplit.cs @@ -607,6 +607,20 @@ namespace MagicaCloth2 [NativeDisableContainerSafetyRestriction] public NativeArray stepBasicRotationBuffer; + // temp + [NativeDisableParallelForRestriction] + [NativeDisableContainerSafetyRestriction] + public NativeArray tempVectorBufferA; + [NativeDisableParallelForRestriction] + [NativeDisableContainerSafetyRestriction] + public NativeArray tempVectorBufferB; + [NativeDisableParallelForRestriction] + [NativeDisableContainerSafetyRestriction] + public NativeArray tempCountBuffer; + [NativeDisableParallelForRestriction] + [NativeDisableContainerSafetyRestriction] + public NativeArray tempFloatBufferA; + // バッチ内のローカルチームインデックスごと public void Execute(int index) { @@ -670,7 +684,12 @@ namespace MagicaCloth2 ref frictionArray, // buffer ref stepBasicPositionBuffer, - ref stepBasicRotationBuffer + ref stepBasicRotationBuffer, + // temp + ref tempVectorBufferA, + ref tempVectorBufferB, + ref tempCountBuffer, + ref tempFloatBufferA ); } } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManagerSplit.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManagerSplit.cs.meta index 5802aa90b..73e5b90a7 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManagerSplit.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManagerSplit.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/SimulationManagerSplit.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/TimeManager.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/TimeManager.cs.meta index 0efc2dc4f..aec343964 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/TimeManager.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/TimeManager.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/TimeManager.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/WindManager.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/WindManager.cs.meta index 729232dbf..542866f21 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/WindManager.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/WindManager.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Simulation/WindManager.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Team/TeamManager.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Team/TeamManager.cs index 59758ee3d..b2afc2e37 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Team/TeamManager.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Team/TeamManager.cs @@ -206,7 +206,8 @@ namespace MagicaCloth2 /// /// MagicaClothコンポーネントのインスタンスID /// - public int componentId; + //public int componentId; + public MagicaObjectId componentId; /// /// 同期チームID(0=なし) @@ -226,7 +227,8 @@ namespace MagicaCloth2 /// /// 連動するAnimatorのインスタンスID(0=なし) /// - public int interlockingAnimatorId; + //public int interlockingAnimatorId; + public MagicaObjectId interlockingAnimatorId; /// /// 初期姿勢とアニメーション姿勢のブレンド率(制約で利用) @@ -647,10 +649,10 @@ namespace MagicaCloth2 internal int edgeColliderCollisionCount; internal NativeReference edgeColliderCollisionCountBuff; - internal NativeParallelHashMap comp2SuspendCounterMap; - internal NativeParallelHashMap comp2TeamIdMap; - internal NativeParallelHashMap comp2SyncPartnerCompMap; - internal NativeParallelHashMap comp2SyncTopCompMap; + internal NativeParallelHashMap comp2SuspendCounterMap; + internal NativeParallelHashMap comp2TeamIdMap; + internal NativeParallelHashMap comp2SyncPartnerCompMap; + internal NativeParallelHashMap comp2SyncTopCompMap; internal NativeList batchNormalClothTeamList; internal NativeList batchSplitClothTeamList; @@ -659,12 +661,12 @@ namespace MagicaCloth2 internal List skipWritingDirtyList; internal NativeList cullingDirtyList; internal NativeParallelHashSet selfCollisionUpdateSet; - internal NativeParallelHashMap animatorUpdateModeMap; + internal NativeParallelHashMap animatorUpdateModeMap; - internal ExSimpleNativeArray teamAnchorTransformIndexArray; - internal ExSimpleNativeArray teamDistanceTransformIndexArray; - internal NativeParallelHashMap transformPositionMap; - internal NativeParallelHashMap transformRotationMap; + internal ExSimpleNativeArray teamAnchorTransformIndexArray; + internal ExSimpleNativeArray teamDistanceTransformIndexArray; + internal NativeParallelHashMap transformPositionMap; + internal NativeParallelHashMap transformRotationMap; internal HashSet cameraCullingClothSet = new HashSet(256); @@ -762,10 +764,10 @@ namespace MagicaCloth2 // 作業用 edgeColliderCollisionCountBuff = new NativeReference(Allocator.Persistent); - comp2SuspendCounterMap = new NativeParallelHashMap(256, Allocator.Persistent); - comp2TeamIdMap = new NativeParallelHashMap(256, Allocator.Persistent); - comp2SyncPartnerCompMap = new NativeParallelHashMap(256, Allocator.Persistent); - comp2SyncTopCompMap = new NativeParallelHashMap(256, Allocator.Persistent); + comp2SuspendCounterMap = new NativeParallelHashMap(256, Allocator.Persistent); + comp2TeamIdMap = new NativeParallelHashMap(256, Allocator.Persistent); + comp2SyncPartnerCompMap = new NativeParallelHashMap(256, Allocator.Persistent); + comp2SyncTopCompMap = new NativeParallelHashMap(256, Allocator.Persistent); batchNormalClothTeamList = new NativeList(Allocator.Persistent); batchSplitClothTeamList = new NativeList(Allocator.Persistent); @@ -774,12 +776,12 @@ namespace MagicaCloth2 skipWritingDirtyList = new List(128); cullingDirtyList = new NativeList(128, Allocator.Persistent); selfCollisionUpdateSet = new NativeParallelHashSet(256, Allocator.Persistent); - animatorUpdateModeMap = new NativeParallelHashMap(128, Allocator.Persistent); + animatorUpdateModeMap = new NativeParallelHashMap(128, Allocator.Persistent); - teamAnchorTransformIndexArray = new ExSimpleNativeArray(256, true); - teamDistanceTransformIndexArray = new ExSimpleNativeArray(256, true); - transformPositionMap = new NativeParallelHashMap(32, Allocator.Persistent); - transformRotationMap = new NativeParallelHashMap(32, Allocator.Persistent); + teamAnchorTransformIndexArray = new ExSimpleNativeArray(256, true); + teamDistanceTransformIndexArray = new ExSimpleNativeArray(256, true); + transformPositionMap = new NativeParallelHashMap(32, Allocator.Persistent); + transformRotationMap = new NativeParallelHashMap(32, Allocator.Persistent); // 破棄監視更新処理 MagicaManager.afterUpdateDelegate += MonitoringProcessUpdate; @@ -807,7 +809,7 @@ namespace MagicaCloth2 // この段階でProxyMeshは完成している var team = new TeamData(); - team.componentId = cprocess.cloth.GetInstanceID(); + team.componentId = cprocess.cloth.GetMagicaId(); // ★Enableフラグは立てない team.flag.SetBits(Flag_Valid, true); team.flag.SetBits(Flag_Reset, true); @@ -889,8 +891,8 @@ namespace MagicaCloth2 centerDataArray.Remove(c); // チーム作業バッファをクリア - teamAnchorTransformIndexArray[teamId] = 0; - teamDistanceTransformIndexArray[teamId] = 0; + teamAnchorTransformIndexArray[teamId] = MagicaObjectId.Invalid; + teamDistanceTransformIndexArray[teamId] = MagicaObjectId.Invalid; clothProcessDict.Remove(teamId); } @@ -900,22 +902,39 @@ namespace MagicaCloth2 /// /// /// - public void SetEnable(int teamId, bool sw) + public void SetEnable(ClothProcess cprocess, int teamId, bool sw) { + //Debug.Log($"Set Enable:{sw} F:{Time.frameCount}"); if (isValid == false || teamId == 0) return; ref var team = ref teamDataArray.GetRef(teamId); + + // シミュレーションリセットの有無 + // (同期先を参照) + ClothProcess syncProcess = cprocess.SyncTopCloth ? cprocess.SyncTopCloth.Process : cprocess; + bool isReset = syncProcess.cloth.SerializeData.disableMode == ClothDisableMode.Reset; + team.flag.SetBits(Flag_Enable, sw); - team.flag.SetBits(Flag_Reset, sw); + if (isReset) + team.flag.SetBits(Flag_Reset, sw); + + //Debug.Log($"Set Enable:{sw}, isReset:{isReset} F:{Time.frameCount}"); if (sw) enableTeamSet.Add(teamId); else enableTeamSet.Remove(teamId); - // 無効時には一度のみTransform復元フラグを立てる - if (sw == false) + // 非表示(リセット)の挙動 + if (sw == false && isReset) + { + // 無効時には一度のみTransform復元フラグを立てる team.flag.SetBits(Flag_RestoreTransformOnlyOnec, true); + // Disable時は非表示設定にする + team.flag.SetBits(Flag_CameraCullingInvisible, true); + cprocess.SetState(ClothProcess.State_CameraCullingInvisible, true); + cprocess.cameraCullingOldInvisible = true; + } // コライダーの有効状態(内部でコライダートランスフォームの有効状態も設定) MagicaManager.Collider.EnableTeamCollider(teamId); @@ -1096,12 +1115,12 @@ namespace MagicaCloth2 // 状態変更 if (oldInvisible != invisible) { + //Debug.Log($"Camera culling change. oldInvisible:{oldInvisible} -> invisible:{invisible} F:{Time.frameCount}"); int teamId = cprocess.TeamId; ref var tdata = ref GetTeamDataRef(teamId); tdata.flag.SetBits(Flag_CameraCullingInvisible, invisible); tdata.flag.SetBits(Flag_CameraCullingKeep, false); - //Debug.Log($"Change camera culling invisible:({oldInvisible}) -> ({invisible})"); // cprocessクラスにもコピーする cprocess.SetState(ClothProcess.State_CameraCullingInvisible, invisible); @@ -1193,7 +1212,7 @@ namespace MagicaCloth2 var cloth = cprocess.cloth; // 連動アニメーターのインスタンスID - tdata.interlockingAnimatorId = cprocess.interlockingAnimator != null ? cprocess.interlockingAnimator.GetInstanceID() : 0; + tdata.interlockingAnimatorId = cprocess.interlockingAnimator != null ? cprocess.interlockingAnimator.GetMagicaId() : MagicaObjectId.Invalid; // パラメータ変更 cprocess.SyncParameters(); @@ -1281,7 +1300,7 @@ namespace MagicaCloth2 // 連動アニメーターの更新モード取得 if (cprocess.interlockingAnimator) { - int animatorId = cprocess.interlockingAnimator.GetInstanceID(); + MagicaObjectId animatorId = cprocess.interlockingAnimator.GetMagicaId(); if (animatorUpdateModeMap.ContainsKey(animatorId) == false) { animatorUpdateModeMap.Add(animatorId, (int)cprocess.interlockingAnimator.updateMode); @@ -1295,8 +1314,8 @@ namespace MagicaCloth2 #if true // アンカー参照オブジェクト var anchorTransform = sdata.inertiaConstraint.anchor; - int anchorTransformId = anchorTransform != null ? anchorTransform.GetInstanceID() : 0; - if (anchorTransformId != 0 && transformPositionMap.ContainsKey(anchorTransformId) == false) + MagicaObjectId anchorTransformId = anchorTransform != null ? anchorTransform.GetMagicaId() : MagicaObjectId.Invalid; + if (anchorTransformId.IsValid() && transformPositionMap.ContainsKey(anchorTransformId) == false) { // 参照オブジェクトの座標取得 transformPositionMap.Add(anchorTransformId, anchorTransform.position); @@ -1310,8 +1329,8 @@ namespace MagicaCloth2 } // 距離カリング参照オブジェクト - int distanceObjectId = sdata.cullingSettings.distanceCullingReferenceObject != null ? sdata.cullingSettings.distanceCullingReferenceObject.GetInstanceID() : 0; - if (distanceObjectId != 0 && transformPositionMap.ContainsKey(distanceObjectId) == false) + MagicaObjectId distanceObjectId = sdata.cullingSettings.distanceCullingReferenceObject != null ? sdata.cullingSettings.distanceCullingReferenceObject.GetMagicaId() : MagicaObjectId.Invalid; + if (distanceObjectId.IsValid() && transformPositionMap.ContainsKey(distanceObjectId) == false) { // 参照オブジェクトの座標取得 transformPositionMap.Add(distanceObjectId, sdata.cullingSettings.distanceCullingReferenceObject.transform.position); @@ -1328,7 +1347,8 @@ namespace MagicaCloth2 // メインカメラ座標 bool hasMainCamera = Camera.main != null; float3 mainCameraPosition = Camera.main ? Camera.main.transform.position : 0; - transformPositionMap.Add(0, mainCameraPosition); + //transformPositionMap.Add(0, mainCameraPosition); + transformPositionMap.Add(MagicaObjectId.Invalid, mainCameraPosition); startClothUpdateComponentProfiler.End(); // チーム前処理ジョブ待ち @@ -1426,10 +1446,10 @@ namespace MagicaCloth2 public NativeArray parameterArray; // work - public NativeParallelHashMap comp2SuspendCounterMap; - public NativeParallelHashMap comp2TeamIdMap; - public NativeParallelHashMap comp2SyncPartnerCompMap; - public NativeParallelHashMap comp2SyncTopCompMap; + public NativeParallelHashMap comp2SuspendCounterMap; + public NativeParallelHashMap comp2TeamIdMap; + public NativeParallelHashMap comp2SyncPartnerCompMap; + public NativeParallelHashMap comp2SyncTopCompMap; public NativeParallelHashSet selfCollisionUpdateSet; public NativeReference edgeColliderCollisionCountBuff; @@ -1444,7 +1464,7 @@ namespace MagicaCloth2 if (teamId == 0) continue; - int compId = kv.Key; + MagicaObjectId compId = kv.Key; ref var tdata = ref *(tt + teamId); // 作業フラグをクリア ------------------------------------- @@ -1462,7 +1482,7 @@ namespace MagicaCloth2 // 同期相手の有効状態 if (comp2SyncPartnerCompMap.ContainsKey(compId)) { - int syncCompId = comp2SyncPartnerCompMap[compId]; + MagicaObjectId syncCompId = comp2SyncPartnerCompMap[compId]; if (comp2TeamIdMap.ContainsKey(syncCompId)) { int syncTeamId = comp2TeamIdMap[syncCompId]; @@ -1486,7 +1506,7 @@ namespace MagicaCloth2 tdata.syncTeamId = 0; if (comp2SyncPartnerCompMap.ContainsKey(compId)) { - int syncCompId = comp2SyncPartnerCompMap[compId]; + MagicaObjectId syncCompId = comp2SyncPartnerCompMap[compId]; if (comp2TeamIdMap.ContainsKey(syncCompId)) { int syncTeamId = comp2TeamIdMap[syncCompId]; @@ -1543,7 +1563,7 @@ namespace MagicaCloth2 int syncTopTeamId = 0; if (comp2SyncTopCompMap.ContainsKey(compId)) { - int syncTopCompId = comp2SyncTopCompMap[compId]; + MagicaObjectId syncTopCompId = comp2SyncTopCompMap[compId]; if (comp2TeamIdMap.ContainsKey(syncTopCompId)) { syncTopTeamId = comp2TeamIdMap[syncTopCompId]; @@ -1618,13 +1638,13 @@ namespace MagicaCloth2 public bool hasMainCamera; // work - public NativeParallelHashMap comp2TeamIdMap; - public NativeParallelHashMap comp2SyncTopCompMap; - public NativeParallelHashMap animatorUpdateModeMap; - public NativeArray teamAnchorTransformIndexArray; - public NativeArray teamDistanceTransformIndexArray; - public NativeParallelHashMap transformPositionMap; - public NativeParallelHashMap transformRotationMap; + public NativeParallelHashMap comp2TeamIdMap; + public NativeParallelHashMap comp2SyncTopCompMap; + public NativeParallelHashMap animatorUpdateModeMap; + public NativeArray teamAnchorTransformIndexArray; + public NativeArray teamDistanceTransformIndexArray; + public NativeParallelHashMap transformPositionMap; + public NativeParallelHashMap transformRotationMap; public NativeList cullingDirtyList; public NativeList batchNormalClothTeamList; @@ -1640,7 +1660,7 @@ namespace MagicaCloth2 for (int teamId = 1; teamId < teamCount; teamId++) { var tdata = teamDataArray[teamId]; - int compId = tdata.componentId; + MagicaObjectId compId = tdata.componentId; if (tdata.IsEnable == false) continue; if (tdata.flag.IsSet(Flag_SyncSuspend)) @@ -1658,14 +1678,14 @@ namespace MagicaCloth2 } // アンカー - int anchorTransformIndex = teamAnchorTransformIndexArray[teamId]; + MagicaObjectId anchorTransformIndex = teamAnchorTransformIndexArray[teamId]; bool oldAnchor = tdata.flag.IsSet(Flag_Anchor); - bool newAnchor = anchorTransformIndex != 0; + bool newAnchor = anchorTransformIndex.IsValid(); tdata.flag.SetBits(Flag_Anchor, newAnchor); tdata.flag.SetBits(Flag_AnchorReset, oldAnchor != newAnchor); var cdata = centerDataArray[teamId]; - cdata.anchorPosition = anchorTransformIndex != 0 ? transformPositionMap[anchorTransformIndex] : float3.zero; - cdata.anchorRotation = anchorTransformIndex != 0 ? transformRotationMap[anchorTransformIndex] : quaternion.identity; + cdata.anchorPosition = anchorTransformIndex.IsValid() ? transformPositionMap[anchorTransformIndex] : float3.zero; + cdata.anchorRotation = anchorTransformIndex.IsValid() ? transformRotationMap[anchorTransformIndex] : quaternion.identity; centerDataArray[teamId] = cdata; // 距離カリング判定 @@ -1681,7 +1701,7 @@ namespace MagicaCloth2 int syncTopTeamId = 0; if (comp2SyncTopCompMap.ContainsKey(compId)) { - int syncTopCompId = comp2SyncTopCompMap[compId]; + MagicaObjectId syncTopCompId = comp2SyncTopCompMap[compId]; if (comp2TeamIdMap.ContainsKey(syncTopCompId)) { syncTopTeamId = comp2TeamIdMap[syncTopCompId]; @@ -1690,7 +1710,7 @@ namespace MagicaCloth2 if (tdata.originalUpdateMode == ClothUpdateMode.AnimatorLinkage || syncTopTeamId > 0) { var originalUpdateMode = tdata.originalUpdateMode; - int animatorId = tdata.interlockingAnimatorId; + MagicaObjectId animatorId = tdata.interlockingAnimatorId; if (syncTopTeamId > 0) { var syncTeamData = teamDataArray[syncTopTeamId]; @@ -1876,7 +1896,7 @@ namespace MagicaCloth2 { // 距離カリング有効 // 距離判定 - int transformId = teamDistanceTransformIndexArray[teamId]; + MagicaObjectId transformId = teamDistanceTransformIndexArray[teamId]; if (transformPositionMap.ContainsKey(transformId)) { // 現在コンポーネント位置(pos)は同期を取っていない diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Team/TeamManager.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Team/TeamManager.cs.meta index 421ea5123..b84577435 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Team/TeamManager.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Team/TeamManager.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Team/TeamManager.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Team/TeamWindData.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Team/TeamWindData.cs.meta index b68a89d22..f36854187 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Team/TeamWindData.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Team/TeamWindData.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/Team/TeamWindData.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformData.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformData.cs index 2db22b552..75bd6ed46 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformData.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformData.cs @@ -70,17 +70,17 @@ namespace MagicaCloth2 /// /// トランスフォームのインスタンスID /// - internal ExSimpleNativeArray idArray; + internal ExSimpleNativeArray idArray; /// /// 親トランスフォームのインスタンスID(0=なし) /// - internal ExSimpleNativeArray parentIdArray; + internal ExSimpleNativeArray parentIdArray; /// /// BoneClothのルートトランスフォームIDリスト /// - internal List rootIdList; + internal List rootIdList; /// /// Transformリストに変更があったかどうか @@ -114,8 +114,8 @@ namespace MagicaCloth2 { // 領域のみ確保する transformList = new List(capacity); - idArray = new ExSimpleNativeArray(capacity, true); - parentIdArray = new ExSimpleNativeArray(capacity, true); + idArray = new ExSimpleNativeArray(capacity, true); + parentIdArray = new ExSimpleNativeArray(capacity, true); flagArray = new ExSimpleNativeArray(capacity, true); initLocalPositionArray = new ExSimpleNativeArray(capacity, true); initLocalRotationArray = new ExSimpleNativeArray(capacity, true); @@ -163,10 +163,12 @@ namespace MagicaCloth2 /// すでに登録済みの同じトランスフォームがある場合はそのインデックスを返す /// /// - /// 0の場合はTransformからGetInstanceId()を即時設定する + /// Invalidの場合はTransformからGetInstanceId()を即時設定する + /// 不要ならInvalid /// /// - public int AddTransform(Transform t, int tid = 0, int pid = 0, byte flag = TransformManager.Flag_Read, bool checkDuplicate = true) + //public int AddTransform(Transform t, int tid = 0, int pid = 0, byte flag = TransformManager.Flag_Read, bool checkDuplicate = true) + public int AddTransform(Transform t, MagicaObjectId tid, MagicaObjectId pid, byte flag = TransformManager.Flag_Read, bool checkDuplicate = true) { int index; @@ -183,11 +185,11 @@ namespace MagicaCloth2 { index = emptyStack.Dequeue(); transformList[index] = t; - if (tid == 0) + if (tid.IsValid() == false) { // Transformからデータを取得(メインスレッドのみ) - idArray[index] = t.GetInstanceID(); - parentIdArray[index] = t.parent ? t.parent.GetInstanceID() : 0; + idArray[index] = t.GetMagicaId(); + parentIdArray[index] = t.parent ? t.parent.GetMagicaId() : MagicaObjectId.Invalid; initLocalPositionArray[index] = t.localPosition; initLocalRotationArray[index] = t.localRotation; positionArray[index] = t.position; @@ -218,11 +220,11 @@ namespace MagicaCloth2 { index = Count; transformList.Add(t); - if (tid == 0) + if (tid.IsValid() == false) { // Transformからデータを取得(メインスレッドのみ) - idArray.Add(t.GetInstanceID()); - parentIdArray.Add(t.parent ? t.parent.GetInstanceID() : 0); + idArray.Add(t.GetMagicaId()); + parentIdArray.Add(t.parent ? t.parent.GetMagicaId() : MagicaObjectId.Invalid); initLocalPositionArray.Add(t.localPosition); initLocalRotationArray.Add(t.localRotation); positionArray.Add(t.position); @@ -260,11 +262,12 @@ namespace MagicaCloth2 /// すでに登録済みの同じトランスフォームがある場合はそのインデックスを返す /// /// トランスフォーム記録クラス - /// 親のインスタンスID + /// 親のインスタンスID。なければInvalid /// /// 重複チェックの有無 /// - public int AddTransform(TransformRecord record, int pid = 0, byte flag = TransformManager.Flag_Read, bool checkDuplicate = true) + //public int AddTransform(TransformRecord record, int pid = 0, byte flag = TransformManager.Flag_Read, bool checkDuplicate = true) + public int AddTransform(TransformRecord record, MagicaObjectId pid, byte flag = TransformManager.Flag_Read, bool checkDuplicate = true) { int index; @@ -335,8 +338,8 @@ namespace MagicaCloth2 } // 新規追加 - int id = srcData.idArray[srcIndex]; - int pid = srcData.parentIdArray[srcIndex]; + MagicaObjectId id = srcData.idArray[srcIndex]; + MagicaObjectId pid = srcData.parentIdArray[srcIndex]; var initPos = srcData.initLocalPositionArray[srcIndex]; var initRot = srcData.initLocalRotationArray[srcIndex]; var pos = srcData.positionArray[srcIndex]; @@ -389,7 +392,7 @@ namespace MagicaCloth2 /// /// /// - public int[] AddTransformRange(List tlist, List idList, List pidList, int copyCount = 0) + public int[] AddTransformRange(List tlist, List idList, List pidList, int copyCount = 0) { //int tcnt = tlist.Count; int tcnt = copyCount > 0 ? copyCount : tlist.Count; @@ -434,8 +437,8 @@ namespace MagicaCloth2 Debug.Assert(stdata != null); return AddTransformRange( stdata.transformList, - new List(stdata.idArray.ToArray()), - new List(stdata.parentIdArray.ToArray()), + new List(stdata.idArray.ToArray()), + new List(stdata.parentIdArray.ToArray()), copyCount ); } @@ -453,9 +456,9 @@ namespace MagicaCloth2 /// public int[] AddTransformRange( List tlist, - List idList, - List pidList, - List rootIds, + List idList, + List pidList, + List rootIds, NativeArray localPositions, NativeArray localRotations, NativeArray positions, @@ -482,7 +485,7 @@ namespace MagicaCloth2 if (rootIds != null && rootIds.Count > 0) { if (rootIdList == null) - rootIdList = new List(rootIds); + rootIdList = new List(rootIds); else rootIdList.AddRange(rootIds); } @@ -522,20 +525,22 @@ namespace MagicaCloth2 /// Transform単体を追加する(tidを指定するならスレッド可) /// /// - /// 0の場合はTransformからGetInstanceId()を即時設定する + /// Invalidの場合はTransformからGetInstanceId()を即時設定する + /// 不要ならInvalid /// /// - public int ReplaceTransform(int index, Transform t, int tid = 0, int pid = 0, byte flag = TransformManager.Flag_Read) + //public int ReplaceTransform(int index, Transform t, int tid = 0, int pid = 0, byte flag = TransformManager.Flag_Read) + public int ReplaceTransform(int index, Transform t, MagicaObjectId tid, MagicaObjectId pid, byte flag = TransformManager.Flag_Read) { Debug.Assert(index < Count); transformList[index] = t; flagArray[index] = new ExBitFlag8(flag); - if (tid == 0) + if (tid.IsValid() == false) { // Transformからデータを取得(メインスレッドのみ) - idArray[index] = t.GetInstanceID(); - parentIdArray[index] = t.parent ? t.parent.GetInstanceID() : 0; + idArray[index] = t.GetMagicaId(); + parentIdArray[index] = t.parent ? t.parent.GetMagicaId() : MagicaObjectId.Invalid; initLocalPositionArray[index] = t.localPosition; initLocalRotationArray[index] = t.localRotation; positionArray[index] = t.position; @@ -840,8 +845,8 @@ namespace MagicaCloth2 // 新しい領域 var newTransformList = new List(newTransformCount); - var newTransformIdArray = new ExSimpleNativeArray(newTransformCount); - var newParentIdArray = new ExSimpleNativeArray(newTransformCount); + var newTransformIdArray = new ExSimpleNativeArray(newTransformCount); + var newParentIdArray = new ExSimpleNativeArray(newTransformCount); var newFlagArray = new ExSimpleNativeArray(newTransformCount); var newInitLocalPositionArray = new ExSimpleNativeArray(newTransformCount); var newInitLocalRotationArray = new ExSimpleNativeArray(newTransformCount); @@ -910,7 +915,7 @@ namespace MagicaCloth2 /// /// /// -1=見つからない - public int GetTransformIndexFormId(int id) + public int GetTransformIndexFormId(MagicaObjectId id) { var array = idArray.GetNativeArray(); int cnt = Count; @@ -922,12 +927,12 @@ namespace MagicaCloth2 return -1; } - public int GetTransformIdFromIndex(int index) + public MagicaObjectId GetTransformIdFromIndex(int index) { return idArray[index]; } - public int GetParentIdFromIndex(int index) + public MagicaObjectId GetParentIdFromIndex(int index) { return parentIdArray[index]; } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformData.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformData.cs.meta index 1da997286..d5a47ba62 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformData.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformData.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformData.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformDataSerialization.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformDataSerialization.cs index 79d9f3011..8b5b47ebe 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformDataSerialization.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformDataSerialization.cs @@ -79,7 +79,7 @@ namespace MagicaCloth2 } } - public void ReplaceTransform(Dictionary replaceDict) + public void ReplaceTransform(Dictionary replaceDict) { if (transformArray != null) { @@ -88,8 +88,8 @@ namespace MagicaCloth2 var t = transformArray[i]; if (t) { - int id = t.GetInstanceID(); - if (id != 0 && replaceDict.ContainsKey(id)) + MagicaObjectId id = t.GetMagicaId(); + if (id.IsValid() && replaceDict.ContainsKey(id)) { transformArray[i] = replaceDict[id]; } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformDataSerialization.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformDataSerialization.cs.meta index 40d168a27..55335583f 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformDataSerialization.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformDataSerialization.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformDataSerialization.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformManager.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformManager.cs.meta index ea49c6d67..79e379c15 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformManager.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformManager.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformManager.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformRecord.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformRecord.cs index 6918139b4..737b144ac 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformRecord.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformRecord.cs @@ -12,7 +12,7 @@ namespace MagicaCloth2 public class TransformRecord : IValid, ITransform { public Transform transform; - public int id; + public MagicaObjectId id; public Vector3 localPosition; public Quaternion localRotation; public Vector3 position; @@ -20,14 +20,14 @@ namespace MagicaCloth2 public Vector3 scale; // lossy scale public Matrix4x4 localToWorldMatrix; public Matrix4x4 worldToLocalMatrix; - public int pid; + public MagicaObjectId pid; public TransformRecord(Transform t, bool read) { if (t) { transform = t; - id = t.GetInstanceID(); + id = t.GetMagicaId(); if (read) { @@ -41,7 +41,7 @@ namespace MagicaCloth2 } if (t.parent) - pid = t.parent.GetInstanceID(); + pid = t.parent.GetMagicaId(); } } @@ -52,7 +52,7 @@ namespace MagicaCloth2 public bool IsValid() { - return id != 0; + return id.IsValid(); } public void GetUsedTransform(HashSet transformSet) @@ -60,18 +60,18 @@ namespace MagicaCloth2 transformSet.Add(transform); } - public void ReplaceTransform(Dictionary replaceDict) + public void ReplaceTransform(Dictionary replaceDict) { if (replaceDict.ContainsKey(id)) { var t = replaceDict[id]; transform = t; - id = transform.GetInstanceID(); + id = transform.GetMagicaId(); } if (replaceDict.ContainsKey(pid)) { var t = replaceDict[pid]; - pid = t.GetInstanceID(); + pid = t.GetMagicaId(); } } } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformRecord.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformRecord.cs.meta index 11f770701..431d27aa6 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformRecord.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformRecord.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformRecord.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformRecordSerializeData.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformRecordSerializeData.cs index df3990ca1..5fb330798 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformRecordSerializeData.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformRecordSerializeData.cs @@ -72,10 +72,10 @@ namespace MagicaCloth2 transformSet.Add(transform); } - public void ReplaceTransform(Dictionary replaceDict) + public void ReplaceTransform(Dictionary replaceDict) { - int id = transform != null ? transform.GetInstanceID() : 0; - if (id != 0 && replaceDict.ContainsKey(id)) + MagicaObjectId id = transform != null ? transform.GetMagicaId() : MagicaObjectId.Invalid; + if (id.IsValid() && replaceDict.ContainsKey(id)) transform = replaceDict[id]; } } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformRecordSerializeData.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformRecordSerializeData.cs.meta index e140620f0..3ca253ffe 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformRecordSerializeData.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformRecordSerializeData.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/TransformManager/TransformRecordSerializeData.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/VirtualMesh/VirtualMeshManager.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/VirtualMesh/VirtualMeshManager.cs.meta index ddbda2d7e..44891ef4b 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/VirtualMesh/VirtualMeshManager.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/VirtualMesh/VirtualMeshManager.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Manager/VirtualMesh/VirtualMeshManager.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/PreBuildScriptableObject.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/PreBuildScriptableObject.cs.meta index 6054abcba..9e67f272c 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/PreBuildScriptableObject.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/PreBuildScriptableObject.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/PreBuildScriptableObject.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/PreBuildSerializeData.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/PreBuildSerializeData.cs index 78f76562e..ec3ccac3a 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/PreBuildSerializeData.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/PreBuildSerializeData.cs @@ -93,7 +93,7 @@ namespace MagicaCloth2 uniquePreBuildData.GetUsedTransform(transformSet); } - public void ReplaceTransform(Dictionary replaceDict) + public void ReplaceTransform(Dictionary replaceDict) { uniquePreBuildData.ReplaceTransform(replaceDict); } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/PreBuildSerializeData.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/PreBuildSerializeData.cs.meta index 2269e73cd..cc7168a28 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/PreBuildSerializeData.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/PreBuildSerializeData.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/PreBuildSerializeData.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/SharePreBuildData.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/SharePreBuildData.cs.meta index 6c05a4edc..7a7cd9623 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/SharePreBuildData.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/SharePreBuildData.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/SharePreBuildData.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/UniquePreBuildData.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/UniquePreBuildData.cs index af90e07c2..b700c559a 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/UniquePreBuildData.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/UniquePreBuildData.cs @@ -39,7 +39,7 @@ namespace MagicaCloth2 renderMeshList.ForEach(x => x?.GetUsedTransform(transformSet)); } - public void ReplaceTransform(Dictionary replaceDict) + public void ReplaceTransform(Dictionary replaceDict) { renderSetupDataList.ForEach(x => x?.ReplaceTransform(replaceDict)); proxyMesh?.ReplaceTransform(replaceDict); diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/UniquePreBuildData.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/UniquePreBuildData.cs.meta index a89d1d4f3..837c998eb 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/UniquePreBuildData.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/UniquePreBuildData.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/PreBuild/UniquePreBuildData.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/ReductionSettings.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/ReductionSettings.cs.meta index 398f6669d..06678308c 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/ReductionSettings.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/ReductionSettings.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/ReductionSettings.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/ReductionWorkData.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/ReductionWorkData.cs.meta index ef39668ac..744ba7270 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/ReductionWorkData.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/ReductionWorkData.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/ReductionWorkData.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/SameDistanceReduction.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/SameDistanceReduction.cs.meta index 9e1cdfcab..0916be21e 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/SameDistanceReduction.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/SameDistanceReduction.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/SameDistanceReduction.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/ShapeDistanceReduction.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/ShapeDistanceReduction.cs.meta index d7ac5c086..669b105f6 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/ShapeDistanceReduction.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/ShapeDistanceReduction.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/ShapeDistanceReduction.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/SimpleDistanceReduction.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/SimpleDistanceReduction.cs.meta index a08c234ac..78847d92a 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/SimpleDistanceReduction.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/SimpleDistanceReduction.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/SimpleDistanceReduction.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/StepReductionBase.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/StepReductionBase.cs.meta index 2072e1022..03d19b78b 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/StepReductionBase.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/StepReductionBase.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Reduction/StepReductionBase.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Settings/ClothDebugSettings.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Settings/ClothDebugSettings.cs.meta index e12a826d3..e202c0a41 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Settings/ClothDebugSettings.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Settings/ClothDebugSettings.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Settings/ClothDebugSettings.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Settings/VirtualMeshDebugSettings.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Settings/VirtualMeshDebugSettings.cs.meta index 9f930d3c2..b505414e5 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Settings/VirtualMeshDebugSettings.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Settings/VirtualMeshDebugSettings.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Settings/VirtualMeshDebugSettings.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Data/DataUtility.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Data/DataUtility.cs.meta index f59705287..01c45459b 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Data/DataUtility.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Data/DataUtility.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Data/DataUtility.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Data/MagicaObjectId.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Data/MagicaObjectId.cs new file mode 100644 index 000000000..8e9ab68a5 --- /dev/null +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Data/MagicaObjectId.cs @@ -0,0 +1,98 @@ +// Magica Cloth 2. +// Copyright (c) 2026 MagicaSoft. +// https://magicasoft.jp +using System; +using UnityEngine; + +namespace MagicaCloth2 +{ + /// + /// Unityのバージョン差異(InstanceID vs EntityId)を吸収するID構造体。 + /// 現在はUnity6.4以上でEntityIdに切り替え + /// + public readonly struct MagicaObjectId : IEquatable + { + // ------------------------------------------------------- + // 内部データ保持 + // ------------------------------------------------------- +#if UNITY_6000_4_OR_NEWER + private readonly EntityId _value; + + public MagicaObjectId(EntityId id) + { + _value = id; + } + + // 無効なIDの定義(EntityIdの仕様に合わせる) + public static readonly MagicaObjectId Invalid = new(EntityId.None); + + public bool IsValid() => _value.IsValid(); + +#else + private readonly int _value; + + public MagicaObjectId(int id) + { + _value = id; + } + + // 従来のInstanceIDでは0が事実上の無効値として扱われることが多い + public static readonly MagicaObjectId Invalid = new MagicaObjectId(0); + + public bool IsValid() => _value != 0; +#endif + + public bool Equals(MagicaObjectId other) + { + return _value.Equals(other._value); + } + + public override bool Equals(object obj) + { + return obj is MagicaObjectId other && Equals(other); + } + + public override int GetHashCode() + { + return _value.GetHashCode(); + } + + public static bool operator ==(MagicaObjectId left, MagicaObjectId right) + { + return left.Equals(right); + } + + public static bool operator !=(MagicaObjectId left, MagicaObjectId right) + { + return !left.Equals(right); + } + + // これはデバッグ用途以外では使わない + public override string ToString() + { + return _value.ToString(); + } + } + + // ------------------------------------------------------- + // 拡張メソッド + // ------------------------------------------------------- + public static class MagicaObjectIdExtensions + { + /// + /// GameObjectやComponentからバージョンに合わせたIDを取得する + /// + public static MagicaObjectId GetMagicaId(this UnityEngine.Object obj) + { + if (obj == null) return MagicaObjectId.Invalid; + +#if UNITY_6000_4_OR_NEWER + // Unity 6.4 API + return new MagicaObjectId(obj.GetEntityId()); +#else + // 従来の API + return new MagicaObjectId(obj.GetInstanceID()); +#endif + } + } +} diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorProperty.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Data/MagicaObjectId.cs.meta similarity index 51% rename from Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorProperty.cs.meta rename to Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Data/MagicaObjectId.cs.meta index 78b119ab1..caddb0a6b 100644 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor/EditorProperty.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Data/MagicaObjectId.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a6efd34a11308a746bf9a43556eb283b +guid: 527929c5c74a0224b91228de398467f3 MonoImporter: externalObjects: {} serializedVersion: 2 @@ -11,8 +11,8 @@ MonoImporter: assetBundleVariant: AssetOrigin: serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Le Tai's Asset/Common/Editor/EditorProperty.cs - uploadId: 824068 + productId: 242307 + packageName: Magica Cloth 2 + packageVersion: 2.18.1 + assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Data/MagicaObjectId.cs + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Data/MultiDataBuilder.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Data/MultiDataBuilder.cs.meta index 9968c0b03..64f941054 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Data/MultiDataBuilder.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Data/MultiDataBuilder.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Data/MultiDataBuilder.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Grid/GridMap.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Grid/GridMap.cs.meta index 808f8fa0e..5f30c4958 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Grid/GridMap.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Grid/GridMap.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Grid/GridMap.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Jobs/InterlockUtility.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Jobs/InterlockUtility.cs.meta index 5db19418a..37071e32e 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Jobs/InterlockUtility.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Jobs/InterlockUtility.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Jobs/InterlockUtility.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Jobs/JobUtility.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Jobs/JobUtility.cs.meta index db393324c..5d5b288e6 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Jobs/JobUtility.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Jobs/JobUtility.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Jobs/JobUtility.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/AABB.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/AABB.cs.meta index bbfadd94c..4727dc444 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/AABB.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/AABB.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/AABB.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/IntAABB.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/IntAABB.cs.meta index ae1a66d78..dd14cd5b5 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/IntAABB.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/IntAABB.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/IntAABB.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/MathExtensions.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/MathExtensions.cs.meta index 8ae9d4009..2919f8241 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/MathExtensions.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/MathExtensions.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/MathExtensions.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/MathUtility.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/MathUtility.cs.meta index 36aa87b42..93921a5c5 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/MathUtility.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/MathUtility.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/MathUtility.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/MinimumData.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/MinimumData.cs.meta index 4a529bdc4..a87a775f5 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/MinimumData.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/MinimumData.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Math/MinimumData.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Mesh/MeshUtility.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Mesh/MeshUtility.cs.meta index bf750dccc..cc9bc3130 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Mesh/MeshUtility.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Mesh/MeshUtility.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Mesh/MeshUtility.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Misc/Develop.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Misc/Develop.cs.meta index f381f1130..fe4d07410 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Misc/Develop.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Misc/Develop.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Misc/Develop.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Misc/StaticStringBuilder.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Misc/StaticStringBuilder.cs.meta index 18b53bc4e..77b31e267 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Misc/StaticStringBuilder.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Misc/StaticStringBuilder.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Misc/StaticStringBuilder.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/DataChunk.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/DataChunk.cs.meta index 759668f96..563d8e311 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/DataChunk.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/DataChunk.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/DataChunk.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExBitFlag16.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExBitFlag16.cs.meta index 02ac3abd8..31544f558 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExBitFlag16.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExBitFlag16.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExBitFlag16.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExBitFlag8.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExBitFlag8.cs.meta index 34a4ecfd0..31f744a1d 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExBitFlag8.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExBitFlag8.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExBitFlag8.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExCostSortedList1.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExCostSortedList1.cs.meta index 9f822f3f5..6b2f34f95 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExCostSortedList1.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExCostSortedList1.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExCostSortedList1.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExCostSortedList4.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExCostSortedList4.cs.meta index d6a3e0b2c..48c5b10ad 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExCostSortedList4.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExCostSortedList4.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExCostSortedList4.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExNativeArray.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExNativeArray.cs.meta index 1af18180a..edf11fff6 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExNativeArray.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExNativeArray.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExNativeArray.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExProcessingList.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExProcessingList.cs.meta index 27ab5559e..5c8094e29 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExProcessingList.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExProcessingList.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExProcessingList.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExSimpleNativeArray.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExSimpleNativeArray.cs.meta index 878a69320..3c8cf0f45 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExSimpleNativeArray.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExSimpleNativeArray.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExSimpleNativeArray.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExTransformAccessArray.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExTransformAccessArray.cs index a5e944877..19bd0a80d 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExTransformAccessArray.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExTransformAccessArray.cs @@ -31,17 +31,17 @@ namespace MagicaCloth2 /// /// 使用インデックス辞書 /// - Dictionary useIndexDict; + Dictionary useIndexDict; /// /// トランスフォームインデックス辞書 /// - Dictionary indexDict; + Dictionary indexDict; /// /// トランスフォーム参照カウンタ辞書 /// - Dictionary referenceDict; + Dictionary referenceDict; //========================================================================================= public ExTransformAccessArray(int capacity, int desiredJobCount = -1) @@ -50,9 +50,9 @@ namespace MagicaCloth2 nativeLength = transformArray.length; emptyStack = new Queue(capacity); - useIndexDict = new Dictionary(capacity); - indexDict = new Dictionary(capacity); - referenceDict = new Dictionary(capacity); + useIndexDict = new Dictionary(capacity); + indexDict = new Dictionary(capacity); + referenceDict = new Dictionary(capacity); } public void Dispose() @@ -84,7 +84,7 @@ namespace MagicaCloth2 { int index = 0; - int id = element.GetInstanceID(); + MagicaObjectId id = element.GetMagicaId(); if (referenceDict.ContainsKey(id)) { @@ -122,7 +122,7 @@ namespace MagicaCloth2 { if (useIndexDict.ContainsKey(index)) { - int id = useIndexDict[index]; + MagicaObjectId id = useIndexDict[index]; int cnt = referenceDict[id] - 1; if (cnt > 0) { @@ -150,7 +150,7 @@ namespace MagicaCloth2 { if (element == null) return false; - return indexDict.ContainsKey(element.GetInstanceID()); + return indexDict.ContainsKey(element.GetMagicaId()); } /// @@ -187,7 +187,7 @@ namespace MagicaCloth2 { if (element == null) return -1; - int id = element.GetInstanceID(); + MagicaObjectId id = element.GetMagicaId(); if (indexDict.ContainsKey(id)) return indexDict[id]; else diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExTransformAccessArray.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExTransformAccessArray.cs.meta index ff45301a3..310873e10 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExTransformAccessArray.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExTransformAccessArray.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/ExTransformAccessArray.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList128BytesExtensions.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList128BytesExtensions.cs.meta index 6704e930b..c9d01e593 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList128BytesExtensions.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList128BytesExtensions.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList128BytesExtensions.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList32BytesExtensions.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList32BytesExtensions.cs.meta index 6f5b466ed..c8ac7f498 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList32BytesExtensions.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList32BytesExtensions.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList32BytesExtensions.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList4096BytesExtensions.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList4096BytesExtensions.cs.meta index d83bcd2a5..c527fc9ad 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList4096BytesExtensions.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList4096BytesExtensions.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList4096BytesExtensions.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList512BytesExtensions.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList512BytesExtensions.cs.meta index ee08c146b..d03536771 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList512BytesExtensions.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList512BytesExtensions.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList512BytesExtensions.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList64BytesExtensions.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList64BytesExtensions.cs.meta index 32bce5c02..19086b24c 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList64BytesExtensions.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList64BytesExtensions.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/FixedList64BytesExtensions.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeArrayExtensions.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeArrayExtensions.cs.meta index 99901eba1..3040d2967 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeArrayExtensions.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeArrayExtensions.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeArrayExtensions.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeMultiHashMapExtensions.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeMultiHashMapExtensions.cs.meta index 7b0bdcba1..349a5f90e 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeMultiHashMapExtensions.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeMultiHashMapExtensions.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeMultiHashMapExtensions.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeParallelHashMapExtensions.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeParallelHashMapExtensions.cs.meta index e61dcdc77..c01c41b71 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeParallelHashMapExtensions.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeParallelHashMapExtensions.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeParallelHashMapExtensions.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeReferenceExtensions.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeReferenceExtensions.cs.meta index 16c4baa57..b407919e7 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeReferenceExtensions.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeReferenceExtensions.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/NativeCollection/NativeReferenceExtensions.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/ResultCode/Exception.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/ResultCode/Exception.cs.meta index 72e3447ad..d2dd58d5e 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/ResultCode/Exception.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/ResultCode/Exception.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/ResultCode/Exception.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/ResultCode/ResultCode.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/ResultCode/ResultCode.cs.meta index e056acc80..7d385de45 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/ResultCode/ResultCode.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/ResultCode/ResultCode.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/ResultCode/ResultCode.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Time/TimeSpan.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Time/TimeSpan.cs.meta index a7e6b9fb7..f46f83c6b 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Time/TimeSpan.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Time/TimeSpan.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Time/TimeSpan.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Time/UnityTimeSpan.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Time/UnityTimeSpan.cs.meta index 9ee955a3b..74948f2c7 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Time/UnityTimeSpan.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Time/UnityTimeSpan.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/Utility/Time/UnityTimeSpan.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshInputOutput.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshInputOutput.cs index 9dce1e097..01b44bde7 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshInputOutput.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshInputOutput.cs @@ -518,7 +518,7 @@ namespace MagicaCloth2 { // Mesh接続 // トランスフォームIDからインデックスへの辞書を作成 - var idToIndexDict = new Dictionary(vcnt); + var idToIndexDict = new Dictionary(vcnt); for (int i = 0; i < vcnt; i++) { if (idToIndexDict.ContainsKey(rsetup.transformIdList[i]) == false) @@ -533,7 +533,7 @@ namespace MagicaCloth2 || rsetup.boneConnectionMode == RenderSetupData.BoneConnectionMode.SequentialNonLoopMesh; // ルートリスト - var rootTransformIdList = new List(rsetup.rootTransformIdList); // copy + var rootTransformIdList = new List(rsetup.rootTransformIdList); // copy int rootCnt = rootTransformIdList.Count; const int firstRootIndex = 0; int lastRootIndex = rootCnt - 1; @@ -541,24 +541,24 @@ namespace MagicaCloth2 // オート接続の場合はルート同士が最近接点になるように並べ替える if (rsetup.boneConnectionMode == RenderSetupData.BoneConnectionMode.AutomaticMesh) { - var tempRootIdList = new List(rootTransformIdList); + var tempRootIdList = new List(rootTransformIdList); rootTransformIdList.Clear(); rootTransformIdList.Add(tempRootIdList[0]); float lastDist = 0; while (tempRootIdList.Count > 0) { - int rootId = rootTransformIdList[rootTransformIdList.Count - 1]; + MagicaObjectId rootId = rootTransformIdList[rootTransformIdList.Count - 1]; tempRootIdList.Remove(rootId); int vindex = idToIndexDict[rootId]; var pos = localPositions[vindex]; // next connection float minDist = float.MaxValue; - int minId = 0; + MagicaObjectId minId = MagicaObjectId.Invalid; for (int i = 0; i < tempRootIdList.Count; i++) { - int rootId2 = tempRootIdList[i]; + MagicaObjectId rootId2 = tempRootIdList[i]; int vindex2 = idToIndexDict[rootId2]; var pos2 = localPositions[vindex2]; @@ -570,7 +570,7 @@ namespace MagicaCloth2 } } - if (minId != 0) + if (minId.IsValid()) { if (lastDist == 0 || minDist < lastDist * 1.5f) { @@ -589,8 +589,8 @@ namespace MagicaCloth2 // 最初と最後のルート距離が平均以下ならばループ接続にする if (rootTransformIdList.Count >= 3) { - int rootId1 = rootTransformIdList[0]; - int rootId2 = rootTransformIdList[rootTransformIdList.Count - 1]; + MagicaObjectId rootId1 = rootTransformIdList[0]; + MagicaObjectId rootId2 = rootTransformIdList[rootTransformIdList.Count - 1]; int vindex1 = idToIndexDict[rootId1]; int vindex2 = idToIndexDict[rootId2]; var pos1 = localPositions[vindex1]; @@ -619,7 +619,7 @@ namespace MagicaCloth2 var mainEdgeSet = new HashSet(); // メインエッジ // まずトランスフォームの親子関係に接続 - var stack = new Stack(vcnt); + var stack = new Stack(vcnt); var lvstack = new Stack(vcnt); for (int i = 0; i < rootCnt; i++) { @@ -630,7 +630,7 @@ namespace MagicaCloth2 while (stack.Count > 0) { - int id = stack.Pop(); + MagicaObjectId id = stack.Pop(); int lv = lvstack.Pop(); int vindex = idToIndexDict[id]; var pos = localPositions[vindex]; @@ -644,7 +644,7 @@ namespace MagicaCloth2 var link = new FixedList128Bytes(); // parent - int pid = rsetup.transformParentIdList[vindex]; + MagicaObjectId pid = rsetup.transformParentIdList[vindex]; if (idToIndexDict.ContainsKey(pid)) { int vindex2 = idToIndexDict[pid]; @@ -661,7 +661,7 @@ namespace MagicaCloth2 { for (int j = 0; j < clist.Length; j++) { - int cid = clist[j]; + MagicaObjectId cid = clist[j]; stack.Push(cid); lvstack.Push(lv + 1); @@ -1706,8 +1706,11 @@ namespace MagicaCloth2 /// メッシュの基準トランスフォームを設定する(メインスレッドのみ) /// /// - /// - public void SetTransform(Transform center, Transform skinRoot = null, int centerId = 0, int skinRootId = 0) + /// 不要ならnull + /// 不要ならInvalid + /// 不要ならInvalid + //public void SetTransform(Transform center, Transform skinRoot = null, int centerId = 0, int skinRootId = 0) + public void SetTransform(Transform center, Transform skinRoot, MagicaObjectId centerId, MagicaObjectId skinRootId) { SetCenterTransform(center, centerId); if (skinRoot != null) @@ -1729,9 +1732,9 @@ namespace MagicaCloth2 /// public void SetTransform(TransformRecord centerRecord, TransformRecord skinRootRecord = null) { - centerTransformIndex = transformData.AddTransform(centerRecord); + centerTransformIndex = transformData.AddTransform(centerRecord, MagicaObjectId.Invalid); if (skinRootRecord != null) - skinRootIndex = transformData.AddTransform(skinRootRecord); + skinRootIndex = transformData.AddTransform(skinRootRecord, MagicaObjectId.Invalid); else skinRootIndex = centerTransformIndex; @@ -1743,34 +1746,36 @@ namespace MagicaCloth2 initScale = centerRecord.scale; } - public void SetCenterTransform(Transform t, int tid = 0) + //public void SetCenterTransform(Transform t, int tid = 0) + public void SetCenterTransform(Transform t, MagicaObjectId tid) { if (t) { // すでに存在する場合は入れ替え if (centerTransformIndex >= 0) { - transformData.ReplaceTransform(centerTransformIndex, t, tid); + transformData.ReplaceTransform(centerTransformIndex, t, tid, MagicaObjectId.Invalid); } else { - centerTransformIndex = transformData.AddTransform(t, tid); + centerTransformIndex = transformData.AddTransform(t, tid, MagicaObjectId.Invalid); } } } - public void SetSkinRoot(Transform t, int tid = 0) + //public void SetSkinRoot(Transform t, int tid = 0) + public void SetSkinRoot(Transform t, MagicaObjectId tid) { if (t) { // すでに存在する場合は入れ替え if (skinRootIndex >= 0) { - transformData.ReplaceTransform(skinRootIndex, t, tid); + transformData.ReplaceTransform(skinRootIndex, t, tid, MagicaObjectId.Invalid); } else { - skinRootIndex = transformData.AddTransform(t, tid); + skinRootIndex = transformData.AddTransform(t, tid, MagicaObjectId.Invalid); } } } @@ -1801,7 +1806,7 @@ namespace MagicaCloth2 // ボーンの登録。スキニング用ボーンとしても登録。 index = skinBoneTransformIndices.Count; - int tindex = transformData.AddTransform(rd, checkDuplicate: false); // 重複ありで最後に追加する + int tindex = transformData.AddTransform(rd, pid: MagicaObjectId.Invalid, checkDuplicate: false); // 重複ありで最後に追加する skinBoneTransformIndices.Add(tindex); var bindPose = math.mul(rd.worldToLocalMatrix, initLocalToWorld); // bind pose skinBoneBindPoses.Add(bindPose); diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshInputOutput.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshInputOutput.cs.meta index 05a45b0fd..97273cf80 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshInputOutput.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshInputOutput.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshInputOutput.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshMapping.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshMapping.cs index b6e54fc01..9b069fb6b 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshMapping.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshMapping.cs @@ -382,7 +382,7 @@ namespace MagicaCloth2 [Unity.Collections.ReadOnly] public NativeArray boneWeights; [Unity.Collections.ReadOnly] - public NativeArray transformIds; + public NativeArray transformIds; [Unity.Collections.WriteOnly] public NativeArray attributes; @@ -396,7 +396,7 @@ namespace MagicaCloth2 [Unity.Collections.ReadOnly] public NativeArray proxyBoneWeights; [Unity.Collections.ReadOnly] - public NativeArray proxyTransformIds; + public NativeArray proxyTransformIds; // out [Unity.Collections.WriteOnly] @@ -414,7 +414,7 @@ namespace MagicaCloth2 Debug.Assert(bw.IsValid); // もっともウエイトが重いボーンのハッシュ - int boneId = transformIds[bw.boneIndices[0]]; + MagicaObjectId boneId = transformIds[bw.boneIndices[0]]; // グリッド範囲を検索する @@ -441,7 +441,7 @@ namespace MagicaCloth2 bool hasBone = false; for (int j = 0; j < tbw.Count && hasBone == false; j++) { - int tboneId = proxyTransformIds[tbw.boneIndices[j]]; + MagicaObjectId tboneId = proxyTransformIds[tbw.boneIndices[j]]; if (tboneId == boneId) hasBone = true; } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshMapping.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshMapping.cs.meta index 34963853c..38b1c015f 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshMapping.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshMapping.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshMapping.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshOptimization.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshOptimization.cs index 26b879a8c..588785339 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshOptimization.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshOptimization.cs @@ -94,8 +94,11 @@ namespace MagicaCloth2 if (edgeToTriangleList.ContainsKey(edge)) { var tlist = edgeToTriangleList[edge]; - tlist.MC2Set(i); - edgeToTriangleList[edge] = tlist; + if (tlist.Length < tlist.Capacity) // Capacity check + { + tlist.MC2Set(i); + edgeToTriangleList[edge] = tlist; + } } else { diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshOptimization.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshOptimization.cs.meta index 4231dd2f8..e955f78c4 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshOptimization.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshOptimization.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshOptimization.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshProxy.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshProxy.cs index c0e50e084..e702ff617 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshProxy.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshProxy.cs @@ -1937,7 +1937,7 @@ namespace MagicaCloth2 // トランスフォーム情報から親子関係を構築する // parent - var idToIndexDict = new Dictionary(vcnt); + var idToIndexDict = new Dictionary(vcnt); var idArray = transformData.idArray.GetNativeArray(); var parentIdArray = transformData.parentIdArray.GetNativeArray(); for (int i = 0; i < vcnt; i++) @@ -1946,7 +1946,7 @@ namespace MagicaCloth2 } for (int index = 0; index < vcnt; index++) { - int pid = parentIdArray[index]; + MagicaObjectId pid = parentIdArray[index]; if (idToIndexDict.ContainsKey(pid)) vertexParentIndices[index] = idToIndexDict[pid]; else @@ -1971,7 +1971,7 @@ namespace MagicaCloth2 var startIndices = new List(rootCount); var dataCounts = new List(rootCount); var indices = new List(vcnt); - foreach (int id in transformData.rootIdList) + foreach (MagicaObjectId id in transformData.rootIdList) { // ルートからTransformを走査して最初の移動ポイントを持つ固定を起点とする rootStack.Clear(); @@ -2153,7 +2153,7 @@ namespace MagicaCloth2 vertexLocalRotations[vindex] = lrot; // 親とのゼロ距離判定。フラグを立てる - if(MathUtility.IsZeroDistance(lpos)) + if (MathUtility.IsZeroDistance(lpos)) { var flag = attributes[vindex]; flag.SetFlag(VertexAttribute.Flag_ZeroDistance, true); diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshProxy.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshProxy.cs.meta index 195193a92..902875a85 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshProxy.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshProxy.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshProxy.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshReduction.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshReduction.cs.meta index 53861c77d..752b57834 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshReduction.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshReduction.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshReduction.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshSerialization.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshSerialization.cs index 5d775927d..6a223f469 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshSerialization.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshSerialization.cs @@ -267,7 +267,7 @@ namespace MagicaCloth2 transformData?.GetUsedTransform(transformSet); } - public void ReplaceTransform(Dictionary replaceDict) + public void ReplaceTransform(Dictionary replaceDict) { transformData?.ReplaceTransform(replaceDict); } diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshSerialization.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshSerialization.cs.meta index 23e82e7e4..c22c60a20 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshSerialization.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshSerialization.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshSerialization.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshWork.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshWork.cs.meta index 67b459467..457fd70d6 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshWork.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshWork.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/Function/VirtualMeshWork.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VertexAttribute.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VertexAttribute.cs.meta index 6efb80522..9278e4004 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VertexAttribute.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VertexAttribute.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VertexAttribute.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMesh.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMesh.cs.meta index 512b36f97..1c8a03cc7 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMesh.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMesh.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMesh.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshBoneWeight.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshBoneWeight.cs.meta index 38db20cc5..f02d33afd 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshBoneWeight.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshBoneWeight.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshBoneWeight.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshContainer.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshContainer.cs.meta index f2cef66f2..74dec543e 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshContainer.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshContainer.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshContainer.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshPrimitive.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshPrimitive.cs.meta index 3d70b8737..2b87d38bf 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshPrimitive.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshPrimitive.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshPrimitive.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshRaycastHit.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshRaycastHit.cs.meta index 7a3d5b6f1..6c3c37883 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshRaycastHit.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshRaycastHit.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshRaycastHit.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshTransform.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshTransform.cs.meta index b871b2a54..bf3b4a830 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshTransform.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshTransform.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Core/VirtualMesh/VirtualMeshTransform.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothAssetPostprocessor.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothAssetPostprocessor.cs.meta index 331b67474..368738911 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothAssetPostprocessor.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothAssetPostprocessor.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothAssetPostprocessor.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothEditorManager.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothEditorManager.cs index d45f33eb1..0ae6a1bf9 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothEditorManager.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothEditorManager.cs @@ -38,9 +38,9 @@ namespace MagicaCloth2 public ClothInitSerializeData editInitSerializeData; } - static Dictionary editClothDict = new Dictionary(); + static Dictionary editClothDict = new Dictionary(); - static List destroyList = new List(); + static List destroyList = new List(); static List drawList = new List(); static CancellationTokenSource cancelToken = new CancellationTokenSource(); @@ -170,7 +170,7 @@ namespace MagicaCloth2 if (ClothPainter.IsPainting()) return; - int id = component.GetInstanceID(); + MagicaObjectId id = component.GetMagicaId(); MagicaCloth cloth = component as MagicaCloth; //if (cloth) @@ -273,7 +273,7 @@ namespace MagicaCloth2 return null; if (comp == null) return null; - int id = comp.GetInstanceID(); + MagicaObjectId id = comp.GetMagicaId(); VirtualMeshContainer cmesh = null; lock (editClothDict) { @@ -291,7 +291,7 @@ namespace MagicaCloth2 { if (comp == null) return ResultCode.Empty; - int id = comp.GetInstanceID(); + MagicaObjectId id = comp.GetMagicaId(); lock (editClothDict) { if (editClothDict.ContainsKey(id)) @@ -435,7 +435,7 @@ namespace MagicaCloth2 /// /// /// - static async Task CreateOrUpdateEditMesh(int id, MagicaCloth cloth, CancellationToken ct) + static async Task CreateOrUpdateEditMesh(MagicaObjectId id, MagicaCloth cloth, CancellationToken ct) { // ■メインスレッド Develop.DebugLog($"Create and update edit meshes: {cloth.name}"); @@ -554,7 +554,7 @@ namespace MagicaCloth2 if (sdata.clothType == ClothProcess.ClothType.MeshCloth) { // MeshClothではクロストランスフォームを追加しておく - editMesh.SetTransform(cloth.ClothTransform); + editMesh.SetTransform(cloth.ClothTransform, null, MagicaObjectId.Invalid, MagicaObjectId.Invalid); } editMesh.result.SetProcess(); @@ -850,7 +850,7 @@ namespace MagicaCloth2 { if (cloth == null) return; - int id = cloth.GetInstanceID(); + MagicaObjectId id = cloth.GetMagicaId(); if (editClothDict.ContainsKey(id) == false) return; @@ -924,7 +924,7 @@ namespace MagicaCloth2 var connectionMode = sdata.clothType == ClothProcess.ClothType.BoneSpring ? RenderSetupData.BoneConnectionMode.Line : sdata.connectionMode; var setupType = sdata.clothType == ClothProcess.ClothType.BoneSpring ? RenderSetupData.SetupType.BoneSpring : RenderSetupData.SetupType.BoneCloth; using var setup = new RenderSetupData(null, setupType, cloth.ClothTransform, sdata.rootBones, null, connectionMode, cloth.name); - foreach (int id in setup.rootTransformIdList) + foreach (MagicaObjectId id in setup.rootTransformIdList) { int rootIndex = setup.GetTransformIndexFromId(id); selectionData.attributes[rootIndex] = VertexAttribute.Fixed; diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothEditorManager.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothEditorManager.cs.meta index d25d21d55..51f7512c7 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothEditorManager.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothEditorManager.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothEditorManager.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothEditorUtility.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothEditorUtility.cs.meta index 9191710ec..8b792dafa 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothEditorUtility.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothEditorUtility.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothEditorUtility.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothInspectorUtility.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothInspectorUtility.cs.meta index fbb9057cf..81169ee46 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothInspectorUtility.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothInspectorUtility.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothInspectorUtility.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothPainter.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothPainter.cs.meta index d0df9ccbf..78f3e1192 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothPainter.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothPainter.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothPainter.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothPresetUtility.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothPresetUtility.cs.meta index 7ec8573c3..d23d4d2dc 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothPresetUtility.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothPresetUtility.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/ClothPresetUtility.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaCapsuleColliderEditor.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaCapsuleColliderEditor.cs.meta index 24b9a9778..69c03281e 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaCapsuleColliderEditor.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaCapsuleColliderEditor.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaCapsuleColliderEditor.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaClothEditor.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaClothEditor.cs index d0ba8d3be..6a0e6ec47 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaClothEditor.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaClothEditor.cs @@ -320,7 +320,10 @@ namespace MagicaCloth2 EditorGUILayout.Space(); if (sync == false) + { EditorGUILayout.PropertyField(serializedObject.FindProperty("serializeData.updateMode")); + EditorGUILayout.PropertyField(serializedObject.FindProperty("serializeData.disableMode")); + } else { // 同期中は操作不可 @@ -331,6 +334,11 @@ namespace MagicaCloth2 EditorGUILayout.LabelField("Update Mode"); EditorGUILayout.LabelField("(Synchronizing)"); } + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.LabelField("Disable Mode"); + EditorGUILayout.LabelField("(Synchronizing)"); + } } } EditorGUILayout.PropertyField(serializedObject.FindProperty("serializeData.animationPoseRatio")); diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaClothEditor.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaClothEditor.cs.meta index fc27e6cd3..607f01fb0 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaClothEditor.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaClothEditor.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaClothEditor.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaEditorBase.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaEditorBase.cs.meta index 373642421..90c592a74 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaEditorBase.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaEditorBase.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaEditorBase.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaPlaneColliderEditor.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaPlaneColliderEditor.cs.meta index e9095a322..911770bc3 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaPlaneColliderEditor.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaPlaneColliderEditor.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaPlaneColliderEditor.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaSettingsEditor.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaSettingsEditor.cs.meta index 2eabb0190..e67dcc9e8 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaSettingsEditor.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaSettingsEditor.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaSettingsEditor.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaSphereColliderEditor.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaSphereColliderEditor.cs.meta index e5388382d..8e007e82b 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaSphereColliderEditor.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaSphereColliderEditor.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaSphereColliderEditor.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaWindZoneEditor.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaWindZoneEditor.cs.meta index e0ff0eb59..696343f81 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaWindZoneEditor.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaWindZoneEditor.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/MagicaWindZoneEditor.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/VirtualMeshEditorUtility.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/VirtualMeshEditorUtility.cs.meta index 87a2baf92..a7b9587ee 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/VirtualMeshEditorUtility.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/VirtualMeshEditorUtility.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Cloth/VirtualMeshEditorUtility.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/AboutMenu.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/AboutMenu.cs index 3ad75a9c1..8145c04c2 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/AboutMenu.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/AboutMenu.cs @@ -14,7 +14,7 @@ namespace MagicaCloth2 [SerializeField] private Texture2D image = null; - public const string MagicaClothVersion = "2.17.0"; + public const string MagicaClothVersion = "2.18.1"; public static AboutMenu AboutWindow { get; set; } private const float windowWidth = 300; diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/AboutMenu.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/AboutMenu.cs.meta index bfd24af5f..eeeec07dd 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/AboutMenu.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/AboutMenu.cs.meta @@ -15,6 +15,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/AboutMenu.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/CheckSliderSerializeDataDrawer.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/CheckSliderSerializeDataDrawer.cs.meta index c9b78219f..731dde4eb 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/CheckSliderSerializeDataDrawer.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/CheckSliderSerializeDataDrawer.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/CheckSliderSerializeDataDrawer.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/CurveSerializeDataDrawer.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/CurveSerializeDataDrawer.cs.meta index ddc5fa7e2..a29162e2b 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/CurveSerializeDataDrawer.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/CurveSerializeDataDrawer.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/CurveSerializeDataDrawer.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/DrawIconInHierarchy.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/DrawIconInHierarchy.cs index 27c42915d..6cf496ba3 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/DrawIconInHierarchy.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/DrawIconInHierarchy.cs @@ -16,10 +16,19 @@ namespace MagicaCloth2 static DrawIconInHierarchy() { +#if UNITY_6000_4_OR_NEWER + EditorApplication.hierarchyWindowItemByEntityIdOnGUI += DrawIcon; +#else EditorApplication.hierarchyWindowItemOnGUI += DrawIcon; +#endif } + //static void DrawIcon(int instanceId, Rect rect) +#if UNITY_6000_4_OR_NEWER + static void DrawIcon(EntityId instanceId, Rect rect) +#else static void DrawIcon(int instanceId, Rect rect) +#endif { rect.width = iconSize; #if UNITY_6000_3_OR_NEWER diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/DrawIconInHierarchy.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/DrawIconInHierarchy.cs.meta index 8c0bb6d7b..6e02f2eab 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/DrawIconInHierarchy.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/DrawIconInHierarchy.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/DrawIconInHierarchy.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/MenuItemScript.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/MenuItemScript.cs.meta index ac3d2f61c..16ee334c0 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/MenuItemScript.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/MenuItemScript.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/MenuItemScript.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/SharePreBuildDataDrawer.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/SharePreBuildDataDrawer.cs.meta index 9d783ced1..af3eff7fb 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/SharePreBuildDataDrawer.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/SharePreBuildDataDrawer.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/EditorExtension/SharePreBuildDataDrawer.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/GizmoUtility.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/GizmoUtility.cs.meta index 133ef1d65..77574ea1a 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/GizmoUtility.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/GizmoUtility.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/GizmoUtility.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaCapsuleColliderGizmoDrawer.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaCapsuleColliderGizmoDrawer.cs.meta index 4b840b42f..a8fee77cd 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaCapsuleColliderGizmoDrawer.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaCapsuleColliderGizmoDrawer.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaCapsuleColliderGizmoDrawer.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaClothGizmoDrawer.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaClothGizmoDrawer.cs.meta index d00b36cf3..69af846b7 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaClothGizmoDrawer.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaClothGizmoDrawer.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaClothGizmoDrawer.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaPlaneColliderGizmoDrawer.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaPlaneColliderGizmoDrawer.cs.meta index ab0b372a6..07352303c 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaPlaneColliderGizmoDrawer.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaPlaneColliderGizmoDrawer.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaPlaneColliderGizmoDrawer.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaSphereColliderGizmoDrawer.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaSphereColliderGizmoDrawer.cs.meta index 4226c4b0b..9d6a387b9 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaSphereColliderGizmoDrawer.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaSphereColliderGizmoDrawer.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaSphereColliderGizmoDrawer.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaWindZoneGizmoDrawer.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaWindZoneGizmoDrawer.cs.meta index fbb742916..4331219c3 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaWindZoneGizmoDrawer.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaWindZoneGizmoDrawer.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/Gizmos/MagicaWindZoneGizmoDrawer.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/MagicaCloth2.Editor.asmdef.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/MagicaCloth2.Editor.asmdef.meta index 32addb666..edff32bf5 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/MagicaCloth2.Editor.asmdef.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/MagicaCloth2.Editor.asmdef.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/MagicaCloth2.Editor.asmdef - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/PreBuild/PreBuildDataCreation.cs b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/PreBuild/PreBuildDataCreation.cs index a645eaf01..9f14b404e 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/PreBuild/PreBuildDataCreation.cs +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/PreBuild/PreBuildDataCreation.cs @@ -335,7 +335,7 @@ namespace MagicaCloth2 selectionData.Fill(VertexAttribute.Move); // 次にルートのみ固定 - foreach (int id in boneClothSetupData.rootTransformIdList) + foreach (MagicaObjectId id in boneClothSetupData.rootTransformIdList) { int rootIndex = boneClothSetupData.GetTransformIndexFromId(id); selectionData.attributes[rootIndex] = VertexAttribute.Fixed; diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/PreBuild/PreBuildDataCreation.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/PreBuild/PreBuildDataCreation.cs.meta index d6f6330a9..d1b6970ae 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/PreBuild/PreBuildDataCreation.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/PreBuild/PreBuildDataCreation.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/PreBuild/PreBuildDataCreation.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Burst/MagicaCloth2UPMImporterBurst.asmdef.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Burst/MagicaCloth2UPMImporterBurst.asmdef.meta index 35a7dbcc3..c2004f5f6 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Burst/MagicaCloth2UPMImporterBurst.asmdef.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Burst/MagicaCloth2UPMImporterBurst.asmdef.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Burst/MagicaCloth2UPMImporterBurst.asmdef - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Burst/UnityPackageImporter.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Burst/UnityPackageImporter.cs.meta index 24faf4a63..a0c5ab7e8 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Burst/UnityPackageImporter.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Burst/UnityPackageImporter.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Burst/UnityPackageImporter.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Collections/MagicaCloth2UPMImporterCollections.asmdef.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Collections/MagicaCloth2UPMImporterCollections.asmdef.meta index 62325c983..922a432c0 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Collections/MagicaCloth2UPMImporterCollections.asmdef.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Collections/MagicaCloth2UPMImporterCollections.asmdef.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Collections/MagicaCloth2UPMImporterCollections.asmdef - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Collections/UnityPackageImporter.cs.meta b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Collections/UnityPackageImporter.cs.meta index 27b53f0fc..0350024b0 100644 --- a/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Collections/UnityPackageImporter.cs.meta +++ b/Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Collections/UnityPackageImporter.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 242307 packageName: Magica Cloth 2 - packageVersion: 2.17.0 + packageVersion: 2.18.1 assetPath: Assets/OtherPlugins/MagicaCloth2/Scripts/Editor/UnityPackageImporter/Collections/UnityPackageImporter.cs - uploadId: 829902 + uploadId: 893596 diff --git a/Assets/Plugins/Easy Save 3/Resources/ES3/ES3Defaults.asset b/Assets/Plugins/Easy Save 3/Resources/ES3/ES3Defaults.asset index 58c72f7f0..f5d2b85ca 100644 --- a/Assets/Plugins/Easy Save 3/Resources/ES3/ES3Defaults.asset +++ b/Assets/Plugins/Easy Save 3/Resources/ES3/ES3Defaults.asset @@ -57,10 +57,6 @@ MonoBehaviour: - JeffGrawAssets.FlexibleUI.Runtime - LeanCommon - LeanPool - - LeTai.Asset.TranslucentImage - - LeTai.Common - - LeTai.Paraform.Scaffold - - LeTai.TranslucentImage.UniversalRP - MagicaCloth2Example - MagicaClothV2 - Opsive.BehaviorDesigner.AddOns.FormationsPack.Runtime diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Materials/DemoMeshParticles.mat.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Materials/DemoMeshParticles.mat.meta index e88ba36e5..c2dafa47b 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Materials/DemoMeshParticles.mat.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Materials/DemoMeshParticles.mat.meta @@ -10,6 +10,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Materials/DemoMeshParticles.mat - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Prefabs/BlurDemoParticleSystem.prefab.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Prefabs/BlurDemoParticleSystem.prefab.meta index e9c8f0e59..1e23510fd 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Prefabs/BlurDemoParticleSystem.prefab.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Prefabs/BlurDemoParticleSystem.prefab.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Prefabs/BlurDemoParticleSystem.prefab - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset1.asset b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset1.asset index f3dec5437..488b4d484 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset1.asset +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset1.asset @@ -27,8 +27,8 @@ MonoBehaviour: sampleDistance: 1.5 referenceResolution: 1080 hqResample: 0 - blurAdditionalDistancePerIteration: 1 - ditherStrength: 0.25 + blurAdditionalDistancePerIteration: 0 + ditherStrength: 0 brightness: 0 contrast: 0 vibrancy: -0.598 @@ -52,7 +52,7 @@ MonoBehaviour: brightness: 0 contrast: 0 vibrancy: -0.598 - tint: {r: 0, g: 0, b: 0, a: 0} + tint: {r: 1, g: 1, b: 1, a: 1} - downscaleSections: - algorithmIdx: 3 iterations: 2 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset1.asset.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset1.asset.meta index 3610dea97..aa071d678 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset1.asset.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset1.asset.meta @@ -10,6 +10,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset1.asset - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset2.asset.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset2.asset.meta index f4879b64f..7c937f928 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset2.asset.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset2.asset.meta @@ -10,6 +10,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset2.asset - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset3.asset.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset3.asset.meta index ff27fe384..db9d9ab6b 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset3.asset.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset3.asset.meta @@ -10,6 +10,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Presets/DemoPreset3.asset - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/BatchedBlurs.unity b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/BatchedBlurs.unity index ee0c37d5f..340645427 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/BatchedBlurs.unity +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/BatchedBlurs.unity @@ -3922,6 +3922,63 @@ MonoBehaviour: additionalBlurPadding: 0 tryBatchWithSimilar: 1 fillEntireRenderTexture: 0 +--- !u!1 &420740351 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 420740353} + - component: {fileID: 420740352} + m_Layer: 0 + m_Name: WwiseGlobal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &420740352 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420740351} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3046180979db9c64ea39dcdc5a901c8a, type: 3} + m_Name: + m_EditorClassIdentifier: AK.Wwise.Unity.MonoBehaviour::AkInitializer + InitializationSettings: {fileID: 11400000, guid: 9c702a6546260e64cbc09606c7b98de9, type: 2} + basePath: + language: + defaultPoolSize: 0 + lowerPoolSize: 0 + streamingPoolSize: 0 + memoryCutoffThreshold: 0 + monitorPoolSize: 0 + monitorQueuePoolSize: 0 + callbackManagerBufferSize: 0 + spatialAudioPoolSize: 0 + maxSoundPropagationDepth: 0 + engineLogging: 0 +--- !u!4 &420740353 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420740351} + 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: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &429017133 GameObject: m_ObjectHideFlags: 0 @@ -9931,7 +9988,7 @@ GameObject: - component: {fileID: 926385315} - component: {fileID: 926385314} - component: {fileID: 926385316} - - component: {fileID: 926385313} + - component: {fileID: 926385317} m_Layer: 0 m_Name: EventSystem m_TagString: Untagged @@ -9939,26 +9996,6 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &926385313 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 926385312} - 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 &926385314 MonoBehaviour: m_ObjectHideFlags: 0 @@ -10001,6 +10038,37 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 5cbfd76c5632a574ea827a1b858e16a3, type: 3} m_Name: m_EditorClassIdentifier: JeffGrawAssets.FlexibleUI.Runtime::JeffGrawAssets.FlexibleUI.InputManagerReplacer +--- !u!114 &926385317 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 926385312} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.InputSystem::UnityEngine.InputSystem.UI.InputSystemUIInputModule + m_SendPointerHoverToParent: 1 + m_MoveRepeatDelay: 0.5 + m_MoveRepeatRate: 0.1 + m_XRTrackingOrigin: {fileID: 0} + m_ActionsAsset: {fileID: -944628639613478452, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_PointAction: {fileID: -1654692200621890270, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_MoveAction: {fileID: -8784545083839296357, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_SubmitAction: {fileID: 392368643174621059, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_CancelAction: {fileID: 7727032971491509709, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_LeftClickAction: {fileID: 3001919216989983466, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_MiddleClickAction: {fileID: -2185481485913320682, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_RightClickAction: {fileID: -4090225696740746782, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_ScrollWheelAction: {fileID: 6240969308177333660, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_TrackedDevicePositionAction: {fileID: 6564999863303420839, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_TrackedDeviceOrientationAction: {fileID: 7970375526676320489, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_DeselectOnBackgroundClick: 1 + m_PointerBehavior: 0 + m_CursorLockBehavior: 0 + m_ScrollDeltaPerTick: 6 --- !u!1 &959605917 GameObject: m_ObjectHideFlags: 0 @@ -10401,8 +10469,9 @@ GameObject: m_Component: - component: {fileID: 961739753} - component: {fileID: 961739752} - - component: {fileID: 961739751} - component: {fileID: 961739750} + - component: {fileID: 961739755} + - component: {fileID: 961739754} m_Layer: 0 m_Name: Camera m_TagString: MainCamera @@ -10427,7 +10496,7 @@ MonoBehaviour: m_RequiresOpaqueTextureOption: 2 m_CameraType: 0 m_Cameras: [] - m_RendererIndex: -1 + m_RendererIndex: 0 m_VolumeLayerMask: serializedVersion: 2 m_Bits: 1 @@ -10454,14 +10523,6 @@ MonoBehaviour: m_VarianceClampScale: 0.9 m_ContrastAdaptiveSharpening: 0 m_Version: 2 ---- !u!81 &961739751 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 961739749} - m_Enabled: 1 --- !u!20 &961739752 Camera: m_ObjectHideFlags: 0 @@ -10530,6 +10591,46 @@ Transform: - {fileID: 819963500} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &961739754 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961739749} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ad482e3373334964bae675bc7b51aa85, type: 3} + m_Name: + m_EditorClassIdentifier: AK.Wwise.Unity.MonoBehaviour::AkAudioListener + isDefaultListener: 1 + bOverrideScalingFactor: 0 + scalingFactor: -1 + listenerId: 0 +--- !u!114 &961739755 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961739749} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 08c6f13482881574cb053132489e15ca, type: 3} + m_Name: + m_EditorClassIdentifier: AK.Wwise.Unity.MonoBehaviour::AkGameObj + m_listeners: + initialListenerList: [] + useDefaultListeners: 1 + isEnvironmentAware: 0 + isStaticObject: 0 + usePositionOffsetData: 0 + m_positionOffsetData: + KeepMe: 0 + positionOffset: {x: 0, y: 0, z: 0} + scalingFactor: 1 + m_posOffsetData: {fileID: 0} + listenerMask: 1 --- !u!1 &967242023 GameObject: m_ObjectHideFlags: 0 @@ -20876,7 +20977,6 @@ Canvas: m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 m_VertexColorAlwaysGammaSpace: 1 - m_UseReflectionProbes: 0 m_AdditionalShaderChannelsFlag: 7 m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 @@ -23000,3 +23100,4 @@ SceneRoots: - {fileID: 926385315} - {fileID: 2031444752} - {fileID: 681775934} + - {fileID: 420740353} diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/BatchedBlurs.unity.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/BatchedBlurs.unity.meta index a7fc4deaf..eb327f213 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/BatchedBlurs.unity.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/BatchedBlurs.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/BatchedBlurs.unity - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Blur Controller.unity.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Blur Controller.unity.meta index a038f0b40..2b40a710a 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Blur Controller.unity.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Blur Controller.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Blur Controller.unity - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Blur Dithering.unity.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Blur Dithering.unity.meta index 0b5b3f82a..791bb4aa5 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Blur Dithering.unity.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Blur Dithering.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Blur Dithering.unity - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Blur Padding.unity.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Blur Padding.unity.meta index 87db4ec7d..8e1ddabb5 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Blur Padding.unity.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Blur Padding.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Blur Padding.unity - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Diverse Blurs.unity.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Diverse Blurs.unity.meta index f9a21aab1..30434bdbb 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Diverse Blurs.unity.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Diverse Blurs.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Diverse Blurs.unity - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Masked Blur.unity.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Masked Blur.unity.meta index 1388b99a1..5d176e619 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Masked Blur.unity.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Masked Blur.unity.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Masked Blur.unity - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Single Camera UI Preserving Blur.unity.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Single Camera UI Preserving Blur.unity.meta index b10a0e992..1104b31fd 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Single Camera UI Preserving Blur.unity.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Single Camera UI Preserving Blur.unity.meta @@ -9,7 +9,7 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Single Camera UI Preserving Blur.unity - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Stacked Blur Multi Camera.unity.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Stacked Blur Multi Camera.unity.meta index de0126d34..a8307b2c0 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Stacked Blur Multi Camera.unity.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Stacked Blur Multi Camera.unity.meta @@ -9,7 +9,7 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Stacked Blur Multi Camera.unity - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Stacked Blur Shared Camera.unity.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Stacked Blur Shared Camera.unity.meta index ca5fd5e66..2c593c86e 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Stacked Blur Shared Camera.unity.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Stacked Blur Shared Camera.unity.meta @@ -9,7 +9,7 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scenes/Stacked Blur Shared Camera.unity - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scripts/DemoBlurController.cs.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scripts/DemoBlurController.cs.meta index 42330b460..69a9ecd87 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scripts/DemoBlurController.cs.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scripts/DemoBlurController.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Scripts/DemoBlurController.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/CircleFade.png.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/CircleFade.png.meta index e27897252..e8a8ef503 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/CircleFade.png.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/CircleFade.png.meta @@ -132,6 +132,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/CircleFade.png - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/RoundedCorners.png.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/RoundedCorners.png.meta index 7d46d7757..52f4281c2 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/RoundedCorners.png.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/RoundedCorners.png.meta @@ -132,6 +132,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/RoundedCorners.png - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/RoundedReticle.png.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/RoundedReticle.png.meta index 97106aa48..8e7613c98 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/RoundedReticle.png.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/RoundedReticle.png.meta @@ -132,6 +132,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/RoundedReticle.png - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/SliderBackground.png.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/SliderBackground.png.meta index 612ade947..a167c6b45 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/SliderBackground.png.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/SliderBackground.png.meta @@ -132,6 +132,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/SliderBackground.png - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/SliderHandle.png.meta b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/SliderHandle.png.meta index 32f76031d..eb556bf84 100644 --- a/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/SliderHandle.png.meta +++ b/Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/SliderHandle.png.meta @@ -132,6 +132,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/FlexibleBlur/Textures/SliderHandle.png - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/Prefabs/DemoSceneCommon.prefab.meta b/Assets/Plugins/FlexibleUI/Demos/Prefabs/DemoSceneCommon.prefab.meta index 244475d0d..cb26dc99a 100644 --- a/Assets/Plugins/FlexibleUI/Demos/Prefabs/DemoSceneCommon.prefab.meta +++ b/Assets/Plugins/FlexibleUI/Demos/Prefabs/DemoSceneCommon.prefab.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/Prefabs/DemoSceneCommon.prefab - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/Scripts/DemoSceneControl.cs.meta b/Assets/Plugins/FlexibleUI/Demos/Scripts/DemoSceneControl.cs.meta index 770087efc..62a6d3ee9 100644 --- a/Assets/Plugins/FlexibleUI/Demos/Scripts/DemoSceneControl.cs.meta +++ b/Assets/Plugins/FlexibleUI/Demos/Scripts/DemoSceneControl.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/Scripts/DemoSceneControl.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/Scripts/InputModuleReplacer.cs.meta b/Assets/Plugins/FlexibleUI/Demos/Scripts/InputModuleReplacer.cs.meta index 610ce9a86..d984afbf4 100644 --- a/Assets/Plugins/FlexibleUI/Demos/Scripts/InputModuleReplacer.cs.meta +++ b/Assets/Plugins/FlexibleUI/Demos/Scripts/InputModuleReplacer.cs.meta @@ -4,6 +4,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/Scripts/InputModuleReplacer.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/Scripts/SimpleFPSCounter.cs.meta b/Assets/Plugins/FlexibleUI/Demos/Scripts/SimpleFPSCounter.cs.meta index 06989e450..ff5b3375c 100644 --- a/Assets/Plugins/FlexibleUI/Demos/Scripts/SimpleFPSCounter.cs.meta +++ b/Assets/Plugins/FlexibleUI/Demos/Scripts/SimpleFPSCounter.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/Scripts/SimpleFPSCounter.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/Textures/Background0.png.meta b/Assets/Plugins/FlexibleUI/Demos/Textures/Background0.png.meta index 1c863c0fa..67c67cea0 100644 --- a/Assets/Plugins/FlexibleUI/Demos/Textures/Background0.png.meta +++ b/Assets/Plugins/FlexibleUI/Demos/Textures/Background0.png.meta @@ -129,6 +129,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/Textures/Background0.png - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/Textures/Background1.png.meta b/Assets/Plugins/FlexibleUI/Demos/Textures/Background1.png.meta index 0c2961977..a5b3b9472 100644 --- a/Assets/Plugins/FlexibleUI/Demos/Textures/Background1.png.meta +++ b/Assets/Plugins/FlexibleUI/Demos/Textures/Background1.png.meta @@ -129,6 +129,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/Textures/Background1.png - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Demos/Textures/Background2.png.meta b/Assets/Plugins/FlexibleUI/Demos/Textures/Background2.png.meta index e02bcde1d..a1d932361 100644 --- a/Assets/Plugins/FlexibleUI/Demos/Textures/Background2.png.meta +++ b/Assets/Plugins/FlexibleUI/Demos/Textures/Background2.png.meta @@ -132,6 +132,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Demos/Textures/Background2.png - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Editor/EditorHelpers.cs.meta b/Assets/Plugins/FlexibleUI/Editor/EditorHelpers.cs.meta index 5328e0801..3e2271ab5 100644 --- a/Assets/Plugins/FlexibleUI/Editor/EditorHelpers.cs.meta +++ b/Assets/Plugins/FlexibleUI/Editor/EditorHelpers.cs.meta @@ -4,6 +4,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Editor/EditorHelpers.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/BlurPresetEditor.cs.meta b/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/BlurPresetEditor.cs.meta index ff7d748fb..6c9aa6069 100644 --- a/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/BlurPresetEditor.cs.meta +++ b/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/BlurPresetEditor.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/BlurPresetEditor.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/BlurReferenceProviderEditor.cs.meta b/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/BlurReferenceProviderEditor.cs.meta index 8f60b7bfe..d026cc141 100644 --- a/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/BlurReferenceProviderEditor.cs.meta +++ b/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/BlurReferenceProviderEditor.cs.meta @@ -4,6 +4,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/BlurReferenceProviderEditor.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/BlurredImageEditor.cs.meta b/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/BlurredImageEditor.cs.meta index cdd895d2e..60fa72383 100644 --- a/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/BlurredImageEditor.cs.meta +++ b/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/BlurredImageEditor.cs.meta @@ -4,6 +4,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/BlurredImageEditor.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/DemoSceneFeatureCheckWindow.cs.meta b/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/DemoSceneFeatureCheckWindow.cs.meta index daf21b1d6..564c12041 100644 --- a/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/DemoSceneFeatureCheckWindow.cs.meta +++ b/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/DemoSceneFeatureCheckWindow.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/DemoSceneFeatureCheckWindow.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/FlexibleBlurFeatureBuildHelper.cs.meta b/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/FlexibleBlurFeatureBuildHelper.cs.meta index e66fd9183..14afa74b2 100644 --- a/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/FlexibleBlurFeatureBuildHelper.cs.meta +++ b/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/FlexibleBlurFeatureBuildHelper.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/FlexibleBlurFeatureBuildHelper.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/FlexibleBlurFeatureEditor.cs.meta b/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/FlexibleBlurFeatureEditor.cs.meta index a9df74078..c1d7b5fb1 100644 --- a/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/FlexibleBlurFeatureEditor.cs.meta +++ b/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/FlexibleBlurFeatureEditor.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/FlexibleBlurFeatureEditor.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/FlexibleBlurMenuItems.cs.meta b/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/FlexibleBlurMenuItems.cs.meta index 54a5c17f7..4da86d555 100644 --- a/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/FlexibleBlurMenuItems.cs.meta +++ b/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/FlexibleBlurMenuItems.cs.meta @@ -14,6 +14,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/FlexibleBlurMenuItems.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/UIBlurEditor.cs.meta b/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/UIBlurEditor.cs.meta index 7382d9214..c5ca85e7a 100644 --- a/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/UIBlurEditor.cs.meta +++ b/Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/UIBlurEditor.cs.meta @@ -4,6 +4,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Editor/FlexibleBlur/UIBlurEditor.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Editor/FlexibleUI.Editor.asmdef.meta b/Assets/Plugins/FlexibleUI/Editor/FlexibleUI.Editor.asmdef.meta index 0fd59cb8e..97e984644 100644 --- a/Assets/Plugins/FlexibleUI/Editor/FlexibleUI.Editor.asmdef.meta +++ b/Assets/Plugins/FlexibleUI/Editor/FlexibleUI.Editor.asmdef.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Editor/FlexibleUI.Editor.asmdef - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Editor/MenuItemCommon.cs.meta b/Assets/Plugins/FlexibleUI/Editor/MenuItemCommon.cs.meta index e1559e4aa..31e2c8195 100644 --- a/Assets/Plugins/FlexibleUI/Editor/MenuItemCommon.cs.meta +++ b/Assets/Plugins/FlexibleUI/Editor/MenuItemCommon.cs.meta @@ -4,6 +4,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Editor/MenuItemCommon.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/Editor/PresetSavePath.cs.meta b/Assets/Plugins/FlexibleUI/Editor/PresetSavePath.cs.meta index cf9b29ef7..c15be1616 100644 --- a/Assets/Plugins/FlexibleUI/Editor/PresetSavePath.cs.meta +++ b/Assets/Plugins/FlexibleUI/Editor/PresetSavePath.cs.meta @@ -4,6 +4,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/Editor/PresetSavePath.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FilledMeshHelper.cs.meta b/Assets/Plugins/FlexibleUI/FilledMeshHelper.cs.meta index 2bfe9e676..1bab4104d 100644 --- a/Assets/Plugins/FlexibleUI/FilledMeshHelper.cs.meta +++ b/Assets/Plugins/FlexibleUI/FilledMeshHelper.cs.meta @@ -4,6 +4,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FilledMeshHelper.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/FlexibleBlur Manual.pdf.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/FlexibleBlur Manual.pdf.meta index e1bda1984..b8958e812 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/FlexibleBlur Manual.pdf.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/FlexibleBlur Manual.pdf.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/FlexibleBlur Manual.pdf - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Resources/ComputeBlurs.compute.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/Resources/ComputeBlurs.compute.meta index 32e5f1b57..17a67175f 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Resources/ComputeBlurs.compute.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Resources/ComputeBlurs.compute.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/Resources/ComputeBlurs.compute - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Resources/FlexibleBlurIncludedShaders.shadervariants.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/Resources/FlexibleBlurIncludedShaders.shadervariants.meta index 5a009b1f8..937a06598 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Resources/FlexibleBlurIncludedShaders.shadervariants.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Resources/FlexibleBlurIncludedShaders.shadervariants.meta @@ -10,6 +10,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/Resources/FlexibleBlurIncludedShaders.shadervariants - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Resources/VRComputeBlurs.compute.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/Resources/VRComputeBlurs.compute.meta index e959a7ab7..99908e757 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Resources/VRComputeBlurs.compute.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Resources/VRComputeBlurs.compute.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/Resources/VRComputeBlurs.compute - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurAlgorithms.cs.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurAlgorithms.cs.meta index 4001d7778..43a58d3e9 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurAlgorithms.cs.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurAlgorithms.cs.meta @@ -4,6 +4,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurAlgorithms.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurPreset.cs.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurPreset.cs.meta index 432706b6d..a8f677bc5 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurPreset.cs.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurPreset.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurPreset.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurReferenceProvider.cs.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurReferenceProvider.cs.meta index b4880f749..b7a891bcc 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurReferenceProvider.cs.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurReferenceProvider.cs.meta @@ -4,6 +4,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurReferenceProvider.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurredImage.cs.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurredImage.cs.meta index ea70e5149..8caee1830 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurredImage.cs.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurredImage.cs.meta @@ -4,6 +4,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/BlurredImage.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/FlexibleBlurFeature.cs.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/FlexibleBlurFeature.cs.meta index 97c065f87..65530b6a3 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/FlexibleBlurFeature.cs.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/FlexibleBlurFeature.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/FlexibleBlurFeature.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/FlexibleBlurRenderGraph.cs b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/FlexibleBlurRenderGraph.cs index fb8e5d0f9..fe33f0e9c 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/FlexibleBlurRenderGraph.cs +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/FlexibleBlurRenderGraph.cs @@ -35,7 +35,7 @@ public partial class FlexibleBlurPass blurLayerAdddedThisFrame = false; var cameraData = frameData.Get(); - if (cameraData.isPreviewCamera) + if (cameraData.isPreviewCamera || cameraData.isSceneViewCamera) return; var camera = cameraData.camera; diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/FlexibleBlurRenderGraph.cs.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/FlexibleBlurRenderGraph.cs.meta index 2cd80c98d..9f36f062b 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/FlexibleBlurRenderGraph.cs.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/FlexibleBlurRenderGraph.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/FlexibleBlurRenderGraph.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/IBlur.cs.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/IBlur.cs.meta index d43b80cf3..c9761d6e9 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/IBlur.cs.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/IBlur.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/IBlur.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/PooledDictionary.cs.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/PooledDictionary.cs.meta index 945267458..a4ff38ced 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/PooledDictionary.cs.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/PooledDictionary.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/PooledDictionary.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/UIBlur.cs.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/UIBlur.cs.meta index 0c6b55398..b500ca7a5 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/UIBlur.cs.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/UIBlur.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/UIBlur.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/UIBlurCommon.cs b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/UIBlurCommon.cs index 2fbbfa3a4..c05e406ca 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/UIBlurCommon.cs +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/UIBlurCommon.cs @@ -169,7 +169,7 @@ public class UIBlurCommon { hasCachedBlur = false; - if (!PresentInBlurList || prevKey.prevCamera == null || !blurDict.TryGetValue(prevKey, out var blurList)) + if (!PresentInBlurList || !blurDict.TryGetValue(prevKey, out var blurList)) { prevKey = (null, 0); PresentInBlurList = false; @@ -297,7 +297,7 @@ public class UIBlurCommon var key = GetCameraFeatureKey(canvas); var camera = key.camera; - if (!camera) + if (!camera || !canvas || !canvas.isActiveAndEnabled || !rectTransform.gameObject.activeInHierarchy) { RemoveFromBlurList(); return; diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/UIBlurCommon.cs.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/UIBlurCommon.cs.meta index 9466919fe..2b8966c63 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/UIBlurCommon.cs.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/UIBlurCommon.cs.meta @@ -13,6 +13,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/Scripts/UIBlurCommon.cs - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/BlurredImage.shader.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/BlurredImage.shader.meta index 80c45ce08..dd059d519 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/BlurredImage.shader.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/BlurredImage.shader.meta @@ -11,6 +11,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/BlurredImage.shader - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/Blurs.shader.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/Blurs.shader.meta index f0a9d8861..92af5c833 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/Blurs.shader.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/Blurs.shader.meta @@ -11,6 +11,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/Blurs.shader - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/FullScreenBlits.shader.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/FullScreenBlits.shader.meta index ac2cf3c92..42b31b9c4 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/FullScreenBlits.shader.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/FullScreenBlits.shader.meta @@ -11,6 +11,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/FullScreenBlits.shader - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/QuadBlits.shader.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/QuadBlits.shader.meta index 36ab795c6..3db202e41 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/QuadBlits.shader.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/QuadBlits.shader.meta @@ -11,6 +11,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/QuadBlits.shader - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/RegionalBlits.shader.meta b/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/RegionalBlits.shader.meta index ce3f28d4f..bbc7241e5 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/RegionalBlits.shader.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/RegionalBlits.shader.meta @@ -11,6 +11,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleBlur/Shaders/RegionalBlits.shader - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Plugins/FlexibleUI/FlexibleUI.Runtime.asmdef.meta b/Assets/Plugins/FlexibleUI/FlexibleUI.Runtime.asmdef.meta index ebc716809..3ec08831c 100644 --- a/Assets/Plugins/FlexibleUI/FlexibleUI.Runtime.asmdef.meta +++ b/Assets/Plugins/FlexibleUI/FlexibleUI.Runtime.asmdef.meta @@ -9,6 +9,6 @@ AssetOrigin: serializedVersion: 1 productId: 338648 packageName: Flexible Blur - UI Blur Framework That Solves Hard Problems - packageVersion: 1.2.4 + packageVersion: 1.2.5 assetPath: Assets/Plugins/FlexibleUI/FlexibleUI.Runtime.asmdef - uploadId: 919710 + uploadId: 923130 diff --git a/Assets/Prefabs/MainGame/Characters/Automata/M1_Suppression_Centurion/M1_Suppression_Centurion.prefab b/Assets/Prefabs/MainGame/Characters/Automata/M1_Suppression_Centurion/M1_Suppression_Centurion.prefab index 64f1493da..d37050c7c 100644 --- a/Assets/Prefabs/MainGame/Characters/Automata/M1_Suppression_Centurion/M1_Suppression_Centurion.prefab +++ b/Assets/Prefabs/MainGame/Characters/Automata/M1_Suppression_Centurion/M1_Suppression_Centurion.prefab @@ -1517,6 +1517,26 @@ MonoBehaviour: - Name: effectRenderMaterials Entry: 6 Data: + - Name: particleEffects + Entry: 7 + Data: 2|System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[UnityEngine.ParticleSystem, + UnityEngine.ParticleSystemModule]], mscorlib + - Name: comparer + Entry: 7 + Data: 3|System.Collections.Generic.GenericEqualityComparer`1[[System.String, + mscorlib]], mscorlib + - Name: + Entry: 8 + Data: + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: owner: {fileID: 7539845505866570745} baseRenderers: - {fileID: 5886335589259091668} @@ -2005,7 +2025,7 @@ MonoBehaviour: m_ValueHashes: m_LongValueHashes: 5876362df79b58fa30b77c28f48d1b2966cb3cf98c4bd96480f6501333363a66622a4da7e5588b5847627e5c3afba34a431ec8427602143adb21fc73562f2ad1e70d134b43612340368f67491458c65f8129accc2c4c083fd645c95eb0bbc7b61c5572c0895bd6766ae7290690860d27c528606748edf45031652e63901252dc8bd81d57a4beb285f2d1e30d37bbae2526b08a6a821f9f2a6044497b9d60b43c92c725a062ede7e6ed879e35824db4b354b56b7fb4b0f0f62bc879d0959b2dbfd4647e5c3afba34a9c2a345d7602143a0415006c562f2ad13839ef5443612340d5bb10932558c65f621ddb161d4c083f2188f949d593c7b6ff61051ab85bd676b5d3d51990860d271a1c9c7848edf450ee51d27c901252dc54ece148a4beb2852de51f1237bbae25f9847675821f9f2abf70b5649d60b43c4df3d9bf62ede7e632b3622a824db4b38b819760b4b0f0f6f4fc85cf959b2dbf61677e5c3afba34a3527305d7602143aad18046c562f2ad19134eb5443612340d0842b952558c65f6722e0101d4c083f6041a013da93c7b6fa5e3e1cb85bd6761cded11990860d27b311987848edf450475cd67c901252dcfde1e548a4beb28584e81b1237bbae2550897275821f9f2a167db1649d60b43ce4feddbf62ede7e69bbe662a824db4b3228c9360b4b0f0f65df181cf959b2dbfe4a06bb554569d8946fff10c773614c9 m_ValuePositions: 00000000010000000300000005000000070000000b0000003700000038000000390000003900000039000000390000003a0000003e0000004b0000004c0000004c000000500000005100000052000000530000005400000055000000590000005a000000860000008700000088000000880000008800000088000000890000008d0000009a0000009b0000009b0000009f000000a0000000a1000000a2000000a3000000a4000000a8000000a9000000d5000000d6000000d7000000d7000000d7000000d7000000d8000000dc000000e9000000ea000000ea000000ee000000ef000000f0000000f1000000f2000000f3000000f7000000f8000000f8000000 - m_Values: 01260024002700030000004369656c6f6e6f732e4d61696e47616d652e436861726163746572732e41492e506c617946756e63416e696d010000ffffffff436f6d626f41747461636b423000cdcccc3d00010101010000c03f014369656c6f6e6f732e4d61696e47616d652e436861726163746572732e41492e506c617946756e63416e696d010000ffffffff436f6d626f41747461636b423100cdcccc3d00010101010000c03f014369656c6f6e6f732e4d61696e47616d652e436861726163746572732e41492e506c617946756e63416e696d010000ffffffff436f6d626f41747461636b423200cdcccc3d00010101010000c03f0100000000 + m_Values: 01260024002700030000004369656c6f6e6f732e4d61696e47616d652e436861726163746572732e41492e506c617946756e63416e696d010000ffffffff436f6d626f41747461636b423000cdcccc3d00010101010000c03f014369656c6f6e6f732e4d61696e47616d652e436861726163746572732e41492e506c617946756e63416e696d010000ffffffff436f6d626f41747461636b423100cdcccc3d00010101010000c03f014369656c6f6e6f732e4d61696e47616d652e436861726163746572732e41492e506c617946756e63416e696d010000ffffffff436f6d626f41747461636b423200cdcccc3d01010101010000c03f0100000000 m_UnityObjects: [] m_Version: 3.4 - m_ObjectType: Opsive.BehaviorDesigner.Runtime.Tasks.Actions.StackedAction @@ -2768,7 +2788,7 @@ MonoBehaviour: m_Version: 3.4 m_DisabledEventNodesData: [] m_DisabledLogicNodesData: [] - m_UniqueID: 655478830 + m_UniqueID: 432928133 m_LogicNodePropertiesData: - m_ObjectType: Opsive.GraphDesigner.Runtime.LogicNodeProperties m_ValueHashes: @@ -3040,7 +3060,7 @@ MonoBehaviour: m_ValueHashes: m_LongValueHashes: bc124df8ef5e104cf36ca30dee0de9958dd19827f48d1b29bd8814239a1bb7642f6406e2580d1e294f869cc9196b0c27aea3bc2e18d5b803ad9c17c154400885163a23b3ea21de23a034c7c2b541f015557e981535906112a98ff48b9e8a66b37f542abda0a249c23a7f01b1f88d1a7b27e688e1c35df93adc72f165a743d2e04173f165a743d2e0f671f165a743d2e0 m_ValuePositions: 00000000240000002c00000030000000360000003600000046000000470000004b0000004f00000053000000530000005500000057000000580000005c00000088000000b4000000 - m_Values: 37633230313834302d313133382d343036342d393364632d66303432343732623034383681e12dc5ccf937450000dc42436f6d626f4200000000000000000000000000000000000000000000000000000000002400270000030000004369656c6f6e6f732e4d61696e47616d652e436861726163746572732e41492e506c617946756e63416e696d4369656c6f6e6f732e4d61696e47616d652e436861726163746572732e41492e506c617946756e63416e696d4369656c6f6e6f732e4d61696e47616d652e436861726163746572732e41492e506c617946756e63416e696d + m_Values: 37633230313834302d313133382d343036342d393364632d66303432343732623034383692e92dc5ccf937450000dc42436f6d626f4200000000000000000000000000000000000000000000000000000000002400270000030000004369656c6f6e6f732e4d61696e47616d652e436861726163746572732e41492e506c617946756e63416e696d4369656c6f6e6f732e4d61696e47616d652e436861726163746572732e41492e506c617946756e63416e696d4369656c6f6e6f732e4d61696e47616d652e436861726163746572732e41492e506c617946756e63416e696d m_UnityObjects: [] m_Version: 3.4 - m_ObjectType: Opsive.GraphDesigner.Runtime.LogicNodeProperties diff --git a/Assets/Prefabs/MainGame/Items/MainWeapons/Collection/DualHarmony/Data/DualHarmony_FunctionData.asset b/Assets/Prefabs/MainGame/Items/MainWeapons/Collection/DualHarmony/Data/DualHarmony_FunctionData.asset index 1b61d5013..480384ad1 100644 --- a/Assets/Prefabs/MainGame/Items/MainWeapons/Collection/DualHarmony/Data/DualHarmony_FunctionData.asset +++ b/Assets/Prefabs/MainGame/Items/MainWeapons/Collection/DualHarmony/Data/DualHarmony_FunctionData.asset @@ -24,7 +24,7 @@ MonoBehaviour: SerializationNodes: - Name: functionUnits Entry: 7 - Data: 0|System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[Cielonos.MainGame.Inventory.ItemFunctionUnit, + Data: 0|System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp]], mscorlib - Name: comparer Entry: 7 @@ -44,22 +44,40 @@ MonoBehaviour: Data: LightAttack - Name: $v Entry: 7 - Data: 2|Cielonos.MainGame.Inventory.ItemFunctionUnit, Assembly-CSharp + Data: 2|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp - Name: parentData Entry: 10 Data: 0 + - Name: unitName + Entry: 6 + Data: - Name: shownInUI Entry: 5 Data: false + - Name: isMain + Entry: 5 + Data: false + - Name: icon + Entry: 6 + Data: - Name: operation Entry: 7 Data: 3|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib - Name: Entry: 12 - Data: 1 + Data: 0 - Name: - Entry: 1 - Data: LMB + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: tags + Entry: 7 + Data: 4|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 - Name: Entry: 13 Data: @@ -72,13 +90,13 @@ MonoBehaviour: - Name: ammoCost Entry: 3 Data: 0 - - Name: interval + - Name: cooldown Entry: 4 Data: 0 - - Name: intervalLowerLimit + - Name: cooldownLowerLimit Entry: 4 Data: 0 - - Name: intervalReductionType + - Name: cooldownReductionType Entry: 3 Data: 0 - Name: @@ -95,22 +113,40 @@ MonoBehaviour: Data: HeavyAttack - Name: $v Entry: 7 - Data: 4|Cielonos.MainGame.Inventory.ItemFunctionUnit, Assembly-CSharp + Data: 5|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp - Name: parentData Entry: 10 Data: 0 + - Name: unitName + Entry: 6 + Data: - Name: shownInUI Entry: 5 Data: false + - Name: isMain + Entry: 5 + Data: false + - Name: icon + Entry: 6 + Data: - Name: operation Entry: 7 - Data: 5|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + Data: 6|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib - Name: Entry: 12 - Data: 1 + Data: 0 - Name: - Entry: 1 - Data: RMB + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: tags + Entry: 7 + Data: 7|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 - Name: Entry: 13 Data: @@ -123,13 +159,13 @@ MonoBehaviour: - Name: ammoCost Entry: 3 Data: 0 - - Name: interval + - Name: cooldown Entry: 4 Data: 0 - - Name: intervalLowerLimit + - Name: cooldownLowerLimit Entry: 4 Data: 0 - - Name: intervalReductionType + - Name: cooldownReductionType Entry: 3 Data: 0 - Name: @@ -144,3 +180,136 @@ MonoBehaviour: - Name: Entry: 8 Data: + - Name: functionUnitList + Entry: 7 + Data: 8|System.Collections.Generic.List`1[[Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, + Assembly-CSharp]], mscorlib + - Name: + Entry: 12 + Data: 2 + - Name: + Entry: 7 + Data: 9|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp + - Name: parentData + Entry: 10 + Data: 0 + - Name: unitName + Entry: 1 + Data: LightAttack + - Name: shownInUI + Entry: 5 + Data: false + - Name: isMain + Entry: 5 + Data: true + - Name: icon + Entry: 6 + Data: + - Name: operation + Entry: 7 + Data: 10|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: tags + Entry: 7 + Data: 11|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: energyCost + Entry: 4 + Data: 0 + - Name: ammoCost + Entry: 3 + Data: 0 + - Name: cooldown + Entry: 4 + Data: 0 + - Name: cooldownLowerLimit + Entry: 4 + Data: 0 + - Name: cooldownReductionType + Entry: 3 + Data: 0 + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: 12|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp + - Name: parentData + Entry: 10 + Data: 0 + - Name: unitName + Entry: 1 + Data: HeavyAttack + - Name: shownInUI + Entry: 5 + Data: false + - Name: isMain + Entry: 5 + Data: false + - Name: icon + Entry: 6 + Data: + - Name: operation + Entry: 7 + Data: 13|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: tags + Entry: 7 + Data: 14|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: energyCost + Entry: 4 + Data: 0 + - Name: ammoCost + Entry: 3 + Data: 0 + - Name: cooldown + Entry: 4 + Data: 0 + - Name: cooldownLowerLimit + Entry: 4 + Data: 0 + - Name: cooldownReductionType + Entry: 3 + Data: 0 + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: diff --git a/Assets/Prefabs/MainGame/Items/MainWeapons/Collection/FutureWand/Data/FutureWand_FunctionData.asset b/Assets/Prefabs/MainGame/Items/MainWeapons/Collection/FutureWand/Data/FutureWand_FunctionData.asset index e9f8001d8..a6347b3d2 100644 --- a/Assets/Prefabs/MainGame/Items/MainWeapons/Collection/FutureWand/Data/FutureWand_FunctionData.asset +++ b/Assets/Prefabs/MainGame/Items/MainWeapons/Collection/FutureWand/Data/FutureWand_FunctionData.asset @@ -24,7 +24,7 @@ MonoBehaviour: SerializationNodes: - Name: functionUnits Entry: 7 - Data: 0|System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[Cielonos.MainGame.Inventory.ItemFunctionUnit, + Data: 0|System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp]], mscorlib - Name: comparer Entry: 7 @@ -44,13 +44,22 @@ MonoBehaviour: Data: LightAttack - Name: $v Entry: 7 - Data: 2|Cielonos.MainGame.Inventory.ItemFunctionUnit, Assembly-CSharp + Data: 2|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp - Name: parentData Entry: 10 Data: 0 + - Name: unitName + Entry: 6 + Data: - Name: shownInUI Entry: 5 Data: false + - Name: isMain + Entry: 5 + Data: false + - Name: icon + Entry: 6 + Data: - Name: operation Entry: 7 Data: 3|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib @@ -66,19 +75,22 @@ MonoBehaviour: - Name: Entry: 8 Data: + - Name: tags + Entry: 6 + Data: - Name: energyCost Entry: 4 Data: 0 - Name: ammoCost Entry: 3 Data: 0 - - Name: interval + - Name: cooldown Entry: 4 Data: 0 - - Name: intervalLowerLimit + - Name: cooldownLowerLimit Entry: 4 Data: 0 - - Name: intervalReductionType + - Name: cooldownReductionType Entry: 3 Data: 0 - Name: @@ -95,13 +107,22 @@ MonoBehaviour: Data: HeavyAttack - Name: $v Entry: 7 - Data: 4|Cielonos.MainGame.Inventory.ItemFunctionUnit, Assembly-CSharp + Data: 4|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp - Name: parentData Entry: 10 Data: 0 + - Name: unitName + Entry: 6 + Data: - Name: shownInUI Entry: 5 Data: false + - Name: isMain + Entry: 5 + Data: false + - Name: icon + Entry: 6 + Data: - Name: operation Entry: 7 Data: 5|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib @@ -117,19 +138,22 @@ MonoBehaviour: - Name: Entry: 8 Data: + - Name: tags + Entry: 6 + Data: - Name: energyCost Entry: 4 Data: 0 - Name: ammoCost Entry: 3 Data: 0 - - Name: interval + - Name: cooldown Entry: 4 Data: 0 - - Name: intervalLowerLimit + - Name: cooldownLowerLimit Entry: 4 Data: 0 - - Name: intervalReductionType + - Name: cooldownReductionType Entry: 3 Data: 0 - Name: @@ -144,3 +168,127 @@ MonoBehaviour: - Name: Entry: 8 Data: + - Name: functionUnitList + Entry: 7 + Data: 6|System.Collections.Generic.List`1[[Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, + Assembly-CSharp]], mscorlib + - Name: + Entry: 12 + Data: 2 + - Name: + Entry: 7 + Data: 7|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp + - Name: parentData + Entry: 10 + Data: 0 + - Name: unitName + Entry: 1 + Data: LightAttack + - Name: shownInUI + Entry: 5 + Data: false + - Name: isMain + Entry: 5 + Data: true + - Name: icon + Entry: 6 + Data: + - Name: operation + Entry: 7 + Data: 8|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: tags + Entry: 7 + Data: 9|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: energyCost + Entry: 4 + Data: 0 + - Name: ammoCost + Entry: 3 + Data: 0 + - Name: cooldown + Entry: 4 + Data: 0 + - Name: cooldownLowerLimit + Entry: 4 + Data: 0 + - Name: cooldownReductionType + Entry: 3 + Data: 0 + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: 10|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp + - Name: parentData + Entry: 10 + Data: 0 + - Name: unitName + Entry: 1 + Data: HeavyAttack + - Name: shownInUI + Entry: 5 + Data: false + - Name: isMain + Entry: 5 + Data: false + - Name: icon + Entry: 6 + Data: + - Name: operation + Entry: 7 + Data: 11|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: tags + Entry: 6 + Data: + - Name: energyCost + Entry: 4 + Data: 0 + - Name: ammoCost + Entry: 3 + Data: 0 + - Name: cooldown + Entry: 4 + Data: 0 + - Name: cooldownLowerLimit + Entry: 4 + Data: 0 + - Name: cooldownReductionType + Entry: 3 + Data: 0 + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: diff --git a/Assets/Prefabs/MainGame/Items/MainWeapons/Collection/Polychrome/Data/Polychrome_FunctionData.asset b/Assets/Prefabs/MainGame/Items/MainWeapons/Collection/Polychrome/Data/Polychrome_FunctionData.asset index b548c1424..fd9e976bb 100644 --- a/Assets/Prefabs/MainGame/Items/MainWeapons/Collection/Polychrome/Data/Polychrome_FunctionData.asset +++ b/Assets/Prefabs/MainGame/Items/MainWeapons/Collection/Polychrome/Data/Polychrome_FunctionData.asset @@ -17,8 +17,9 @@ MonoBehaviour: SerializedBytes: ReferencedUnityObjects: - {fileID: 11400000} - - {fileID: 21300000, guid: 26d5d6ed66f72054da57b743b3822708, type: 3} - - {fileID: 21300000, guid: 6e54eaa482ea20d4fbe2b232ac925827, type: 3} + - {fileID: 21300000, guid: 134a11a29150c8b4ea4388d55c2a4781, type: 3} + - {fileID: 21300000, guid: 02a988d1e31d7d343b2c66a3074253d2, type: 3} + - {fileID: 21300000, guid: c81554475de282344ac1c69f8d0b88fa, type: 3} SerializedBytesString: Prefab: {fileID: 0} PrefabModificationsReferencedUnityObjects: [] @@ -37,7 +38,7 @@ MonoBehaviour: Data: - Name: Entry: 12 - Data: 5 + Data: 4 - Name: Entry: 7 Data: @@ -50,12 +51,18 @@ MonoBehaviour: - Name: parentData Entry: 10 Data: 0 + - Name: unitName + Entry: 6 + Data: - Name: shownInUI Entry: 5 Data: false + - Name: isMain + Entry: 5 + Data: true - Name: icon - Entry: 6 - Data: + Entry: 10 + Data: 1 - Name: operation Entry: 7 Data: 3|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib @@ -71,19 +78,31 @@ MonoBehaviour: - Name: Entry: 8 Data: + - Name: tags + Entry: 7 + Data: 4|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: - Name: energyCost Entry: 4 Data: 0 - Name: ammoCost Entry: 3 Data: 0 - - Name: interval + - Name: cooldown Entry: 4 Data: 0 - - Name: intervalLowerLimit + - Name: cooldownLowerLimit Entry: 4 Data: 0 - - Name: intervalReductionType + - Name: cooldownReductionType Entry: 3 Data: 0 - Name: @@ -100,19 +119,37 @@ MonoBehaviour: Data: HeavyAttack - Name: $v Entry: 7 - Data: 4|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp + Data: 5|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp - Name: parentData Entry: 10 Data: 0 + - Name: unitName + Entry: 6 + Data: - Name: shownInUI + Entry: 5 + Data: true + - Name: isMain Entry: 5 Data: false - Name: icon - Entry: 6 - Data: + Entry: 10 + Data: 2 - Name: operation Entry: 7 - Data: 5|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + Data: 6|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: tags + Entry: 7 + Data: 7|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 @@ -124,17 +161,17 @@ MonoBehaviour: Data: - Name: energyCost Entry: 4 - Data: 0 + Data: 10 - Name: ammoCost Entry: 3 Data: 0 - - Name: interval + - Name: cooldown Entry: 4 Data: 0 - - Name: intervalLowerLimit + - Name: cooldownLowerLimit Entry: 4 Data: 0 - - Name: intervalReductionType + - Name: cooldownReductionType Entry: 3 Data: 0 - Name: @@ -151,18 +188,45 @@ MonoBehaviour: Data: Block - Name: $v Entry: 7 - Data: 6|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp + Data: 8|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp - Name: parentData Entry: 10 Data: 0 + - Name: unitName + Entry: 6 + Data: - Name: shownInUI Entry: 5 Data: false + - Name: isMain + Entry: 5 + Data: false - Name: icon Entry: 6 Data: - Name: operation - Entry: 6 + Entry: 7 + Data: 9|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: tags + Entry: 7 + Data: 10|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 Data: - Name: energyCost Entry: 4 @@ -170,13 +234,13 @@ MonoBehaviour: - Name: ammoCost Entry: 3 Data: 0 - - Name: interval + - Name: cooldown Entry: 4 Data: 0 - - Name: intervalLowerLimit + - Name: cooldownLowerLimit Entry: 4 Data: 0 - - Name: intervalReductionType + - Name: cooldownReductionType Entry: 3 Data: 0 - Name: @@ -190,63 +254,42 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: TripleAttack + Data: DisruptionAttack - Name: $v Entry: 7 - Data: 7|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp + Data: 11|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp - Name: parentData Entry: 10 Data: 0 + - Name: unitName + Entry: 6 + Data: - Name: shownInUI Entry: 5 Data: true + - Name: isMain + Entry: 5 + Data: false - Name: icon Entry: 10 - Data: 1 + Data: 3 - Name: operation Entry: 6 Data: - - Name: energyCost - Entry: 4 - Data: 25 - - Name: ammoCost - Entry: 3 - Data: 0 - - Name: interval - Entry: 4 - Data: 10 - - Name: intervalLowerLimit - Entry: 4 - Data: 5 - - Name: intervalReductionType - Entry: 3 + - Name: tags + Entry: 7 + Data: 12|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 Data: 1 - Name: - Entry: 8 - Data: - - Name: - Entry: 8 - Data: - - Name: - Entry: 7 - Data: - - Name: $k Entry: 1 - Data: DisruptAttack - - Name: $v - Entry: 7 - Data: 8|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp - - Name: parentData - Entry: 10 - Data: 0 - - Name: shownInUI - Entry: 5 - Data: true - - Name: icon - Entry: 10 - Data: 2 - - Name: operation - Entry: 6 + Data: Disruption + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 Data: - Name: energyCost Entry: 4 @@ -254,15 +297,15 @@ MonoBehaviour: - Name: ammoCost Entry: 3 Data: 0 - - Name: interval + - Name: cooldown Entry: 4 - Data: 10 - - Name: intervalLowerLimit + Data: 4 + - Name: cooldownLowerLimit Entry: 4 - Data: 5 - - Name: intervalReductionType + Data: 1 + - Name: cooldownReductionType Entry: 3 - Data: 0 + Data: 1 - Name: Entry: 8 Data: @@ -275,3 +318,199 @@ MonoBehaviour: - Name: Entry: 8 Data: + - Name: functionUnitList + Entry: 7 + Data: 13|System.Collections.Generic.List`1[[Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, + Assembly-CSharp]], mscorlib + - Name: + Entry: 12 + Data: 3 + - Name: + Entry: 7 + Data: 14|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp + - Name: parentData + Entry: 10 + Data: 0 + - Name: unitName + Entry: 1 + Data: LightAttack + - Name: shownInUI + Entry: 5 + Data: false + - Name: isMain + Entry: 5 + Data: true + - Name: icon + Entry: 10 + Data: 1 + - Name: operation + Entry: 7 + Data: 15|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: tags + Entry: 7 + Data: 16|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: energyCost + Entry: 4 + Data: 0 + - Name: ammoCost + Entry: 3 + Data: 0 + - Name: cooldown + Entry: 4 + Data: 0 + - Name: cooldownLowerLimit + Entry: 4 + Data: 0 + - Name: cooldownReductionType + Entry: 3 + Data: 0 + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: 17|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp + - Name: parentData + Entry: 10 + Data: 0 + - Name: unitName + Entry: 1 + Data: HeavyAttack + - Name: shownInUI + Entry: 5 + Data: true + - Name: isMain + Entry: 5 + Data: false + - Name: icon + Entry: 10 + Data: 2 + - Name: operation + Entry: 7 + Data: 18|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: tags + Entry: 7 + Data: 19|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: energyCost + Entry: 4 + Data: 10 + - Name: ammoCost + Entry: 3 + Data: 0 + - Name: cooldown + Entry: 4 + Data: 0 + - Name: cooldownLowerLimit + Entry: 4 + Data: 0 + - Name: cooldownReductionType + Entry: 3 + Data: 0 + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: 20|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp + - Name: parentData + Entry: 10 + Data: 0 + - Name: unitName + Entry: 1 + Data: DisruptionAttack + - Name: shownInUI + Entry: 5 + Data: true + - Name: isMain + Entry: 5 + Data: false + - Name: icon + Entry: 10 + Data: 3 + - Name: operation + Entry: 7 + Data: 21|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: tags + Entry: 7 + Data: 22|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 1 + - Name: + Entry: 1 + Data: Disruption + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: energyCost + Entry: 4 + Data: 25 + - Name: ammoCost + Entry: 3 + Data: 0 + - Name: cooldown + Entry: 4 + Data: 4 + - Name: cooldownLowerLimit + Entry: 4 + Data: 1 + - Name: cooldownReductionType + Entry: 3 + Data: 1 + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Material.meta b/Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound.meta similarity index 77% rename from Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Material.meta rename to Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound.meta index d68ecc2cb..94735c3ad 100644 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Material.meta +++ b/Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: eb706d61f651d684c9203dc86e5f7331 +guid: a53311556b813864cb88c575d8e23ca1 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound/ArmorPiercingRound_ContentData.asset b/Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound/ArmorPiercingRound_ContentData.asset new file mode 100644 index 000000000..90a251640 --- /dev/null +++ b/Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound/ArmorPiercingRound_ContentData.asset @@ -0,0 +1,62 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + 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: fd6893a98c17a0e47af8bd555a67190b, type: 3} + m_Name: ArmorPiercingRound_ContentData + m_EditorClassIdentifier: Assembly-CSharp::Cielonos.MainGame.Characters.Inventory.ContentData + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: + - Name: itemClass + Entry: 7 + Data: 0|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: Cielonos.MainGame.Inventory.Collections.ArmorPiercingRound, Assembly-CSharp + - Name: + Entry: 8 + Data: + - Name: dropSettings + Entry: 7 + Data: 1|System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[System.Single, + mscorlib]], mscorlib + - Name: comparer + Entry: 7 + Data: 2|System.Collections.Generic.GenericEqualityComparer`1[[System.String, + mscorlib]], mscorlib + - Name: + Entry: 8 + Data: + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + itemType: 2 + itemRarity: 1 + tags: [] + institutions: + - SkodaDynamics + displayNameKey: Passive_ArmorPiercingRound_Name + descriptionKey: Passive_ArmorPiercingRound_Desc + rectIcon: {fileID: 0} + squareIcon: {fileID: 21300000, guid: a685aa7ba5f7a074f8a84237bbab1032, type: 3} + dropWeight: 1 diff --git a/Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound/ArmorPiercingRound_ContentData.asset.meta b/Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound/ArmorPiercingRound_ContentData.asset.meta new file mode 100644 index 000000000..110b8e928 --- /dev/null +++ b/Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound/ArmorPiercingRound_ContentData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1f5e59bcd7f03e94888a4128a5cb032f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound/ArmorPiercingRound_PassiveAttributeData.asset b/Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound/ArmorPiercingRound_PassiveAttributeData.asset new file mode 100644 index 000000000..bc0acf8d8 --- /dev/null +++ b/Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound/ArmorPiercingRound_PassiveAttributeData.asset @@ -0,0 +1,41 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + 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: 3bf7ef748e2ae3a4085a6efa5628b897, type: 3} + m_Name: ArmorPiercingRound_PassiveAttributeData + m_EditorClassIdentifier: Assembly-CSharp::Cielonos.MainGame.Inventory.AttributeData + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: [] + itemAttributes: + _duplicateStrategy: 0 + _entries: + - key: ArmorReduction + value: 5 + keyColumnWidth: 0.5 + chaAttrNumericChange: + _duplicateStrategy: 0 + _entries: [] + keyColumnWidth: 0.5 + chaAttrPercentageChangeOfAccumulation: + _duplicateStrategy: 0 + _entries: [] + keyColumnWidth: 0.5 + chaAttrPercentageChangeOfMultiplication: + _duplicateStrategy: 0 + _entries: [] + keyColumnWidth: 0.5 diff --git a/Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound/ArmorPiercingRound_PassiveAttributeData.asset.meta b/Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound/ArmorPiercingRound_PassiveAttributeData.asset.meta new file mode 100644 index 000000000..6e65fe1ac --- /dev/null +++ b/Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/ArmorPiercingRound/ArmorPiercingRound_PassiveAttributeData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7fe4d1839f6d29f47a6e1cf3b97b4566 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/Ascension/Ascension_PassiveAttributeData.asset b/Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/Ascension/Ascension_PassiveAttributeData.asset index 0f2e26048..ceefd881f 100644 --- a/Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/Ascension/Ascension_PassiveAttributeData.asset +++ b/Assets/Prefabs/MainGame/Items/PassiveEquipments/Collection/Ascension/Ascension_PassiveAttributeData.asset @@ -42,7 +42,7 @@ MonoBehaviour: attributeValue: 0 - attributeKey: CooldownReduction useManualInput: 0 - attributeValue: 0.9 + attributeValue: 0 - attributeKey: MovementSpeed useManualInput: 0 attributeValue: 0 diff --git a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/FusionInjector/FusionInjector_FunctionData.asset b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/FusionInjector/FusionInjector_FunctionData.asset index f319ff7f1..75898518f 100644 --- a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/FusionInjector/FusionInjector_FunctionData.asset +++ b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/FusionInjector/FusionInjector_FunctionData.asset @@ -49,9 +49,15 @@ MonoBehaviour: - Name: parentData Entry: 10 Data: 0 + - Name: unitName + Entry: 6 + Data: - Name: shownInUI Entry: 5 Data: true + - Name: isMain + Entry: 5 + Data: false - Name: icon Entry: 10 Data: 1 @@ -67,19 +73,22 @@ MonoBehaviour: - Name: Entry: 8 Data: + - Name: tags + Entry: 6 + Data: - Name: energyCost Entry: 4 Data: 10 - Name: ammoCost Entry: 3 Data: 0 - - Name: interval + - Name: cooldown Entry: 4 Data: 15 - - Name: intervalLowerLimit + - Name: cooldownLowerLimit Entry: 4 Data: 5 - - Name: intervalReductionType + - Name: cooldownReductionType Entry: 3 Data: 1 - Name: @@ -94,3 +103,76 @@ MonoBehaviour: - Name: Entry: 8 Data: + - Name: functionUnitList + Entry: 7 + Data: 4|System.Collections.Generic.List`1[[Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, + Assembly-CSharp]], mscorlib + - Name: + Entry: 12 + Data: 1 + - Name: + Entry: 7 + Data: 5|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp + - Name: parentData + Entry: 10 + Data: 0 + - Name: unitName + Entry: 1 + Data: Shoot + - Name: shownInUI + Entry: 5 + Data: false + - Name: isMain + Entry: 5 + Data: true + - Name: icon + Entry: 10 + Data: 1 + - Name: operation + Entry: 7 + Data: 6|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: tags + Entry: 7 + Data: 7|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: energyCost + Entry: 4 + Data: 20 + - Name: ammoCost + Entry: 3 + Data: 0 + - Name: cooldown + Entry: 4 + Data: 15 + - Name: cooldownLowerLimit + Entry: 4 + Data: 5 + - Name: cooldownReductionType + Entry: 3 + Data: 1 + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: diff --git a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/IceCone/IceCone_FunctionData.asset b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/IceCone/IceCone_FunctionData.asset index 0bb44e323..4746c7a56 100644 --- a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/IceCone/IceCone_FunctionData.asset +++ b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/IceCone/IceCone_FunctionData.asset @@ -49,9 +49,15 @@ MonoBehaviour: - Name: parentData Entry: 10 Data: 0 + - Name: unitName + Entry: 6 + Data: - Name: shownInUI Entry: 5 Data: true + - Name: isMain + Entry: 5 + Data: false - Name: icon Entry: 10 Data: 1 @@ -67,19 +73,22 @@ MonoBehaviour: - Name: Entry: 8 Data: + - Name: tags + Entry: 6 + Data: - Name: energyCost Entry: 4 Data: 10 - Name: ammoCost Entry: 3 Data: 0 - - Name: interval + - Name: cooldown Entry: 4 Data: 15 - - Name: intervalLowerLimit + - Name: cooldownLowerLimit Entry: 4 Data: 5 - - Name: intervalReductionType + - Name: cooldownReductionType Entry: 3 Data: 1 - Name: @@ -94,3 +103,76 @@ MonoBehaviour: - Name: Entry: 8 Data: + - Name: functionUnitList + Entry: 7 + Data: 4|System.Collections.Generic.List`1[[Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, + Assembly-CSharp]], mscorlib + - Name: + Entry: 12 + Data: 1 + - Name: + Entry: 7 + Data: 5|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp + - Name: parentData + Entry: 10 + Data: 0 + - Name: unitName + Entry: 1 + Data: Shoot + - Name: shownInUI + Entry: 5 + Data: false + - Name: isMain + Entry: 5 + Data: true + - Name: icon + Entry: 10 + Data: 1 + - Name: operation + Entry: 7 + Data: 6|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: tags + Entry: 7 + Data: 7|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: energyCost + Entry: 4 + Data: 50 + - Name: ammoCost + Entry: 3 + Data: 0 + - Name: cooldown + Entry: 4 + Data: 20 + - Name: cooldownLowerLimit + Entry: 4 + Data: 5 + - Name: cooldownReductionType + Entry: 3 + Data: 1 + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: diff --git a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/Scanner/Scanner_FunctionData.asset b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/Scanner/Scanner_FunctionData.asset index be478b0d3..ec814809d 100644 --- a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/Scanner/Scanner_FunctionData.asset +++ b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/Scanner/Scanner_FunctionData.asset @@ -49,9 +49,15 @@ MonoBehaviour: - Name: parentData Entry: 10 Data: 0 + - Name: unitName + Entry: 6 + Data: - Name: shownInUI Entry: 5 Data: true + - Name: isMain + Entry: 5 + Data: false - Name: icon Entry: 10 Data: 1 @@ -67,19 +73,22 @@ MonoBehaviour: - Name: Entry: 8 Data: + - Name: tags + Entry: 6 + Data: - Name: energyCost Entry: 4 Data: 10 - Name: ammoCost Entry: 3 Data: 0 - - Name: interval + - Name: cooldown Entry: 4 Data: 15 - - Name: intervalLowerLimit + - Name: cooldownLowerLimit Entry: 4 Data: 5 - - Name: intervalReductionType + - Name: cooldownReductionType Entry: 3 Data: 1 - Name: @@ -94,3 +103,76 @@ MonoBehaviour: - Name: Entry: 8 Data: + - Name: functionUnitList + Entry: 7 + Data: 4|System.Collections.Generic.List`1[[Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, + Assembly-CSharp]], mscorlib + - Name: + Entry: 12 + Data: 1 + - Name: + Entry: 7 + Data: 5|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp + - Name: parentData + Entry: 10 + Data: 0 + - Name: unitName + Entry: 1 + Data: Scan + - Name: shownInUI + Entry: 5 + Data: true + - Name: isMain + Entry: 5 + Data: false + - Name: icon + Entry: 10 + Data: 1 + - Name: operation + Entry: 7 + Data: 6|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: tags + Entry: 7 + Data: 7|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: energyCost + Entry: 4 + Data: 25 + - Name: ammoCost + Entry: 3 + Data: 0 + - Name: cooldown + Entry: 4 + Data: 30 + - Name: cooldownLowerLimit + Entry: 4 + Data: 10 + - Name: cooldownReductionType + Entry: 3 + Data: 1 + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: diff --git a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_AttackData.asset b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_AttackData.asset similarity index 99% rename from Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_AttackData.asset rename to Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_AttackData.asset index 08a351d75..44380a41c 100644 --- a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_AttackData.asset +++ b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_AttackData.asset @@ -10,7 +10,7 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 51ca23d227a53a543a6f13a8f91aa0c9, type: 3} - m_Name: VoidAnchor_AttackData + m_Name: ThermalDetonator_AttackData m_EditorClassIdentifier: Assembly-CSharp::Cielonos.MainGame.Inventory.AttackData serializationData: SerializedFormat: 2 diff --git a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_AttackData.asset.meta b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_AttackData.asset.meta similarity index 100% rename from Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_AttackData.asset.meta rename to Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_AttackData.asset.meta diff --git a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_ContentData.asset b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_ContentData.asset similarity index 97% rename from Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_ContentData.asset rename to Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_ContentData.asset index 823ba79e7..6367e3a2b 100644 --- a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_ContentData.asset +++ b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_ContentData.asset @@ -10,7 +10,7 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fd6893a98c17a0e47af8bd555a67190b, type: 3} - m_Name: VoidAnchor_ContentData + m_Name: ThermalDetonator_ContentData m_EditorClassIdentifier: Assembly-CSharp::Cielonos.MainGame.Inventory.ContentData serializationData: SerializedFormat: 2 diff --git a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_ContentData.asset.meta b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_ContentData.asset.meta similarity index 100% rename from Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_ContentData.asset.meta rename to Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_ContentData.asset.meta diff --git a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_FunctionData.asset b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_FunctionData.asset similarity index 54% rename from Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_FunctionData.asset rename to Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_FunctionData.asset index cce91342c..ce3225726 100644 --- a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_FunctionData.asset +++ b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_FunctionData.asset @@ -10,7 +10,7 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 587200640af0a9042a1eb27d6c1f5330, type: 3} - m_Name: VoidAnchor_FunctionData + m_Name: ThermalDetonator_FunctionData m_EditorClassIdentifier: Assembly-CSharp::Cielonos.MainGame.Inventory.FunctionData serializationData: SerializedFormat: 2 @@ -48,9 +48,15 @@ MonoBehaviour: - Name: parentData Entry: 10 Data: 0 + - Name: unitName + Entry: 6 + Data: - Name: shownInUI Entry: 5 Data: false + - Name: isMain + Entry: 5 + Data: false - Name: icon Entry: 6 Data: @@ -66,19 +72,22 @@ MonoBehaviour: - Name: Entry: 8 Data: + - Name: tags + Entry: 6 + Data: - Name: energyCost Entry: 4 Data: 0 - Name: ammoCost Entry: 3 Data: 0 - - Name: interval + - Name: cooldown Entry: 4 Data: 15 - - Name: intervalLowerLimit + - Name: cooldownLowerLimit Entry: 4 Data: 10 - - Name: intervalReductionType + - Name: cooldownReductionType Entry: 3 Data: 1 - Name: @@ -93,3 +102,76 @@ MonoBehaviour: - Name: Entry: 8 Data: + - Name: functionUnitList + Entry: 7 + Data: 4|System.Collections.Generic.List`1[[Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, + Assembly-CSharp]], mscorlib + - Name: + Entry: 12 + Data: 1 + - Name: + Entry: 7 + Data: 5|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp + - Name: parentData + Entry: 10 + Data: 0 + - Name: unitName + Entry: 1 + Data: Use + - Name: shownInUI + Entry: 5 + Data: false + - Name: isMain + Entry: 5 + Data: true + - Name: icon + Entry: 6 + Data: + - Name: operation + Entry: 7 + Data: 6|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: tags + Entry: 7 + Data: 7|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: energyCost + Entry: 4 + Data: 0 + - Name: ammoCost + Entry: 3 + Data: 0 + - Name: cooldown + Entry: 4 + Data: 15 + - Name: cooldownLowerLimit + Entry: 4 + Data: 10 + - Name: cooldownReductionType + Entry: 3 + Data: 1 + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: diff --git a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_FunctionData.asset.meta b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_FunctionData.asset.meta similarity index 100% rename from Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_FunctionData.asset.meta rename to Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_FunctionData.asset.meta diff --git a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_VFXData.asset b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_VFXData.asset similarity index 99% rename from Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_VFXData.asset rename to Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_VFXData.asset index 86d481202..c46a8a86d 100644 --- a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_VFXData.asset +++ b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_VFXData.asset @@ -10,7 +10,7 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 481d1ee7a49eec24f8ad583709af5a82, type: 3} - m_Name: VoidAnchor_VFXData + m_Name: ThermalDetonator_VFXData m_EditorClassIdentifier: Assembly-CSharp::Cielonos.MainGame.VFXData serializationData: SerializedFormat: 2 diff --git a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_VFXData.asset.meta b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_VFXData.asset.meta similarity index 100% rename from Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/VoidAnchor_VFXData.asset.meta rename to Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/ThermalDetonator/ThermalDetonator_VFXData.asset.meta diff --git a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/VoidAnchor/VoidAnchor_FunctionData.asset b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/VoidAnchor/VoidAnchor_FunctionData.asset index 5141fb633..29c369407 100644 --- a/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/VoidAnchor/VoidAnchor_FunctionData.asset +++ b/Assets/Prefabs/MainGame/Items/SupportEquipments/Collection/VoidAnchor/VoidAnchor_FunctionData.asset @@ -48,9 +48,15 @@ MonoBehaviour: - Name: parentData Entry: 10 Data: 0 + - Name: unitName + Entry: 6 + Data: - Name: shownInUI Entry: 5 Data: false + - Name: isMain + Entry: 5 + Data: false - Name: icon Entry: 6 Data: @@ -66,19 +72,22 @@ MonoBehaviour: - Name: Entry: 8 Data: + - Name: tags + Entry: 6 + Data: - Name: energyCost Entry: 4 Data: 0 - Name: ammoCost Entry: 3 Data: 0 - - Name: interval + - Name: cooldown Entry: 4 Data: 1 - - Name: intervalLowerLimit + - Name: cooldownLowerLimit Entry: 4 Data: 1 - - Name: intervalReductionType + - Name: cooldownReductionType Entry: 3 Data: 0 - Name: @@ -93,3 +102,76 @@ MonoBehaviour: - Name: Entry: 8 Data: + - Name: functionUnitList + Entry: 7 + Data: 4|System.Collections.Generic.List`1[[Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, + Assembly-CSharp]], mscorlib + - Name: + Entry: 12 + Data: 1 + - Name: + Entry: 7 + Data: 5|Cielonos.MainGame.Inventory.FunctionData+FunctionUnit, Assembly-CSharp + - Name: parentData + Entry: 10 + Data: 0 + - Name: unitName + Entry: 1 + Data: Use + - Name: shownInUI + Entry: 5 + Data: false + - Name: isMain + Entry: 5 + Data: true + - Name: icon + Entry: 6 + Data: + - Name: operation + Entry: 7 + Data: 6|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: tags + Entry: 7 + Data: 7|System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: energyCost + Entry: 4 + Data: 25 + - Name: ammoCost + Entry: 3 + Data: 0 + - Name: cooldown + Entry: 4 + Data: 10 + - Name: cooldownLowerLimit + Entry: 4 + Data: 2 + - Name: cooldownReductionType + Entry: 3 + Data: 0 + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: diff --git a/Assets/Prefabs/MainGame/UI/PlayerCanvas/MainWeaponFunctionIcon.prefab b/Assets/Prefabs/MainGame/UI/PlayerCanvas/MainWeaponFunctionIcon.prefab index 2239bbe27..aee86d308 100644 --- a/Assets/Prefabs/MainGame/UI/PlayerCanvas/MainWeaponFunctionIcon.prefab +++ b/Assets/Prefabs/MainGame/UI/PlayerCanvas/MainWeaponFunctionIcon.prefab @@ -88,7 +88,7 @@ GameObject: - component: {fileID: 5835926715798068910} - component: {fileID: 4159506999441037784} m_Layer: 5 - m_Name: TimerFrame + m_Name: Frame m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -134,7 +134,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 0.2} + m_Color: {r: 1, g: 1, b: 1, a: 0.5019608} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -172,8 +172,8 @@ MonoBehaviour: _maxDistance: 128 _reuseDistanceMap: 0 _falloffMode: 0 - _expFalloffEnergy: 2 - _expFalloffPower: 2 + _expFalloffEnergy: 1 + _expFalloffPower: 1.25 _expFalloffOffset: 0 _falloffCurve: serializedVersion: 2 @@ -201,7 +201,7 @@ MonoBehaviour: m_RotationOrder: 4 _falloffCurveGamma: 2.2 _fillMode: 0 - _color: {r: 1, g: 1, b: 1, a: 1} + _color: {r: 2.5207431, g: 2.5207431, b: 2.5207431, a: 1.4142135} _gradientTexture: {fileID: 0} _gradient: serializedVersion: 2 @@ -236,7 +236,7 @@ MonoBehaviour: _gradientOffset: 0 _gradientGamma: 1 _gradientReverse: 0 - _blur: 16 + _blur: 4.8 _noiseScale: 1 _additive: 1 _sourceAlpha: 1 @@ -272,10 +272,10 @@ RectTransform: m_Children: [] m_Father: {fileID: 731673013393171816} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 25, y: -50} - m_SizeDelta: {x: 50, y: 20} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 10} + m_SizeDelta: {x: 0, y: 20} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &4989292147774878156 CanvasRenderer: @@ -305,17 +305,17 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: 300/200 + m_text: 300 m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontAsset: {fileID: 11400000, guid: 21262bfde877c70478b3fcaf0d725c46, type: 2} + m_sharedMaterial: {fileID: -8919388740985524052, guid: 21262bfde877c70478b3fcaf0d725c46, type: 2} m_fontSharedMaterials: [] m_fontMaterial: {fileID: 0} m_fontMaterials: [] m_fontColor32: serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} + rgba: 4294967176 + m_fontColor: {r: 0.53333336, g: 1, b: 1, a: 1} m_enableVertexGradient: 0 m_colorMode: 3 m_fontColorGradient: @@ -332,12 +332,12 @@ MonoBehaviour: m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_fontSize: 13.75 + m_fontSize: 20 m_fontSizeBase: 16 m_fontWeight: 400 m_enableAutoSizing: 1 - m_fontSizeMin: 10 - m_fontSizeMax: 16 + m_fontSizeMin: 8 + m_fontSizeMax: 20 m_fontStyle: 0 m_HorizontalAlignment: 2 m_VerticalAlignment: 512 @@ -377,7 +377,7 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!1 &3150180972119515548 +--- !u!1 &1930739069218887556 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -385,50 +385,50 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 6663965170318581280} - - component: {fileID: 8236163163766835478} - - component: {fileID: 3264228106627665596} + - component: {fileID: 37592404733920052} + - component: {fileID: 758797649600774674} + - component: {fileID: 289009004714267967} m_Layer: 5 - m_Name: OperationText + m_Name: Text (TMP) m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &6663965170318581280 +--- !u!224 &37592404733920052 RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3150180972119515548} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0.00019631287} + m_GameObject: {fileID: 1930739069218887556} + 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: 731673013393171816} + m_Father: {fileID: 316283453569668576} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 25, y: -30} - m_SizeDelta: {x: 50, y: 20} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &8236163163766835478 +--- !u!222 &758797649600774674 CanvasRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3150180972119515548} + m_GameObject: {fileID: 1930739069218887556} m_CullTransparentMesh: 1 ---- !u!114 &3264228106627665596 +--- !u!114 &289009004714267967 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3150180972119515548} + m_GameObject: {fileID: 1930739069218887556} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} @@ -442,10 +442,10 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: Q+L + m_text: 120.0 m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontAsset: {fileID: 11400000, guid: 21262bfde877c70478b3fcaf0d725c46, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: 538d28bfaad57dc47b726847ab356ae6, type: 2} m_fontSharedMaterials: [] m_fontMaterial: {fileID: 0} m_fontMaterials: [] @@ -469,12 +469,12 @@ MonoBehaviour: m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_fontSize: 16 - m_fontSizeBase: 16 + m_fontSize: 20 + m_fontSizeBase: 18 m_fontWeight: 400 m_enableAutoSizing: 1 - m_fontSizeMin: 10 - m_fontSizeMax: 16 + m_fontSizeMin: 8 + m_fontSizeMax: 20 m_fontStyle: 0 m_HorizontalAlignment: 2 m_VerticalAlignment: 512 @@ -514,7 +514,7 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!1 &3630945596583633595 +--- !u!1 &3955006171053148922 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -522,9 +522,9 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 7855874393868878643} - - component: {fileID: 4127102497803563891} - - component: {fileID: 4400505302724168968} + - component: {fileID: 4520370737915613483} + - component: {fileID: 6360055272961289082} + - component: {fileID: 163625082554669007} m_Layer: 5 m_Name: BlurBG m_TagString: Untagged @@ -532,14 +532,14 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &7855874393868878643 +--- !u!224 &4520370737915613483 RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3630945596583633595} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_GameObject: {fileID: 3955006171053148922} + 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 @@ -551,36 +551,36 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4127102497803563891 +--- !u!222 &6360055272961289082 CanvasRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3630945596583633595} + m_GameObject: {fileID: 3955006171053148922} m_CullTransparentMesh: 1 ---- !u!114 &4400505302724168968 +--- !u!114 &163625082554669007 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3630945596583633595} + m_GameObject: {fileID: 3955006171053148922} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 196bb08d6c2d3c9499c04e1281fd4ad3, type: 3} + m_Script: {fileID: 11500000, guid: be9dc56d305de9a43b44e6f120dafaba, type: 3} m_Name: - m_EditorClassIdentifier: LeTai.Asset.TranslucentImage::LeTai.Asset.TranslucentImage.TranslucentImage - m_Material: {fileID: 2100000, guid: 5e15fc327efa72d41bcc7921b6ca37a0, type: 2} - m_Color: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_EditorClassIdentifier: JeffGrawAssets.FlexibleUI.Runtime::JeffGrawAssets.FlexibleUI.BlurredImage + 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: 4ac32d9310793f44f8ec46e0b0a90c19, type: 3} - m_Type: 1 + m_Sprite: {fileID: 0} + m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 m_FillMethod: 4 @@ -588,20 +588,41 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 25 - _source: {fileID: 0} - _foregroundOpacity: 0 - _vibrancy: 1 - _brightness: 0 - _flatten: 0 - paraformConfig: - isCornersLinked: 0 - cornerRadii: {x: 64, y: 64, z: 64, w: 64} - cornerCurvature: 1.5 - filletCurvature: 2.5 - bevelWidth: 64 - ringThickness: 0 - elevation: 100 + m_PixelsPerUnitMultiplier: 1 + _common: + blurReferencesFrom: 0 + cameraReference: {fileID: 0} + featureNumber: 0 + blurStrength: 1 + unrankedLayer: 0 + priority: 0 + blurPreset: {fileID: 11400000, guid: 5e51158b88ffa23438827427d4bbb0d1, type: 2} + blurInstanceSettings: + downscaleSections: + - algorithmIdx: 3 + iterations: 2 + horizontalSamplesPerSide: 2 + verticalSamplesPerSide: 2 + sampleDistance: 1.5 + blurSections: + - algorithmIdx: 2 + iterations: 4 + horizontalSamplesPerSide: 2 + verticalSamplesPerSide: 2 + sampleDistance: 1.5 + referenceResolution: 1080 + hqResample: 0 + blurAdditionalDistancePerIteration: 1 + ditherStrength: 0.25 + brightness: 0 + contrast: 0 + vibrancy: -1 + tint: {r: 0, g: 0, b: 0, a: 0} + _alphaBlend: 255 + _sourceImageFade: 0 + additionalBlurPadding: 0 + tryBatchWithSimilar: 0 + fillEntireRenderTexture: 0 --- !u!1 &6700856703356688415 GameObject: m_ObjectHideFlags: 0 @@ -633,16 +654,17 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 7855874393868878643} + - {fileID: 4520370737915613483} - {fileID: 7323255282922851536} - {fileID: 7631189459700003741} + - {fileID: 316283453569668576} - {fileID: 731673013393171816} m_Father: {fileID: 0} 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: 40, y: 40} + m_SizeDelta: {x: 75, y: 75} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &2068372279596349448 CanvasRenderer: @@ -684,15 +706,14 @@ MonoBehaviour: Prefab: {fileID: 0} PrefabModificationsReferencedUnityObjects: [] PrefabModifications: [] - SerializationNodes: - - Name: functionUnit - Entry: 6 - Data: + SerializationNodes: [] rectTransform: {fileID: 6672170792524579150} canvasGroup: {fileID: 296117830655928654} frame: {fileID: 5835926715798068910} iconImage: {fileID: 6811689867027032270} - timer: {fileID: 0} + timerImage: {fileID: 7668043499301785357} + timerText: {fileID: 289009004714267967} + costText: {fileID: 4547699104054309808} --- !u!1 &8041244956148306746 GameObject: m_ObjectHideFlags: 0 @@ -702,14 +723,13 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 731673013393171816} - - component: {fileID: 707356967785745833} m_Layer: 5 m_Name: Texts m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &731673013393171816 RectTransform: m_ObjectHideFlags: 0 @@ -722,38 +742,87 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 6663965170318581280} - {fileID: 4275045189925584267} m_Father: {fileID: 6672170792524579150} 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: 50.000008} - m_SizeDelta: {x: 50, y: 60} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 90} + m_SizeDelta: {x: 75, y: 30} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &707356967785745833 +--- !u!1 &8768892574109757482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 316283453569668576} + - component: {fileID: 7057739919518516004} + - component: {fileID: 7668043499301785357} + m_Layer: 5 + m_Name: Timer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &316283453569668576 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8768892574109757482} + 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: 37592404733920052} + m_Father: {fileID: 6672170792524579150} + 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: -2, y: -2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7057739919518516004 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8768892574109757482} + m_CullTransparentMesh: 1 +--- !u!114 &7668043499301785357 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8041244956148306746} + m_GameObject: {fileID: 8768892574109757482} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.VerticalLayoutGroup - m_Padding: - m_Left: 0 - m_Right: 0 - m_Top: 0 - m_Bottom: 0 - m_ChildAlignment: 7 - m_Spacing: 0 - m_ChildForceExpandWidth: 0 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 0 - m_ChildControlHeight: 0 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.5019608} + 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: c0c96194f26c3ad48894a8f410129020, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 0 + m_FillOrigin: 2 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 diff --git a/Assets/Prefabs/MainGame/UI/PlayerCanvas/SupportEquipmentIcon.prefab b/Assets/Prefabs/MainGame/UI/PlayerCanvas/SupportEquipmentIcon.prefab index 1371c9e87..67bbea6dc 100644 --- a/Assets/Prefabs/MainGame/UI/PlayerCanvas/SupportEquipmentIcon.prefab +++ b/Assets/Prefabs/MainGame/UI/PlayerCanvas/SupportEquipmentIcon.prefab @@ -35,7 +35,7 @@ RectTransform: 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_SizeDelta: {x: -2, y: -2} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &5383810721295439943 CanvasRenderer: @@ -65,7 +65,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 0} + m_Sprite: {fileID: 21300000, guid: e6494be27789f254cad2d36b09178f59, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -349,8 +349,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 25, y: -50} - m_SizeDelta: {x: 50, y: 20} + m_AnchoredPosition: {x: 42.5, y: -40} + m_SizeDelta: {x: 85, y: 20} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &4989292147774878156 CanvasRenderer: @@ -380,10 +380,10 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: 300/200 + m_text: 300 m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontAsset: {fileID: 11400000, guid: 21262bfde877c70478b3fcaf0d725c46, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: d1840e4d5c5355a438fd745078e16187, type: 2} m_fontSharedMaterials: [] m_fontMaterial: {fileID: 0} m_fontMaterials: [] @@ -407,12 +407,12 @@ MonoBehaviour: m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_fontSize: 13.75 + m_fontSize: 20 m_fontSizeBase: 16 m_fontWeight: 400 m_enableAutoSizing: 1 m_fontSizeMin: 10 - m_fontSizeMax: 16 + m_fontSizeMax: 20 m_fontStyle: 0 m_HorizontalAlignment: 2 m_VerticalAlignment: 512 @@ -527,143 +527,6 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 ---- !u!1 &3150180972119515548 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6663965170318581280} - - component: {fileID: 8236163163766835478} - - component: {fileID: 3264228106627665596} - m_Layer: 5 - m_Name: OperationText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6663965170318581280 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3150180972119515548} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0.00019631287} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 731673013393171816} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 25, y: -30} - m_SizeDelta: {x: 50, y: 20} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &8236163163766835478 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3150180972119515548} - m_CullTransparentMesh: 1 ---- !u!114 &3264228106627665596 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3150180972119515548} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI - 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_text: Q+L - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 16 - m_fontSizeBase: 16 - m_fontWeight: 400 - m_enableAutoSizing: 1 - m_fontSizeMin: 10 - m_fontSizeMax: 16 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_characterHorizontalScale: 1 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_TextWrappingMode: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 0 - m_ActiveFontFeatures: 6e72656b - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_EmojiFallbackSupport: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &3630945596583633595 GameObject: m_ObjectHideFlags: 0 @@ -674,7 +537,7 @@ GameObject: m_Component: - component: {fileID: 7855874393868878643} - component: {fileID: 4127102497803563891} - - component: {fileID: 4400505302724168968} + - component: {fileID: 2901009548694725193} m_Layer: 5 m_Name: BlurBG m_TagString: Untagged @@ -699,7 +562,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} + m_SizeDelta: {x: -2, y: -2} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &4127102497803563891 CanvasRenderer: @@ -709,7 +572,7 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 3630945596583633595} m_CullTransparentMesh: 1 ---- !u!114 &4400505302724168968 +--- !u!114 &2901009548694725193 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -718,19 +581,19 @@ MonoBehaviour: m_GameObject: {fileID: 3630945596583633595} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 196bb08d6c2d3c9499c04e1281fd4ad3, type: 3} + m_Script: {fileID: 11500000, guid: be9dc56d305de9a43b44e6f120dafaba, type: 3} m_Name: - m_EditorClassIdentifier: LeTai.Asset.TranslucentImage::LeTai.Asset.TranslucentImage.TranslucentImage - m_Material: {fileID: 2100000, guid: 5e15fc327efa72d41bcc7921b6ca37a0, type: 2} - m_Color: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_EditorClassIdentifier: JeffGrawAssets.FlexibleUI.Runtime::JeffGrawAssets.FlexibleUI.BlurredImage + 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: 4ac32d9310793f44f8ec46e0b0a90c19, type: 3} - m_Type: 1 + m_Sprite: {fileID: 0} + m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 m_FillMethod: 4 @@ -738,20 +601,41 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 12 - _source: {fileID: 0} - _foregroundOpacity: 0 - _vibrancy: 1 - _brightness: 0 - _flatten: 0 - paraformConfig: - isCornersLinked: 0 - cornerRadii: {x: 64, y: 64, z: 64, w: 64} - cornerCurvature: 1.5 - filletCurvature: 2.5 - bevelWidth: 64 - ringThickness: 0 - elevation: 100 + m_PixelsPerUnitMultiplier: 1 + _common: + blurReferencesFrom: 0 + cameraReference: {fileID: 0} + featureNumber: 0 + blurStrength: 1 + unrankedLayer: 0 + priority: 0 + blurPreset: {fileID: 0} + blurInstanceSettings: + downscaleSections: + - algorithmIdx: 3 + iterations: 2 + horizontalSamplesPerSide: 2 + verticalSamplesPerSide: 2 + sampleDistance: 1.5 + blurSections: + - algorithmIdx: 2 + iterations: 4 + horizontalSamplesPerSide: 2 + verticalSamplesPerSide: 2 + sampleDistance: 1.5 + referenceResolution: 1080 + hqResample: 0 + blurAdditionalDistancePerIteration: 1 + ditherStrength: 0.25 + brightness: 0 + contrast: 0 + vibrancy: 0 + tint: {r: 0, g: 0, b: 0, a: 0} + _alphaBlend: 255 + _sourceImageFade: 0 + additionalBlurPadding: 0 + tryBatchWithSimilar: 0 + fillEntireRenderTexture: 0 --- !u!1 &6031457754085950924 GameObject: m_ObjectHideFlags: 0 @@ -827,7 +711,7 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 ---- !u!1 &6552084762070166258 +--- !u!1 &6440622248162029605 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -835,9 +719,9 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 8962718563061392606} - - component: {fileID: 6502012256584818365} - - component: {fileID: 5558358695431993510} + - component: {fileID: 9052133103245459313} + - component: {fileID: 735261732782229533} + - component: {fileID: 9217640881321828208} m_Layer: 5 m_Name: Timer m_TagString: Untagged @@ -845,18 +729,19 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &8962718563061392606 +--- !u!224 &9052133103245459313 RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6552084762070166258} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_GameObject: {fileID: 6440622248162029605} + 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_Children: + - {fileID: 5390978527145884061} m_Father: {fileID: 6672170792524579150} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -864,21 +749,21 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: -2, y: -2} m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &6502012256584818365 +--- !u!222 &735261732782229533 CanvasRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6552084762070166258} + m_GameObject: {fileID: 6440622248162029605} m_CullTransparentMesh: 1 ---- !u!114 &5558358695431993510 +--- !u!114 &9217640881321828208 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6552084762070166258} + m_GameObject: {fileID: 6440622248162029605} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} @@ -892,14 +777,14 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 4ac32d9310793f44f8ec46e0b0a90c19, type: 3} - m_Type: 1 + m_Sprite: {fileID: 21300000, guid: c0c96194f26c3ad48894a8f410129020, type: 3} + m_Type: 3 m_PreserveAspect: 0 m_FillCenter: 1 - m_FillMethod: 1 + m_FillMethod: 4 m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 + m_FillClockwise: 0 + m_FillOrigin: 2 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 --- !u!1 &6700856703356688415 @@ -937,7 +822,7 @@ RectTransform: - {fileID: 7855874393868878643} - {fileID: 7323255282922851536} - {fileID: 7631189459700003741} - - {fileID: 8962718563061392606} + - {fileID: 9052133103245459313} - {fileID: 3549151289926807660} - {fileID: 5920784134659968556} - {fileID: 735989625237935737} @@ -947,7 +832,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 40, y: 40} + m_SizeDelta: {x: 85, y: 85} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &2068372279596349448 CanvasRenderer: @@ -989,16 +874,15 @@ MonoBehaviour: Prefab: {fileID: 0} PrefabModificationsReferencedUnityObjects: [] PrefabModifications: [] - SerializationNodes: - - Name: functionUnit - Entry: 6 - Data: + SerializationNodes: [] rectTransform: {fileID: 6672170792524579150} canvasGroup: {fileID: 296117830655928654} supportEquipment: {fileID: 0} frame: {fileID: 5835926715798068910} iconImage: {fileID: 6811689867027032270} - timer: {fileID: 5558358695431993510} + timerImage: {fileID: 9217640881321828208} + timerText: {fileID: 4122024236172233886} + costText: {fileID: 4547699104054309808} --- !u!223 &1497936154529666453 Canvas: m_ObjectHideFlags: 0 @@ -1017,7 +901,7 @@ Canvas: m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 m_VertexColorAlwaysGammaSpace: 1 - m_AdditionalShaderChannelsFlag: 7 + m_AdditionalShaderChannelsFlag: 31 m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 m_SortingOrder: 10 @@ -1121,14 +1005,13 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 731673013393171816} - - component: {fileID: 707356967785745833} m_Layer: 5 m_Name: Texts m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &731673013393171816 RectTransform: m_ObjectHideFlags: 0 @@ -1141,38 +1024,148 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 6663965170318581280} - {fileID: 4275045189925584267} m_Father: {fileID: 6672170792524579150} 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: 50.000008} - m_SizeDelta: {x: 50, y: 60} + m_AnchoredPosition: {x: 0, y: 67.5} + m_SizeDelta: {x: 85, y: 50} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &707356967785745833 +--- !u!1 &8445402703647316760 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5390978527145884061} + - component: {fileID: 3701968063319087225} + - component: {fileID: 4122024236172233886} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5390978527145884061 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8445402703647316760} + 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: 9052133103245459313} + 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: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3701968063319087225 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8445402703647316760} + m_CullTransparentMesh: 1 +--- !u!114 &4122024236172233886 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8041244956148306746} + m_GameObject: {fileID: 8445402703647316760} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.VerticalLayoutGroup - m_Padding: - m_Left: 0 - m_Right: 0 - m_Top: 0 - m_Bottom: 0 - m_ChildAlignment: 7 - m_Spacing: 0 - m_ChildForceExpandWidth: 0 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 0 - m_ChildControlHeight: 0 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 + m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI + 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_text: 120.0 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 21262bfde877c70478b3fcaf0d725c46, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: 538d28bfaad57dc47b726847ab356ae6, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 20 + m_fontSizeBase: 18 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 8 + m_fontSizeMax: 20 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_characterHorizontalScale: 1 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} diff --git a/Assets/Resources/Items/Extender.meta b/Assets/Resources/Items/Extender.meta deleted file mode 100644 index 6cf71e4b0..000000000 --- a/Assets/Resources/Items/Extender.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ae7479aaed14d3240bcffd1ef9442771 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Resources/Items/PassiveEquipment/ArmorPiercingRound.prefab b/Assets/Resources/Items/PassiveEquipment/ArmorPiercingRound.prefab new file mode 100644 index 000000000..ea1710ce0 --- /dev/null +++ b/Assets/Resources/Items/PassiveEquipment/ArmorPiercingRound.prefab @@ -0,0 +1,108 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &5750982105846941114 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4246848515158293717} + - component: {fileID: 8909628142850051596} + m_Layer: 0 + m_Name: ArmorPiercingRound + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4246848515158293717 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5750982105846941114} + 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: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &8909628142850051596 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5750982105846941114} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46a4b90939f53e04c8b0211785d581d5, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Cielonos.MainGame.Inventory.Collections.ArmorPiercingRound + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: + - Name: passiveAttributeSm + Entry: 6 + Data: + - Name: comboSm + Entry: 6 + Data: + - Name: functionSm + Entry: 6 + Data: + - Name: ammoSm + Entry: 6 + Data: + - Name: overloadSm + Entry: 6 + Data: + - Name: auraSm + Entry: 6 + Data: + - Name: viewObjects + Entry: 7 + Data: 0|System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[Cielonos.MainGame.Inventory.ItemViewObject, + Assembly-CSharp]], mscorlib + - Name: comparer + Entry: 7 + Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.String, + mscorlib]], mscorlib + - Name: + Entry: 8 + Data: + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + fullBodyFuncAnims: {fileID: 0} + upperBodyFuncAnims: {fileID: 0} + contentData: {fileID: 11400000, guid: 1f5e59bcd7f03e94888a4128a5cb032f, type: 2} + viewObjectData: {fileID: 0} + vfxData: {fileID: 0} + passiveAttributeData: {fileID: 11400000, guid: 7fe4d1839f6d29f47a6e1cf3b97b4566, type: 2} + upgradeData: {fileID: 0} + comboData: {fileID: 0} + attackData: {fileID: 0} + functionData: {fileID: 0} + ammoData: {fileID: 0} + blockData: {fileID: 0} + overloadData: {fileID: 0} + feedbackSc: {fileID: 0} + extenders: [] diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/LeTai.TranslucentImage.UniversalRP.Editor.asmdef.meta b/Assets/Resources/Items/PassiveEquipment/ArmorPiercingRound.prefab.meta similarity index 59% rename from Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/LeTai.TranslucentImage.UniversalRP.Editor.asmdef.meta rename to Assets/Resources/Items/PassiveEquipment/ArmorPiercingRound.prefab.meta index a00429dc4..89ca24636 100644 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/Editor/LeTai.TranslucentImage.UniversalRP.Editor.asmdef.meta +++ b/Assets/Resources/Items/PassiveEquipment/ArmorPiercingRound.prefab.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: eba807230e676224b8e8e5b8859b2e7c -AssemblyDefinitionImporter: +guid: 95c06633bdd70a447af0e03eb3e95480 +PrefabImporter: externalObjects: {} userData: assetBundleName: diff --git a/Assets/Resources/Items/PassiveEquipment/PhotonDissociator.prefab b/Assets/Resources/Items/PassiveEquipment/PhotonDissociator.prefab new file mode 100644 index 000000000..ae422e9e1 --- /dev/null +++ b/Assets/Resources/Items/PassiveEquipment/PhotonDissociator.prefab @@ -0,0 +1,117 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &7629722813879712105 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4022818361804729044} + - component: {fileID: 257818111488745502} + m_Layer: 0 + m_Name: PhotonDissociator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4022818361804729044 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7629722813879712105} + 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: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &257818111488745502 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7629722813879712105} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dfcb853ac3666fc45a65e43107958eaf, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Cielonos.MainGame.Inventory.Collections.PhotonDissociator + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: + - Name: passiveAttributeSm + Entry: 6 + Data: + - Name: comboSm + Entry: 6 + Data: + - Name: functionSm + Entry: 6 + Data: + - Name: ammoSm + Entry: 6 + Data: + - Name: overloadSm + Entry: 6 + Data: + - Name: auraSm + Entry: 6 + Data: + - Name: viewObjects + Entry: 7 + Data: 0|System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[Cielonos.MainGame.Inventory.ItemViewObject, + Assembly-CSharp]], mscorlib + - Name: comparer + Entry: 7 + Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.String, + mscorlib]], mscorlib + - Name: + Entry: 8 + Data: + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: hostType + Entry: 7 + Data: 2|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: Cielonos.MainGame.Inventory.Collections.Polychrome, Assembly-CSharp + - Name: + Entry: 8 + Data: + fullBodyFuncAnims: {fileID: 0} + upperBodyFuncAnims: {fileID: 0} + contentData: {fileID: 0} + viewObjectData: {fileID: 0} + vfxData: {fileID: 0} + passiveAttributeData: {fileID: 0} + upgradeData: {fileID: 0} + comboData: {fileID: 0} + attackData: {fileID: 0} + functionData: {fileID: 0} + ammoData: {fileID: 0} + blockData: {fileID: 0} + overloadData: {fileID: 0} + feedbackSc: {fileID: 0} + extenders: [] diff --git a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/LeTai.TranslucentImage.UniversalRP.asmdef.meta b/Assets/Resources/Items/PassiveEquipment/PhotonDissociator.prefab.meta similarity index 59% rename from Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/LeTai.TranslucentImage.UniversalRP.asmdef.meta rename to Assets/Resources/Items/PassiveEquipment/PhotonDissociator.prefab.meta index 7582a956c..2b02b885e 100644 --- a/Assets/OtherPlugins/Le Tai's Asset/TranslucentImage/Script/URP/LeTai.TranslucentImage.UniversalRP.asmdef.meta +++ b/Assets/Resources/Items/PassiveEquipment/PhotonDissociator.prefab.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: e646286fd75dc0f44bb2f84ffb34408d -AssemblyDefinitionImporter: +guid: 280605898f30990428e66ff104649935 +PrefabImporter: externalObjects: {} userData: assetBundleName: diff --git a/Assets/Resources/Items/PassiveEquipment/PhotonPolarizer.prefab b/Assets/Resources/Items/PassiveEquipment/PhotonPolarizer.prefab new file mode 100644 index 000000000..049470ddc --- /dev/null +++ b/Assets/Resources/Items/PassiveEquipment/PhotonPolarizer.prefab @@ -0,0 +1,117 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1145534770752609673 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8151807826226963493} + - component: {fileID: 4488889994479194879} + m_Layer: 0 + m_Name: PhotonPolarizer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8151807826226963493 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1145534770752609673} + 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: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4488889994479194879 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1145534770752609673} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b6b2bf502e7cd5c4ca858a7492f332a9, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Cielonos.MainGame.Inventory.Collections.PhotonPolarizer + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: + - Name: passiveAttributeSm + Entry: 6 + Data: + - Name: comboSm + Entry: 6 + Data: + - Name: functionSm + Entry: 6 + Data: + - Name: ammoSm + Entry: 6 + Data: + - Name: overloadSm + Entry: 6 + Data: + - Name: auraSm + Entry: 6 + Data: + - Name: viewObjects + Entry: 7 + Data: 0|System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[Cielonos.MainGame.Inventory.ItemViewObject, + Assembly-CSharp]], mscorlib + - Name: comparer + Entry: 7 + Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.String, + mscorlib]], mscorlib + - Name: + Entry: 8 + Data: + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: hostType + Entry: 7 + Data: 2|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: Cielonos.MainGame.Inventory.Collections.Polychrome, Assembly-CSharp + - Name: + Entry: 8 + Data: + fullBodyFuncAnims: {fileID: 0} + upperBodyFuncAnims: {fileID: 0} + contentData: {fileID: 0} + viewObjectData: {fileID: 0} + vfxData: {fileID: 0} + passiveAttributeData: {fileID: 0} + upgradeData: {fileID: 0} + comboData: {fileID: 0} + attackData: {fileID: 0} + functionData: {fileID: 0} + ammoData: {fileID: 0} + blockData: {fileID: 0} + overloadData: {fileID: 0} + feedbackSc: {fileID: 0} + extenders: [] diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor.meta b/Assets/Resources/Items/PassiveEquipment/PhotonPolarizer.prefab.meta similarity index 57% rename from Assets/OtherPlugins/Le Tai's Asset/Common/Editor.meta rename to Assets/Resources/Items/PassiveEquipment/PhotonPolarizer.prefab.meta index 03b6da5ee..b3f473bc9 100644 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Editor.meta +++ b/Assets/Resources/Items/PassiveEquipment/PhotonPolarizer.prefab.meta @@ -1,7 +1,6 @@ fileFormatVersion: 2 -guid: b6c339e6d17f1c9428f17088b84f1862 -folderAsset: yes -DefaultImporter: +guid: 03e1c9afe907f4040b65351e8f09716c +PrefabImporter: externalObjects: {} userData: assetBundleName: diff --git a/Assets/Scenes/MainGame.unity b/Assets/Scenes/MainGame.unity index 4881b0ae1..a12078e1f 100644 --- a/Assets/Scenes/MainGame.unity +++ b/Assets/Scenes/MainGame.unity @@ -337,15 +337,15 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 79107602} - - component: {fileID: 79107603} - component: {fileID: 79107604} + - component: {fileID: 79107605} m_Layer: 5 - m_Name: Displayer + m_Name: MainDisplayer m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &79107602 RectTransform: m_ObjectHideFlags: 0 @@ -353,48 +353,24 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 79107601} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.0000001397} + 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: 219461911} - - {fileID: 2013189479} + - {fileID: 1274178558} + - {fileID: 906471636} + - {fileID: 174067778} + - {fileID: 1369151019} - {fileID: 380878337} - {fileID: 2029635273} m_Father: {fileID: 503309719} 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: 0, y: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 150, y: 0} + m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &79107603 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 79107601} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e20bf42aab841f646b3387148f1fceb2, type: 3} - m_Name: - m_EditorClassIdentifier: Assembly-CSharp::Cielonos.UI.MainWeaponDisplayer - serializationData: - SerializedFormat: 2 - SerializedBytes: - ReferencedUnityObjects: [] - SerializedBytesString: - Prefab: {fileID: 0} - PrefabModificationsReferencedUnityObjects: [] - PrefabModifications: [] - SerializationNodes: [] - rectTransform: {fileID: 79107602} - canvasGroup: {fileID: 79107604} - rectIcon: {fileID: 380878338} - weaponNameText: {fileID: 2029635274} - frame: {fileID: 2013189480} --- !u!225 &79107604 CanvasGroup: m_ObjectHideFlags: 0 @@ -407,6 +383,34 @@ CanvasGroup: m_Interactable: 1 m_BlocksRaycasts: 1 m_IgnoreParentGroups: 0 +--- !u!114 &79107605 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 79107601} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 624797d1380cee24e9cfd1c1a1b8ea90, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Cielonos.MainGame.UI.MainWeaponFunctionIcon + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: [] + rectTransform: {fileID: 79107602} + canvasGroup: {fileID: 79107604} + frame: {fileID: 906471638} + iconImage: {fileID: 380878338} + timerImage: {fileID: 0} + timerText: {fileID: 0} + costText: {fileID: 0} --- !u!1 &84582971 GameObject: m_ObjectHideFlags: 0 @@ -769,8 +773,8 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 157462138} serializedVersion: 2 - m_LocalRotation: {x: 0.041604012, y: 0.7120454, z: -0.6996196, w: 0.042342935} - m_LocalPosition: {x: -0.025034627, y: 13.898141, z: 0.20974834} + m_LocalRotation: {x: 0.04385202, y: 0.71185315, z: -0.69953614, w: 0.04462414} + m_LocalPosition: {x: -0.02615419, y: 13.898172, z: 0.20778869} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -1026,7 +1030,7 @@ GameObject: - component: {fileID: 174067780} - component: {fileID: 174067779} m_Layer: 5 - m_Name: Frame (1) + m_Name: Corner m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1040,11 +1044,11 @@ RectTransform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 174067777} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.000294609} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 2013189479} + m_Father: {fileID: 79107602} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -1243,7 +1247,7 @@ Canvas: m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 m_VertexColorAlwaysGammaSpace: 1 - m_AdditionalShaderChannelsFlag: 31 + m_AdditionalShaderChannelsFlag: 25 m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 m_SortingOrder: 100 @@ -1318,171 +1322,6 @@ CanvasGroup: m_Interactable: 1 m_BlocksRaycasts: 1 m_IgnoreParentGroups: 0 ---- !u!1 &219461910 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 219461911} - - component: {fileID: 219461914} - - component: {fileID: 219461913} - - component: {fileID: 219461915} - m_Layer: 5 - m_Name: SwitchLine - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!224 &219461911 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 219461910} - 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: 79107602} - 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.1897, y: 41.5} - m_SizeDelta: {x: 287.5, y: 2} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &219461913 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 219461910} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image - 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 &219461914 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 219461910} - m_CullTransparentMesh: 1 ---- !u!114 &219461915 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 219461910} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1bac190db134f274a9277da474af4a3d, type: 3} - m_Name: - m_EditorClassIdentifier: ChocDino.UIFX::ChocDino.UIFX.GlowFilter - _strength: 0.5 - _renderSpace: 0 - _expand: 1 - _sourceArea: 0 - _edgeSide: 2 - _distanceShape: 2 - _maxDistance: 128 - _reuseDistanceMap: 0 - _falloffMode: 0 - _expFalloffEnergy: 2 - _expFalloffPower: 2 - _expFalloffOffset: 0 - _falloffCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: -1 - outSlope: -1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: -1 - outSlope: -1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - _falloffCurveGamma: 2.2 - _fillMode: 0 - _color: {r: 1, g: 1, b: 1, a: 1} - _gradientTexture: {fileID: 0} - _gradient: - serializedVersion: 2 - key0: {r: 0.03116761, g: 0.9716981, b: 0.5848317, a: 1} - key1: {r: 0.3635457, g: 0.4478632, b: 0.8679245, a: 1} - key2: {r: 0.8301887, g: 0.4025632, b: 0.829066, a: 0} - key3: {r: 0.8490566, g: 0.1874332, b: 0.5700046, a: 0} - key4: {r: 0.8207547, g: 0.7230087, b: 0.1966714, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 16384 - ctime2: 32768 - ctime3: 49151 - ctime4: 65535 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 5 - m_NumAlphaKeys: 2 - _gradientOffset: 0 - _gradientGamma: 1 - _gradientReverse: 0 - _blur: 16 - _noiseScale: 0 - _additive: 1 - _sourceAlpha: 1 --- !u!1 &245466180 GameObject: m_ObjectHideFlags: 0 @@ -2022,10 +1861,10 @@ RectTransform: m_Children: [] m_Father: {fileID: 79107602} 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_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 150, y: 85} + m_SizeDelta: {x: -10, y: -10} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &380878338 MonoBehaviour: @@ -2047,7 +1886,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: df563e4fcb7aff04d84722b0b480b277, type: 3} + m_Sprite: {fileID: 21300000, guid: 068170e828fa0c340a437796390cdfb2, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -2238,15 +2077,15 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1205456455} + - {fileID: 704243378} - {fileID: 79107602} - {fileID: 555776724} m_Father: {fileID: 197219491} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0} m_AnchorMax: {x: 1, y: 0} - m_AnchoredPosition: {x: -180, y: 75} - m_SizeDelta: {x: 290, y: 85} + m_AnchoredPosition: {x: -240, y: 75} + m_SizeDelta: {x: 400, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!225 &503309720 CanvasGroup: @@ -2280,13 +2119,17 @@ MonoBehaviour: Prefab: {fileID: 0} PrefabModificationsReferencedUnityObjects: [] PrefabModifications: [] - SerializationNodes: [] + SerializationNodes: + - Name: functionIconDict + Entry: 6 + Data: rectTransform: {fileID: 503309719} canvasGroup: {fileID: 503309720} mainWeapon: {fileID: 0} functionIconPrefab: {fileID: 6700856703356688415, guid: ede98da7076bed447a71c87efc5ee216, type: 3} functionIconContainer: {fileID: 555776724} - displayer: {fileID: 79107603} + displayer: {fileID: 0} + mainFunctionIcon: {fileID: 704243377} functionIcons: [] --- !u!1 &506893527 GameObject: @@ -2730,37 +2573,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 196bb08d6c2d3c9499c04e1281fd4ad3, type: 3} m_Name: m_EditorClassIdentifier: - m_Material: {fileID: 2100000, guid: 96c5704d0681e35408630c488fc0c234, type: 2} - m_Color: {r: 0, g: 0, b: 0, a: 0} - 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 - _source: {fileID: 7582698285514830837} - _foregroundOpacity: 0 - _vibrancy: 1 - _brightness: 0 - _flatten: 0 - paraformConfig: - isCornersLinked: 0 - cornerRadii: {x: 64, y: 64, z: 64, w: 64} - cornerCurvature: 1.5 - filletCurvature: 2.5 - bevelWidth: 64 - ringThickness: 0 - elevation: 100 --- !u!222 &552179408 CanvasRenderer: m_ObjectHideFlags: 0 @@ -2830,8 +2642,8 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 555776723} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -2839,8 +2651,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: -70, y: 25} - m_SizeDelta: {x: -140, y: 40} + m_AnchoredPosition: {x: -50, y: -62.5} + m_SizeDelta: {x: -100, y: 75} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &555776725 MonoBehaviour: @@ -2856,10 +2668,10 @@ MonoBehaviour: m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.HorizontalLayoutGroup m_Padding: m_Left: 0 - m_Right: 0 + m_Right: 10 m_Top: 0 m_Bottom: 0 - m_ChildAlignment: 3 + m_ChildAlignment: 5 m_Spacing: 10 m_ChildForceExpandWidth: 0 m_ChildForceExpandHeight: 0 @@ -2867,7 +2679,7 @@ MonoBehaviour: m_ChildControlHeight: 0 m_ChildScaleWidth: 0 m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 + m_ReverseArrangement: 1 --- !u!1 &565311427 GameObject: m_ObjectHideFlags: 0 @@ -3283,7 +3095,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &629426291 MonoBehaviour: m_ObjectHideFlags: 0 @@ -3496,6 +3308,139 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &704243376 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 503309719} + m_Modifications: + - target: {fileID: 105167646552314933, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: serializationData.Prefab + value: + objectReference: {fileID: 105167646552314933, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + - target: {fileID: 731673013393171816, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_SizeDelta.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 731673013393171816, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0.000039101 + objectReference: {fileID: 0} + - target: {fileID: 731673013393171816, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_AnchoredPosition.y + value: 115.00001 + objectReference: {fileID: 0} + - target: {fileID: 4547699104054309808, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_sharedMaterial + value: + objectReference: {fileID: 2100000, guid: d1840e4d5c5355a438fd745078e16187, type: 2} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_SizeDelta.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_SizeDelta.y + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_AnchoredPosition.x + value: 350 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_AnchoredPosition.y + value: 50.00001 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6700856703356688415, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + propertyPath: m_Name + value: MainFunction + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ede98da7076bed447a71c87efc5ee216, type: 3} +--- !u!114 &704243377 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 105167646552314933, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + m_PrefabInstance: {fileID: 704243376} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 624797d1380cee24e9cfd1c1a1b8ea90, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Cielonos.UI.MainWeaponFunctionIcon +--- !u!224 &704243378 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 6672170792524579150, guid: ede98da7076bed447a71c87efc5ee216, type: 3} + m_PrefabInstance: {fileID: 704243376} + m_PrefabAsset: {fileID: 0} --- !u!1001 &720588586 PrefabInstance: m_ObjectHideFlags: 0 @@ -3518,12 +3463,16 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1497936154529666453, guid: 96d7f6c6213c88b4a927a6cb6aaf96ae, type: 3} propertyPath: m_AdditionalShaderChannelsFlag - value: 7 + value: 31 + objectReference: {fileID: 0} + - target: {fileID: 4122024236172233886, guid: 96d7f6c6213c88b4a927a6cb6aaf96ae, type: 3} + propertyPath: m_fontSize + value: 20 objectReference: {fileID: 0} - target: {fileID: 4400505302724168968, guid: 96d7f6c6213c88b4a927a6cb6aaf96ae, type: 3} propertyPath: _source value: - objectReference: {fileID: 7582698285514830837} + objectReference: {fileID: 0} - target: {fileID: 6031457754085950924, guid: 96d7f6c6213c88b4a927a6cb6aaf96ae, type: 3} propertyPath: m_IsActive value: 0 @@ -4307,37 +4256,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 196bb08d6c2d3c9499c04e1281fd4ad3, type: 3} m_Name: m_EditorClassIdentifier: LeTai.Asset.TranslucentImage::LeTai.Asset.TranslucentImage.TranslucentImage - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 0.5019608} - 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: 5f376008115038c44912b3289fa88ea8, type: 3} - 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 - _source: {fileID: 7582698285514830837} - _foregroundOpacity: 0 - _vibrancy: 1 - _brightness: 0 - _flatten: 0 - paraformConfig: - isCornersLinked: 0 - cornerRadii: {x: 64, y: 64, z: 64, w: 64} - cornerCurvature: 1.5 - filletCurvature: 2.5 - bevelWidth: 64 - ringThickness: 0 - elevation: 100 --- !u!222 &823124790 CanvasRenderer: m_ObjectHideFlags: 0 @@ -4535,6 +4453,171 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &906471635 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 906471636} + - component: {fileID: 906471639} + - component: {fileID: 906471638} + - component: {fileID: 906471637} + m_Layer: 5 + m_Name: Frame + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &906471636 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 906471635} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.000294609} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 79107602} + 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: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &906471637 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 906471635} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1bac190db134f274a9277da474af4a3d, type: 3} + m_Name: + m_EditorClassIdentifier: ChocDino.UIFX::ChocDino.UIFX.GlowFilter + _strength: 0 + _renderSpace: 0 + _expand: 1 + _sourceArea: 0 + _edgeSide: 2 + _distanceShape: 2 + _maxDistance: 128 + _reuseDistanceMap: 0 + _falloffMode: 0 + _expFalloffEnergy: 1 + _expFalloffPower: 1.25 + _expFalloffOffset: 0 + _falloffCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: -1 + outSlope: -1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: -1 + outSlope: -1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _falloffCurveGamma: 2.2 + _fillMode: 0 + _color: {r: 1.4142135, g: 1.4142135, b: 1.4142135, a: 1.4142135} + _gradientTexture: {fileID: 0} + _gradient: + serializedVersion: 2 + key0: {r: 0.03116761, g: 0.9716981, b: 0.5848317, a: 1} + key1: {r: 0.3635457, g: 0.4478632, b: 0.8679245, a: 1} + key2: {r: 0.8301887, g: 0.4025632, b: 0.829066, a: 0} + key3: {r: 0.8490566, g: 0.1874332, b: 0.5700046, a: 0} + key4: {r: 0.8207547, g: 0.7230087, b: 0.1966714, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 16384 + ctime2: 32768 + ctime3: 49151 + ctime4: 65535 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 5 + m_NumAlphaKeys: 2 + _gradientOffset: 0 + _gradientGamma: 1 + _gradientReverse: 0 + _blur: 4.8 + _noiseScale: 1 + _additive: 1 + _sourceAlpha: 1 +--- !u!114 &906471638 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 906471635} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.2509804} + 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: 3a6417eb1905a5a4894af7cb736f81b9, 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: 1 +--- !u!222 &906471639 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 906471635} + m_CullTransparentMesh: 1 --- !u!1 &910815509 GameObject: m_ObjectHideFlags: 0 @@ -6506,10 +6589,14 @@ PrefabInstance: propertyPath: serializationData.Prefab value: objectReference: {fileID: 628242479411463374, guid: 96d7f6c6213c88b4a927a6cb6aaf96ae, type: 3} + - target: {fileID: 4122024236172233886, guid: 96d7f6c6213c88b4a927a6cb6aaf96ae, type: 3} + propertyPath: m_fontSize + value: 20 + objectReference: {fileID: 0} - target: {fileID: 4400505302724168968, guid: 96d7f6c6213c88b4a927a6cb6aaf96ae, type: 3} propertyPath: _source value: - objectReference: {fileID: 7582698285514830837} + objectReference: {fileID: 0} - target: {fileID: 6672170792524579150, guid: 96d7f6c6213c88b4a927a6cb6aaf96ae, type: 3} propertyPath: m_Pivot.x value: 0.5 @@ -6774,94 +6861,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1205076648} m_CullTransparentMesh: 1 ---- !u!1 &1205456454 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1205456455} - - component: {fileID: 1205456457} - - component: {fileID: 1205456458} - m_Layer: 5 - m_Name: BlurBG (2) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1205456455 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1205456454} - 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: 503309719} - 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: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1205456457 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1205456454} - m_CullTransparentMesh: 1 ---- !u!114 &1205456458 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1205456454} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 196bb08d6c2d3c9499c04e1281fd4ad3, type: 3} - m_Name: - m_EditorClassIdentifier: LeTai.Asset.TranslucentImage::LeTai.Asset.TranslucentImage.TranslucentImage - m_Material: {fileID: 2100000, guid: 5e15fc327efa72d41bcc7921b6ca37a0, type: 2} - m_Color: {r: 0.8, g: 0.8, b: 0.8, 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: 5e16c7aea118d68498053518146c9cf9, 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: 25 - _source: {fileID: 7582698285514830837} - _foregroundOpacity: 0 - _vibrancy: 1 - _brightness: 0 - _flatten: 0 - paraformConfig: - isCornersLinked: 0 - cornerRadii: {x: 64, y: 64, z: 64, w: 64} - cornerCurvature: 1.5 - filletCurvature: 2.5 - bevelWidth: 64 - ringThickness: 0 - elevation: 100 --- !u!1 &1229012607 GameObject: m_ObjectHideFlags: 0 @@ -7311,6 +7310,115 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 33bd71b84e3b907468514ad946229fbc, type: 3} m_Name: m_EditorClassIdentifier: Assembly-CSharp::Cielonos.MainGame.Effects.Feedback.TimeScaleShaker +--- !u!1 &1274178557 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1274178558} + - component: {fileID: 1274178560} + - component: {fileID: 1274178559} + m_Layer: 5 + m_Name: BlurBG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1274178558 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1274178557} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.000294609} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 79107602} + 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: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1274178559 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1274178557} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: be9dc56d305de9a43b44e6f120dafaba, type: 3} + m_Name: + m_EditorClassIdentifier: JeffGrawAssets.FlexibleUI.Runtime::JeffGrawAssets.FlexibleUI.BlurredImage + m_Material: {fileID: 1545779996} + 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 + _common: + blurReferencesFrom: 0 + cameraReference: {fileID: 5176838972435409975} + featureNumber: 0 + blurStrength: 1 + unrankedLayer: 0 + priority: 0 + blurPreset: {fileID: 11400000, guid: 5e51158b88ffa23438827427d4bbb0d1, type: 2} + blurInstanceSettings: + downscaleSections: + - algorithmIdx: 3 + iterations: 2 + horizontalSamplesPerSide: 2 + verticalSamplesPerSide: 2 + sampleDistance: 1.5 + blurSections: + - algorithmIdx: 2 + iterations: 4 + horizontalSamplesPerSide: 2 + verticalSamplesPerSide: 2 + sampleDistance: 1.5 + referenceResolution: 1080 + hqResample: 0 + blurAdditionalDistancePerIteration: 1 + ditherStrength: 0.25 + brightness: 0 + contrast: 0 + vibrancy: -1 + tint: {r: 0, g: 0, b: 0, a: 0} + _alphaBlend: 255 + _sourceImageFade: 0 + additionalBlurPadding: 0 + tryBatchWithSimilar: 0 + fillEntireRenderTexture: 0 +--- !u!222 &1274178560 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1274178557} + m_CullTransparentMesh: 1 --- !u!1 &1278559156 GameObject: m_ObjectHideFlags: 0 @@ -7799,7 +7907,7 @@ GameObject: - component: {fileID: 1369151021} - component: {fileID: 1369151020} m_Layer: 5 - m_Name: Frame (2) + m_Name: Corner m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -7813,11 +7921,11 @@ RectTransform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1369151018} m_LocalRotation: {x: -0, y: -0, z: 1, w: 0} - m_LocalPosition: {x: 0, y: 0, z: -0.000294609} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 2013189479} + m_Father: {fileID: 79107602} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180} m_AnchorMin: {x: 1, y: 0} m_AnchorMax: {x: 1, y: 0} @@ -9087,12 +9195,16 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1497936154529666453, guid: 96d7f6c6213c88b4a927a6cb6aaf96ae, type: 3} propertyPath: m_AdditionalShaderChannelsFlag - value: 7 + value: 31 + objectReference: {fileID: 0} + - target: {fileID: 4122024236172233886, guid: 96d7f6c6213c88b4a927a6cb6aaf96ae, type: 3} + propertyPath: m_fontSize + value: 20 objectReference: {fileID: 0} - target: {fileID: 4400505302724168968, guid: 96d7f6c6213c88b4a927a6cb6aaf96ae, type: 3} propertyPath: _source value: - objectReference: {fileID: 7582698285514830837} + objectReference: {fileID: 0} - target: {fileID: 6031457754085950924, guid: 96d7f6c6213c88b4a927a6cb6aaf96ae, type: 3} propertyPath: m_IsActive value: 0 @@ -9191,6 +9303,45 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 6672170792524579150, guid: 96d7f6c6213c88b4a927a6cb6aaf96ae, type: 3} m_PrefabInstance: {fileID: 1513016077} m_PrefabAsset: {fileID: 0} +--- !u!21 &1545779996 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DefaultBlurredImage + m_Shader: {fileID: 4800000, guid: 0bc497fc7237fb94a98a758638ed8902, 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} + m_Ints: [] + m_Floats: + - _ColorMask: 15 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _UseUIAlphaClip: 0 + m_Colors: [] + m_BuildTextureStacks: [] + m_AllowLocking: 1 --- !u!1 &1553802792 GameObject: m_ObjectHideFlags: 0 @@ -10364,7 +10515,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &1769843352 RectTransform: m_ObjectHideFlags: 0 @@ -11255,173 +11406,6 @@ MonoBehaviour: rectTransform: {fileID: 1984234009} canvasGroup: {fileID: 1984234012} infoUnitPrefab: {fileID: 6592938141123029458, guid: 2b9201e1ef9fd6b4881587613d783588, type: 3} ---- !u!1 &2013189478 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2013189479} - - component: {fileID: 2013189481} - - component: {fileID: 2013189480} - - component: {fileID: 2013189482} - m_Layer: 5 - m_Name: Frame - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2013189479 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2013189478} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0.000294609} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 174067778} - - {fileID: 1369151019} - m_Father: {fileID: 79107602} - 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: -0.0000076293945, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &2013189480 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2013189478} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 0.101960786} - 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: 3a6417eb1905a5a4894af7cb736f81b9, 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: 1 ---- !u!222 &2013189481 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2013189478} - m_CullTransparentMesh: 1 ---- !u!114 &2013189482 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2013189478} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1bac190db134f274a9277da474af4a3d, type: 3} - m_Name: - m_EditorClassIdentifier: ChocDino.UIFX::ChocDino.UIFX.GlowFilter - _strength: 0 - _renderSpace: 0 - _expand: 1 - _sourceArea: 0 - _edgeSide: 2 - _distanceShape: 2 - _maxDistance: 128 - _reuseDistanceMap: 0 - _falloffMode: 0 - _expFalloffEnergy: 1 - _expFalloffPower: 1 - _expFalloffOffset: 0 - _falloffCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: -1 - outSlope: -1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: -1 - outSlope: -1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - _falloffCurveGamma: 2.2 - _fillMode: 0 - _color: {r: 0.5999998, g: 0.39999998, b: 1, a: 1} - _gradientTexture: {fileID: 0} - _gradient: - serializedVersion: 2 - key0: {r: 0.03116761, g: 0.9716981, b: 0.5848317, a: 1} - key1: {r: 0.3635457, g: 0.4478632, b: 0.8679245, a: 1} - key2: {r: 0.8301887, g: 0.4025632, b: 0.829066, a: 0} - key3: {r: 0.8490566, g: 0.1874332, b: 0.5700046, a: 0} - key4: {r: 0.8207547, g: 0.7230087, b: 0.1966714, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 16384 - ctime2: 32768 - ctime3: 49151 - ctime4: 65535 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 5 - m_NumAlphaKeys: 2 - _gradientOffset: 0 - _gradientGamma: 1 - _gradientReverse: 0 - _blur: 4.8 - _noiseScale: 1 - _additive: 1 - _sourceAlpha: 1 --- !u!1 &2015727554 GameObject: m_ObjectHideFlags: 0 @@ -11798,12 +11782,16 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1497936154529666453, guid: 96d7f6c6213c88b4a927a6cb6aaf96ae, type: 3} propertyPath: m_AdditionalShaderChannelsFlag - value: 7 + value: 31 + objectReference: {fileID: 0} + - target: {fileID: 4122024236172233886, guid: 96d7f6c6213c88b4a927a6cb6aaf96ae, type: 3} + propertyPath: m_fontSize + value: 20 objectReference: {fileID: 0} - target: {fileID: 4400505302724168968, guid: 96d7f6c6213c88b4a927a6cb6aaf96ae, type: 3} propertyPath: _source value: - objectReference: {fileID: 7582698285514830837} + objectReference: {fileID: 0} - target: {fileID: 6031457754085950924, guid: 96d7f6c6213c88b4a927a6cb6aaf96ae, type: 3} propertyPath: m_IsActive value: 0 @@ -11929,7 +11917,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &2029635273 RectTransform: m_ObjectHideFlags: 0 @@ -13328,7 +13316,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7221211412473590907} serializedVersion: 2 - m_LocalRotation: {x: -0.008338869, y: 0.0387301, z: 0.26741445, w: 0.9627668} + m_LocalRotation: {x: 0.04781273, y: 0.13055375, z: 0.28692162, w: 0.947811} m_LocalPosition: {x: 0.000000014901161, y: 0.2573493, z: 0.00000008661303} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -13344,7 +13332,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 3319674495685088495} serializedVersion: 2 - m_LocalRotation: {x: -0.6168403, y: 0.36541808, z: 0.38051474, w: 0.58411145} + m_LocalRotation: {x: -0.5020658, y: 0.49923357, z: 0.47067088, w: 0.5264645} m_LocalPosition: {x: -0.027396753, y: 0.16675851, z: 0.0010840573} m_LocalScale: {x: 1.0000001, y: 1.0000001, z: 1} m_ConstrainProportionsScale: 0 @@ -14141,7 +14129,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7042227719721289364} serializedVersion: 2 - m_LocalRotation: {x: -0.5331908, y: -0.036786158, z: -0.015425535, w: 0.84505415} + m_LocalRotation: {x: -0.60357046, y: -0.035949722, z: -0.01950249, w: 0.79626} m_LocalPosition: {x: 0.000000016298147, y: 0.03885748, z: 0.000000162283} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -15088,7 +15076,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7844812289182461571} serializedVersion: 2 - m_LocalRotation: {x: 0.9836046, y: -0.13095914, z: 0.08900948, w: -0.08630761} + m_LocalRotation: {x: 0.9683769, y: -0.1664558, z: 0.1439415, w: 0.11755707} m_LocalPosition: {x: -0.106367506, y: 0.04975005, z: 0.009382512} m_LocalScale: {x: 1.0000014, y: 1.0000006, z: 1.0000006} m_ConstrainProportionsScale: 0 @@ -15150,7 +15138,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5702025386808075247} serializedVersion: 2 - m_LocalRotation: {x: 0.013689712, y: 0.9531672, z: -0.3021309, w: 0.001391232} + m_LocalRotation: {x: 0.013689578, y: 0.9532043, z: -0.302014, w: 0.0013928711} m_LocalPosition: {x: -0.0000000023283035, y: 0.1350647, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -15203,7 +15191,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 48256218780401782} serializedVersion: 2 - m_LocalRotation: {x: 0.59351844, y: -0.03608908, z: -0.018913293, w: -0.8037884} + m_LocalRotation: {x: 0.60356635, y: -0.0359498, z: -0.01950241, w: -0.79626316} m_LocalPosition: {x: -0.0000000069849184, y: 0.03885742, z: 0.00000004237519} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -16400,6 +16388,7 @@ MonoBehaviour: rotationalInterpolation: 0.5 rootRotation: 0.5 updateMode: 10 + disableMode: 0 animationPoseRatio: 0 reductionSetting: simpleDistance: 0 @@ -17684,6 +17673,7 @@ MonoBehaviour: rotationalInterpolation: 0.5 rootRotation: 0.5 updateMode: 10 + disableMode: 0 animationPoseRatio: 0 reductionSetting: simpleDistance: 0 @@ -23744,7 +23734,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 746385490261684301} serializedVersion: 2 - m_LocalRotation: {x: 0.015104799, y: -0.1077571, z: -0.12643896, w: 0.98598856} + m_LocalRotation: {x: 0.01523426, y: -0.37531206, z: -0.39265454, w: 0.83948267} m_LocalPosition: {x: -0.000000020489095, y: 0.2573493, z: 0.00000018067665} m_LocalScale: {x: 1, y: 1.0000001, z: 1} m_ConstrainProportionsScale: 0 @@ -23867,7 +23857,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 981859268219049014} serializedVersion: 2 - m_LocalRotation: {x: -0.6264746, y: -0.039556384, z: -0.023803411, w: 0.7780735} + m_LocalRotation: {x: -0.29629767, y: -0.042002823, z: -0.004148512, w: 0.95416266} m_LocalPosition: {x: -0.0000000013969841, y: 0.033887655, z: 0.00000010035002} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -24139,7 +24129,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2100160008256187041} serializedVersion: 2 - m_LocalRotation: {x: -0.5737201, y: -0.03984511, z: -0.019832253, w: 0.8178413} + m_LocalRotation: {x: -0.6593192, y: -0.038297545, z: -0.025264706, w: 0.75046194} m_LocalPosition: {x: 0.00000000698492, y: 0.04517272, z: 0.000000033061955} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -29332,7 +29322,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1979517611748284342} serializedVersion: 2 - m_LocalRotation: {x: -0.25082624, y: -0.0299948, z: -0.088714674, w: 0.9634917} + m_LocalRotation: {x: -0.31546807, y: -0.10420824, z: -0.345154, w: 0.8777752} m_LocalPosition: {x: 0.009598533, y: 0.09659851, z: -0.00032032476} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -34414,7 +34404,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4624933114470948350} serializedVersion: 2 - m_LocalRotation: {x: -0.008419409, y: 0.16987698, z: -0.043150187, w: 0.9844842} + m_LocalRotation: {x: -0.023985032, y: -0.35650456, z: 0.06699527, w: 0.9315797} m_LocalPosition: {x: 1.323489e-23, y: 0.070663825, z: -4.4408926e-16} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -34873,7 +34863,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7171492203372693641} serializedVersion: 2 - m_LocalRotation: {x: -0.50801826, y: 0.11033565, z: -0.0912476, w: 0.84936297} + m_LocalRotation: {x: -0.48010573, y: -0.018790659, z: -0.086854346, w: 0.872698} m_LocalPosition: {x: 0.000000005587928, y: 0.56238115, z: -0.000000007450578} m_LocalScale: {x: 0.9999999, y: 0.99999976, z: 0.9999998} m_ConstrainProportionsScale: 0 @@ -35085,7 +35075,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2525908065202250393} serializedVersion: 2 - m_LocalRotation: {x: 0.1507428, y: -0.13335824, z: -0.031244025, w: 0.97903836} + m_LocalRotation: {x: 0.23626721, y: -0.030683381, z: -0.021842293, w: 0.97095793} m_LocalPosition: {x: 0.000000009313213, y: 0.5179995, z: 0.000000003259628} m_LocalScale: {x: 1, y: 0.99999994, z: 1} m_ConstrainProportionsScale: 0 @@ -35770,6 +35760,7 @@ MonoBehaviour: rotationalInterpolation: 0.5 rootRotation: 0.5 updateMode: 10 + disableMode: 0 animationPoseRatio: 0 reductionSetting: simpleDistance: 0 @@ -36489,7 +36480,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8758005403840528289} serializedVersion: 2 - m_LocalRotation: {x: 0.011271842, y: 0.06264527, z: -0.21418616, w: -0.97471684} + m_LocalRotation: {x: 0.010134056, y: 0.059312195, z: -0.31946802, w: -0.94568473} m_LocalPosition: {x: -0.000000059604638, y: 0.043039627, z: -0.00000009126965} m_LocalScale: {x: 1, y: 0.99999994, z: 0.99999994} m_ConstrainProportionsScale: 0 @@ -36536,7 +36527,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8037889827979424644} serializedVersion: 2 - m_LocalRotation: {x: 0.26939517, y: -0.03253365, z: -0.10204111, w: -0.9570556} + m_LocalRotation: {x: 0.31546667, y: -0.104208395, z: -0.3451548, w: -0.8777754} m_LocalPosition: {x: -0.009598527, y: 0.096598506, z: -0.00032055017} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -36616,7 +36607,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 3866290918566464698} serializedVersion: 2 - m_LocalRotation: {x: 0.21876073, y: -0.06167595, z: 0.02753514, w: 0.973438} + m_LocalRotation: {x: 0.21022116, y: 0.040499255, z: 0.021456257, w: 0.976579} m_LocalPosition: {x: 1.4994356e-16, y: 0.11235084, z: -4.6566134e-10} m_LocalScale: {x: 1, y: 0.9999999, z: 1} m_ConstrainProportionsScale: 0 @@ -36651,7 +36642,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7320000332261335212} serializedVersion: 2 - m_LocalRotation: {x: -0.028144132, y: 0.042480104, z: -0.39679816, w: -0.91649044} + m_LocalRotation: {x: -0.024044095, y: 0.04344311, z: -0.31478083, w: -0.9478648} m_LocalPosition: {x: 0.000000013038514, y: 0.028132085, z: 0.000000085681705} m_LocalScale: {x: 0.9999999, y: 0.9999999, z: 0.99999994} m_ConstrainProportionsScale: 0 @@ -36796,7 +36787,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7590390181679652200} serializedVersion: 2 - m_LocalRotation: {x: -0.40141952, y: -0.04382637, z: -0.013077648, w: 0.91475165} + m_LocalRotation: {x: -0.69479305, y: -0.039646238, z: -0.03466919, w: 0.7172788} m_LocalPosition: {x: 0.000000016298147, y: 0.030793423, z: -0.0000000041909525} m_LocalScale: {x: 1, y: 1, z: 1.0000001} m_ConstrainProportionsScale: 0 @@ -36819,7 +36810,6 @@ GameObject: - component: {fileID: 272102230051645971} - component: {fileID: 7582698285514830839} - component: {fileID: 7582698285514830836} - - component: {fileID: 7582698285514830837} - component: {fileID: 7582698285514830838} m_Layer: 6 m_Name: PlayerMainCamera @@ -37059,7 +37049,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4786406323819378407} serializedVersion: 2 - m_LocalRotation: {x: -0.034128305, y: -0.07356628, z: -0.13717556, w: -0.9872215} + m_LocalRotation: {x: 0.22154503, y: -0.10419388, z: -0.19675449, w: -0.9493941} m_LocalPosition: {x: 0.030291557, y: 0.1017932, z: -0.0031809409} m_LocalScale: {x: 1, y: 1.0000001, z: 1} m_ConstrainProportionsScale: 0 @@ -37075,7 +37065,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4286222201851993595} serializedVersion: 2 - m_LocalRotation: {x: -0.6715656, y: -0.039493952, z: -0.026493162, w: 0.7394174} + m_LocalRotation: {x: -0.36881262, y: -0.043389753, z: -0.007191509, w: 0.9284626} m_LocalPosition: {x: 4.6566134e-10, y: 0.029992372, z: 0.0000000062864287} m_LocalScale: {x: 1, y: 0.99999994, z: 0.99999994} m_ConstrainProportionsScale: 0 @@ -52400,7 +52390,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5420537705908574891} serializedVersion: 2 - m_LocalRotation: {x: -0.08064347, y: -0.02876145, z: -0.05915066, w: 0.99457055} + m_LocalRotation: {x: -0.3225083, y: -0.08791127, z: -0.35531402, w: 0.872933} m_LocalPosition: {x: 0.026060369, y: 0.08771448, z: -0.005112694} m_LocalScale: {x: 0.99999994, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -52416,7 +52406,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 3364051513946841773} serializedVersion: 2 - m_LocalRotation: {x: -0.48795038, y: -0.12155875, z: 0.086831324, w: 0.8599932} + m_LocalRotation: {x: -0.49181935, y: -0.033022758, z: 0.0859434, w: 0.86581576} m_LocalPosition: {x: 0.000000006519249, y: 0.56238115, z: -0.000000007450578} m_LocalScale: {x: 0.99999994, y: 1, z: 0.9999999} m_ConstrainProportionsScale: 0 @@ -62065,7 +62055,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1616460473305846754} serializedVersion: 2 - m_LocalRotation: {x: 0.7672394, y: -0.035320006, z: -0.032452878, w: -0.63956475} + m_LocalRotation: {x: 0.6593208, y: -0.03829752, z: -0.025265075, w: -0.75046057} m_LocalPosition: {x: -0.0000000055879346, y: 0.045172896, z: 0.000000054948046} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -62914,7 +62904,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 3599481549483116497} serializedVersion: 2 - m_LocalRotation: {x: 0.98519856, y: 0.13668162, z: -0.08093565, w: -0.06443123} + m_LocalRotation: {x: 0.98787683, y: 0.10693409, z: -0.055226598, w: 0.09805366} m_LocalPosition: {x: 0.106367506, y: 0.04975005, z: 0.009382462} m_LocalScale: {x: 1.0000014, y: 1.0000006, z: 1.0000005} m_ConstrainProportionsScale: 0 @@ -62946,7 +62936,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2452734139708599215} serializedVersion: 2 - m_LocalRotation: {x: 0.47969085, y: 0.014210463, z: -0.08938771, w: -0.87275696} + m_LocalRotation: {x: 0.32250518, y: -0.0879114, z: -0.35531414, w: -0.87293404} m_LocalPosition: {x: -0.026060365, y: 0.08771448, z: -0.005112918} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -68214,7 +68204,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4768078771177479510} serializedVersion: 2 - m_LocalRotation: {x: -0.37453273, y: -0.13734622, z: 0.32849565, w: 0.8561261} + m_LocalRotation: {x: -0.5722613, y: -0.28645313, z: 0.12506974, w: 0.7581683} m_LocalPosition: {x: -0.029908959, y: 0.030986566, z: -0.008053159} m_LocalScale: {x: 1, y: 0.9999999, z: 1} m_ConstrainProportionsScale: 0 @@ -68256,6 +68246,7 @@ MonoBehaviour: rotationalInterpolation: 0.5 rootRotation: 0.5 updateMode: 10 + disableMode: 0 animationPoseRatio: 0 reductionSetting: simpleDistance: 0 @@ -71059,6 +71050,7 @@ MonoBehaviour: rotationalInterpolation: 0.5 rootRotation: 0.5 updateMode: 10 + disableMode: 0 animationPoseRatio: 0 reductionSetting: simpleDistance: 0 @@ -72164,7 +72156,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7500986901620979362} serializedVersion: 2 - m_LocalRotation: {x: -0.66829646, y: -0.042611837, z: -0.034562618, w: 0.7418689} + m_LocalRotation: {x: -0.39338672, y: -0.0457422, z: -0.014686555, w: 0.91811705} m_LocalPosition: {x: 6.9849204e-10, y: 0.022451894, z: -0.000000012456441} m_LocalScale: {x: 0.99999994, y: 0.9999999, z: 0.9999998} m_ConstrainProportionsScale: 0 @@ -72179,7 +72171,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8544044503893440247} serializedVersion: 2 - m_LocalRotation: {x: -0.552781, y: 0.19417475, z: -0.18182649, w: 0.78972685} + m_LocalRotation: {x: -0.62790257, y: 0.1480469, z: 0.079001956, w: 0.75998634} m_LocalPosition: {x: 0.0000000055879346, y: 0.09417637, z: -0.00000009499492} m_LocalScale: {x: 1, y: 0.9999999, z: 0.9999998} m_ConstrainProportionsScale: 0 @@ -72303,7 +72295,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2798523362088558492} serializedVersion: 2 - m_LocalRotation: {x: -0.20619237, y: -0.06660995, z: -0.08301471, w: 0.9727058} + m_LocalRotation: {x: -0.22154555, y: -0.10419294, z: -0.19675411, w: 0.94939417} m_LocalPosition: {x: -0.030291557, y: 0.10179321, z: -0.0031807057} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -72319,7 +72311,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8025460715156485174} serializedVersion: 2 - m_LocalRotation: {x: 0.032096792, y: 0.041164797, z: -0.47719663, w: 0.8772449} + m_LocalRotation: {x: 0.024043797, y: 0.043444656, z: -0.31478152, w: 0.94786453} m_LocalPosition: {x: -0.00000007357449, y: 0.028132211, z: 0.00000037439176} m_LocalScale: {x: 1, y: 1, z: 1.0000001} m_ConstrainProportionsScale: 0 @@ -72424,7 +72416,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 562201231930335811} serializedVersion: 2 - m_LocalRotation: {x: 0.64495397, y: -0.040844694, z: -0.030839264, w: -0.76250577} + m_LocalRotation: {x: 0.6947901, y: -0.039646223, z: -0.034669437, w: -0.7172816} m_LocalPosition: {x: 0.000000007916241, y: 0.03079354, z: -0.00000005750919} m_LocalScale: {x: 0.99999994, y: 0.9999999, z: 1} m_ConstrainProportionsScale: 0 @@ -72645,7 +72637,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 703528799837206004} serializedVersion: 2 - m_LocalRotation: {x: 0.08464704, y: 0.08801357, z: -0.039125096, w: 0.9917449} + m_LocalRotation: {x: -0.03774314, y: 0.026349928, z: 0.02793007, w: 0.9985495} m_LocalPosition: {x: -0.000000024214387, y: 0.28226882, z: 0.000000009313229} m_LocalScale: {x: 0.99999994, y: 1, z: 1.0000001} m_ConstrainProportionsScale: 0 @@ -72746,7 +72738,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1426164585323811173} serializedVersion: 2 - m_LocalRotation: {x: -0.5940968, y: -0.4045304, z: -0.42888686, w: 0.5472296} + m_LocalRotation: {x: -0.45378113, y: -0.539892, z: -0.4781546, w: 0.523419} m_LocalPosition: {x: 0.027396753, y: 0.16675851, z: 0.0010840442} m_LocalScale: {x: 1.0000001, y: 1.0000001, z: 1} m_ConstrainProportionsScale: 0 @@ -73844,7 +73836,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 3464581255126517465} serializedVersion: 2 - m_LocalRotation: {x: 0.10737033, y: -0.09090082, z: -0.096410125, w: 0.9853496} + m_LocalRotation: {x: 0.038700487, y: -0.22615436, z: 0.1925765, w: 0.9540811} m_LocalPosition: {x: -0.000000009313225, y: 0.28226873, z: -0.00000008381906} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -74277,8 +74269,8 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5327291320013022961} serializedVersion: 2 - m_LocalRotation: {x: -0.09633743, y: -0.3720598, z: -0.045637522, w: 0.9220671} - m_LocalPosition: {x: -0.023183458, y: 1.0622324, z: 0.0204212} + m_LocalRotation: {x: -0.065068565, y: 0.38750583, z: 0.034455866, w: 0.9189223} + m_LocalPosition: {x: -0.018571565, y: 1.0554674, z: -0.036221996} m_LocalScale: {x: 1, y: 0.99999994, z: 0.99999994} m_ConstrainProportionsScale: 0 m_Children: @@ -74312,7 +74304,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4282499749702318053} serializedVersion: 2 - m_LocalRotation: {x: -0.54698515, y: -0.04193298, z: -0.01934561, w: 0.8358676} + m_LocalRotation: {x: -0.66641414, y: -0.039650097, z: -0.027121127, w: 0.7440327} m_LocalPosition: {x: 0.0000000037252907, y: 0.040037047, z: -0.000000048195954} m_LocalScale: {x: 1, y: 0.9999999, z: 0.99999994} m_ConstrainProportionsScale: 0 @@ -74442,6 +74434,7 @@ MonoBehaviour: rotationalInterpolation: 0.5 rootRotation: 0.5 updateMode: 10 + disableMode: 0 animationPoseRatio: 0 reductionSetting: simpleDistance: 0 @@ -75540,37 +75533,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 196bb08d6c2d3c9499c04e1281fd4ad3, type: 3} m_Name: m_EditorClassIdentifier: - m_Material: {fileID: 2100000, guid: 96c5704d0681e35408630c488fc0c234, type: 2} - m_Color: {r: 0, g: 0, b: 0, a: 0} - 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 - _source: {fileID: 7582698285514830837} - _foregroundOpacity: 0 - _vibrancy: 1 - _brightness: 0 - _flatten: 0 - paraformConfig: - isCornersLinked: 0 - cornerRadii: {x: 64, y: 64, z: 64, w: 64} - cornerCurvature: 1.5 - filletCurvature: 2.5 - bevelWidth: 64 - ringThickness: 0 - elevation: 100 --- !u!1 &5504136654401173528 GameObject: m_ObjectHideFlags: 0 @@ -75697,6 +75659,7 @@ MonoBehaviour: rotationalInterpolation: 0.5 rootRotation: 0.5 updateMode: 10 + disableMode: 0 animationPoseRatio: 0 reductionSetting: simpleDistance: 0 @@ -76888,7 +76851,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1716922966899554294} serializedVersion: 2 - m_LocalRotation: {x: 0.72296727, y: -0.038093448, z: -0.030951366, w: -0.6891366} + m_LocalRotation: {x: 0.6664188, y: -0.039650045, z: -0.027121987, w: -0.74402845} m_LocalPosition: {x: -0.00000001164153, y: 0.040036976, z: -0.00000004842879} m_LocalScale: {x: 1.0000001, y: 0.99999994, z: 1} m_ConstrainProportionsScale: 0 @@ -77602,7 +77565,7 @@ MonoBehaviour: baseTransform: {fileID: 5796568687461294080} Hips: {fileID: 5233439127776133877} ScaleReferenceMode: 3 - finalScaleReference: 1.0713066 + finalScaleReference: 1.0679241 finalScaleReferenceSqrt: 0.1 customScaleReferenceValue: 0.5 DelayedInitialization: 0 @@ -77986,7 +77949,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8900166733022790008} serializedVersion: 2 - m_LocalRotation: {x: 0.4096792, y: -0.04569742, z: -0.015826391, w: -0.91094685} + m_LocalRotation: {x: 0.39338654, y: -0.045742456, z: -0.014686914, w: -0.9181171} m_LocalPosition: {x: -0.000000012805685, y: 0.022451827, z: 0.000000059139005} m_LocalScale: {x: 1, y: 0.99999994, z: 0.9999999} m_ConstrainProportionsScale: 0 @@ -79028,7 +78991,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 908110196348297303} serializedVersion: 2 - m_LocalRotation: {x: 0.36607003, y: -0.04198876, z: -0.008148611, w: -0.9296038} + m_LocalRotation: {x: 0.29629716, y: -0.042002883, z: -0.004148572, w: -0.9541627} m_LocalPosition: {x: 0.0000000018626449, y: 0.033887587, z: 0.00000009988437} m_LocalScale: {x: 1.0000001, y: 1.0000001, z: 1.0000001} m_ConstrainProportionsScale: 0 @@ -79115,7 +79078,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 791070421893191297} serializedVersion: 2 - m_LocalRotation: {x: 0.19812356, y: -0.05285623, z: 0.25428075, w: -0.9451426} + m_LocalRotation: {x: 0.5722598, y: -0.28645197, z: 0.12507208, w: -0.7581696} m_LocalPosition: {x: 0.029908966, y: 0.030986622, z: -0.008053283} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -79229,7 +79192,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6700497712217468539} serializedVersion: 2 - m_LocalRotation: {x: -0.47529972, y: -0.21868727, z: 0.21620032, w: 0.8243321} + m_LocalRotation: {x: -0.45108768, y: -0.092285596, z: 0.09723296, w: 0.8823543} m_LocalPosition: {x: 0.000000009313225, y: 0.094176374, z: -0.00000008940698} m_LocalScale: {x: 0.99999994, y: 0.9999999, z: 0.9999998} m_ConstrainProportionsScale: 0 @@ -79292,7 +79255,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5339936526328796785} serializedVersion: 2 - m_LocalRotation: {x: -0.25443393, y: -0.059362948, z: -0.091844216, w: 0.9608872} + m_LocalRotation: {x: -0.3938045, y: -0.109770894, z: -0.2489942, w: 0.87799215} m_LocalPosition: {x: -0.007285389, y: 0.0999468, z: 0.0017986412} m_LocalScale: {x: 1, y: 1, z: 1.0000001} m_ConstrainProportionsScale: 0 @@ -80603,7 +80566,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 3155971357199345552} serializedVersion: 2 - m_LocalRotation: {x: -0.014963865, y: 0.049134642, z: -0.0075933933, w: 0.9986512} + m_LocalRotation: {x: 0.04611434, y: -0.025520474, z: 0.0017032474, w: 0.9986087} m_LocalPosition: {x: -3.1415976e-16, y: 0.18085836, z: 0.0000000023283067} m_LocalScale: {x: 1, y: 1, z: 0.99999994} m_ConstrainProportionsScale: 0 @@ -81179,7 +81142,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2190632898029845381} serializedVersion: 2 - m_LocalRotation: {x: 0.60376763, y: -0.035627484, z: -0.020550624, w: -0.7960986} + m_LocalRotation: {x: 0.26755542, y: -0.03761947, z: -0.0020040125, w: -0.96280575} m_LocalPosition: {x: -0.000000004889443, y: 0.029216407, z: -0.00000013597314} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -81800,7 +81763,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6319111502667635245} serializedVersion: 2 - m_LocalRotation: {x: 0.19116613, y: -0.06069643, z: -0.09464429, w: -0.97509694} + m_LocalRotation: {x: 0.3938026, y: -0.10977116, z: -0.24899532, w: -0.87799263} m_LocalPosition: {x: 0.007285394, y: 0.09994679, z: 0.0017984118} m_LocalScale: {x: 1, y: 1.0000001, z: 1.0000001} m_ConstrainProportionsScale: 0 @@ -81893,6 +81856,7 @@ MonoBehaviour: rotationalInterpolation: 0.5 rootRotation: 0.5 updateMode: 10 + disableMode: 0 animationPoseRatio: 0 reductionSetting: simpleDistance: 0 @@ -82607,33 +82571,6 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 CustomBlends: {fileID: 0} ---- !u!114 &7582698285514830837 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2317150787485973026} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4ee01e66702087b4798e633ca34c7956, type: 3} - m_Name: - m_EditorClassIdentifier: LeTai.Asset.TranslucentImage::LeTai.Asset.TranslucentImage.TranslucentImageSource - blurConfig: {fileID: 11400000, guid: 45ac4b3d5f9dfc746a89d180929cc72e, type: 2} - downsample: 0 - blurRegion: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - maxUpdateRate: Infinity - cullPadding: 0 - preview: 0 - backgroundFill: - mode: 0 - color: {r: 1, g: 1, b: 1, a: 1} - skipCulling: 0 --- !u!124 &7582698285514830838 Behaviour: m_ObjectHideFlags: 0 @@ -82911,7 +82848,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 943616259276507241} serializedVersion: 2 - m_LocalRotation: {x: -0.010008092, y: 0.05891478, z: -0.3305069, w: 0.9419098} + m_LocalRotation: {x: -0.010137017, y: 0.05931326, z: -0.31946772, w: 0.9456848} m_LocalPosition: {x: 0.000000020489098, y: 0.043039605, z: -0.00000012479725} m_LocalScale: {x: 1, y: 0.99999994, z: 1} m_ConstrainProportionsScale: 0 @@ -83007,7 +82944,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6632945049885216665} serializedVersion: 2 - m_LocalRotation: {x: 0.0933523, y: 0.17259008, z: -0.13643076, w: 0.9710225} + m_LocalRotation: {x: -0.026762474, y: -0.014382632, z: 0.041180808, w: 0.9986897} m_LocalPosition: {x: -7.114129e-16, y: 0.19675104, z: -0.0000000051222746} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -83460,7 +83397,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7959565191287590061} serializedVersion: 2 - m_LocalRotation: {x: 0.48903263, y: -0.04257834, z: -0.014606833, w: -0.8711032} + m_LocalRotation: {x: 0.36881235, y: -0.043389738, z: -0.007191657, w: -0.9284628} m_LocalPosition: {x: -0.0000000037252894, y: 0.029992312, z: -0.0000001136214} m_LocalScale: {x: 0.99999994, y: 0.9999999, z: 0.9999998} m_ConstrainProportionsScale: 0 @@ -83735,7 +83672,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 938657419852716132} serializedVersion: 2 - m_LocalRotation: {x: 0.15281534, y: 0.13195105, z: 0.0277971, w: 0.9790116} + m_LocalRotation: {x: 0.27309012, y: 0.05599881, z: -0.011729157, w: 0.96028554} m_LocalPosition: {x: 0.0000000037252852, y: 0.5179994, z: 9.313222e-10} m_LocalScale: {x: 1, y: 0.99999994, z: 0.99999994} m_ConstrainProportionsScale: 0 @@ -85241,7 +85178,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2632036771373730513} serializedVersion: 2 - m_LocalRotation: {x: -0.57798404, y: -0.03600018, z: -0.019056499, w: 0.81503093} + m_LocalRotation: {x: -0.26755643, y: -0.037619382, z: -0.002003998, w: 0.96280545} m_LocalPosition: {x: 0.000000005820767, y: 0.029216416, z: -0.00000013737011} m_LocalScale: {x: 0.99999994, y: 0.99999994, z: 1} m_ConstrainProportionsScale: 0 @@ -85320,7 +85257,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1509322905366631092} serializedVersion: 2 - m_LocalRotation: {x: -0.013689712, y: 0.9531672, z: -0.30213082, w: -0.001391232} + m_LocalRotation: {x: -0.013719648, y: 0.94548464, z: -0.32537603, w: -0.0010556281} m_LocalPosition: {x: -0.0000000067520802, y: 0.13506474, z: 0.000000014901159} m_LocalScale: {x: 1, y: 1.0000001, z: 1} m_ConstrainProportionsScale: 0 @@ -85540,6 +85477,7 @@ MonoBehaviour: rotationalInterpolation: 0.5 rootRotation: 0.5 updateMode: 10 + disableMode: 0 animationPoseRatio: 0 reductionSetting: simpleDistance: 0 diff --git a/Assets/Scripts/MainGame/AttackArea/Submodules/ReactionSubmodule.cs b/Assets/Scripts/MainGame/AttackArea/Submodules/ReactionSubmodule.cs index 25a7c18fa..204e363c4 100644 --- a/Assets/Scripts/MainGame/AttackArea/Submodules/ReactionSubmodule.cs +++ b/Assets/Scripts/MainGame/AttackArea/Submodules/ReactionSubmodule.cs @@ -146,7 +146,7 @@ namespace Cielonos.MainGame if (hasPerfectDodge && owner.timeSm.enablingTimer <= 0.2f && characterDodgeSm.isPerfectDodging) { firstDodgeSource = characterDodgeSm.dodgeSources.Find(source => source.isDuringPerfectDodge); - firstDodgeSource.PerfectDodge(); + firstDodgeSource.PerfectDodge(owner); perfectDodgeAction?.Invoke(dodger); // 触发完美闪避成功事件 @@ -155,7 +155,7 @@ namespace Cielonos.MainGame else { firstDodgeSource = characterDodgeSm.dodgeSources[0]; - firstDodgeSource.NormalDodge(); + firstDodgeSource.NormalDodge(owner); normalDodgeAction?.Invoke(dodger); // 触发普通闪避成功事件 diff --git a/Assets/Scripts/MainGame/Base/BuffSystem/BuffSubmodules.cs b/Assets/Scripts/MainGame/Base/BuffSystem/BuffSubmodules.cs index 0fcc59b4e..8829dd486 100644 --- a/Assets/Scripts/MainGame/Base/BuffSystem/BuffSubmodules.cs +++ b/Assets/Scripts/MainGame/Base/BuffSystem/BuffSubmodules.cs @@ -176,12 +176,18 @@ namespace Cielonos.MainGame.Buffs timeLeft = duration; } - public void StackDuration(TimeSubmodule other) + public void AddDuration(TimeSubmodule other) { duration += other.duration; timeLeft += other.duration; } + public void AddDuration(float additionalDuration) + { + duration += additionalDuration; + timeLeft += additionalDuration; + } + public class IntervalAction { diff --git a/Assets/Scripts/MainGame/Characters/Base/Subcontrollers/Reaction/BlockSubmodule.cs b/Assets/Scripts/MainGame/Characters/Base/Subcontrollers/Reaction/BlockSubmodule.cs index 5d54d29c8..a46d949fe 100644 --- a/Assets/Scripts/MainGame/Characters/Base/Subcontrollers/Reaction/BlockSubmodule.cs +++ b/Assets/Scripts/MainGame/Characters/Base/Subcontrollers/Reaction/BlockSubmodule.cs @@ -18,13 +18,21 @@ namespace Cielonos.MainGame.Characters [ShowInInspector] public bool isPerfectBlocking => blockSources.Any(source => source.hasPerfectBlock && source.isDuringPerfectBlock); - public float afterPerfectBlockTimer; - public float afterNormalBlockTimer; + public Timer afterPerfectBlockTimer; + public CharacterBase perfectBlockedTarget; + + public Timer afterNormalBlockTimer; + public CharacterBase normalBlockedTarget; public BlockSubmodule(ReactionSubcontroller owner) : base(owner) { blockSources = new List(); canBlock = true; + + this.afterPerfectBlockTimer = new Timer(1); + this.afterPerfectBlockTimer.onComplete.Add(new PrioritizedAction(() => perfectBlockedTarget = null)); + this.afterNormalBlockTimer = new Timer(1); + this.afterPerfectBlockTimer.onComplete.Add(new PrioritizedAction(() => normalBlockedTarget = null)); } public void ApplyBlock(BlockSource source, bool refreshPerfect = false) @@ -99,8 +107,8 @@ namespace Cielonos.MainGame.Characters blockSources.RemoveAll(source => source.blockTime <= 0); } - afterPerfectBlockTimer -= owner.owner.selfTimeSm.DeltaTime; - afterNormalBlockTimer -= owner.owner.selfTimeSm.DeltaTime; + afterPerfectBlockTimer.Update(owner.owner.selfTimeSm.DeltaTime); + afterNormalBlockTimer.Update(owner.owner.selfTimeSm.DeltaTime); } } @@ -121,11 +129,13 @@ namespace Cielonos.MainGame.Characters public GameObject perfectBlockEffect; public uint perfectBlockSound; public Action onPerfectBlock; + public Breakthrough.Type normalBlockType; public GameObject normalBlockEffect; public uint normalBlockSound; public Action onNormalBlock; + public float triggerTime; @@ -173,11 +183,11 @@ namespace Cielonos.MainGame.Characters } VFXObject.Spawn(perfectBlockEffect, sourceCharacter, blockEffectPosition, Quaternion.identity); - //pObj.GetComponent().Simulate(0.1f, true, true); - //pObj.GetComponent().Play();//TODO: 增加起点时间参数 - - sourceCharacter.reactionSc.blockSm.afterPerfectBlockTimer = blockBufferTime + 0.25f; onPerfectBlock?.Invoke(attackArea); + + BlockSubmodule blockSm = sourceCharacter.reactionSc.blockSm; + blockSm.perfectBlockedTarget = attackArea.creator; + blockSm.afterPerfectBlockTimer.Reset(blockBufferTime + 0.25f); } public void NormalBlock(AttackAreaBase attackArea, Vector3 blockEffectPosition) @@ -192,8 +202,11 @@ namespace Cielonos.MainGame.Characters } VFXObject.Spawn(normalBlockEffect, sourceCharacter, blockEffectPosition, Quaternion.identity); - sourceCharacter.reactionSc.blockSm.afterNormalBlockTimer = blockBufferTime + 0.25f; onNormalBlock?.Invoke(attackArea); + + BlockSubmodule blockSm = sourceCharacter.reactionSc.blockSm; + blockSm.normalBlockedTarget = attackArea.creator; + blockSm.afterPerfectBlockTimer.Reset(blockBufferTime + 0.25f); } } } \ No newline at end of file diff --git a/Assets/Scripts/MainGame/Characters/Base/Subcontrollers/Reaction/DodgeSubmodule.cs b/Assets/Scripts/MainGame/Characters/Base/Subcontrollers/Reaction/DodgeSubmodule.cs index 89fc9e7da..50d34f666 100644 --- a/Assets/Scripts/MainGame/Characters/Base/Subcontrollers/Reaction/DodgeSubmodule.cs +++ b/Assets/Scripts/MainGame/Characters/Base/Subcontrollers/Reaction/DodgeSubmodule.cs @@ -12,18 +12,25 @@ namespace Cielonos.MainGame.Characters { public List dodgeSources; public bool canDodge; + [ShowInInspector] public bool isDodging => dodgeSources.Count > 0; + public Timer afterNormalDodgeTimer; + public CharacterBase normalDodgedTarget; + [ShowInInspector] public bool isPerfectDodging => dodgeSources.Any(source => source.hasPerfectDodge && source.isDuringPerfectDodge); - - public float afterPerfectDodgeTimer; - public float afterNormalDodgeTimer; + public Timer afterPerfectDodgeTimer; + public CharacterBase perfectDodgedTarget; public DodgeSubmodule(ReactionSubcontroller owner) : base(owner) { dodgeSources = new List(); canDodge = true; + this.afterNormalDodgeTimer = new Timer(1f); + this.afterNormalDodgeTimer.onComplete.Add(new PrioritizedAction(() => normalDodgedTarget = null)); + this.afterPerfectDodgeTimer = new Timer(1f); + this.afterPerfectDodgeTimer.onComplete.Add(new PrioritizedAction(() => perfectDodgedTarget = null)); } public void ApplyDodge(DodgeSource source, bool refreshPerfect = false) @@ -92,8 +99,8 @@ namespace Cielonos.MainGame.Characters dodgeSources.RemoveAll(source => source.dodgeTime <= 0); } - afterPerfectDodgeTimer -= owner.owner.selfTimeSm.DeltaTime; - afterNormalDodgeTimer -= owner.owner.selfTimeSm.DeltaTime; + afterPerfectDodgeTimer.Update(owner.owner.selfTimeSm.DeltaTime); + afterNormalDodgeTimer.Update(owner.owner.selfTimeSm.DeltaTime); } } @@ -109,8 +116,10 @@ namespace Cielonos.MainGame.Characters public bool isDuringPerfectDodge; public float perfectTime; public float dodgeTime; + public string perfectEffectName; public Action onPerfectDodge; + public string normalEffectName; public Action onNormalDodge; @@ -144,6 +153,7 @@ namespace Cielonos.MainGame.Characters this.perfectTime = perfectTime; this.hasPerfectDodge = true; this.isDuringPerfectDodge = true; + this._isTriggered = false; } @@ -164,7 +174,7 @@ namespace Cielonos.MainGame.Characters return defaultDodge; } - public void PerfectDodge() + public void PerfectDodge(AttackAreaBase attackArea) { if(_isTriggered) return; _isTriggered = true; @@ -176,10 +186,13 @@ namespace Cielonos.MainGame.Characters sourceCharacter.feedbackSc.PlayFeedback("PerfectDodge"); } - sourceCharacter.reactionSc.dodgeSm.afterPerfectDodgeTimer = dodgeBufferTime + 0.25f; + DodgeSubmodule dodgeSm = sourceCharacter.reactionSc.dodgeSm; + dodgeSm.perfectDodgedTarget = attackArea?.creator; + dodgeSm.afterPerfectDodgeTimer.Reset(dodgeBufferTime + 0.5f); + Debug.Log($"Perfect Dodge triggered by {sourceCharacter.name} against {attackArea?.creator?.name}"); } - public void NormalDodge() + public void NormalDodge(AttackAreaBase attackArea) { if(_isTriggered) return; _isTriggered = true; @@ -191,7 +204,9 @@ namespace Cielonos.MainGame.Characters sourceCharacter.feedbackSc.PlayFeedback("NormalDodge"); } - sourceCharacter.reactionSc.dodgeSm.afterNormalDodgeTimer = dodgeBufferTime + 0.25f; + DodgeSubmodule dodgeSm = sourceCharacter.reactionSc.dodgeSm; + dodgeSm.normalDodgedTarget = attackArea?.creator; + dodgeSm.afterNormalDodgeTimer.Reset(dodgeBufferTime + 0.5f); } } } \ No newline at end of file diff --git a/Assets/Scripts/MainGame/Characters/Base/Subcontrollers/Render/RenderSubcontrollerBase.cs b/Assets/Scripts/MainGame/Characters/Base/Subcontrollers/Render/RenderSubcontrollerBase.cs index 34751faa8..4ca5fb18e 100644 --- a/Assets/Scripts/MainGame/Characters/Base/Subcontrollers/Render/RenderSubcontrollerBase.cs +++ b/Assets/Scripts/MainGame/Characters/Base/Subcontrollers/Render/RenderSubcontrollerBase.cs @@ -166,6 +166,8 @@ namespace Cielonos.MainGame.Characters public void SpawnShatters(Breakthrough.Type type, Vector3 direction) { + if(particleEffects["Shatters"] == null) return; + Color shatterColor = MainGameManager.BaseCollection.outlineColorCollection[type] * Mathf.Pow(2, 4); var main = particleEffects["Shatters"].main; main.startColor = shatterColor; diff --git a/Assets/Scripts/MainGame/Characters/Base/Submodules/SelfTimeSubmodule.cs b/Assets/Scripts/MainGame/Characters/Base/Submodules/SelfTimeSubmodule.cs index 627161520..412ff2648 100644 --- a/Assets/Scripts/MainGame/Characters/Base/Submodules/SelfTimeSubmodule.cs +++ b/Assets/Scripts/MainGame/Characters/Base/Submodules/SelfTimeSubmodule.cs @@ -280,6 +280,7 @@ namespace Cielonos.MainGame.Characters /// public override void Reset(float newDuration = -1f) { + isCompleted = false; currentTime = 0f; duration = newDuration >= 0f ? newDuration : originalDuration; } diff --git a/Assets/Scripts/MainGame/Characters/Player/Inventory/PlayerInventorySubcontroller.cs b/Assets/Scripts/MainGame/Characters/Player/Inventory/PlayerInventorySubcontroller.cs index 67779f68b..6227acbc1 100644 --- a/Assets/Scripts/MainGame/Characters/Player/Inventory/PlayerInventorySubcontroller.cs +++ b/Assets/Scripts/MainGame/Characters/Player/Inventory/PlayerInventorySubcontroller.cs @@ -27,9 +27,8 @@ namespace Cielonos.MainGame.Characters backpackSm ??= new BackpackSubmodule(this); equipmentSm ??= new EquipmentSubmodule(this); - - backpackSm.ObtainItem(); //backpackSm.ObtainItem(); + backpackSm.ObtainItem(); backpackSm.ObtainItem(); backpackSm.ObtainItem(); backpackSm.ObtainItem(); @@ -37,6 +36,8 @@ namespace Cielonos.MainGame.Characters backpackSm.ObtainItem(); backpackSm.ObtainItem(); backpackSm.ObtainItem(); + backpackSm.ObtainItem(); + backpackSm.ObtainItem(); foreach (MainWeaponBase mainWeapon in backpackSm.mainWeapons) { diff --git a/Assets/Scripts/MainGame/GameRun/Map/MapManager.cs b/Assets/Scripts/MainGame/GameRun/Map/MapManager.cs index 0904683c1..aea5f3fec 100644 --- a/Assets/Scripts/MainGame/GameRun/Map/MapManager.cs +++ b/Assets/Scripts/MainGame/GameRun/Map/MapManager.cs @@ -107,7 +107,7 @@ namespace Cielonos.MainGame // 7. 淡入画面 yield return new WaitForSeconds(0.5f); - ScreenFader.Instance.FadeToClear().Play(); + ScreenFader.Instance?.FadeToClear().Play(); // 8. 恢复玩家输入 playerInput.inputActions.Player.Enable(); diff --git a/Assets/Scripts/MainGame/Items/Data/FunctionData.cs b/Assets/Scripts/MainGame/Items/Data/FunctionData.cs index 9869a20ba..8e9bc0386 100644 --- a/Assets/Scripts/MainGame/Items/Data/FunctionData.cs +++ b/Assets/Scripts/MainGame/Items/Data/FunctionData.cs @@ -1,62 +1,88 @@ using System; using System.Collections.Generic; +using System.Collections.Specialized; using Cielonos.MainGame.Characters; using Sirenix.OdinInspector; using SLSUtilities.General; +using SoftCircuits.Collections; using UnityEngine; +using UnityEngine.Serialization; namespace Cielonos.MainGame.Inventory { [CreateAssetMenu(fileName = "FunctionData", menuName = "Cielonos/Items/FunctionData")] public partial class FunctionData : SerializedScriptableObject { - [DictionaryDrawerSettings(KeyLabel = "Function Unit", DisplayMode = DictionaryDisplayOptions.ExpandedFoldout)] + [ListDrawerSettings(ShowIndexLabels = false, ListElementLabelName = "unitName", CustomAddFunction = "AddFunctionUnit")] [Searchable] - public Dictionary functionUnits = new Dictionary(); + public List functionUnitList = new List(); [OnInspectorGUI("UpdateUnits")] public void UpdateUnits() { - foreach (var unit in functionUnits.Values) + foreach (var unit in functionUnitList) { unit.parentData = this; } } + + private FunctionUnit AddFunctionUnit() + { + FunctionUnit newUnit = new FunctionUnit + { + unitName = $"Function {functionUnitList.Count + 1}", + parentData = this + }; + return newUnit; + } } public partial class FunctionData { - public enum IntervalReductionType + public enum CooldownReductionType { None = 0, Cooldown = 1, AttackSpeed = 10 } - [Serializable] public class FunctionUnit { [ReadOnly] public FunctionData parentData; - + + [TitleGroup("Information")] + public string unitName; [TitleGroup("Information")] public bool shownInUI; [TitleGroup("Information")] + [HideIf("shownInUI")] + public bool isMain; + [TitleGroup("Information")] + [ShowIf("@shownInUI || isMain")] public Sprite icon; [TitleGroup("Information")] - public List operation; + public List operation = new List(); + [TitleGroup("Information")] + [ValueDropdown("Tags")] + public List tags = new List(); [TitleGroup("Costs")] public float energyCost; [TitleGroup("Costs")] public int ammoCost; - [TitleGroup("Interval")] - public float interval; - [TitleGroup("Interval")] - public float intervalLowerLimit; - [TitleGroup("Interval")] - public IntervalReductionType intervalReductionType; + [FormerlySerializedAs("interval")] [TitleGroup("Cooldown")] + public float cooldown; + [FormerlySerializedAs("intervalLowerLimit")] [TitleGroup("Cooldown")] + public float cooldownLowerLimit; + [FormerlySerializedAs("intervalReductionType")] [TitleGroup("Cooldown")] + public CooldownReductionType cooldownReductionType; + + public static List Tags = new() + { + "Disruption" + }; } } } \ No newline at end of file diff --git a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime.meta b/Assets/Scripts/MainGame/Items/Extenders/Polychrome.meta similarity index 77% rename from Assets/OtherPlugins/Le Tai's Asset/Common/Runtime.meta rename to Assets/Scripts/MainGame/Items/Extenders/Polychrome.meta index d12c69784..7d2c28df9 100644 --- a/Assets/OtherPlugins/Le Tai's Asset/Common/Runtime.meta +++ b/Assets/Scripts/MainGame/Items/Extenders/Polychrome.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 92b7ac701e5a3a5489ece9cf6f16a779 +guid: f9eeb85c7bb082046b999e5e098bca4e folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Scripts/MainGame/Items/Extenders/Polychrome/PhotonDissociator.cs b/Assets/Scripts/MainGame/Items/Extenders/Polychrome/PhotonDissociator.cs new file mode 100644 index 000000000..c86ea3527 --- /dev/null +++ b/Assets/Scripts/MainGame/Items/Extenders/Polychrome/PhotonDissociator.cs @@ -0,0 +1,13 @@ +using UnityEngine; + +namespace Cielonos.MainGame.Inventory.Collections +{ + /// + /// 光子解离器 / Photon Dissociator + /// Polychrome的扩展器,重攻击拆分为3段,每段伤害为原来的50%。 + /// + public class PhotonDissociator : ExtenderBase + { + + } +} \ No newline at end of file diff --git a/Assets/Scripts/MainGame/Items/Extenders/Polychrome/PhotonDissociator.cs.meta b/Assets/Scripts/MainGame/Items/Extenders/Polychrome/PhotonDissociator.cs.meta new file mode 100644 index 000000000..14b34da5c --- /dev/null +++ b/Assets/Scripts/MainGame/Items/Extenders/Polychrome/PhotonDissociator.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: dfcb853ac3666fc45a65e43107958eaf \ No newline at end of file diff --git a/Assets/Scripts/MainGame/Items/Extenders/Polychrome/PhotonPolarizer.cs b/Assets/Scripts/MainGame/Items/Extenders/Polychrome/PhotonPolarizer.cs new file mode 100644 index 000000000..bd0be4800 --- /dev/null +++ b/Assets/Scripts/MainGame/Items/Extenders/Polychrome/PhotonPolarizer.cs @@ -0,0 +1,13 @@ +using UnityEngine; + +namespace Cielonos.MainGame.Inventory.Collections +{ + /// + /// 光子偏振器 / Photon Polarizer + /// Polychrome的扩展器,可以使完美格挡弹开敌人,阻止敌人的连招 + /// + public class PhotonPolarizer : ExtenderBase + { + + } +} \ No newline at end of file diff --git a/Assets/Scripts/MainGame/Items/Extenders/Polychrome/PhotonPolarizer.cs.meta b/Assets/Scripts/MainGame/Items/Extenders/Polychrome/PhotonPolarizer.cs.meta new file mode 100644 index 000000000..5f293b686 --- /dev/null +++ b/Assets/Scripts/MainGame/Items/Extenders/Polychrome/PhotonPolarizer.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: b6b2bf502e7cd5c4ca858a7492f332a9 \ No newline at end of file diff --git a/Assets/Scripts/MainGame/Items/MainWeapons/FutureWand.cs b/Assets/Scripts/MainGame/Items/MainWeapons/FutureWand.cs index c9b30fa25..7c8bbed1d 100644 --- a/Assets/Scripts/MainGame/Items/MainWeapons/FutureWand.cs +++ b/Assets/Scripts/MainGame/Items/MainWeapons/FutureWand.cs @@ -20,7 +20,7 @@ namespace Cielonos.MainGame.Inventory.Collections RegisterFunctionsToAnimSc(); if(!player.inputSc.IsMoving) PlayTargetedAnimation("Equip"); viewObjects["Wand"].SetFadeAnim(0.5f); - PlayerCanvas.MainWeaponUIArea.displayer.SetFrameOutline(1); + //PlayerCanvas.MainWeaponUIArea.displayer.SetFrameOutline(1); } public override void OnPrimaryPress() diff --git a/Assets/Scripts/MainGame/Items/MainWeapons/Polychrome.cs b/Assets/Scripts/MainGame/Items/MainWeapons/Polychrome.cs index 3c8260ea8..4b163e591 100644 --- a/Assets/Scripts/MainGame/Items/MainWeapons/Polychrome.cs +++ b/Assets/Scripts/MainGame/Items/MainWeapons/Polychrome.cs @@ -4,6 +4,7 @@ using Cielonos.MainGame.Buffs.Character; using Cielonos.MainGame.Characters; using Cielonos.MainGame.Effects.Feedback; using Cielonos.MainGame.UI; +using SLSUtilities.Feedback; using SLSUtilities.General; using SLSUtilities.FunctionalAnimation; using SLSUtilities.WwiseAssistance; @@ -51,8 +52,6 @@ namespace Cielonos.MainGame.Inventory.Collections viewObjects["Katana"].SetFadeAnim(0.2f); viewObjects["Saya"].SetFadeAnim(0.2f); - PlayerCanvas.MainWeaponUIArea.displayer.SetFrameOutline(0.4f); - PlayTargetedAnimation("EquipBlock"); SetBlock(equipBlockData); player.selfTimeSm.AddLocalTimer(0.4f, () => @@ -105,7 +104,7 @@ namespace Cielonos.MainGame.Inventory.Collections return; } - if (player.inputSc.IsHoldingSpecialA && functionSm["LightAttack"].IsAvailable()) + /*if (player.inputSc.IsHoldingSpecialA && functionSm["LightAttack"].IsAvailable()) { CharacterBase target = CombatManager.EnemySm.GetBestEnemy(5); if (PlayTargetedAnimation("AttackRC", target, 1f, true)) @@ -114,7 +113,7 @@ namespace Cielonos.MainGame.Inventory.Collections functionSm["LightAttack"].Execute(); } return; - } + }*/ if (player.landMovementSc.isSprinting && functionSm["LightAttack"].IsAvailable() && fullBodyFuncAnimSm.CheckPlayability()) { @@ -153,30 +152,48 @@ namespace Cielonos.MainGame.Inventory.Collections } List availableEnemies = CombatManager.EnemySm.GetEnemiesInRadius(player.transform.position, 4); - - //完美格挡+反击 - if (player.reactionSc.blockSm.afterPerfectBlockTimer > 0) + BlockSubmodule blockSm = player.reactionSc.blockSm; + if (!blockSm.afterPerfectBlockTimer.isCompleted) { - Enemy target = CombatManager.EnemySm.GetBestEnemy(availableEnemies); - if (PlayTargetedAnimation("BlockParryAttack", target)) + Enemy blockedTarget = blockSm.perfectBlockedTarget as Enemy; + bool successPlayed; + if (blockedTarget != null && !availableEnemies.Contains(blockedTarget)) { - player.reactionSc.blockSm.afterPerfectBlockTimer = 0; - RemoveBlock(); + Debug.Log(blockedTarget.name); + float distance = Vector3.Distance(player.transform.position.Flatten(), blockedTarget.transform.position.Flatten()); + successPlayed = PlayTargetedAnimation(distance > 2f ? "DodgeParryAttack" : "BlockParryAttack", blockedTarget); + } + else + { + successPlayed = PlayTargetedAnimation("BlockParryAttack"); } - return; - } - - //完美闪避+反击 - if (player.reactionSc.dodgeSm.afterPerfectDodgeTimer > 0) - { - CharacterBase target = CombatManager.EnemySm.GetBestEnemy(12); - if (PlayTargetedAnimation("DodgeParryAttack", target)) + if(successPlayed) { - player.reactionSc.dodgeSm.afterPerfectDodgeTimer = 0; + blockSm.afterPerfectBlockTimer.Complete(); + RemoveBlock(); } + } - return; + DodgeSubmodule dodgeSm = player.reactionSc.dodgeSm; + if (!dodgeSm.afterPerfectDodgeTimer.isCompleted) + { + Enemy dodgedTarget = dodgeSm.perfectDodgedTarget as Enemy; + bool successPlayed; + if (dodgedTarget != null && !availableEnemies.Contains(dodgedTarget)) + { + float distance = Vector3.Distance(player.transform.position.Flatten(), dodgedTarget.transform.position.Flatten()); + successPlayed = PlayTargetedAnimation(distance > 2f ? "DodgeParryAttack" : "BlockParryAttack", dodgedTarget); + } + else + { + successPlayed = PlayTargetedAnimation("BlockParryAttack"); + } + + if(successPlayed) + { + dodgeSm.afterPerfectDodgeTimer.Complete(); + } } if (player.reactionSc.blockSm.HaveBlockSource(blockData.blockName)) @@ -202,46 +219,49 @@ namespace Cielonos.MainGame.Inventory.Collections return; } - if (player.inputSc.IsHoldingSpecialA && functionSm["HeavyAttack"].IsAvailable()) + if (player.inputSc.IsHoldingSpecialA) { - string suffix = techniqueScore switch + if (functionSm["DisruptionAttack"].IsAvailable()) { - < 1f => "A", - < 3f => "B", - >= 3f => "C", - _ => "A" - }; - - List disruptable = CombatManager.EnemySm.GetDisruptableEnemies(availableEnemies); - Enemy target = CombatManager.EnemySm.GetScoredEnemies(availableEnemies) - .ApplyScoreModifier(disruptable, 0f, 1f).BestEnemy(); - - if (PlayTargetedAnimation("DisruptionAttack" + suffix, target)) - { - if (disruptable.Count > 0) + string suffix = techniqueScore switch { - var timeScaleModifierClip = player.feedbackSc - .GetFeedbackData("DisruptionStartup") - .Clip("Time"); - float duration = fullBodyFuncAnimSm.collection["DisruptionAttack" + suffix] - .Interval(IntervalType.Startup).Duration * 2; - - timeScaleModifierClip.duration = duration; - player.feedbackSc.PlayFeedback("DisruptionStartup"); - } + < 1f => "A", + < 3f => "B", + >= 3f => "C", + _ => "A" + }; - if (suffix == "B") + List disruptable = CombatManager.EnemySm.GetDisruptableEnemies(availableEnemies); + Enemy target = CombatManager.EnemySm.GetScoredEnemies(availableEnemies) + .ApplyScoreModifier(disruptable, 0f, 1f).BestEnemy(); + + if (PlayTargetedAnimation("DisruptionAttack" + suffix, target)) { - ModifyTechniqueScore(-1, false); + if (disruptable.Count > 0) + { + FeedbackClip timeScaleModifierClip = player.feedbackSc.GetFeedbackData("DisruptionStartup") + .Clip("Time"); + float duration = fullBodyFuncAnimSm.collection["DisruptionAttack" + suffix] + .Interval(IntervalType.Startup).Duration * 2; + + timeScaleModifierClip.duration = duration; + player.feedbackSc.PlayFeedback("DisruptionStartup"); + } + + if (suffix == "B") + { + ModifyTechniqueScore(-1, false); + } + else if (suffix == "C") + { + ModifyTechniqueScore(-3, false); + } + + comboSm.main.Reset(); + functionSm["DisruptionAttack"].Execute(); } - else if (suffix == "C") - { - ModifyTechniqueScore(-3, false); - } - - comboSm.main.Reset(); - functionSm["HeavyAttack"].Execute(); } + return; } @@ -299,7 +319,7 @@ namespace Cielonos.MainGame.Inventory.Collections player.operationSc.Dodge(); DodgeSource defaultDodge = DodgeSource.Default(player); player.reactionSc.dodgeSm.ApplyDodge(defaultDodge); - player.reactionSc.dodgeSm.GetCurrentDodgeSource().PerfectDodge(); + player.reactionSc.dodgeSm.GetCurrentDodgeSource().PerfectDodge(null); player.reactionSc.dodgeSm.RemoveDodge("DefaultDodge"); } } @@ -372,17 +392,15 @@ namespace Cielonos.MainGame.Inventory.Collections float magnitude = hitFeedback == "SingleNormalHit" ? 0.12f : 0.06f; positionShakeAction.amplitude = vfxData.Get(vfxName).slashScreenPosition.normalized * magnitude; feedbackSc.PlayFeedback(hitFeedback); - - new ElectronicParalysis.Progress(100f).Apply(enemy, player, this); ModifyTechniqueScore(0.02f); - if (attackUnit.unitName == "InstantAttack") + /*if (attackUnit.unitName == "InstantAttack") { if (enemy.buffSm.HasBuff()) { slash.attackSm.attackValue.damage *= 2f; } - } + }*/ }); return slash; @@ -391,11 +409,25 @@ namespace Cielonos.MainGame.Inventory.Collections private NormalArea GenerateHeavySlash(string vfxName, AttackUnit attackUnit) { NormalArea slash = vfxData.SpawnVFX(vfxName, player).GetComponentInChildren(); + + slash.Initialize(player, this, Fraction.Enemy); + + if (!HasExtender()) + { + slash.SetAttackSubmodule(attackUnit) + .SetTimeSubmodule(1f, 0.04f) + .SetHitSubmodule(); + } + else // 如果有Photon Dissociator,重攻击拆分为五段,每段伤害为原来的30%,时间和判定也相应调整 + { + AttackUnit modifiedUnit = attackUnit.Clone(); + modifiedUnit.startDamage *= 0.5f; + + slash.SetAttackSubmodule(modifiedUnit) + .SetTimeSubmodule(1f, 0.04f, 0.4f) + .SetHitSubmodule(0.1f, 3); + } - slash.Initialize(player, this, Fraction.Enemy) - .SetAttackSubmodule(attackUnit) - .SetTimeSubmodule(1f, 0.04f) - .SetHitSubmodule(); slash.SetImpulseSubmodule(1f).WithRepulsion(5f); slash.attackSm.breakthroughAction = (enemy, hitPosition) => @@ -500,8 +532,6 @@ namespace Cielonos.MainGame.Inventory.Collections if (attackArea is NormalArea) { ModifyTechniqueScore(-0.1f); - //attackArea.creator.GetHit(Breakthrough.Type.Disruption, out _); - //attackArea.creator.movementSc.impulseSm.ApplyKnockback(player.transform.forward, 5f); } }; @@ -516,12 +546,15 @@ namespace Cielonos.MainGame.Inventory.Collections new Vector3(0f, 4f, -2f); feedbackSc.PlayFeedback("PerfectBlock"); - + if (attackArea is NormalArea) { ModifyTechniqueScore(0.2f); - //attackArea.creator.GetHit(Breakthrough.Type.Disruption, out _); - //attackArea.creator.movementSc.impulseSm.ApplyKnockback(player.transform.forward, 5f); + if (HasExtender()) + { + attackArea.creator.GetHit(Breakthrough.Type.Forced, out _); + attackArea.creator.movementSc.impulseSm.ApplyKnockback(player.transform.forward, 6f); + } } }; diff --git a/Assets/Scripts/MainGame/Items/PassiveEquipments/ArmorPiercingRound.cs b/Assets/Scripts/MainGame/Items/PassiveEquipments/ArmorPiercingRound.cs new file mode 100644 index 000000000..c1e485c6d --- /dev/null +++ b/Assets/Scripts/MainGame/Items/PassiveEquipments/ArmorPiercingRound.cs @@ -0,0 +1,84 @@ +using System; +using Cielonos.MainGame.Buffs; +using Cielonos.MainGame.Buffs.Character; +using Cielonos.MainGame.Characters; +using SLSUtilities.General; +using UnityEngine; + +namespace Cielonos.MainGame.Inventory.Collections +{ + /// + /// 穿甲弹头 / Armor Piercing Round + /// Kinetics 攻击命中时降低目标护甲。 + /// + public partial class ArmorPiercingRound : PassiveEquipmentBase + { + private const string EventKey = nameof(ArmorPiercingRound); + + public override void OnObtained() + { + base.OnObtained(); + Action onStartAttack = OnStartAttack; + player.eventSm.onStartAttack.Add(EventKey, onStartAttack.ToPrioritized()); + } + + public override void OnDiscarded() + { + player.eventSm.onStartAttack.Remove(EventKey); + base.OnDiscarded(); + } + + private void OnStartAttack(AttackAreaBase attackArea, CharacterBase target, Attack.Context context) + { + if (context.value.type == Attack.Type.Kinetics) + { + int armorReduction = Mathf.RoundToInt(passiveAttributeSm.GetItemAttribute("ArmorReduction")); + new ArmorReduction(5f, armorReduction).Apply(target, player, this); + } + } + } + + public partial class ArmorPiercingRound + { + /// + /// 穿甲弹头的Buff,默认降低目标等于unitedStack层数的护甲,持续5秒 + /// + public class ArmorReduction : CharacterBuffBase + { + public ArmorReduction(float duration, int stack) + { + Initialize(BuffType.Positive, BuffDispelLevel.Basic); + + this.contentSubmodule = new ContentSubmodule(this); + this.timeSubmodule = new TimeSubmodule(this, duration); + this.unitedStackSubmodule = new UnitedStackSubmodule(this, stack); + this.attributeSubmodule = new AttributeSubmodule(this); + } + + public override bool OnBuffApply(out CharacterBuffBase existingBuff) + { + if (FindExistingSameBuff(out ArmorReduction existing)) + { + existingBuff = existing; + existing.timeSubmodule.RefreshDuration(); + existing.unitedStackSubmodule.PickHigherStack(this.unitedStackSubmodule); + existing.UpdateArmorValue(existing.unitedStackSubmodule.stackAmount); + return false; + } + + existingBuff = null; + UpdateArmorValue(unitedStackSubmodule.stackAmount); + return true; + } + + /// + /// 根据当前层数更新护甲加成数值。 + /// + private void UpdateArmorValue(int stacks) + { + attributeSubmodule.numericChange[CharacterAttribute.Armor] = -stacks; + attributeSubmodule.RefreshAllModifiedAttributes(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/MainGame/Items/PassiveEquipments/ArmorPiercingRound.cs.meta b/Assets/Scripts/MainGame/Items/PassiveEquipments/ArmorPiercingRound.cs.meta new file mode 100644 index 000000000..45dff7358 --- /dev/null +++ b/Assets/Scripts/MainGame/Items/PassiveEquipments/ArmorPiercingRound.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 46a4b90939f53e04c8b0211785d581d5 \ No newline at end of file diff --git a/Assets/Scripts/MainGame/Items/PassiveEquipments/Ascension.cs b/Assets/Scripts/MainGame/Items/PassiveEquipments/Ascension.cs index 21fa46f64..d8c770813 100644 --- a/Assets/Scripts/MainGame/Items/PassiveEquipments/Ascension.cs +++ b/Assets/Scripts/MainGame/Items/PassiveEquipments/Ascension.cs @@ -1,5 +1,3 @@ -using UnityEngine; - namespace Cielonos.MainGame.Inventory.Collections { public class Ascension : PassiveEquipmentBase diff --git a/Assets/Scripts/MainGame/Items/PassiveEquipments/CombustionEnhancer.cs b/Assets/Scripts/MainGame/Items/PassiveEquipments/CombustionEnhancer.cs new file mode 100644 index 000000000..1155e335e --- /dev/null +++ b/Assets/Scripts/MainGame/Items/PassiveEquipments/CombustionEnhancer.cs @@ -0,0 +1,36 @@ +using System; +using Cielonos.MainGame.Buffs.Character; +using Cielonos.MainGame.Characters; +using SLSUtilities.General; +using UnityEngine; + +namespace Cielonos.MainGame.Inventory.Collections +{ + /// + /// 助燃剂 / Combustion Enhancer + /// 每次攻击到敌人后,如果敌人处于燃烧Buff,那么为燃烧Buff持续时间延长0.1秒 + /// + public class CombustionEnhancer : PassiveEquipmentBase + { + private const string EventKey = nameof(CombustionEnhancer); + + public override void OnObtained() + { + base.OnObtained(); + Action onFinishAttack = OnFinishAttack; + player.eventSm.onFinishAttack.Add(EventKey, onFinishAttack.ToPrioritized()); + } + + public override void OnDiscarded() + { + player.eventSm.onFinishAttack.Remove(EventKey); + base.OnDiscarded(); + } + + private void OnFinishAttack(AttackAreaBase attackArea, CharacterBase target, Attack.Result result) + { + Burn burn = target.buffSm.GetBuff(); + burn?.timeSubmodule.AddDuration(0.1f); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/MainGame/Items/PassiveEquipments/CombustionEnhancer.cs.meta b/Assets/Scripts/MainGame/Items/PassiveEquipments/CombustionEnhancer.cs.meta new file mode 100644 index 000000000..c0c3228f8 --- /dev/null +++ b/Assets/Scripts/MainGame/Items/PassiveEquipments/CombustionEnhancer.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d9bbfaab77002de4f98d00e15a5b6466 \ No newline at end of file diff --git a/Assets/Scripts/MainGame/Items/Submodules/FunctionSubmodule.cs b/Assets/Scripts/MainGame/Items/Submodules/FunctionSubmodule.cs index 29f6abca4..0e6191be2 100644 --- a/Assets/Scripts/MainGame/Items/Submodules/FunctionSubmodule.cs +++ b/Assets/Scripts/MainGame/Items/Submodules/FunctionSubmodule.cs @@ -20,9 +20,9 @@ namespace Cielonos.MainGame.Inventory public FunctionSubmodule(ItemBase owner, FunctionData data) : base(owner) { functionUnits = new Dictionary(); - foreach (var kvp in data.functionUnits) + foreach (var unit in data.functionUnitList) { - functionUnits[kvp.Key] = new RuntimeFunctionUnit(this, kvp.Value); + functionUnits[unit.unitName] = new RuntimeFunctionUnit(this, unit); } } @@ -46,7 +46,7 @@ namespace Cielonos.MainGame.Inventory public RuntimeFunctionUnit(FunctionSubmodule owner, FunctionData.FunctionUnit data) : base(owner) { this.data = data; - maxCooldown = data.interval; + maxCooldown = data.cooldown; currentCooldown = 0f; } @@ -60,30 +60,49 @@ namespace Cielonos.MainGame.Inventory { bool cooldownAvailable = currentCooldown <= 0f; bool energyAvailable = character.attributeSm[CharacterAttribute.Energy] >= GetEffectiveEnergyCost(); - return cooldownAvailable && energyAvailable; + bool available = cooldownAvailable && energyAvailable; + + if (!available) + { + if(character is Player && owner.owner is MainWeaponBase) + { + if (data.shownInUI || data.isMain) + { + PlayerCanvas.MainWeaponUIArea.functionIconDict[data.unitName].SetFrameOutline(0.25f, Color.red); + } + } + } + return available; } public RuntimeFunctionUnit Execute() { ResetCooldown(); ConsumeEnergy(); + if(character is Player && owner.owner is MainWeaponBase) + { + if (data.shownInUI || data.isMain) + { + PlayerCanvas.MainWeaponUIArea.functionIconDict[data.unitName].SetFrameOutline(0.25f); + } + } return this; } - private const float MinCooldownMultiplier = 0.1f; + private const float MaxCooldownReduction = 0.9f; private const float MaxEnergyCostReduction = 0.9f; /// 计算应用 EnergyCostReduction 后的实际能量消耗。 private float GetEffectiveEnergyCost() { - float ecr = Mathf.Clamp(character.attributeSm[CharacterAttribute.EnergyCostReduction], 0f, MaxEnergyCostReduction); - return data.energyCost * (1f - ecr); + float energyCostReduction = Mathf.Clamp(character.attributeSm[CharacterAttribute.EnergyCostReduction], 0f, MaxEnergyCostReduction); + return data.energyCost * (1f - energyCostReduction); } private void ResetCooldown() { - float cdr = Mathf.Clamp(character.attributeSm[CharacterAttribute.CooldownReduction], 0f, 1f - MinCooldownMultiplier); - currentCooldown = maxCooldown * (1f - cdr); + float cooldownReduction = Mathf.Clamp(character.attributeSm[CharacterAttribute.CooldownReduction], 0f, MaxCooldownReduction); + currentCooldown = maxCooldown * (1f - cooldownReduction); } private void ConsumeEnergy() diff --git a/Assets/Scripts/MainGame/Managers/CombatManager/CombatRoomSubmodule/CombatRoomSubmodule.cs b/Assets/Scripts/MainGame/Managers/CombatManager/CombatRoomSubmodule/CombatRoomSubmodule.cs index 20c6a8573..bb1b4f272 100644 --- a/Assets/Scripts/MainGame/Managers/CombatManager/CombatRoomSubmodule/CombatRoomSubmodule.cs +++ b/Assets/Scripts/MainGame/Managers/CombatManager/CombatRoomSubmodule/CombatRoomSubmodule.cs @@ -105,7 +105,7 @@ namespace Cielonos.MainGame OnEnemyDefeated?.Invoke(enemy); GrantCurrencyDrop(enemy); - Debug.Log($"[CombatManager] 敌人死亡:{enemy.name},剩余:{owner.enemySm.activeEnemiesList.Count}"); + //Debug.Log($"[CombatManager] 敌人死亡:{enemy.name},剩余:{owner.enemySm.activeEnemiesList.Count}"); if (owner.enemySm.activeEnemiesList.Count > 0) { @@ -115,7 +115,7 @@ namespace Cielonos.MainGame // 所有敌人已清除 roomState = CombatRoomState.Cleared; owner.enemySm.OnEnemyRemoved -= HandleEnemyRemoved; - Debug.Log("[CombatManager] 战斗房间已清空,触发 OnRoomCleared。"); + //Debug.Log("[CombatManager] 战斗房间已清空,触发 OnRoomCleared。"); OnRoomCleared?.Invoke(); } @@ -130,7 +130,7 @@ namespace Cielonos.MainGame int amount = MainGameManager.Config.RollCurrency(typedEnemy.enemyRank, rng); MainGameManager.Player.inventorySc.backpackSm.ObtainItem(amount); - Debug.Log($"[CombatRoomSubmodule] 击杀 {typedEnemy.enemyRank} 敌人,获得稀有材料 x{amount}。"); + //Debug.Log($"[CombatRoomSubmodule] 击杀 {typedEnemy.enemyRank} 敌人,获得稀有材料 x{amount}。"); } } } diff --git a/Assets/Scripts/MainGame/Managers/CombatManager/CombatSystems/MusicBeatSystem/MusicBeatData.asset b/Assets/Scripts/MainGame/Managers/CombatManager/CombatSystems/MusicBeatSystem/MusicBeatData.asset index 094db43cd..5866306b1 100644 --- a/Assets/Scripts/MainGame/Managers/CombatManager/CombatSystems/MusicBeatSystem/MusicBeatData.asset +++ b/Assets/Scripts/MainGame/Managers/CombatManager/CombatSystems/MusicBeatSystem/MusicBeatData.asset @@ -64,8 +64,8 @@ MonoBehaviour: tags: - Normal barIndex: 0 - beatInBar: 6 - - time: 2.5958335 + beatInBar: 7 + - time: 2.6375 tags: - Normal barIndex: 1 diff --git a/Assets/Scripts/MainGame/UI/PlayerUI/MainWeapon/MainWeaponDisplayer.cs b/Assets/Scripts/MainGame/UI/PlayerUI/MainWeapon/MainWeaponDisplayer.cs index dc44bc8a9..06e1a3381 100644 --- a/Assets/Scripts/MainGame/UI/PlayerUI/MainWeapon/MainWeaponDisplayer.cs +++ b/Assets/Scripts/MainGame/UI/PlayerUI/MainWeapon/MainWeaponDisplayer.cs @@ -15,15 +15,14 @@ namespace Cielonos.MainGame.UI public Image frame; private Sequence frameOutlineSequence; - public void Initialize(Sprite icon, string weaponName) + public void Initialize(RuntimeFunctionUnit functionUnit, string weaponName) { - rectIcon.sprite = icon; + rectIcon.sprite = functionUnit.data.icon; weaponNameText.text = weaponName; } public void SetFrameOutline(float totalDuration, Color color = default, float intensity = 2f) { - return; color = color == default ? Color.cyan : color; Color hdrColor = color * Mathf.Pow(2f, intensity); GlowFilter glowFilter = frame.GetComponent(); diff --git a/Assets/Scripts/MainGame/UI/PlayerUI/MainWeapon/MainWeaponFunctionIcon.cs b/Assets/Scripts/MainGame/UI/PlayerUI/MainWeapon/MainWeaponFunctionIcon.cs index 0d633c15c..eb4eaa9de 100644 --- a/Assets/Scripts/MainGame/UI/PlayerUI/MainWeapon/MainWeaponFunctionIcon.cs +++ b/Assets/Scripts/MainGame/UI/PlayerUI/MainWeapon/MainWeaponFunctionIcon.cs @@ -1,5 +1,8 @@ +using ChocDino.UIFX; using Cielonos.MainGame.Inventory; +using DG.Tweening; using SLSUtilities.UI; +using TMPro; using UnityEngine; using UnityEngine.Serialization; using UnityEngine.UI; @@ -8,31 +11,87 @@ namespace Cielonos.MainGame.UI { public class MainWeaponFunctionIcon : UIElementBase { - public RuntimeFunctionUnit functionUnit; - [FormerlySerializedAs("timerFillImage")] public Image frame; + public Image frame; public Image iconImage; - public Image timer; - + public Image timerImage; + public TMP_Text timerText; + public TMP_Text costText; + + private Sequence _frameOutlineSequence; + private RuntimeFunctionUnit _functionUnit; public void Initialize(RuntimeFunctionUnit functionUnit) { - this.functionUnit = functionUnit; + this._functionUnit = functionUnit; iconImage.sprite = functionUnit.data.icon != null ? functionUnit.data.icon : null; + + if (_functionUnit.maxCooldown <= 0) + { + timerImage.gameObject.SetActive(false); + timerText.gameObject.SetActive(false); + } + + if(_functionUnit.data.energyCost <= 0) + { + costText.gameObject.SetActive(false); + } + else + { + costText.text = Mathf.CeilToInt(_functionUnit.data.energyCost).ToString("D"); + } + + if (_functionUnit.data.tags.Contains("Disruption")) + { + Color newColor = Color.yellow; + iconImage.color = newColor; + newColor.a = 0.5f; + frame.color = newColor; + } } public override void UpdateUI() { - float fillAmount; - - if (functionUnit.maxCooldown <= 0f) + if (_functionUnit.maxCooldown <= 0f) { - fillAmount = 1f; + //无冷却 } else { - fillAmount = 1f - functionUnit.currentCooldown / functionUnit.maxCooldown; + float fillAmount = 1f - _functionUnit.currentCooldown / _functionUnit.maxCooldown; + timerImage.fillAmount = fillAmount; + + if (_functionUnit.currentCooldown > 0f) + { + timerText.text = _functionUnit.currentCooldown.ToString("F1"); + } + else + { + timerText.text = ""; + } } - - frame.fillAmount = fillAmount; + + if (_functionUnit.data.energyCost > 0) + { + float playerCurrentEnergy = MainGameManager.Player.attributeSm[CharacterAttribute.Energy]; + costText.color = playerCurrentEnergy >= _functionUnit.data.energyCost ? Color.cyan : Color.orangeRed; + costText.text = Mathf.CeilToInt(_functionUnit.data.energyCost).ToString("D"); + } + } + + public void SetFrameOutline(float totalDuration, Color color = default, float intensity = 0.5f) + { + color = color == default ? Color.white : color; + Color hdrColor = color * Mathf.Pow(2f, intensity); + GlowFilter glowFilter = frame.GetComponent(); + glowFilter.Color = hdrColor; + float fadeDuration = Mathf.Clamp(totalDuration / 2f, 0.2f, totalDuration); + float stayDuration = totalDuration - fadeDuration; + float strengthPeak = 0.5f; + _frameOutlineSequence?.Kill(true); + _frameOutlineSequence = DOTween.Sequence(); + _frameOutlineSequence.Append(DOTween.To(() => glowFilter.Strength, x => glowFilter.Strength = x, strengthPeak, fadeDuration).SetEase(Ease.OutQuad)); + _frameOutlineSequence.AppendInterval(stayDuration); + _frameOutlineSequence.Append(DOTween.To(() => glowFilter.Strength, x => glowFilter.Strength = x, 0f, fadeDuration).SetEase(Ease.InQuad)); + _frameOutlineSequence.Play(); } } } \ No newline at end of file diff --git a/Assets/Scripts/MainGame/UI/PlayerUI/MainWeapon/MainWeaponUIArea.cs b/Assets/Scripts/MainGame/UI/PlayerUI/MainWeapon/MainWeaponUIArea.cs index 7097cfe59..df0785d47 100644 --- a/Assets/Scripts/MainGame/UI/PlayerUI/MainWeapon/MainWeaponUIArea.cs +++ b/Assets/Scripts/MainGame/UI/PlayerUI/MainWeapon/MainWeaponUIArea.cs @@ -14,29 +14,40 @@ namespace Cielonos.MainGame.UI public RectTransform functionIconContainer; public MainWeaponDisplayer displayer; + public MainWeaponFunctionIcon mainFunctionIcon; public List functionIcons; - + public Dictionary functionIconDict; + private void Awake() { functionIcons = new List(); + functionIconDict = new Dictionary(); } public void Initialize(MainWeaponBase mainWeapon) { this.mainWeapon = mainWeapon; - Sprite rectIcon = mainWeapon.contentData.rectIcon; - string weaponName = mainWeapon.contentData.itemClass.Name; //TODO: 后续改为本地化显示 - displayer.Initialize(rectIcon, weaponName); + string weaponName = mainWeapon.contentData.itemClass.Name; ClearIcons(); foreach (KeyValuePair unit in mainWeapon.functionSm.functionUnits) { - if (!unit.Value.data.shownInUI) continue; - - MainWeaponFunctionIcon icon = Instantiate(functionIconPrefab, functionIconContainer).GetComponent(); - icon.Initialize(unit.Value); - functionIcons.Add(icon); + if (unit.Value.data.isMain) + { + mainFunctionIcon.Initialize(unit.Value); + functionIconDict[unit.Key] = mainFunctionIcon; + } + else + { + if (!unit.Value.data.shownInUI) continue; + + MainWeaponFunctionIcon icon = Instantiate(functionIconPrefab, functionIconContainer).GetComponent(); + icon.Initialize(unit.Value); + functionIcons.Add(icon); + functionIconDict[unit.Key] = icon; + } + } } @@ -53,6 +64,7 @@ namespace Cielonos.MainGame.UI } functionIcons.Clear(); + functionIconDict.Clear(); } } } \ No newline at end of file diff --git a/Assets/Scripts/MainGame/UI/PlayerUI/SupportEquipments/SupportEquipmentIcon.cs b/Assets/Scripts/MainGame/UI/PlayerUI/SupportEquipments/SupportEquipmentIcon.cs index 2f9e943a3..08b29ce1b 100644 --- a/Assets/Scripts/MainGame/UI/PlayerUI/SupportEquipments/SupportEquipmentIcon.cs +++ b/Assets/Scripts/MainGame/UI/PlayerUI/SupportEquipments/SupportEquipmentIcon.cs @@ -3,6 +3,7 @@ using ChocDino.UIFX; using Cielonos.MainGame.Inventory; using DG.Tweening; using SLSUtilities.UI; +using TMPro; using UnityEngine; using UnityEngine.UI; @@ -11,18 +12,21 @@ namespace Cielonos.MainGame.UI public class SupportEquipmentIcon : UIElementBase { public SupportEquipmentBase supportEquipment; - public RuntimeFunctionUnit functionUnit; public Image frame; public Image iconImage; - public Image timer; - private Sequence frameOutlineSequence; + public Image timerImage; + public TMP_Text timerText; + public TMP_Text costText; + + private RuntimeFunctionUnit _functionUnit; + private Sequence _frameOutlineSequence; public void Initialize(SupportEquipmentBase supportEquipment) { if (supportEquipment == null) { iconImage.sprite = null; - functionUnit = null; + _functionUnit = null; } else { @@ -35,40 +39,91 @@ namespace Cielonos.MainGame.UI if (functionCount == 0) { - + DisableAllParts(); } else if (functionCount == 1) { - functionUnit = supportEquipment.functionSm.functionUnits.Values.ToList()[0]; + _functionUnit = supportEquipment.functionSm.mainFunction; } else { - + //如果有多个功能单元,优先显示主功能单元 + _functionUnit = supportEquipment.functionSm.mainFunction; + } + + timerImage.gameObject.SetActive(true); + timerText.gameObject.SetActive(true); + costText.gameObject.SetActive(true); + iconImage.color = Color.white; + + if (_functionUnit.maxCooldown <= 0) + { + timerImage.gameObject.SetActive(false); + timerText.gameObject.SetActive(false); + } + + if(_functionUnit.data.energyCost <= 0) + { + costText.gameObject.SetActive(false); + } + else + { + costText.text = Mathf.CeilToInt(_functionUnit.data.energyCost).ToString("D"); + } + + if (_functionUnit.data.tags.Contains("Disruption")) + { + Color newColor = Color.yellow; + iconImage.color = newColor; + newColor.a = 0.5f; + frame.color = newColor; } } else { - + DisableAllParts(); } } } + public void DisableAllParts() + { + iconImage.sprite = null; + iconImage.color = Color.clear; + timerImage.gameObject.SetActive(false); + timerText.gameObject.SetActive(false); + costText.gameObject.SetActive(false); + } + public override void UpdateUI() { - if (functionUnit == null) return; + if (_functionUnit == null) return; - float fillAmount; - - if (functionUnit.maxCooldown <= 0f) + if (_functionUnit.maxCooldown <= 0f) { - fillAmount = 0f; + //无冷却 } else { - fillAmount = functionUnit.currentCooldown / functionUnit.maxCooldown; + float fillAmount = 1f - _functionUnit.currentCooldown / _functionUnit.maxCooldown; + timerImage.fillAmount = fillAmount; + + if (_functionUnit.currentCooldown > 0f) + { + timerText.text = _functionUnit.currentCooldown.ToString("F1"); + } + else + { + timerText.text = ""; + } + } + + if (_functionUnit.data.energyCost > 0) + { + float playerCurrentEnergy = MainGameManager.Player.attributeSm[CharacterAttribute.Energy]; + costText.color = playerCurrentEnergy >= _functionUnit.data.energyCost ? Color.cyan : Color.orangeRed; + costText.text = Mathf.CeilToInt(_functionUnit.data.energyCost).ToString("D"); } - - timer.fillAmount = fillAmount; } public void UseOutlineAnimation() => SetFrameOutline(0.4f, Color.white); @@ -85,13 +140,13 @@ namespace Cielonos.MainGame.UI float fadeDuration = Mathf.Clamp(totalDuration / 2f, 0.2f, totalDuration); float stayDuration = totalDuration - fadeDuration; float strengthPeak = 0.25f; - frameOutlineSequence?.Kill(true); - frameOutlineSequence = DOTween.Sequence(); - frameOutlineSequence.Append(DOTween.To(() => glowFilter.Strength, x => glowFilter.Strength = x, strengthPeak, fadeDuration).SetEase(Ease.OutQuad)); - frameOutlineSequence.AppendInterval(stayDuration); - frameOutlineSequence.Append(DOTween.To(() => glowFilter.Strength, x => glowFilter.Strength = x, 0f, fadeDuration).SetEase(Ease.InQuad)); - frameOutlineSequence.OnComplete(() => GetComponent().sortingOrder = 0); - frameOutlineSequence.Play(); + _frameOutlineSequence?.Kill(true); + _frameOutlineSequence = DOTween.Sequence(); + _frameOutlineSequence.Append(DOTween.To(() => glowFilter.Strength, x => glowFilter.Strength = x, strengthPeak, fadeDuration).SetEase(Ease.OutQuad)); + _frameOutlineSequence.AppendInterval(stayDuration); + _frameOutlineSequence.Append(DOTween.To(() => glowFilter.Strength, x => glowFilter.Strength = x, 0f, fadeDuration).SetEase(Ease.InQuad)); + _frameOutlineSequence.OnComplete(() => GetComponent().sortingOrder = 0); + _frameOutlineSequence.Play(); } } } \ No newline at end of file diff --git a/Assets/Scripts/MainGame/UI/PlayerUI/SupportEquipments/SupportEquipmentsUIArea.cs b/Assets/Scripts/MainGame/UI/PlayerUI/SupportEquipments/SupportEquipmentsUIArea.cs index 755ddb326..7fab1185a 100644 --- a/Assets/Scripts/MainGame/UI/PlayerUI/SupportEquipments/SupportEquipmentsUIArea.cs +++ b/Assets/Scripts/MainGame/UI/PlayerUI/SupportEquipments/SupportEquipmentsUIArea.cs @@ -17,6 +17,7 @@ namespace Cielonos.MainGame.UI private void Awake() { icons = GetComponentsInChildren(true).ToList(); + icons.ForEach(icon => icon.DisableAllParts()); } public void Initialize(SupportEquipmentBase supportEquipment, int slotIndex) diff --git a/Assets/Scripts/SLSUtilities/General/Timer.cs b/Assets/Scripts/SLSUtilities/General/Timer.cs index b73c299c5..d2b857dc9 100644 --- a/Assets/Scripts/SLSUtilities/General/Timer.cs +++ b/Assets/Scripts/SLSUtilities/General/Timer.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using UniRx; using UnityEngine; namespace SLSUtilities.General @@ -9,47 +10,63 @@ namespace SLSUtilities.General public float duration; public float currentTime; public bool isInfinite; + public bool keepActions; public float Percentage => duration > 0 ? Mathf.Clamp01(currentTime / duration) : 1f; - public virtual bool IsCompleted => currentTime >= duration; + public bool isCompleted; public List onComplete; + private IDisposable _autoObserver; - public Timer(float duration, bool isInfinite = false) + public Timer(float duration, bool keepActions = true, bool isInfinite = false) { this.duration = duration; this.isInfinite = isInfinite; + this.keepActions = keepActions; currentTime = 0f; onComplete = new List(); } public virtual void Update(float deltaTime) { - if (!IsCompleted) + currentTime += deltaTime; + + if (!isInfinite && !isCompleted && currentTime >= duration) { - currentTime += deltaTime; + isCompleted = true; + onComplete.Invoke(); + if (!keepActions) + { + onComplete.Clear(); + } } - else + else if (isInfinite) { - if (!isInfinite) - { - onComplete.Invoke(); - onComplete.Clear(); // 确保只调用一次 - } - else - { - onComplete.Invoke(); - Reset(); - } + onComplete.Invoke(); } } public virtual void Reset(float newDuration = -1f) { + isCompleted = false; currentTime = 0f; if(newDuration >= 0f) { duration = newDuration; } } + + public virtual void Complete(bool invokeAction = true) + { + currentTime = duration; + isCompleted = true; + if (invokeAction) + { + onComplete.Invoke(); + if (!keepActions) + { + onComplete.Clear(); + } + } + } } } \ No newline at end of file diff --git a/Assets/Settings/Fullscreen FX Blur Config.asset b/Assets/Settings/Fullscreen FX Blur Config.asset deleted file mode 100644 index 15a4edb5b..000000000 --- a/Assets/Settings/Fullscreen FX Blur Config.asset +++ /dev/null @@ -1,21 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - 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: 510c61cdec524e86b647525bb5947f82, type: 3} - m_Name: Fullscreen FX Blur Config - m_EditorClassIdentifier: - mode: 1 - radius: 2 - iteration: 3 - strength: 16 - referenceResolution: {x: 1920, y: 1080} - matchWidthOrHeight: 0 - useStrength: 1 diff --git a/Assets/Settings/Fullscreen FX Blur Config.asset.meta b/Assets/Settings/Fullscreen FX Blur Config.asset.meta deleted file mode 100644 index a08fdb281..000000000 --- a/Assets/Settings/Fullscreen FX Blur Config.asset.meta +++ /dev/null @@ -1,15 +0,0 @@ -fileFormatVersion: 2 -guid: 45ac4b3d5f9dfc746a89d180929cc72e -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 78464 - packageName: Translucent Image - Fast UI Background Blur - packageVersion: 6.5.0 - assetPath: Assets/Settings/Fullscreen FX Blur Config.asset - uploadId: 824068 diff --git a/Assets/Settings/PC_Renderer.asset b/Assets/Settings/PC_Renderer.asset index 7b30bfe9e..9dac1c78b 100644 --- a/Assets/Settings/PC_Renderer.asset +++ b/Assets/Settings/PC_Renderer.asset @@ -21,7 +21,7 @@ MonoBehaviour: surfaceData: 2 screenSpaceSettings: normalBlend: 0 ---- !u!114 &-5049805481540726669 +--- !u!114 &-5128268065812374329 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -30,12 +30,22 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c8e1eeeaa7fba944fb8e39c0af65b268, type: 3} - m_Name: TranslucentImageBlurSource - m_EditorClassIdentifier: LeTai.TranslucentImage.UniversalRP::LeTai.Asset.TranslucentImage.UniversalRP.TranslucentImageBlurSource + m_Script: {fileID: 11500000, guid: 872075d247354644389befca4a299b7a, type: 3} + m_Name: FlexibleBlurFeature + m_EditorClassIdentifier: JeffGrawAssets.FlexibleUI.Runtime::JeffGrawAssets.FlexibleUI.FlexibleBlurFeature m_Active: 1 - renderOrder: 0 - canvasDisappearWorkaround: 0 + platformData: + renderPassEvent: 600 + destinationFilterMode: 1 + uiBlurLayersSeeLower: 1 + blurredImagesSeeUIBlurs: 1 + blurredImageLayersSeeLower: 1 + useComputeShaders: 0 + overlayCompatibilityFix: 0 + resultFormat: 48 + blurFormat: 48 + layerResolutionRatio: 1 + maxLayerResolution: 1080 --- !u!114 &-4959381444210221564 MonoBehaviour: m_ObjectHideFlags: 0 @@ -139,9 +149,9 @@ MonoBehaviour: - {fileID: -260981590467567457} - {fileID: -4959381444210221564} - {fileID: 6609495894872259600} - - {fileID: -5049805481540726669} - {fileID: -2236813980570135019} - m_RendererFeatureMap: ad6b866f10d7b46c191d794be174b1e28ec034c34b50b7892799d53f7e688a2d9fa0434fa0ce60fc049e2f38dabc2cbb107c436e7fa5b95b73d0f167ab7cebb915567d2b893df5e0 + - {fileID: -5128268065812374329} + m_RendererFeatureMap: ad6b866f10d7b46c191d794be174b1e28ec034c34b50b7892799d53f7e688a2d9fa0434fa0ce60fc049e2f38dabc2cbb107c436e7fa5b95b15567d2b893df5e0c71c46685dbbd4b8 m_UseNativeRenderPass: 1 xrSystemData: {fileID: 0} postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2}

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∓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%0D8Q5F%8xVh9@CH6!rXi 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