From 9f9bb87821cfbd42124564bd6a1342c2af10db69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E9=93=AE?= <834207172@qq.com> Date: Thu, 10 Apr 2025 18:15:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A006=20UI=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/06.UIFarme/Editor.meta | 8 + .../06.UIFarme/Editor/UIFarme.Editor.asmdef | 16 + .../Editor/UIFarme.Editor.asmdef.meta | 7 + Assets/06.UIFarme/RunTime.meta | 8 + Assets/06.UIFarme/RunTime/Base.meta | 8 + Assets/06.UIFarme/RunTime/Base/BasePanel.cs | 218 + .../06.UIFarme/RunTime/Base/BasePanel.cs.meta | 11 + Assets/06.UIFarme/RunTime/Manager.meta | 8 + .../06.UIFarme/RunTime/Manager/PanelSystem.cs | 205 + .../RunTime/Manager/PanelSystem.cs.meta | 11 + .../06.UIFarme/RunTime/UIFarme.RunTime.asmdef | 19 + .../RunTime/UIFarme.RunTime.asmdef.meta | 7 + Assets/06.UIFarme/RunTime/UITool.meta | 8 + Assets/06.UIFarme/RunTime/UITool/UITool.cs | 50 + .../06.UIFarme/RunTime/UITool/UITool.cs.meta | 11 + Assets/06.UIFarme/package.json | 20 + Assets/06.UIFarme/package.json.meta | 3 + Assets/Plugins/Demigiant.meta | 23 + Assets/Plugins/Demigiant/DOTween.meta | 21 + Assets/Plugins/Demigiant/DOTween/DOTween.XML | 3089 ++++++++++ .../Demigiant/DOTween/DOTween.XML.meta | 4 + Assets/Plugins/Demigiant/DOTween/DOTween.dll | Bin 0 -> 175616 bytes .../Demigiant/DOTween/DOTween.dll.meta | 22 + Assets/Plugins/Demigiant/DOTween/Editor.meta | 5 + .../DOTween/Editor/DOTweenEditor.XML | 144 + .../DOTween/Editor/DOTweenEditor.XML.meta | 4 + .../DOTween/Editor/DOTweenEditor.dll | Bin 0 -> 70656 bytes .../DOTween/Editor/DOTweenEditor.dll.meta | 22 + .../DOTween/Editor/DOTweenUpgradeManager.XML | 14 + .../Editor/DOTweenUpgradeManager.XML.meta | 4 + .../DOTween/Editor/DOTweenUpgradeManager.dll | Bin 0 -> 10752 bytes .../Editor/DOTweenUpgradeManager.dll.meta | 22 + .../Demigiant/DOTween/Editor/Imgs.meta | 5 + .../DOTween/Editor/Imgs/DOTweenIcon.png | Bin 0 -> 1565 bytes .../DOTween/Editor/Imgs/DOTweenIcon.png.meta | 47 + .../DOTween/Editor/Imgs/DOTweenMiniIcon.png | Bin 0 -> 319 bytes .../Editor/Imgs/DOTweenMiniIcon.png.meta | 68 + .../Demigiant/DOTween/Editor/Imgs/Footer.png | Bin 0 -> 4409 bytes .../DOTween/Editor/Imgs/Footer.png.meta | 47 + .../DOTween/Editor/Imgs/Footer_dark.png | Bin 0 -> 4429 bytes .../DOTween/Editor/Imgs/Footer_dark.png.meta | 47 + .../Demigiant/DOTween/Editor/Imgs/Header.jpg | Bin 0 -> 22787 bytes .../DOTween/Editor/Imgs/Header.jpg.meta | 47 + Assets/Plugins/Demigiant/DOTween/Modules.meta | 5 + .../DOTween/Modules/DOTween.Modules.asmdef | 3 + .../Modules/DOTween.Modules.asmdef.meta | 7 + .../DOTween/Modules/DOTweenModuleAudio.cs | 198 + .../Modules/DOTweenModuleAudio.cs.meta | 8 + .../Modules/DOTweenModuleEPOOutline.cs | 146 + .../Modules/DOTweenModuleEPOOutline.cs.meta | 12 + .../DOTween/Modules/DOTweenModulePhysics.cs | 216 + .../Modules/DOTweenModulePhysics.cs.meta | 8 + .../DOTween/Modules/DOTweenModulePhysics2D.cs | 193 + .../Modules/DOTweenModulePhysics2D.cs.meta | 8 + .../DOTween/Modules/DOTweenModuleSprite.cs | 93 + .../Modules/DOTweenModuleSprite.cs.meta | 8 + .../DOTween/Modules/DOTweenModuleUI.cs | 662 ++ .../DOTween/Modules/DOTweenModuleUI.cs.meta | 8 + .../Modules/DOTweenModuleUnityVersion.cs | 389 ++ .../Modules/DOTweenModuleUnityVersion.cs.meta | 8 + .../DOTween/Modules/DOTweenModuleUtils.cs | 167 + .../Modules/DOTweenModuleUtils.cs.meta | 8 + Assets/Plugins/Demigiant/DOTween/readme.txt | 29 + .../Plugins/Demigiant/DOTween/readme.txt.meta | 4 + .../Demigiant/DOTweenPro Examples.meta | 23 + .../DOTweenAnimation_Advanced.unity | 5322 +++++++++++++++++ .../DOTweenAnimation_Advanced.unity.meta | 4 + ...DOTweenAnimation_AdvancedSettings.lighting | 64 + ...enAnimation_AdvancedSettings.lighting.meta | 8 + .../DOTweenAnimation_Basics.unity | 1809 ++++++ .../DOTweenAnimation_Basics.unity.meta | 4 + .../DOTweenAnimation_BasicsSettings.lighting | 64 + ...weenAnimation_BasicsSettings.lighting.meta | 8 + .../DOTweenPro Examples/DOTweenPath.unity | 1596 +++++ .../DOTweenPath.unity.meta | 4 + .../DOTweenPathSettings.lighting | 64 + .../DOTweenPathSettings.lighting.meta | 8 + .../DOTweenPro Examples/Examples Assets.meta | 5 + .../Examples Assets/dotweenpro_logo.png | Bin 0 -> 17098 bytes .../Examples Assets/dotweenpro_logo.png.meta | 92 + Assets/Plugins/Demigiant/DOTweenPro.meta | 23 + .../Demigiant/DOTweenPro/DOTweenAnimation.cs | 917 +++ .../DOTweenPro/DOTweenAnimation.cs.meta | 8 + .../Demigiant/DOTweenPro/DOTweenDeAudio.cs | 9 + .../DOTweenPro/DOTweenDeAudio.cs.meta | 12 + .../DOTweenPro/DOTweenDeUnityExtended.cs | 9 + .../DOTweenPro/DOTweenDeUnityExtended.cs.meta | 12 + .../DOTweenPro/DOTweenPro.Scripts.asmdef | 6 + .../DOTweenPro/DOTweenPro.Scripts.asmdef.meta | 7 + .../Demigiant/DOTweenPro/DOTweenPro.XML | 80 + .../Demigiant/DOTweenPro/DOTweenPro.XML.meta | 4 + .../Demigiant/DOTweenPro/DOTweenPro.dll | Bin 0 -> 16384 bytes .../Demigiant/DOTweenPro/DOTweenPro.dll.meta | 22 + .../DOTweenPro/DOTweenProShortcuts.cs | 90 + .../DOTweenPro/DOTweenProShortcuts.cs.meta | 8 + .../DOTweenPro/DOTweenTextMeshPro.cs | 1037 ++++ .../DOTweenPro/DOTweenTextMeshPro.cs.meta | 8 + .../Demigiant/DOTweenPro/DOTweenTk2d.cs | 247 + .../Demigiant/DOTweenPro/DOTweenTk2d.cs.meta | 8 + .../Plugins/Demigiant/DOTweenPro/Editor.meta | 5 + .../Editor/DOTweenAnimationInspector.cs | 764 +++ .../Editor/DOTweenAnimationInspector.cs.meta | 8 + .../Editor/DOTweenPreviewManager.cs | 265 + .../Editor/DOTweenPreviewManager.cs.meta | 8 + .../Editor/DOTweenPro.EditorScripts.asmdef | 11 + .../DOTweenPro.EditorScripts.asmdef.meta | 7 + .../DOTweenPro/Editor/DOTweenProEditor.XML | 18 + .../Editor/DOTweenProEditor.XML.meta | 4 + .../DOTweenPro/Editor/DOTweenProEditor.dll | Bin 0 -> 35840 bytes .../Editor/DOTweenProEditor.dll.meta | 22 + .../Plugins/Demigiant/DOTweenPro/readme.txt | 35 + .../Demigiant/DOTweenPro/readme.txt.meta | 4 + Assets/Plugins/Demigiant/DemiLib.meta | 21 + Assets/Plugins/Demigiant/DemiLib/Core.meta | 5 + .../Demigiant/DemiLib/Core/DemiLib.dll | Bin 0 -> 14848 bytes .../Demigiant/DemiLib/Core/DemiLib.dll.meta | 22 + .../Demigiant/DemiLib/Core/DemiLib.xml | 231 + .../Demigiant/DemiLib/Core/DemiLib.xml.meta | 4 + .../Demigiant/DemiLib/Core/Editor.meta | 5 + .../DemiLib/Core/Editor/DemiEditor.dll | Bin 0 -> 195072 bytes .../DemiLib/Core/Editor/DemiEditor.dll.meta | 22 + .../DemiLib/Core/Editor/DemiEditor.xml | 2405 ++++++++ .../DemiLib/Core/Editor/DemiEditor.xml.meta | 4 + .../Demigiant/DemiLib/Core/Editor/Imgs.meta | 5 + .../DemiLib/Core/Editor/Imgs/blackSquare.png | Bin 0 -> 109 bytes .../Core/Editor/Imgs/blackSquare.png.meta | 47 + .../Core/Editor/Imgs/blackSquareAlpha10.png | Bin 0 -> 109 bytes .../Editor/Imgs/blackSquareAlpha10.png.meta | 47 + .../Core/Editor/Imgs/blackSquareAlpha15.png | Bin 0 -> 109 bytes .../Editor/Imgs/blackSquareAlpha15.png.meta | 47 + .../Core/Editor/Imgs/blackSquareAlpha25.png | Bin 0 -> 109 bytes .../Editor/Imgs/blackSquareAlpha25.png.meta | 47 + .../Core/Editor/Imgs/blackSquareAlpha50.png | Bin 0 -> 109 bytes .../Editor/Imgs/blackSquareAlpha50.png.meta | 47 + .../Core/Editor/Imgs/blackSquareAlpha80.png | Bin 0 -> 109 bytes .../Editor/Imgs/blackSquareAlpha80.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/blueSquare.png | Bin 0 -> 106 bytes .../Core/Editor/Imgs/blueSquare.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/circle.png | Bin 0 -> 455 bytes .../DemiLib/Core/Editor/Imgs/circle.png.meta | 47 + .../Editor/Imgs/circle_dashedBorderEmpty.png | Bin 0 -> 673 bytes .../Imgs/circle_dashedBorderEmpty.png.meta | 68 + .../DemiLib/Core/Editor/Imgs/greenSquare.png | Bin 0 -> 106 bytes .../Core/Editor/Imgs/greenSquare.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/grid_bright.png | Bin 0 -> 222 bytes .../Core/Editor/Imgs/grid_bright.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/grid_dark.png | Bin 0 -> 216 bytes .../Core/Editor/Imgs/grid_dark.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alert.png | Bin 0 -> 540 bytes .../Core/Editor/Imgs/ico_alert.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignB.png | Bin 0 -> 131 bytes .../Core/Editor/Imgs/ico_alignB.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignBC.png | Bin 0 -> 158 bytes .../Core/Editor/Imgs/ico_alignBC.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignBL.png | Bin 0 -> 152 bytes .../Core/Editor/Imgs/ico_alignBL.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignBR.png | Bin 0 -> 150 bytes .../Core/Editor/Imgs/ico_alignBR.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignCC.png | Bin 0 -> 152 bytes .../Core/Editor/Imgs/ico_alignCC.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignCL.png | Bin 0 -> 158 bytes .../Core/Editor/Imgs/ico_alignCL.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignCR.png | Bin 0 -> 153 bytes .../Core/Editor/Imgs/ico_alignCR.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignHC.png | Bin 0 -> 147 bytes .../Core/Editor/Imgs/ico_alignHC.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignL.png | Bin 0 -> 136 bytes .../Core/Editor/Imgs/ico_alignL.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignR.png | Bin 0 -> 145 bytes .../Core/Editor/Imgs/ico_alignR.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignT.png | Bin 0 -> 129 bytes .../Core/Editor/Imgs/ico_alignT.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignTC.png | Bin 0 -> 164 bytes .../Core/Editor/Imgs/ico_alignTC.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignTL.png | Bin 0 -> 153 bytes .../Core/Editor/Imgs/ico_alignTL.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignTR.png | Bin 0 -> 155 bytes .../Core/Editor/Imgs/ico_alignTR.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignVC.png | Bin 0 -> 135 bytes .../Core/Editor/Imgs/ico_alignVC.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_camera.png | Bin 0 -> 206 bytes .../Core/Editor/Imgs/ico_camera.png.meta | 47 + .../Core/Editor/Imgs/ico_camera_border.png | Bin 0 -> 347 bytes .../Editor/Imgs/ico_camera_border.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_cog.png | Bin 0 -> 197 bytes .../DemiLib/Core/Editor/Imgs/ico_cog.png.meta | 47 + .../Core/Editor/Imgs/ico_cog_border.png | Bin 0 -> 376 bytes .../Core/Editor/Imgs/ico_cog_border.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_comment.png | Bin 0 -> 176 bytes .../Core/Editor/Imgs/ico_comment.png.meta | 47 + .../Core/Editor/Imgs/ico_comment_border.png | Bin 0 -> 426 bytes .../Editor/Imgs/ico_comment_border.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_delete.png | Bin 0 -> 145 bytes .../Core/Editor/Imgs/ico_delete.png.meta | 47 + .../Core/Editor/Imgs/ico_demigiant.png | Bin 0 -> 605 bytes .../Core/Editor/Imgs/ico_demigiant.png.meta | 47 + .../Editor/Imgs/ico_distributeHAlignT.png | Bin 0 -> 174 bytes .../Imgs/ico_distributeHAlignT.png.meta | 47 + .../Editor/Imgs/ico_distributeVAlignL.png | Bin 0 -> 197 bytes .../Imgs/ico_distributeVAlignL.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_doing.png | Bin 0 -> 838 bytes .../Core/Editor/Imgs/ico_doing.png.meta | 68 + .../DemiLib/Core/Editor/Imgs/ico_end.png | Bin 0 -> 475 bytes .../DemiLib/Core/Editor/Imgs/ico_end.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_flipV.png | Bin 0 -> 167 bytes .../Core/Editor/Imgs/ico_flipV.png.meta | 47 + .../Core/Editor/Imgs/ico_foldout_closed.png | Bin 0 -> 158 bytes .../Editor/Imgs/ico_foldout_closed.png.meta | 47 + .../Core/Editor/Imgs/ico_foldout_open.png | Bin 0 -> 170 bytes .../Editor/Imgs/ico_foldout_open.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_heart.png | Bin 0 -> 210 bytes .../Core/Editor/Imgs/ico_heart.png.meta | 47 + .../Core/Editor/Imgs/ico_heart_border.png | Bin 0 -> 307 bytes .../Editor/Imgs/ico_heart_border.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_light.png | Bin 0 -> 190 bytes .../Core/Editor/Imgs/ico_light.png.meta | 47 + .../Core/Editor/Imgs/ico_light_border.png | Bin 0 -> 292 bytes .../Editor/Imgs/ico_light_border.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_lock.png | Bin 0 -> 300 bytes .../Core/Editor/Imgs/ico_lock.png.meta | 47 + .../Core/Editor/Imgs/ico_lock_open.png | Bin 0 -> 293 bytes .../Core/Editor/Imgs/ico_lock_open.png.meta | 47 + .../Core/Editor/Imgs/ico_nodeArrow.png | Bin 0 -> 168 bytes .../Core/Editor/Imgs/ico_nodeArrow.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_ok.png | Bin 0 -> 715 bytes .../DemiLib/Core/Editor/Imgs/ico_ok.png.meta | 47 + .../Core/Editor/Imgs/ico_optionsDropdown.png | Bin 0 -> 135 bytes .../Editor/Imgs/ico_optionsDropdown.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_play.png | Bin 0 -> 256 bytes .../Core/Editor/Imgs/ico_play.png.meta | 47 + .../Core/Editor/Imgs/ico_play_border.png | Bin 0 -> 386 bytes .../Core/Editor/Imgs/ico_play_border.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_skull.png | Bin 0 -> 227 bytes .../Core/Editor/Imgs/ico_skull.png.meta | 47 + .../Core/Editor/Imgs/ico_skull_border.png | Bin 0 -> 332 bytes .../Editor/Imgs/ico_skull_border.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_star.png | Bin 0 -> 203 bytes .../Core/Editor/Imgs/ico_star.png.meta | 47 + .../Core/Editor/Imgs/ico_star_border.png | Bin 0 -> 323 bytes .../Core/Editor/Imgs/ico_star_border.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_todo.png | Bin 0 -> 674 bytes .../Core/Editor/Imgs/ico_todo.png.meta | 68 + .../DemiLib/Core/Editor/Imgs/ico_ui.png | Bin 0 -> 223 bytes .../DemiLib/Core/Editor/Imgs/ico_ui.png.meta | 47 + .../Core/Editor/Imgs/ico_ui_border.png | Bin 0 -> 259 bytes .../Core/Editor/Imgs/ico_ui_border.png.meta | 47 + .../Core/Editor/Imgs/ico_visibility.png | Bin 0 -> 298 bytes .../Core/Editor/Imgs/ico_visibility.png.meta | 47 + .../Core/Editor/Imgs/ico_visibility_off.png | Bin 0 -> 367 bytes .../Editor/Imgs/ico_visibility_off.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/orangeSquare.png | Bin 0 -> 104 bytes .../Core/Editor/Imgs/orangeSquare.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/project.meta | 5 + .../Core/Editor/Imgs/project/ico_atlas.png | Bin 0 -> 218 bytes .../Editor/Imgs/project/ico_atlas.png.meta | 47 + .../Core/Editor/Imgs/project/ico_audio.png | Bin 0 -> 338 bytes .../Editor/Imgs/project/ico_audio.png.meta | 47 + .../Core/Editor/Imgs/project/ico_bundle.png | Bin 0 -> 522 bytes .../Editor/Imgs/project/ico_bundle.png.meta | 47 + .../Core/Editor/Imgs/project/ico_cog.png | Bin 0 -> 406 bytes .../Core/Editor/Imgs/project/ico_cog.png.meta | 47 + .../Core/Editor/Imgs/project/ico_cross.png | Bin 0 -> 210 bytes .../Editor/Imgs/project/ico_cross.png.meta | 47 + .../Editor/Imgs/project/ico_demigiant.png | Bin 0 -> 388 bytes .../Imgs/project/ico_demigiant.png.meta | 47 + .../Core/Editor/Imgs/project/ico_folder.png | Bin 0 -> 150 bytes .../Editor/Imgs/project/ico_folder.png.meta | 47 + .../Core/Editor/Imgs/project/ico_fonts.png | Bin 0 -> 465 bytes .../Editor/Imgs/project/ico_fonts.png.meta | 47 + .../Core/Editor/Imgs/project/ico_heart.png | Bin 0 -> 334 bytes .../Editor/Imgs/project/ico_heart.png.meta | 47 + .../Editor/Imgs/project/ico_materials.png | Bin 0 -> 355 bytes .../Imgs/project/ico_materials.png.meta | 47 + .../Core/Editor/Imgs/project/ico_models.png | Bin 0 -> 380 bytes .../Editor/Imgs/project/ico_models.png.meta | 47 + .../Editor/Imgs/project/ico_particles.png | Bin 0 -> 493 bytes .../Imgs/project/ico_particles.png.meta | 47 + .../Core/Editor/Imgs/project/ico_play.png | Bin 0 -> 217 bytes .../Editor/Imgs/project/ico_play.png.meta | 47 + .../Core/Editor/Imgs/project/ico_prefab.png | Bin 0 -> 343 bytes .../Editor/Imgs/project/ico_prefab.png.meta | 47 + .../Core/Editor/Imgs/project/ico_scripts.png | Bin 0 -> 208 bytes .../Editor/Imgs/project/ico_scripts.png.meta | 47 + .../Core/Editor/Imgs/project/ico_shaders.png | Bin 0 -> 379 bytes .../Editor/Imgs/project/ico_shaders.png.meta | 47 + .../Core/Editor/Imgs/project/ico_skull.png | Bin 0 -> 368 bytes .../Editor/Imgs/project/ico_skull.png.meta | 47 + .../Core/Editor/Imgs/project/ico_star.png | Bin 0 -> 289 bytes .../Editor/Imgs/project/ico_star.png.meta | 47 + .../Core/Editor/Imgs/project/ico_terrains.png | Bin 0 -> 309 bytes .../Editor/Imgs/project/ico_terrains.png.meta | 47 + .../Core/Editor/Imgs/project/ico_textures.png | Bin 0 -> 278 bytes .../Editor/Imgs/project/ico_textures.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/purpleSquare.png | Bin 0 -> 106 bytes .../Core/Editor/Imgs/purpleSquare.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/redSquare.png | Bin 0 -> 106 bytes .../Core/Editor/Imgs/redSquare.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/squareBorder.png | Bin 0 -> 122 bytes .../Core/Editor/Imgs/squareBorder.png.meta | 47 + .../Core/Editor/Imgs/squareBorderAlpha15.png | Bin 0 -> 116 bytes .../Editor/Imgs/squareBorderAlpha15.png.meta | 47 + .../Core/Editor/Imgs/squareBorderCurved.png | Bin 0 -> 196 bytes .../Editor/Imgs/squareBorderCurved.png.meta | 47 + .../Core/Editor/Imgs/squareBorderCurved02.png | Bin 0 -> 281 bytes .../Editor/Imgs/squareBorderCurved02.png.meta | 47 + .../Imgs/squareBorderCurved02_darkBorders.png | Bin 0 -> 336 bytes .../squareBorderCurved02_darkBorders.png.meta | 47 + .../Editor/Imgs/squareBorderCurvedAlpha.png | Bin 0 -> 197 bytes .../Imgs/squareBorderCurvedAlpha.png.meta | 47 + .../Editor/Imgs/squareBorderCurvedEmpty.png | Bin 0 -> 180 bytes .../Imgs/squareBorderCurvedEmpty.png.meta | 47 + .../Editor/Imgs/squareBorderCurvedEmpty02.png | Bin 0 -> 217 bytes .../Imgs/squareBorderCurvedEmpty02.png.meta | 47 + .../Imgs/squareBorderCurvedEmptyThick.png | Bin 0 -> 233 bytes .../squareBorderCurvedEmptyThick.png.meta | 47 + .../Imgs/squareBorderCurved_darkBorders.png | Bin 0 -> 216 bytes .../squareBorderCurved_darkBorders.png.meta | 47 + .../squareBorderCurved_darkBordersAlpha.png | Bin 0 -> 200 bytes ...uareBorderCurved_darkBordersAlpha.png.meta | 47 + .../Core/Editor/Imgs/squareBorderEmpty.png | Bin 0 -> 114 bytes .../Editor/Imgs/squareBorderEmpty.png.meta | 47 + .../Core/Editor/Imgs/squareBorderEmpty01.png | Bin 0 -> 114 bytes .../Editor/Imgs/squareBorderEmpty01.png.meta | 47 + .../Core/Editor/Imgs/squareBorderEmpty02.png | Bin 0 -> 121 bytes .../Editor/Imgs/squareBorderEmpty02.png.meta | 47 + .../Core/Editor/Imgs/squareBorderEmpty03.png | Bin 0 -> 122 bytes .../Editor/Imgs/squareBorderEmpty03.png.meta | 47 + .../Editor/Imgs/squareBorderThickEmpty.png | Bin 0 -> 121 bytes .../Imgs/squareBorderThickEmpty.png.meta | 47 + .../Editor/Imgs/squareBorderThickerEmpty.png | Bin 0 -> 122 bytes .../Imgs/squareBorderThickerEmpty.png.meta | 47 + .../Core/Editor/Imgs/squareCorners03.png | Bin 0 -> 133 bytes .../Core/Editor/Imgs/squareCorners03.png.meta | 47 + .../Core/Editor/Imgs/squareCornersEmpty02.png | Bin 0 -> 131 bytes .../Editor/Imgs/squareCornersEmpty02.png.meta | 47 + .../Core/Editor/Imgs/tileBars_empty.png | Bin 0 -> 236 bytes .../Core/Editor/Imgs/tileBars_empty.png.meta | 47 + .../Core/Editor/Imgs/tileBars_slanted.png | Bin 0 -> 285 bytes .../Editor/Imgs/tileBars_slanted.png.meta | 47 + .../Editor/Imgs/tileBars_slanted_alpha.png | Bin 0 -> 266 bytes .../Imgs/tileBars_slanted_alpha.png.meta | 47 + .../Core/Editor/Imgs/tileCheckerboard.png | Bin 0 -> 397 bytes .../Editor/Imgs/tileCheckerboard.png.meta | 92 + .../Core/Editor/Imgs/transparentSquare.png | Bin 0 -> 97 bytes .../Editor/Imgs/transparentSquare.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/whiteDot.png | Bin 0 -> 148 bytes .../Core/Editor/Imgs/whiteDot.png.meta | 47 + .../Core/Editor/Imgs/whiteDot_darkBorder.png | Bin 0 -> 219 bytes .../Editor/Imgs/whiteDot_darkBorder.png.meta | 47 + .../Editor/Imgs/whiteDot_whiteBorderAlpha.png | Bin 0 -> 176 bytes .../Imgs/whiteDot_whiteBorderAlpha.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/whiteSquare.png | Bin 0 -> 103 bytes .../Core/Editor/Imgs/whiteSquare.png.meta | 47 + .../Core/Editor/Imgs/whiteSquareAlpha10.png | Bin 0 -> 107 bytes .../Editor/Imgs/whiteSquareAlpha10.png.meta | 47 + .../Core/Editor/Imgs/whiteSquareAlpha15.png | Bin 0 -> 109 bytes .../Editor/Imgs/whiteSquareAlpha15.png.meta | 47 + .../Core/Editor/Imgs/whiteSquareAlpha25.png | Bin 0 -> 107 bytes .../Editor/Imgs/whiteSquareAlpha25.png.meta | 47 + .../Core/Editor/Imgs/whiteSquareAlpha50.png | Bin 0 -> 107 bytes .../Editor/Imgs/whiteSquareAlpha50.png.meta | 47 + .../Core/Editor/Imgs/whiteSquareAlpha80.png | Bin 0 -> 110 bytes .../Editor/Imgs/whiteSquareAlpha80.png.meta | 47 + .../Core/Editor/Imgs/whiteSquareCurved.png | Bin 0 -> 144 bytes .../Editor/Imgs/whiteSquareCurved.png.meta | 68 + .../Core/Editor/Imgs/whiteSquareCurved02.png | Bin 0 -> 190 bytes .../Editor/Imgs/whiteSquareCurved02.png.meta | 68 + .../Editor/Imgs/whiteSquare_fadeOut_bt.png | Bin 0 -> 131 bytes .../Imgs/whiteSquare_fadeOut_bt.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/yellowSquare.png | Bin 0 -> 106 bytes .../Core/Editor/Imgs/yellowSquare.png.meta | 47 + .../Plugins/Demigiant/readme_DOTweenPro.txt | 35 + .../Demigiant/readme_DOTweenPro.txt.meta | 19 + .../Odin Inspector/Config/Resources.meta | 8 + .../Config/Resources/Sirenix.meta | 8 + .../Sirenix/GlobalSerializationConfig.asset | 22 + .../GlobalSerializationConfig.asset.meta | 8 + Assets/Resources/DOTweenSettings.asset | 54 + Assets/Resources/DOTweenSettings.asset.meta | 8 + 379 files changed, 27988 insertions(+) create mode 100644 Assets/06.UIFarme/Editor.meta create mode 100644 Assets/06.UIFarme/Editor/UIFarme.Editor.asmdef create mode 100644 Assets/06.UIFarme/Editor/UIFarme.Editor.asmdef.meta create mode 100644 Assets/06.UIFarme/RunTime.meta create mode 100644 Assets/06.UIFarme/RunTime/Base.meta create mode 100644 Assets/06.UIFarme/RunTime/Base/BasePanel.cs create mode 100644 Assets/06.UIFarme/RunTime/Base/BasePanel.cs.meta create mode 100644 Assets/06.UIFarme/RunTime/Manager.meta create mode 100644 Assets/06.UIFarme/RunTime/Manager/PanelSystem.cs create mode 100644 Assets/06.UIFarme/RunTime/Manager/PanelSystem.cs.meta create mode 100644 Assets/06.UIFarme/RunTime/UIFarme.RunTime.asmdef create mode 100644 Assets/06.UIFarme/RunTime/UIFarme.RunTime.asmdef.meta create mode 100644 Assets/06.UIFarme/RunTime/UITool.meta create mode 100644 Assets/06.UIFarme/RunTime/UITool/UITool.cs create mode 100644 Assets/06.UIFarme/RunTime/UITool/UITool.cs.meta create mode 100644 Assets/06.UIFarme/package.json create mode 100644 Assets/06.UIFarme/package.json.meta create mode 100644 Assets/Plugins/Demigiant.meta create mode 100644 Assets/Plugins/Demigiant/DOTween.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/DOTween.XML create mode 100644 Assets/Plugins/Demigiant/DOTween/DOTween.XML.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/DOTween.dll create mode 100644 Assets/Plugins/Demigiant/DOTween/DOTween.dll.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.XML create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.XML.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/Imgs.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenMiniIcon.png create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer.png create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer.png.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer_dark.png create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer_dark.png.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Header.jpg create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Header.jpg.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTween.Modules.asmdef create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTween.Modules.asmdef.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/readme.txt create mode 100644 Assets/Plugins/Demigiant/DOTween/readme.txt.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro Examples.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity create mode 100644 Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting create mode 100644 Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity create mode 100644 Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting create mode 100644 Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPath.unity create mode 100644 Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPath.unity.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting create mode 100644 Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro Examples/Examples Assets.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro Examples/Examples Assets/dotweenpro_logo.png create mode 100644 Assets/Plugins/Demigiant/DOTweenPro Examples/Examples Assets/dotweenpro_logo.png.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenAnimation.cs create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenAnimation.cs.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeAudio.cs create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeAudio.cs.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeUnityExtended.cs create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeUnityExtended.cs.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.Scripts.asmdef create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.Scripts.asmdef.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.XML create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.XML.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.dll create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.dll.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenProShortcuts.cs create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenProShortcuts.cs.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenTk2d.cs create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenTk2d.cs.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/Editor.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPro.EditorScripts.asmdef create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPro.EditorScripts.asmdef.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.meta create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/readme.txt create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/readme.txt.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.dll create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.dll.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.xml create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.xml.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.dll create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.xml create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.xml.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquare.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquare.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha10.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha10.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha15.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha15.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha25.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha25.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha50.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha50.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha80.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha80.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blueSquare.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blueSquare.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle_dashedBorderEmpty.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle_dashedBorderEmpty.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/greenSquare.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/greenSquare.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/grid_bright.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/grid_bright.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/grid_dark.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/grid_dark.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alert.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alert.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignB.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignB.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBC.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBC.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBL.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBL.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBR.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBR.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCC.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCC.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCL.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCL.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCR.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCR.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignHC.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignHC.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignL.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignL.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignR.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignR.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignT.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignT.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTC.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTC.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTL.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTL.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTR.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTR.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignVC.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignVC.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera_border.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera_border.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog_border.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog_border.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment_border.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment_border.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_delete.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_delete.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_demigiant.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_demigiant.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_distributeHAlignT.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_distributeHAlignT.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_distributeVAlignL.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_distributeVAlignL.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_doing.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_doing.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_end.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_end.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_flipV.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_flipV.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_foldout_closed.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_foldout_closed.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_foldout_open.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_foldout_open.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart_border.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart_border.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_light.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_light.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_light_border.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_light_border.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_lock.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_lock.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_lock_open.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_lock_open.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_nodeArrow.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_nodeArrow.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ok.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ok.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_optionsDropdown.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_optionsDropdown.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_play.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_play.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_play_border.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_play_border.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull_border.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull_border.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_star.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_star.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_star_border.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_star_border.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_todo.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_todo.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui_border.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui_border.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_visibility.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_visibility.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_visibility_off.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_visibility_off.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/orangeSquare.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/orangeSquare.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_atlas.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_atlas.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_audio.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_audio.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_bundle.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_bundle.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cog.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cog.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cross.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cross.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_demigiant.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_demigiant.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_folder.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_folder.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_fonts.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_fonts.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_heart.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_heart.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_materials.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_materials.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_models.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_models.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_particles.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_particles.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_play.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_play.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_prefab.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_prefab.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_scripts.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_scripts.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_shaders.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_shaders.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_skull.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_skull.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_star.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_star.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_terrains.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_terrains.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_textures.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_textures.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/purpleSquare.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/purpleSquare.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/redSquare.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/redSquare.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorder.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorder.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderAlpha15.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderAlpha15.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02_darkBorders.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02_darkBorders.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedAlpha.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedAlpha.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty02.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty02.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmptyThick.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmptyThick.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBorders.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBorders.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBordersAlpha.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBordersAlpha.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty01.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty01.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty02.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty02.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty03.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty03.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickEmpty.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickEmpty.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickerEmpty.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickerEmpty.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareCorners03.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareCorners03.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareCornersEmpty02.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareCornersEmpty02.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_empty.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_empty.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted_alpha.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted_alpha.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileCheckerboard.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileCheckerboard.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/transparentSquare.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/transparentSquare.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_darkBorder.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_darkBorder.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_whiteBorderAlpha.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_whiteBorderAlpha.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha10.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha10.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha15.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha15.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha25.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha25.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha50.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha50.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha80.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha80.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareCurved.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareCurved.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareCurved02.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareCurved02.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare_fadeOut_bt.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare_fadeOut_bt.png.meta create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/yellowSquare.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/yellowSquare.png.meta create mode 100644 Assets/Plugins/Demigiant/readme_DOTweenPro.txt create mode 100644 Assets/Plugins/Demigiant/readme_DOTweenPro.txt.meta create mode 100644 Assets/Plugins/Sirenix/Odin Inspector/Config/Resources.meta create mode 100644 Assets/Plugins/Sirenix/Odin Inspector/Config/Resources/Sirenix.meta create mode 100644 Assets/Plugins/Sirenix/Odin Inspector/Config/Resources/Sirenix/GlobalSerializationConfig.asset create mode 100644 Assets/Plugins/Sirenix/Odin Inspector/Config/Resources/Sirenix/GlobalSerializationConfig.asset.meta create mode 100644 Assets/Resources/DOTweenSettings.asset create mode 100644 Assets/Resources/DOTweenSettings.asset.meta diff --git a/Assets/06.UIFarme/Editor.meta b/Assets/06.UIFarme/Editor.meta new file mode 100644 index 0000000..293a95e --- /dev/null +++ b/Assets/06.UIFarme/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07a23b2035fb4e9429f158b54adfc2c7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/06.UIFarme/Editor/UIFarme.Editor.asmdef b/Assets/06.UIFarme/Editor/UIFarme.Editor.asmdef new file mode 100644 index 0000000..58838e4 --- /dev/null +++ b/Assets/06.UIFarme/Editor/UIFarme.Editor.asmdef @@ -0,0 +1,16 @@ +{ + "name": "UIFarme.Editor", + "rootNamespace": "", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/06.UIFarme/Editor/UIFarme.Editor.asmdef.meta b/Assets/06.UIFarme/Editor/UIFarme.Editor.asmdef.meta new file mode 100644 index 0000000..1ca21e3 --- /dev/null +++ b/Assets/06.UIFarme/Editor/UIFarme.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7993b466f8c5d9649a198003062d5429 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/06.UIFarme/RunTime.meta b/Assets/06.UIFarme/RunTime.meta new file mode 100644 index 0000000..e5dcd05 --- /dev/null +++ b/Assets/06.UIFarme/RunTime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5e343365c5f97e647bc8d60d842c49bd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/06.UIFarme/RunTime/Base.meta b/Assets/06.UIFarme/RunTime/Base.meta new file mode 100644 index 0000000..75e6435 --- /dev/null +++ b/Assets/06.UIFarme/RunTime/Base.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: da2206dfe63228d4983a39725c0e940c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/06.UIFarme/RunTime/Base/BasePanel.cs b/Assets/06.UIFarme/RunTime/Base/BasePanel.cs new file mode 100644 index 0000000..0484544 --- /dev/null +++ b/Assets/06.UIFarme/RunTime/Base/BasePanel.cs @@ -0,0 +1,218 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using DG.Tweening; +using UnityEngine; +using UnityEngine.UI; +using YooAsset; + +namespace Stary.Evo.UIFarme +{ + public interface IBasePanel : IController + { + /// + /// UI信息 + /// + string UIPath { get; set; } + + /// + /// 绑定这个面板的实例 + /// + void Initialize(GameObject panelGo); + + /// + /// 初始化面板管理器 + /// + /// + void Initialize(IPanelSystem sysytem); + + /// + /// 虚方法,UI进入时执行的操作,只会执行一次 + /// + void OnEnter(); + + /// + /// 虚方法,UI暂停时执行的操作,只会执行一次 + /// + void OnPause(); + + /// + /// 虚方法,UI继续时执行的操作,只会执行一次 + /// + void OnResume(); + + /// + /// 虚方法,UI退出时执行的操作,只会执行一次 + /// + void OnExit(float delay = 0f); + + void OnDestroy(); + + + /// + /// 生成/获取一个UI对象 + /// + /// ui信息 + /// + Task CreatePanel(); + + /// + /// 销毁一个Ui对象 + /// + /// + void DestoryUI(); + + void SetPanelParent(Transform parent); + } + + /// + ///所有UI面板的父类,包含UI面板的状态信息 + /// + public abstract class BasePanel : IBasePanel + { + /// + /// UI信息 + /// + public string UIPath { get; set; } + + /// + /// 面板管理器 + /// + protected IPanelSystem PanelSystem { get; private set; } + + /// + /// 生成的父物体 + /// + protected Transform panelParent{get; private set;} + + + /// + /// 缓存该面板所有的Button,Toggle,Slider,InputField,Dropdown,ScroolBar + /// + private Dictionary selectableDict; + + protected CanvasGroup canvasGroup{get;private set;} + + protected GameObject activePanel{get;private set;} + + protected BasePanel(string uiPath) + { + UIPath = uiPath; + selectableDict = new Dictionary(); + } + + public virtual void Initialize(GameObject panelGo) + { + activePanel = panelGo; + Selectable[] selectables = activePanel.GetComponentsInChildren(true); + foreach (Selectable item in selectables) + { + selectableDict[item.name] = item; + } + + canvasGroup = UITool.GetOrAddComponent(activePanel); + canvasGroup.alpha = 0f; + } + + public virtual void Initialize(IPanelSystem sysytem) + { + PanelSystem = sysytem; + } + + + public virtual void OnEnter() + { + activePanel.SetActive(true); + canvasGroup.blocksRaycasts = true; + canvasGroup.DOFade(1f, 1f); + } + + public virtual void OnPause() + { + canvasGroup.blocksRaycasts = false; + } + + public virtual void OnResume() + { + canvasGroup.blocksRaycasts = true; + } + + public virtual void OnExit(float delay = 0f) + { + canvasGroup.DOFade(0f, delay).OnComplete(() => + { + activePanel.SetActive(false); + canvasGroup.blocksRaycasts = false; + }); + } + + public virtual void OnDestroy() + { + DestoryUI(); + } + + + public async Task CreatePanel() + { + if (panelParent == null) + { + Debug.LogError($"UnityEvo:parent为空,{this.UIPath}无法创建,进程已中断,请检查!!!!!"); + return null; + } + + if (!panelParent.GetComponent()) + { + Debug.LogError($"UnityEvo:panelParent上不存在Canvas组件,{this.UIPath}无法创建,进程已中断,请检查!!!!!"); + return null; + } + + if (this.activePanel != null) + { + return activePanel.gameObject; + } + + var handle= YooAssets.LoadAssetAsync(UIPath); + await handle.Task; + + activePanel = GameObject.Instantiate(handle.AssetObject as GameObject,panelParent); + activePanel.name = this.GetType().Name; + return activePanel; + } + + public void DestoryUI() + { + if (activePanel != null) + { + GameObject.Destroy(activePanel); + PanelSystem.Get_Dic().Remove(this.GetType().Name); + } + } + + public void SetPanelParent(Transform parent) + { + panelParent = parent; + } + + /// + /// 获取组件:Button,Toggle,Slider,InputField,Dropdown,ScroolBar + /// + /// + /// + /// + protected T GetComp(string name) where T : Selectable + { + selectableDict.TryGetValue(name, out Selectable t); + if (t == null) + { + Debug.LogError($"{this.GetType()}---{name}:在selectableDict不存在"); + } + return t as T; + } + + public IArchitecture GetArchitecture() + { + return PanelSystem.GetArchitecture(); + } + } + +} + diff --git a/Assets/06.UIFarme/RunTime/Base/BasePanel.cs.meta b/Assets/06.UIFarme/RunTime/Base/BasePanel.cs.meta new file mode 100644 index 0000000..832f410 --- /dev/null +++ b/Assets/06.UIFarme/RunTime/Base/BasePanel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5255d0f8bf44ff44c8ce65055fa5b28f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/06.UIFarme/RunTime/Manager.meta b/Assets/06.UIFarme/RunTime/Manager.meta new file mode 100644 index 0000000..8f42dcb --- /dev/null +++ b/Assets/06.UIFarme/RunTime/Manager.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0a3652d3c1fe0e54c8d3253df95b811b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/06.UIFarme/RunTime/Manager/PanelSystem.cs b/Assets/06.UIFarme/RunTime/Manager/PanelSystem.cs new file mode 100644 index 0000000..227a7d6 --- /dev/null +++ b/Assets/06.UIFarme/RunTime/Manager/PanelSystem.cs @@ -0,0 +1,205 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using UnityEngine; + +namespace Stary.Evo.UIFarme +{ + public interface IPanelSystem : ISystem + { + /// + /// UI的入栈操作,此操作会显示一个面板 + /// + Task PushQueue(Transform parent) where T : IBasePanel, new(); + + /// + /// UI的入栈操作,此操作会显示一个面板 + /// + Task PushStack(Transform parent) where T : IBasePanel, new(); + + /// + /// 执行面板的出栈操作,此操作会执行面板的OnExit方法 + /// + void PopQueue() where T : IBasePanel, new(); + + /// + /// 执行面板的出栈操作,此操作会执行面板的OnExit方法 + /// + void PopStack(); + + /// + /// 面板全部出栈此操作会执行面板的OnExit方法 + /// + void PopAll(); + + /// + /// 返回存储面板实例的字典 + /// + /// + Dictionary Get_Dic(); + + IBasePanel GetPanel(string PanelName); + } + + /// + /// 面板管理器,用栈来存储UI + /// + public class PanelSystem : AbstractSystem, IPanelSystem + { + /// + /// 存储普通UI面板 + /// + private List queuePanel; + + /// + /// 存储堆栈UI面板 + /// + private Stack stackPanel; + + /// + /// 存储所有UI信息的字典,每个UI信息都会对应一个GameObject + /// + private Dictionary dicUI; + + + protected override void OnInit() + { + stackPanel = new Stack(); + queuePanel = new List(); + dicUI = new Dictionary(); + } + + + public async Task PushQueue(Transform parent) where T : IBasePanel, new() + { + string panelName = typeof(T).Name; + + IBasePanel nextPanel = null; + if (!dicUI.ContainsKey(panelName)) + { + nextPanel = new T(); + nextPanel.Initialize(this); + nextPanel.SetPanelParent(parent); + GameObject panelGo = await nextPanel.CreatePanel(); + ///生成面板后,进行初始化操作 + nextPanel.Initialize(panelGo); + dicUI.Add(panelName, nextPanel); + } + else + { + for (int i = 0; i < queuePanel.Count; i++) + { + if (queuePanel[i].GetType().Name == panelName) + { + return; + } + } + + nextPanel = dicUI[panelName]; + } + + queuePanel.Add(nextPanel); + nextPanel.OnEnter(); + //TOOD + } + + public async Task PushStack(Transform parent) where T : IBasePanel, new() + { + string panelName = typeof(T).Name; + + IBasePanel nextPanel = null; + if (!dicUI.ContainsKey(panelName)) + { + nextPanel = new T(); + nextPanel.Initialize(this); + nextPanel.SetPanelParent(parent); + GameObject panelGo = await nextPanel.CreatePanel(); + ///生成面板后,进行初始化操作 + nextPanel.Initialize(panelGo); + + dicUI.Add(panelName, nextPanel); + } + else + { + for (int i = 0; i < stackPanel.Count; i++) + { + if (queuePanel[i].GetType().Name == panelName) + { + return; + } + } + + nextPanel = dicUI[panelName]; + } + + stackPanel.Push(nextPanel); + nextPanel.OnEnter(); + } + + + + public void PopQueue() where T : IBasePanel, new() + { + string panelName = typeof(T).Name; + + for (int i = 0; i < queuePanel.Count; i++) + { + if (queuePanel[i].GetType().Name == panelName) + { + queuePanel[i].OnExit(); + queuePanel.RemoveAt(i); + } + } + } + + public void PopStack() + { + if (stackPanel.Count > 0) + { + stackPanel.Pop().OnExit(); + } + + if (stackPanel.Count > 0) + { + stackPanel.Peek().OnResume(); + } + } + + public void PopAll() + { + while (stackPanel.Count > 0) + stackPanel.Pop().OnExit(); + foreach (var panel in queuePanel) + { + panel.OnExit(); + } + + queuePanel.Clear(); + } + + + public Dictionary Get_Dic() + { + if (dicUI.Count > 0) + { + return dicUI; + } + + return null; + } + + public IBasePanel GetPanel(string PanelName) + { + if (dicUI.ContainsKey(PanelName)) + { + return dicUI[PanelName]; + } + + return null; + } + + public override void Dispose() + { + PopAll(); + } + } +} \ No newline at end of file diff --git a/Assets/06.UIFarme/RunTime/Manager/PanelSystem.cs.meta b/Assets/06.UIFarme/RunTime/Manager/PanelSystem.cs.meta new file mode 100644 index 0000000..95ab5da --- /dev/null +++ b/Assets/06.UIFarme/RunTime/Manager/PanelSystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dd370aabf636e1747a77b8071d92de0a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/06.UIFarme/RunTime/UIFarme.RunTime.asmdef b/Assets/06.UIFarme/RunTime/UIFarme.RunTime.asmdef new file mode 100644 index 0000000..d0dc529 --- /dev/null +++ b/Assets/06.UIFarme/RunTime/UIFarme.RunTime.asmdef @@ -0,0 +1,19 @@ +{ + "name": "UIFarme.RunTime", + "rootNamespace": "", + "references": [ + "GUID:d1a793c2b6959e04ea45b972eaa369c8", + "GUID:e34a5702dd353724aa315fb8011f08c3", + "GUID:fad681b9bfe621d4fa07f4f69c311443", + "GUID:51491f1e8b9b8204a9f0c3d3935f742d" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/06.UIFarme/RunTime/UIFarme.RunTime.asmdef.meta b/Assets/06.UIFarme/RunTime/UIFarme.RunTime.asmdef.meta new file mode 100644 index 0000000..5aac621 --- /dev/null +++ b/Assets/06.UIFarme/RunTime/UIFarme.RunTime.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6a5d7223300a2ef48aa366288a446472 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/06.UIFarme/RunTime/UITool.meta b/Assets/06.UIFarme/RunTime/UITool.meta new file mode 100644 index 0000000..2b14319 --- /dev/null +++ b/Assets/06.UIFarme/RunTime/UITool.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ee00776e2fe511d418a91053db3d27fa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/06.UIFarme/RunTime/UITool/UITool.cs b/Assets/06.UIFarme/RunTime/UITool/UITool.cs new file mode 100644 index 0000000..199230e --- /dev/null +++ b/Assets/06.UIFarme/RunTime/UITool/UITool.cs @@ -0,0 +1,50 @@ +using UnityEngine; +/// +/// UI管理工具,包括获取某个子对象组件的操作 +/// +public class UITool +{ + /// + /// 给当前的活动面板获取或者添加一个组件 + /// + /// 组件类型 + /// 组件 + public static T GetOrAddComponent(GameObject activeGo) where T : Component + { + if (activeGo.GetComponent() == null) + activeGo.AddComponent(); + + return activeGo.GetComponent(); + } + /// + /// 根据名称获取一个子对象的组件 + /// + /// + /// + /// + public static T FindChild(GameObject activeGo, string name) + { + Transform child = null; + Transform[] children = activeGo.GetComponentsInChildren(true); + for (int i = 0; i < children.Length; i++) + { + if (children[i].name.Equals(name)) + { + child = children[i]; + break; + } + } + if (child != null) + { + return child.GetComponent(); + } + else + { + Debug.Log("未找到指定的组件,指定的组件为:" + typeof(T).FullName + "-----" + activeGo); + return default(T); + } + } +} + + + diff --git a/Assets/06.UIFarme/RunTime/UITool/UITool.cs.meta b/Assets/06.UIFarme/RunTime/UITool/UITool.cs.meta new file mode 100644 index 0000000..db9a84c --- /dev/null +++ b/Assets/06.UIFarme/RunTime/UITool/UITool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 47109d36e16c5ff49b9d9c535cce542f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/06.UIFarme/package.json b/Assets/06.UIFarme/package.json new file mode 100644 index 0000000..4d41ae8 --- /dev/null +++ b/Assets/06.UIFarme/package.json @@ -0,0 +1,20 @@ +{ + "name": "com.staryevo.uifarme", + "displayName": "06.UIFarme", + "version": "1.0.0", + "description": "UI模板框架工具", + "unity": "2021.3", + "unityRelease": "30f1", + "keywords": [ + "unity", + "scirpt" + ], + "repository": { + "type": "git", + "url": "http://192.168.31.100:8088/framework/xosmopluginlibrary.git#02.InformationSave" + }, + "author": { + "name": "staryEvo", + "url": "https://www.unity3d.com" + } +} diff --git a/Assets/06.UIFarme/package.json.meta b/Assets/06.UIFarme/package.json.meta new file mode 100644 index 0000000..762aa81 --- /dev/null +++ b/Assets/06.UIFarme/package.json.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: bef7c3ab950c484290dbe44b633b0357 +timeCreated: 1744280004 \ No newline at end of file diff --git a/Assets/Plugins/Demigiant.meta b/Assets/Plugins/Demigiant.meta new file mode 100644 index 0000000..cfb2591 --- /dev/null +++ b/Assets/Plugins/Demigiant.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 9f80792dcd2829e41b1f075e7245ca5b +labels: +- Tween +- Tweening +- Animation +- HOTween +- Paths +- VisualScripting +- VisualEditor +- iTween +- Ease +- Easing +- Shake +- Punch +- 2DToolkit +- TextMeshPro +- Text +- LeanTween +- DFTween +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DOTween.meta b/Assets/Plugins/Demigiant/DOTween.meta new file mode 100644 index 0000000..cbebc39 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: a50bd9a009c8dfc4ebd88cc8101225a7 +labels: +- Tween +- Tweening +- Animation +- HOTween +- Paths +- iTween +- DFTween +- LeanTween +- Ease +- Easing +- Shake +- Punch +- 2DToolkit +- TextMeshPro +- Text +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DOTween/DOTween.XML b/Assets/Plugins/Demigiant/DOTween/DOTween.XML new file mode 100644 index 0000000..46e79c4 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/DOTween.XML @@ -0,0 +1,3089 @@ + + + + DOTween + + + + + Types of autoPlay behaviours + + + + No tween is automatically played + + + Only Sequences are automatically played + + + Only Tweeners are automatically played + + + All tweens are automatically played + + + + What axis to constrain in case of Vector tweens + + + + Called the first time the tween is set in a playing state, after any eventual delay + + + + Used in place of System.Func, which is not available in mscorlib. + + + + + Used in place of System.Action. + + + + + Public so it can be used by lose scripts related to DOTween (like DOTweenAnimation) + + + + + Used to separate DOTween class from the MonoBehaviour instance (in order to use static constructors on DOTween). + Contains all instance-based methods + + + + Used internally inside Unity Editor, as a trick to update DOTween's inspector at every frame + + + + Directly sets the current max capacity of Tweeners and Sequences + (meaning how many Tweeners and Sequences can be running at the same time), + so that DOTween doesn't need to automatically increase them in case the max is reached + (which might lead to hiccups when that happens). + Sequences capacity must be less or equal to Tweeners capacity + (if you pass a low Tweener capacity it will be automatically increased to match the Sequence's). + Beware: use this method only when there are no tweens running. + + Max Tweeners capacity. + Default: 200 + Max Sequences capacity. + Default: 50 + + + + This class contains a C# port of the easing equations created by Robert Penner (http://robertpenner.com/easing). + + + + + Easing equation function for a bounce (exponentially decaying parabolic bounce) easing in: accelerating from zero velocity. + + + Current time (in frames or seconds). + + + Expected easing duration (in frames or seconds). + + Unused: here to keep same delegate for all ease types. + Unused: here to keep same delegate for all ease types. + + The eased value. + + + + + Easing equation function for a bounce (exponentially decaying parabolic bounce) easing out: decelerating from zero velocity. + + + Current time (in frames or seconds). + + + Expected easing duration (in frames or seconds). + + Unused: here to keep same delegate for all ease types. + Unused: here to keep same delegate for all ease types. + + The eased value. + + + + + Easing equation function for a bounce (exponentially decaying parabolic bounce) easing in/out: acceleration until halfway, then deceleration. + + + Current time (in frames or seconds). + + + Expected easing duration (in frames or seconds). + + Unused: here to keep same delegate for all ease types. + Unused: here to keep same delegate for all ease types. + + The eased value. + + + + + Returns a value between 0 and 1 (inclusive) based on the elapsed time and ease selected + + + + + Returns a value between 0 and 1 (inclusive) based on the elapsed time and ease selected + + + + + Used to interpret AnimationCurves as eases. + Public so it can be used by external ease factories + + + + + Behaviour in case a tween nested inside a Sequence fails and is captured by safe mode + + + + If the Sequence contains other elements, kill the failed tween but preserve the rest + + + Kill the whole Sequence + + + + Log types thrown by errors captured and prevented by safe mode + + + + No logs. NOT RECOMMENDED + + + Throw a normal log + + + Throw a warning log (default) + + + Throw an error log + + + + Additional notices passed to plugins when updating. + Public so it can be used by custom plugins. Internally, only PathPlugin uses it + + + + + None + + + + + Lets the plugin know that we restarted or rewinded + + + + + OnRewind callback behaviour (can only be set via DOTween's Utility Panel) + + + + + When calling Rewind or PlayBackwards/SmoothRewind, OnRewind callbacks will be fired only if the tween isn't already rewinded + + + + + When calling Rewind, OnRewind callbacks will always be fired, even if the tween is already rewinded. + When calling PlayBackwards/SmoothRewind instead, OnRewind callbacks will be fired only if the tween isn't already rewinded + + + + + When calling Rewind or PlayBackwards/SmoothRewind, OnRewind callbacks will always be fired, even if the tween is already rewinded + + + + + Public only so custom shortcuts can access some of these methods + + + + + INTERNAL: used by DO shortcuts and Modules to set special startup mode + + + + + INTERNAL: used by DO shortcuts and Modules to set the tween as blendable + + + + + INTERNAL: used by DO shortcuts and Modules to prevent a tween from using a From setup even if passed + + + + + Used to dispatch commands that need to be captured externally, usually by Modules + + + + + Various utils + + + + + Returns a Vector3 with z = 0 + + + + + Returns the 2D angle between two vectors + + + + + Returns a point on a circle with the given center and radius, + using Unity's circle coordinates (0° points up and increases clockwise) + + + + + Uses approximate equality on each axis instead of Unity's Vector3 equality, + because the latter fails (in some cases) when assigning a Vector3 to a transform.position and then checking it. + + + + + Looks for the type within all possible project assembly names + + + + NO-GC METHOD: changes the start value of a tween and rewinds it (without pausing it). + Has no effect with tweens that are inside Sequences + The new start value + If bigger than 0 applies it as the new tween duration + + + NO-GC METHOD: changes the end value of a tween and rewinds it (without pausing it). + Has no effect with tweens that are inside Sequences + The new end value + If TRUE the start value will become the current target's value, otherwise it will stay the same + + + NO-GC METHOD: changes the end value of a tween and rewinds it (without pausing it). + Has no effect with tweens that are inside Sequences + The new end value + If bigger than 0 applies it as the new tween duration + If TRUE the start value will become the current target's value, otherwise it will stay the same + + + NO-GC METHOD: changes the start and end value of a tween and rewinds it (without pausing it). + Has no effect with tweens that are inside Sequences + The new start value + The new end value + If bigger than 0 applies it as the new tween duration + + + + Struct that stores two colors (used for LineRenderer tweens) + + + + + Used for tween callbacks + + + + + Used for tween callbacks + + + + + Used for custom and animationCurve-based ease functions. Must return a value between 0 and 1. + + + + + Straight Quaternion plugin. Instead of using Vector3 values accepts Quaternion values directly. + Beware: doesn't work with LoopType.Incremental (neither directly nor if inside a LoopType.Incremental Sequence). + To use it, call DOTween.To with the plugin parameter overload, passing it PureQuaternionPlugin.Plug() as first parameter + (do not use any of the other public PureQuaternionPlugin methods): + DOTween.To(PureQuaternionPlugin.Plug(), ()=> myQuaternionProperty, x=> myQuaternionProperty = x, myQuaternionEndValue, duration); + + + + + Plug this plugin inside a DOTween.To call. + Example: + DOTween.To(PureQuaternionPlugin.Plug(), ()=> myQuaternionProperty, x=> myQuaternionProperty = x, myQuaternionEndValue, duration); + + + + INTERNAL: do not use + + + INTERNAL: do not use + + + INTERNAL: do not use + + + INTERNAL: do not use + + + INTERNAL: do not use + + + INTERNAL: do not use + + + INTERNAL: do not use + + + INTERNAL: do not use + + + + Extra non-tweening-related curve methods + + + + + Cubic bezier curve methods + + + + + Calculates a point along the given Cubic Bezier segment-curve. + + Segment start point + Start point's control point/handle + Segment end point + End point's control point/handle + 0-1 percentage along which to retrieve point + + + + Returns an array containing a series of points along the given Cubic Bezier segment-curve. + + Start point + Start point's control point/handle + End point + End point's control point/handle + Cloud resolution (min: 2) + + + + Calculates a series of points along the given Cubic Bezier segment-curve and adds them to the given list. + + Start point + Start point's control point/handle + End point + End point's control point/handle + Cloud resolution (min: 2) + + + + Main DOTween class. Contains static methods to create and control tweens in a generic way + + + + DOTween's version + + + If TRUE (default) makes tweens slightly slower but safer, automatically taking care of a series of things + (like targets becoming null while a tween is playing). + Default: TRUE + + + Log type when safe mode reports capturing an error and preventing it + + + Behaviour in case a tween nested inside a Sequence fails (and is caught by safe mode). + Default: NestedTweenFailureBehaviour.TryToPreserveSequence + + + If TRUE you will get a DOTween report when exiting play mode (only in the Editor). + Useful to know how many max Tweeners and Sequences you reached and optimize your final project accordingly. + Beware, this will slightly slow down your tweens while inside Unity Editor. + Default: FALSE + + + Global DOTween global timeScale (default: 1). + The final timeScale of a non-timeScaleIndependent tween is: + Unity's Time.timeScale * DOTween.timeScale * tween.timeScale + while the final timeScale of a timeScaleIndependent tween is: + DOTween.unscaledTimeScale * DOTween.timeScale * tween.timeScale + + + DOTween timeScale applied only to timeScaleIndependent tweens (default: 1). + The final timeScale of a timeScaleIndependent tween is: + DOTween.unscaledTimeScale * DOTween.timeScale * tween.timeScale + + + If TRUE, DOTween will use Time.smoothDeltaTime instead of Time.deltaTime for UpdateType.Normal and UpdateType.Late tweens + (unless they're set as timeScaleIndependent, in which case a value between the last timestep + and will be used instead). + Setting this to TRUE will lead to smoother animations. + Default: FALSE + + + If is TRUE, this indicates the max timeStep that an independent update call can last. + Setting this to TRUE will lead to smoother animations. + Default: FALSE + + + DOTween's log behaviour. + Default: LogBehaviour.ErrorsOnly + + + Used to intercept DOTween's logs. If this method isn't NULL, DOTween will call it before writing a log via Unity's own Debug log methods. + Return TRUE if you want DOTween to proceed with the log, FALSE otherwise. + This method must return a bool and accept two parameters: + - LogType: the type of Unity log that DOTween is trying to log + - object: the log message that DOTween wants to log + + + If TRUE draws path gizmos in Unity Editor (if the gizmos button is active). + Deactivate this if you want to avoid gizmos overhead while in Unity Editor + + + If TRUE activates various debug options + + + Stores the target id so it can be used to give more info in case of safeMode error capturing. + Only active if both debugMode and useSafeMode are TRUE + + + Default updateType for new tweens. + Default: UpdateType.Normal + + + Sets whether Unity's timeScale should be taken into account by default or not. + Default: false + + + Default autoPlay behaviour for new tweens. + Default: AutoPlay.All + + + Default autoKillOnComplete behaviour for new tweens. + Default: TRUE + + + Default loopType applied to all new tweens. + Default: LoopType.Restart + + + If TRUE all newly created tweens are set as recyclable, otherwise not. + Default: FALSE + + + Default ease applied to all new Tweeners (not to Sequences which always have Ease.Linear as default). + Default: Ease.InOutQuad + + + Default overshoot/amplitude used for eases + Default: 1.70158f + + + Default period used for eases + Default: 0 + + + Used internally. Assigned/removed by DOTweenComponent.Create/DestroyInstance + + + + Must be called once, before the first ever DOTween call/reference, + otherwise it will be called automatically and will use default options. + Calling it a second time won't have any effect. + You can chain SetCapacity to this method, to directly set the max starting size of Tweeners and Sequences: + DOTween.Init(false, false, LogBehaviour.Default).SetCapacity(100, 20); + + If TRUE all new tweens will be set for recycling, meaning that when killed, + instead of being destroyed, they will be put in a pool and reused instead of creating new tweens. This option allows you to avoid + GC allocations by reusing tweens, but you will have to take care of tween references, since they might result active + even if they were killed (since they might have been respawned and are now being used for other tweens). + If you want to automatically set your tween references to NULL when a tween is killed + you can use the OnKill callback like this: + .OnKill(()=> myTweenReference = null) + You can change this setting at any time by changing the static property, + or you can set the recycling behaviour for each tween separately, using: + SetRecyclable(bool recyclable) + Default: FALSE + If TRUE makes tweens slightly slower but safer, automatically taking care of a series of things + (like targets becoming null while a tween is playing). + You can change this setting at any time by changing the static property. + Default: FALSE + Type of logging to use. + You can change this setting at any time by changing the static property. + Default: ErrorsOnly + + + + Directly sets the current max capacity of Tweeners and Sequences + (meaning how many Tweeners and Sequences can be running at the same time), + so that DOTween doesn't need to automatically increase them in case the max is reached + (which might lead to hiccups when that happens). + Sequences capacity must be less or equal to Tweeners capacity + (if you pass a low Tweener capacity it will be automatically increased to match the Sequence's). + Beware: use this method only when there are no tweens running. + + Max Tweeners capacity. + Default: 200 + Max Sequences capacity. + Default: 50 + + + + Kills all tweens, clears all cached tween pools and plugins and resets the max Tweeners/Sequences capacities to the default values. + + If TRUE also destroys DOTween's gameObject and resets its initializiation, default settings and everything else + (so that next time you use it it will need to be re-initialized) + + + + Clears all cached tween pools. + + + + + Checks all active tweens to find and remove eventually invalid ones (usually because their targets became NULL) + and returns the total number of invalid tweens found and removed. + IMPORTANT: this will cause an error on UWP platform, so don't use it there + BEWARE: this is a slightly expensive operation so use it with care + + + + + Updates all tweens that are set to . + + Manual deltaTime + Unscaled delta time (used with tweens set as timeScaleIndependent) + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a property or field to the given value using a custom plugin + The plugin to use. Each custom plugin implements a static Get() method + you'll need to call to assign the correct plugin in the correct way, like this: + CustomPlugin.Get() + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens only one axis of a Vector3 to the given value using default plugins. + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + The axis to tween + + + Tweens only the alpha of a Color to the given value using default plugins + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end value to reachThe tween's duration + + + Tweens a virtual property from the given start to the given end value + and implements a setter that allows to use that value with an external method or a lambda + Example: + To(MyMethod, 0, 12, 0.5f); + Where MyMethod is a function that accepts a float parameter (which will be the result of the virtual tween) + The action to perform with the tweened value + The value to start from + The end value to reach + The duration of the virtual tween + + + + Punches a Vector3 towards the given direction and then back to the starting one + as if it was connected to the starting position via an elastic. + This tween type generates some GC allocations at startup + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The direction and strength of the punch + The duration of the tween + Indicates how much will the punch vibrate + Represents how much (0 to 1) the vector will go beyond the starting position when bouncing backwards. + 1 creates a full oscillation between the direction and the opposite decaying direction, + while 0 oscillates only between the starting position and the decaying direction + + + Shakes a Vector3 with the given values. + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The duration of the tween + The shake strength + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction and behave like a random punch. + If TRUE only shakes on the X Y axis (looks better with things like cameras). + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Shakes a Vector3 with the given values. + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The duration of the tween + The shake strength on each axis + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction and behave like a random punch. + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Tweens a property or field to the given values using default plugins. + Ease is applied between each segment and not as a whole. + This tween type generates some GC allocations at startup + A getter for the field or property to tween. + Example usage with lambda:()=> myProperty + A setter for the field or property to tween + Example usage with lambda:x=> myProperty = x + The end values to reach for each segment. This array must have the same length as durations + The duration of each segment. This array must have the same length as endValues + + + + Returns a new to be used for tween groups. + Mind that Sequences don't have a target applied automatically like Tweener creation shortcuts, + so if you want to be able to kill this Sequence when calling DOTween.Kill(target) you'll have to add + the target manually; you can do that directly by using the overload instead of this one + + + + + Returns a new to be used for tween groups, and allows to set a target + (because Sequences don't have their target set automatically like Tweener creation shortcuts). + That way killing/controlling tweens by target will apply to this Sequence too. + + The target of the Sequence. Relevant only for static target-based methods like DOTween.Kill(target), + useless otherwise + + + Completes all tweens and returns the number of actual tweens completed + (meaning tweens that don't have infinite loops and were not already complete) + For Sequences only: if TRUE also internal Sequence callbacks will be fired, + otherwise they will be ignored + + + Completes all tweens with the given ID or target and returns the number of actual tweens completed + (meaning the tweens that don't have infinite loops and were not already complete) + For Sequences only: if TRUE internal Sequence callbacks will be fired, + otherwise they will be ignored + + + Flips all tweens (changing their direction to forward if it was backwards and viceversa), + then returns the number of actual tweens flipped + + + Flips the tweens with the given ID or target (changing their direction to forward if it was backwards and viceversa), + then returns the number of actual tweens flipped + + + Sends all tweens to the given position (calculating also eventual loop cycles) and returns the actual tweens involved + + + Sends all tweens with the given ID or target to the given position (calculating also eventual loop cycles) + and returns the actual tweens involved + + + Kills all tweens and returns the number of actual tweens killed + If TRUE completes the tweens before killing them + + + Kills all tweens and returns the number of actual tweens killed + If TRUE completes the tweens before killing them + Eventual IDs or targets to exclude from the killing + + + Kills all tweens with the given ID or target and returns the number of actual tweens killed + If TRUE completes the tweens before killing them + + + Kills all tweens with the given target and the given ID, and returns the number of actual tweens killed + If TRUE completes the tweens before killing them + + + Pauses all tweens and returns the number of actual tweens paused + + + Pauses all tweens with the given ID or target and returns the number of actual tweens paused + (meaning the tweens that were actually playing and have been paused) + + + Plays all tweens and returns the number of actual tweens played + (meaning tweens that were not already playing or complete) + + + Plays all tweens with the given ID or target and returns the number of actual tweens played + (meaning the tweens that were not already playing or complete) + + + Plays all tweens with the given target and the given ID, and returns the number of actual tweens played + (meaning the tweens that were not already playing or complete) + + + Plays backwards all tweens and returns the number of actual tweens played + (meaning tweens that were not already started, playing backwards or rewinded) + + + Plays backwards all tweens with the given ID or target and returns the number of actual tweens played + (meaning the tweens that were not already started, playing backwards or rewinded) + + + Plays backwards all tweens with the given target and ID and returns the number of actual tweens played + (meaning the tweens that were not already started, playing backwards or rewinded) + + + Plays forward all tweens and returns the number of actual tweens played + (meaning tweens that were not already playing forward or complete) + + + Plays forward all tweens with the given ID or target and returns the number of actual tweens played + (meaning the tweens that were not already playing forward or complete) + + + Plays forward all tweens with the given target and ID and returns the number of actual tweens played + (meaning the tweens that were not already started, playing backwards or rewinded) + + + Restarts all tweens, then returns the number of actual tweens restarted + + + Restarts all tweens with the given ID or target, then returns the number of actual tweens restarted + If TRUE includes the eventual tweens delays, otherwise skips them + If >= 0 changes the startup delay of all involved tweens to this value, otherwise doesn't touch it + + + Restarts all tweens with the given target and the given ID, and returns the number of actual tweens played + (meaning the tweens that were not already playing or complete) + If TRUE includes the eventual tweens delays, otherwise skips them + If >= 0 changes the startup delay of all involved tweens to this value, otherwise doesn't touch it + + + Rewinds and pauses all tweens, then returns the number of actual tweens rewinded + (meaning tweens that were not already rewinded) + + + Rewinds and pauses all tweens with the given ID or target, then returns the number of actual tweens rewinded + (meaning the tweens that were not already rewinded) + + + Smoothly rewinds all tweens (delays excluded), then returns the number of actual tweens rewinding/rewinded + (meaning tweens that were not already rewinded). + A "smooth rewind" animates the tween to its start position, + skipping all elapsed loops (except in case of LoopType.Incremental) while keeping the animation fluent. + Note that a tween that was smoothly rewinded will have its play direction flipped + + + Smoothly rewinds all tweens (delays excluded) with the given ID or target, then returns the number of actual tweens rewinding/rewinded + (meaning the tweens that were not already rewinded). + A "smooth rewind" animates the tween to its start position, + skipping all elapsed loops (except in case of LoopType.Incremental) while keeping the animation fluent. + Note that a tween that was smoothly rewinded will have its play direction flipped + + + Toggles the play state of all tweens and returns the number of actual tweens toggled + (meaning tweens that could be played or paused, depending on the toggle state) + + + Toggles the play state of all tweens with the given ID or target and returns the number of actual tweens toggled + (meaning the tweens that could be played or paused, depending on the toggle state) + + + + Returns TRUE if a tween with the given ID or target is active. + You can also use this to know if a shortcut tween is active for a given target. + Example: + transform.DOMoveX(45, 1); // transform is automatically added as the tween target + DOTween.IsTweening(transform); // Returns true + + The target or ID to look for + If FALSE (default) returns TRUE as long as a tween for the given target/ID is active, + otherwise also requires it to be playing + + + + Returns the total number of active tweens (so both Tweeners and Sequences). + A tween is considered active if it wasn't killed, regardless if it's playing or paused + + + + + Returns the total number of active Tweeners. + A Tweener is considered active if it wasn't killed, regardless if it's playing or paused + + + + + Returns the total number of active Sequences. + A Sequence is considered active if it wasn't killed, regardless if it's playing or paused + + + + + Returns the total number of active and playing tweens. + A tween is considered as playing even if its delay is actually playing + + + + + Returns a the total number of active tweens with the given id. + + If TRUE returns only the tweens with the given ID that are currently playing + + + + Returns a list of all active tweens in a playing state. + Returns NULL if there are no active playing tweens. + Beware: each time you call this method a new list is generated, so use it for debug only + + If NULL creates a new list, otherwise clears and fills this one (and thus saves allocations) + + + + Returns a list of all active tweens in a paused state. + Returns NULL if there are no active paused tweens. + Beware: each time you call this method a new list is generated, so use it for debug only + + If NULL creates a new list, otherwise clears and fills this one (and thus saves allocations) + + + + Returns a list of all active tweens with the given id. + Returns NULL if there are no active tweens with the given id. + Beware: each time you call this method a new list is generated + + If TRUE returns only the tweens with the given ID that are currently playing + If NULL creates a new list, otherwise clears and fills this one (and thus saves allocations) + + + + Returns a list of all active tweens with the given target. + Returns NULL if there are no active tweens with the given target. + Beware: each time you call this method a new list is generated + If TRUE returns only the tweens with the given target that are currently playing + If NULL creates a new list, otherwise clears and fills this one (and thus saves allocations) + + + + + Creates virtual tweens that can be used to change other elements via their OnUpdate calls + + + + + Tweens a virtual float. + You can add regular settings to the generated tween, + but do not use OnUpdate or you will overwrite the onVirtualUpdate parameter + + The value to start from + The value to tween to + The duration of the tween + A callback which must accept a parameter of type float, called at each update + + + + Tweens a virtual int. + You can add regular settings to the generated tween, + but do not use OnUpdate or you will overwrite the onVirtualUpdate parameter + + The value to start from + The value to tween to + The duration of the tween + A callback which must accept a parameter of type int, called at each update + + + + Tweens a virtual Vector2. + You can add regular settings to the generated tween, + but do not use OnUpdate or you will overwrite the onVirtualUpdate parameter + + The value to start from + The value to tween to + The duration of the tween + A callback which must accept a parameter of type Vector3, called at each update + + + + Tweens a virtual Vector3. + You can add regular settings to the generated tween, + but do not use OnUpdate or you will overwrite the onVirtualUpdate parameter + + The value to start from + The value to tween to + The duration of the tween + A callback which must accept a parameter of type Vector3, called at each update + + + + Tweens a virtual Color. + You can add regular settings to the generated tween, + but do not use OnUpdate or you will overwrite the onVirtualUpdate parameter + + The value to start from + The value to tween to + The duration of the tween + A callback which must accept a parameter of type Color, called at each update + + + Returns a value based on the given ease and lifetime percentage (0 to 1) + The value to start from when lifetimePercentage is 0 + The value to reach when lifetimePercentage is 1 + The time percentage (0 to 1) at which the value should be taken + The type of ease + + + Returns a value based on the given ease and lifetime percentage (0 to 1) + The value to start from when lifetimePercentage is 0 + The value to reach when lifetimePercentage is 1 + The time percentage (0 to 1) at which the value should be taken + The type of ease + Eventual overshoot to use with Back ease + + + Returns a value based on the given ease and lifetime percentage (0 to 1) + The value to start from when lifetimePercentage is 0 + The value to reach when lifetimePercentage is 1 + The time percentage (0 to 1) at which the value should be taken + The type of ease + Eventual amplitude to use with Elastic easeType + Eventual period to use with Elastic easeType + + + Returns a value based on the given ease and lifetime percentage (0 to 1) + The value to start from when lifetimePercentage is 0 + The value to reach when lifetimePercentage is 1 + The time percentage (0 to 1) at which the value should be taken + The AnimationCurve to use for ease + + + Returns a value based on the given ease and lifetime percentage (0 to 1) + The value to start from when lifetimePercentage is 0 + The value to reach when lifetimePercentage is 1 + The time percentage (0 to 1) at which the value should be taken + The type of ease + + + Returns a value based on the given ease and lifetime percentage (0 to 1) + The value to start from when lifetimePercentage is 0 + The value to reach when lifetimePercentage is 1 + The time percentage (0 to 1) at which the value should be taken + The type of ease + Eventual overshoot to use with Back ease + + + Returns a value based on the given ease and lifetime percentage (0 to 1) + The value to start from when lifetimePercentage is 0 + The value to reach when lifetimePercentage is 1 + The time percentage (0 to 1) at which the value should be taken + The type of ease + Eventual amplitude to use with Elastic easeType + Eventual period to use with Elastic easeType + + + Returns a value based on the given ease and lifetime percentage (0 to 1) + The value to start from when lifetimePercentage is 0 + The value to reach when lifetimePercentage is 1 + The time percentage (0 to 1) at which the value should be taken + The AnimationCurve to use for ease + + + Fires the given callback after the given time. + Callback delay + Callback to fire when the delay has expired + If TRUE (default) ignores Unity's timeScale + + + + Don't assign this! It's assigned automatically when creating 0 duration tweens + + + + + Don't assign this! It's assigned automatically when setting the ease to an AnimationCurve or to a custom ease function + + + + + Allows to wrap ease method in special ways, adding extra features + + + + + Converts the given ease so that it also creates a stop-motion effect, by playing the tween at the given FPS + + FPS at which the tween should be played + Ease type + + + + Converts the given ease so that it also creates a stop-motion effect, by playing the tween at the given FPS + + FPS at which the tween should be played + AnimationCurve to use for the ease + + + + Converts the given ease so that it also creates a stop-motion effect, by playing the tween at the given FPS + + FPS at which the tween should be played + Custom ease function to use + + + + Used to allow method chaining with DOTween.Init + + + + + Directly sets the current max capacity of Tweeners and Sequences + (meaning how many Tweeners and Sequences can be running at the same time), + so that DOTween doesn't need to automatically increase them in case the max is reached + (which might lead to hiccups when that happens). + Sequences capacity must be less or equal to Tweeners capacity + (if you pass a low Tweener capacity it will be automatically increased to match the Sequence's). + Beware: use this method only when there are no tweens running. + + Max Tweeners capacity. + Default: 200 + Max Sequences capacity. + Default: 50 + + + + Behaviour that can be assigned when chaining a SetLink to a tween + + + + Pauses the tween when the link target is disabled + + + Pauses the tween when the link target is disabled, plays it when it's enabled + + + Pauses the tween when the link target is disabled, restarts it when it's enabled + + + Plays the tween when the link target is enabled + + + Restarts the tween when the link target is enabled + + + Kills the tween when the link target is disabled + + + Kills the tween when the link target is destroyed (becomes NULL). This is always active even if another behaviour is chosen + + + Completes the tween when the link target is disabled + + + Completes and kills the tween when the link target is disabled + + + Rewinds the tween (delay excluded) when the link target is disabled + + + Rewinds and kills the tween when the link target is disabled + + + + Path mode (used to determine correct LookAt orientation) + + + + Ignores the path mode (and thus LookAt behaviour) + + + Regular 3D path + + + 2D top-down path + + + 2D side-scroller path + + + + Type of path to use with DOPath tweens + + + + Linear, composed of straight segments between each waypoint + + + Curved path (which uses Catmull-Rom curves) + + + EXPERIMENTAL: Curved path (which uses Cubic Bezier curves, where each point requires two extra control points) + + + + Tweens a Vector2 along a circle. + EndValue represents the center of the circle, start and end value degrees are inside options + ChangeValue x is changeValue°, y is unused + + + + + Path control point + + + + + Path waypoints (modified by PathPlugin when setting relative end/change value or by CubicBezierDecoder) and by DOTweenPathInspector + + + + + Minimum input points necessary to create the path (doesn't correspond to actual waypoints required) + + + + + Gets the point on the path at the given percentage (0 to 1) + + The percentage (0 to 1) at which to get the point + If TRUE constant speed is taken into account, otherwise not + + + + Base interface for all tween plugins options + + + + Resets the plugin + + + + This plugin generates some GC allocations at startup + + + + + Path plugin works exclusively with Transforms + + + + + Rotation mode used with DORotate methods + + + + + Fastest way that never rotates beyond 360° + + + + + Fastest way that rotates beyond 360° + + + + + Adds the given rotation to the transform using world axis and an advanced precision mode + (like when using transform.Rotate(Space.World)). + In this mode the end value is is always considered relative + + + + + Adds the given rotation to the transform's local axis + (like when rotating an object with the "local" switch enabled in Unity's editor or using transform.Rotate(Space.Self)). + In this mode the end value is is always considered relative + + + + + Type of scramble to apply to string tweens + + + + + No scrambling of characters + + + + + A-Z + a-z + 0-9 characters + + + + + A-Z characters + + + + + a-z characters + + + + + 0-9 characters + + + + + Custom characters + + + + + Type of randomness to apply to a shake tween + + + + Default, full randomness + + + Creates a more balanced randomness that looks more harmonic + + + + Methods that extend Tween objects and allow to control or get data from them + + + + Completes the tween + + + Completes the tween + For Sequences only: if TRUE also internal Sequence callbacks will be fired, + otherwise they will be ignored + + + Optional: indicates that the tween creation has ended, to be used (optionally) as the last element of tween chaining creation.
+ This method won't do anything except in case of 0-duration tweens, + where it will complete them immediately instead of waiting for the next internal update routine + (unless they're nested in a Sequence, in which case the Sequence will still be the one in control and this method will be ignored)
+
+ + Flips the direction of this tween (backwards if it was going forward or viceversa) + + + Forces the tween to initialize its settings immediately + + + Send the tween to the given position in time + Time position to reach + (if higher than the whole tween duration the tween will simply reach its end) + If TRUE will play the tween after reaching the given position, otherwise it will pause it + + + Send the tween to the given position in time while also executing any callback between the previous time position and the new one + Time position to reach + (if higher than the whole tween duration the tween will simply reach its end) + If TRUE will play the tween after reaching the given position, otherwise it will pause it + + + Kills the tween + If TRUE completes the tween before killing it + + + + Forces this tween to update manually, regardless of the set via SetUpdate. + Note that the tween will still be subject to normal tween rules, so if for example it's paused this method will do nothing. + Also note that if you only want to update this tween instance manually you'll have to set it to anyway, + so that it's not updated automatically. + + Manual deltaTime + Unscaled delta time (used with tweens set as timeScaleIndependent) + + + Pauses the tween + + + Plays the tween + + + Sets the tween in a backwards direction and plays it + + + Sets the tween in a forward direction and plays it + + + Restarts the tween from the beginning + Ignored in case of Sequences. If TRUE includes the eventual tween delay, otherwise skips it + Ignored in case of Sequences. If >= 0 changes the startup delay to this value, otherwise doesn't touch it + + + Rewinds and pauses the tween + Ignored in case of Sequences. If TRUE includes the eventual tween delay, otherwise skips it + + + Smoothly rewinds the tween (delays excluded). + A "smooth rewind" animates the tween to its start position, + skipping all elapsed loops (except in case of LoopType.Incremental) while keeping the animation fluent. + If called on a tween who is still waiting for its delay to happen, it will simply set the delay to 0 and pause the tween. + Note that a tween that was smoothly rewinded will have its play direction flipped + + + Plays the tween if it was paused, pauses it if it was playing + + + Send a path tween to the given waypoint. + Has no effect if this is not a path tween. + BEWARE, this is a special utility method: + it works only with Linear eases. Also, the lookAt direction might be wrong after calling this and might need to be set manually + (because it relies on a smooth path movement and doesn't work well with jumps that encompass dramatic direction changes) + Waypoint index to reach + (if higher than the max waypoint index the tween will simply go to the last one) + If TRUE will play the tween after reaching the given waypoint, otherwise it will pause it + + + + Creates a yield instruction that waits until the tween is killed or complete. + It can be used inside a coroutine as a yield. + Example usage:yield return myTween.WaitForCompletion(); + + + + + Creates a yield instruction that waits until the tween is killed or rewinded. + It can be used inside a coroutine as a yield. + Example usage:yield return myTween.WaitForRewind(); + + + + + Creates a yield instruction that waits until the tween is killed. + It can be used inside a coroutine as a yield. + Example usage:yield return myTween.WaitForKill(); + + + + + Creates a yield instruction that waits until the tween is killed or has gone through the given amount of loops. + It can be used inside a coroutine as a yield. + Example usage:yield return myTween.WaitForElapsedLoops(2); + + Elapsed loops to wait for + + + + Creates a yield instruction that waits until the tween is killed or has reached the given position (loops included, delays excluded). + It can be used inside a coroutine as a yield. + Example usage:yield return myTween.WaitForPosition(2.5f); + + Position (loops included, delays excluded) to wait for + + + + Creates a yield instruction that waits until the tween is killed or started + (meaning when the tween is set in a playing state the first time, after any eventual delay). + It can be used inside a coroutine as a yield. + Example usage:yield return myTween.WaitForStart(); + + + + Returns the total number of loops completed by this tween + + + Returns the eventual delay set for this tween + + + Returns the eventual elapsed delay set for this tween + + + Returns the duration of this tween (delays excluded). + NOTE: when using settings like SpeedBased, the duration will be recalculated when the tween starts + If TRUE returns the full duration loops included, + otherwise the duration of a single loop cycle + + + Returns the elapsed time for this tween (delays exluded) + If TRUE returns the elapsed time since startup loops included, + otherwise the elapsed time within the current loop cycle + + + Returns the elapsed percentage (0 to 1) of this tween (delays exluded) + If TRUE returns the elapsed percentage since startup loops included, + otherwise the elapsed percentage within the current loop cycle + + + Returns the elapsed percentage (0 to 1) of this tween (delays exluded), + based on a single loop, and calculating eventual backwards Yoyo loops as 1 to 0 instead of 0 to 1 + + + Returns FALSE if this tween has been killed or is NULL, TRUE otherwise. + BEWARE: if this tween is recyclable it might have been spawned again for another use and thus return TRUE anyway. + When working with recyclable tweens you should take care to know when a tween has been killed and manually set your references to NULL. + If you want to be sure your references are set to NULL when a tween is killed you can use the OnKill callback like this: + .OnKill(()=> myTweenReference = null) + + + Returns TRUE if this tween was reversed and is set to go backwards + + + NOTE: To check if a tween was simply set to go backwards see . + Returns TRUE if this tween is going backwards for any of these reasons: + - The tween was reversed and is going backwards on a straight loop + - The tween was reversed and is going backwards on an odd Yoyo loop + - The tween is going forward but on an even Yoyo loop + IMPORTANT: if used inside a tween's callback, this will return a result concerning the exact frame when it's asked, + so for example in a callback at the end of a Yoyo loop step this method will never return FALSE + because the frame will never end exactly there and the tween will already be going backwards when the callback is fired + + + Returns TRUE if the tween is complete + (silently fails and returns FALSE if the tween has been killed) + + + Returns TRUE if this tween has been initialized + + + Returns TRUE if this tween is playing + + + Returns the total number of loops set for this tween + (returns -1 if the loops are infinite) + + + + Returns a point on a path based on the given path percentage. + Returns Vector3.zero if this is not a path tween, if the tween is invalid, or if the path is not yet initialized. + A path is initialized after its tween starts, or immediately if the tween was created with the Path Editor (DOTween Pro feature). + You can force a path to be initialized by calling myTween.ForceInit(). + + Percentage of the path (0 to 1) on which to get the point + + + + Returns an array of points that can be used to draw the path. + Note that this method generates allocations, because it creates a new array. + Returns NULL if this is not a path tween, if the tween is invalid, or if the path is not yet initialized. + A path is initialized after its tween starts, or immediately if the tween was created with the Path Editor (DOTween Pro feature). + You can force a path to be initialized by calling myTween.ForceInit(). + + How many points to create for each path segment (waypoint to waypoint). + Only used in case of non-Linear paths + + + + Returns the length of a path. + Returns -1 if this is not a path tween, if the tween is invalid, or if the path is not yet initialized. + A path is initialized after its tween starts, or immediately if the tween was created with the Path Editor (DOTween Pro feature). + You can force a path to be initialized by calling myTween.ForceInit(). + + + + + Types of loop + + + + Each loop cycle restarts from the beginning + + + The tween moves forward and backwards at alternate cycles + + + Continuously increments the tween at the end of each loop cycle (A to B, B to B+(A-B), and so on), thus always moving "onward". + In case of String tweens works only if the tween is set as relative + + + + Controls other tweens as a group + + + + + Methods that extend known Unity objects and allow to directly create and control tweens from their instances + + + + Tweens a Camera's aspect to the given value. + Also stores the camera as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Camera's backgroundColor to the given value. + Also stores the camera as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Camera's farClipPlane to the given value. + Also stores the camera as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Camera's fieldOfView to the given value. + Also stores the camera as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Camera's nearClipPlane to the given value. + Also stores the camera as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Camera's orthographicSize to the given value. + Also stores the camera as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Camera's pixelRect to the given value. + Also stores the camera as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Camera's rect to the given value. + Also stores the camera as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Shakes a Camera's localPosition along its relative X Y axes with the given values. + Also stores the camera as the tween's target so it can be used for filtered operations + The duration of the tween + The shake strength + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Shakes a Camera's localPosition along its relative X Y axes with the given values. + Also stores the camera as the tween's target so it can be used for filtered operations + The duration of the tween + The shake strength on each axis + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Shakes a Camera's localRotation. + Also stores the camera as the tween's target so it can be used for filtered operations + The duration of the tween + The shake strength + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Shakes a Camera's localRotation. + Also stores the camera as the tween's target so it can be used for filtered operations + The duration of the tween + The shake strength on each axis + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Tweens a Light's color to the given value. + Also stores the light as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Light's intensity to the given value. + Also stores the light as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Light's shadowStrength to the given value. + Also stores the light as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a LineRenderer's color to the given value. + Also stores the LineRenderer as the tween's target so it can be used for filtered operations. + Note that this method requires to also insert the start colors for the tween, + since LineRenderers have no way to get them. + The start value to tween from + The end value to reachThe duration of the tween + + + Tweens a Material's color to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Material's named color property to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The name of the material property to tween (like _Tint or _SpecColor) + The duration of the tween + + + Tweens a Material's named color property with the given ID to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The ID of the material property to tween (also called nameID in Unity's manual) + The duration of the tween + + + Tweens a Material's alpha color to the given value + (will have no effect unless your material supports transparency). + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Material's alpha color to the given value + (will have no effect unless your material supports transparency). + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The name of the material property to tween (like _Tint or _SpecColor) + The duration of the tween + + + Tweens a Material's alpha color with the given ID to the given value + (will have no effect unless your material supports transparency). + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The ID of the material property to tween (also called nameID in Unity's manual) + The duration of the tween + + + Tweens a Material's named float property to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The name of the material property to tween + The duration of the tween + + + Tweens a Material's named float property with the given ID to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The ID of the material property to tween (also called nameID in Unity's manual) + The duration of the tween + + + Tweens a Material's texture offset to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The duration of the tween + + + Tweens a Material's named texture offset property to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The name of the material property to tween + The duration of the tween + + + Tweens a Material's texture scale to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The duration of the tween + + + Tweens a Material's named texture scale property to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The name of the material property to tween + The duration of the tween + + + Tweens a Material's named Vector property to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The name of the material property to tween + The duration of the tween + + + Tweens a Material's named Vector property with the given ID to the given value. + Also stores the material as the tween's target so it can be used for filtered operations + The end value to reach + The ID of the material property to tween (also called nameID in Unity's manual) + The duration of the tween + + + Tweens a TrailRenderer's startWidth/endWidth to the given value. + Also stores the TrailRenderer as the tween's target so it can be used for filtered operations + The end startWidth to reachThe end endWidth to reach + The duration of the tween + + + Tweens a TrailRenderer's time to the given value. + Also stores the TrailRenderer as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Transform's position to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's X position to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's Y position to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's Z position to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's localPosition to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's X localPosition to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's Y localPosition to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's Z localPosition to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's rotation to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + Rotation mode + + + Tweens a Transform's rotation to the given value using pure quaternion values. + Also stores the transform as the tween's target so it can be used for filtered operations. + PLEASE NOTE: DORotate, which takes Vector3 values, is the preferred rotation method. + This method was implemented for very special cases, and doesn't support LoopType.Incremental loops + (neither for itself nor if placed inside a LoopType.Incremental Sequence) + + The end value to reachThe duration of the tween + + + Tweens a Transform's localRotation to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + Rotation mode + + + Tweens a Transform's rotation to the given value using pure quaternion values. + Also stores the transform as the tween's target so it can be used for filtered operations. + PLEASE NOTE: DOLocalRotate, which takes Vector3 values, is the preferred rotation method. + This method was implemented for very special cases, and doesn't support LoopType.Incremental loops + (neither for itself nor if placed inside a LoopType.Incremental Sequence) + + The end value to reachThe duration of the tween + + + Tweens a Transform's localScale to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Transform's localScale uniformly to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Transform's X localScale to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Transform's Y localScale to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Transform's Z localScale to the given value. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Transform's rotation so that it will look towards the given world position. + Also stores the transform as the tween's target so it can be used for filtered operations + The position to look atThe duration of the tween + Eventual axis constraint for the rotation + The vector that defines in which direction up is (default: Vector3.up) + + + EXPERIMENTAL Tweens a Transform's rotation so that it will look towards the given world position, + while also updating the lookAt position every frame + (contrary to which calculates the lookAt rotation only once, when the tween starts). + Also stores the transform as the tween's target so it can be used for filtered operations + The position to look atThe duration of the tween + Eventual axis constraint for the rotation + The vector that defines in which direction up is (default: Vector3.up) + + + Punches a Transform's localPosition towards the given direction and then back to the starting one + as if it was connected to the starting position via an elastic. + The direction and strength of the punch (added to the Transform's current position) + The duration of the tween + Indicates how much will the punch vibrate + Represents how much (0 to 1) the vector will go beyond the starting position when bouncing backwards. + 1 creates a full oscillation between the punch direction and the opposite direction, + while 0 oscillates only between the punch and the start position + If TRUE the tween will smoothly snap all values to integers + + + Punches a Transform's localScale towards the given size and then back to the starting one + as if it was connected to the starting scale via an elastic. + The punch strength (added to the Transform's current scale) + The duration of the tween + Indicates how much will the punch vibrate + Represents how much (0 to 1) the vector will go beyond the starting size when bouncing backwards. + 1 creates a full oscillation between the punch scale and the opposite scale, + while 0 oscillates only between the punch scale and the start scale + + + Punches a Transform's localRotation towards the given size and then back to the starting one + as if it was connected to the starting rotation via an elastic. + The punch strength (added to the Transform's current rotation) + The duration of the tween + Indicates how much will the punch vibrate + Represents how much (0 to 1) the vector will go beyond the starting rotation when bouncing backwards. + 1 creates a full oscillation between the punch rotation and the opposite rotation, + while 0 oscillates only between the punch and the start rotation + + + Shakes a Transform's localPosition with the given values. + The duration of the tween + The shake strength + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the tween will smoothly snap all values to integers + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Shakes a Transform's localPosition with the given values. + The duration of the tween + The shake strength on each axis + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the tween will smoothly snap all values to integers + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Shakes a Transform's localRotation. + The duration of the tween + The shake strength + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Shakes a Transform's localRotation. + The duration of the tween + The shake strength on each axis + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Shakes a Transform's localScale. + The duration of the tween + The shake strength + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Shakes a Transform's localScale. + The duration of the tween + The shake strength on each axis + Indicates how much will the shake vibrate + Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + Setting it to 0 will shake along a single direction. + If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + Randomness mode + + + Tweens a Transform's position to the given value, while also applying a jump effect along the Y axis. + Returns a Sequence instead of a Tweener. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reach + Power of the jump (the max height of the jump is represented by this plus the final Y offset) + Total number of jumps + The duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's localPosition to the given value, while also applying a jump effect along the Y axis. + Returns a Sequence instead of a Tweener. + Also stores the transform as the tween's target so it can be used for filtered operations + The end value to reach + Power of the jump (the max height of the jump is represented by this plus the final Y offset) + Total number of jumps + The duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's position through the given path waypoints, using the chosen path algorithm. + Also stores the transform as the tween's target so it can be used for filtered operations + The waypoints to go through + The duration of the tween + The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) + The path mode: 3D, side-scroller 2D, top-down 2D + The resolution of the path (useless in case of Linear paths): higher resolutions make for more detailed curved paths but are more expensive. + Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints + The color of the path (shown when gizmos are active in the Play panel and the tween is running) + + + Tweens a Transform's localPosition through the given path waypoints, using the chosen path algorithm. + Also stores the transform as the tween's target so it can be used for filtered operations + The waypoint to go through + The duration of the tween + The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) + The path mode: 3D, side-scroller 2D, top-down 2D + The resolution of the path: higher resolutions make for more detailed curved paths but are more expensive. + Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints + The color of the path (shown when gizmos are active in the Play panel and the tween is running) + + + IMPORTANT: Unless you really know what you're doing, you should use the overload that accepts a Vector3 array instead. + Tweens a Transform's position via the given path. + Also stores the transform as the tween's target so it can be used for filtered operations + The path to use + The duration of the tween + The path mode: 3D, side-scroller 2D, top-down 2D + + + IMPORTANT: Unless you really know what you're doing, you should use the overload that accepts a Vector3 array instead. + Tweens a Transform's localPosition via the given path. + Also stores the transform as the tween's target so it can be used for filtered operations + The path to use + The duration of the tween + The path mode: 3D, side-scroller 2D, top-down 2D + + + Tweens a Tween's timeScale to the given value. + Also stores the Tween as the tween's target so it can be used for filtered operations + The end value to reachThe duration of the tween + + + Tweens a Light's color to the given value, + in a way that allows other DOBlendableColor tweens to work together on the same target, + instead than fight each other as multiple DOColor would do. + Also stores the Light as the tween's target so it can be used for filtered operations + The value to tween toThe duration of the tween + + + Tweens a Material's color to the given value, + in a way that allows other DOBlendableColor tweens to work together on the same target, + instead than fight each other as multiple DOColor would do. + Also stores the Material as the tween's target so it can be used for filtered operations + The value to tween toThe duration of the tween + + + Tweens a Material's named color property to the given value, + in a way that allows other DOBlendableColor tweens to work together on the same target, + instead than fight each other as multiple DOColor would do. + Also stores the Material as the tween's target so it can be used for filtered operations + The value to tween to + The name of the material property to tween (like _Tint or _SpecColor) + The duration of the tween + + + Tweens a Material's named color property with the given ID to the given value, + in a way that allows other DOBlendableColor tweens to work together on the same target, + instead than fight each other as multiple DOColor would do. + Also stores the Material as the tween's target so it can be used for filtered operations + The value to tween to + The ID of the material property to tween (also called nameID in Unity's manual) + The duration of the tween + + + Tweens a Transform's position BY the given value (as if you chained a SetRelative), + in a way that allows other DOBlendableMove tweens to work together on the same target, + instead than fight each other as multiple DOMove would do. + Also stores the transform as the tween's target so it can be used for filtered operations + The value to tween byThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + Tweens a Transform's localPosition BY the given value (as if you chained a SetRelative), + in a way that allows other DOBlendableMove tweens to work together on the same target, + instead than fight each other as multiple DOMove would do. + Also stores the transform as the tween's target so it can be used for filtered operations + The value to tween byThe duration of the tween + If TRUE the tween will smoothly snap all values to integers + + + EXPERIMENTAL METHOD - Tweens a Transform's rotation BY the given value (as if you chained a SetRelative), + in a way that allows other DOBlendableRotate tweens to work together on the same target, + instead than fight each other as multiple DORotate would do. + Also stores the transform as the tween's target so it can be used for filtered operations + The value to tween byThe duration of the tween + Rotation mode + + + EXPERIMENTAL METHOD - Tweens a Transform's lcoalRotation BY the given value (as if you chained a SetRelative), + in a way that allows other DOBlendableRotate tweens to work together on the same target, + instead than fight each other as multiple DORotate would do. + Also stores the transform as the tween's target so it can be used for filtered operations + The value to tween byThe duration of the tween + Rotation mode + + + Punches a Transform's localRotation BY the given value and then back to the starting one + as if it was connected to the starting rotation via an elastic. Does it in a way that allows other + DOBlendableRotate tweens to work together on the same target + The punch strength (added to the Transform's current rotation) + The duration of the tween + Indicates how much will the punch vibrate + Represents how much (0 to 1) the vector will go beyond the starting rotation when bouncing backwards. + 1 creates a full oscillation between the punch rotation and the opposite rotation, + while 0 oscillates only between the punch and the start rotation + + + Tweens a Transform's localScale BY the given value (as if you chained a SetRelative), + in a way that allows other DOBlendableScale tweens to work together on the same target, + instead than fight each other as multiple DOScale would do. + Also stores the transform as the tween's target so it can be used for filtered operations + The value to tween byThe duration of the tween + + + + Completes all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens completed + (meaning the tweens that don't have infinite loops and were not already complete) + + For Sequences only: if TRUE also internal Sequence callbacks will be fired, + otherwise they will be ignored + + + + Completes all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens completed + (meaning the tweens that don't have infinite loops and were not already complete) + + For Sequences only: if TRUE also internal Sequence callbacks will be fired, + otherwise they will be ignored + + + + Kills all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens killed. + + If TRUE completes the tween before killing it + + + + Kills all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens killed. + + If TRUE completes the tween before killing it + + + + Flips the direction (backwards if it was going forward or viceversa) of all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens flipped. + + + + + Flips the direction (backwards if it was going forward or viceversa) of all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens flipped. + + + + + Sends to the given position all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens involved. + + Time position to reach + (if higher than the whole tween duration the tween will simply reach its end) + If TRUE will play the tween after reaching the given position, otherwise it will pause it + + + + Sends to the given position all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens involved. + + Time position to reach + (if higher than the whole tween duration the tween will simply reach its end) + If TRUE will play the tween after reaching the given position, otherwise it will pause it + + + + Pauses all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens paused. + + + + + Pauses all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens paused. + + + + + Plays all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens played. + + + + + Plays all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens played. + + + + + Plays backwards all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens played. + + + + + Plays backwards all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens played. + + + + + Plays forward all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens played. + + + + + Plays forward all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens played. + + + + + Restarts all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens restarted. + + + + + Restarts all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens restarted. + + + + + Rewinds all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens rewinded. + + + + + Rewinds all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens rewinded. + + + + + Smoothly rewinds all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens rewinded. + + + + + Smoothly rewinds all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens rewinded. + + + + + Toggles the paused state (plays if it was paused, pauses if it was playing) of all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens involved. + + + + + Toggles the paused state (plays if it was paused, pauses if it was playing) of all tweens that have this target as a reference + (meaning tweens that were started from this target, or that had this target added as an Id) + and returns the total number of tweens involved. + + + + + This class serves only as a utility class to store tween settings to apply on multiple tweens. + It is in no way needed otherwise, since you can directly apply tween settings to a tween via chaining + + + + A variable you can eventually Clear and reuse when needed, + to avoid instantiating TweenParams objects + + + Creates a new TweenParams object, which you can use to store tween settings + to pass to multiple tweens via myTween.SetAs(myTweenParms) + + + Clears and resets this TweenParams instance using default values, + so it can be reused without instantiating another one + + + Sets the autoKill behaviour of the tween. + Has no effect if the tween has already started + If TRUE the tween will be automatically killed when complete + + + Sets an ID for the tween, which can then be used as a filter with DOTween's static methods. + The ID to assign to this tween. Can be an int, a string, an object or anything else. + + + Sets an ID for the tween, which can then be used as a filter with DOTween's static methods. + The ID to assign to this tween. Can be an int, a string, an object or anything else. + + + Sets an ID for the tween, which can then be used as a filter with DOTween's static methods. + The ID to assign to this tween. Can be an int, a string, an object or anything else. + + + Sets the target for the tween, which can then be used as a filter with DOTween's static methods. + IMPORTANT: use it with caution. If you just want to set an ID for the tween use SetId instead. + When using shorcuts the shortcut target is already assigned as the tween's target, + so using this method will overwrite it and prevent shortcut-operations like myTarget.DOPause from working correctly. + The target to assign to this tween. Can be an int, a string, an object or anything else. + + + Sets the looping options for the tween. + Has no effect if the tween has already started + Number of cycles to play (-1 for infinite - will be converted to 1 in case the tween is nested in a Sequence) + Loop behaviour type (default: LoopType.Restart) + + + Sets the ease of the tween. + If applied to Sequences eases the whole sequence animation + Eventual overshoot or amplitude to use with Back or Elastic easeType (default is 1.70158) + Eventual period to use with Elastic easeType (default is 0) + + + Sets the ease of the tween using an AnimationCurve. + If applied to Sequences eases the whole sequence animation + + + Sets the ease of the tween using a custom ease function. + If applied to Sequences eases the whole sequence animation + + + Sets the recycling behaviour for the tween. + If TRUE the tween will be recycled after being killed, otherwise it will be destroyed. + + + Sets the update type to the one defined in DOTween.defaultUpdateType (UpdateType.Normal unless changed) + and lets you choose if it should be independent from Unity's Time.timeScale + If TRUE the tween will ignore Unity's Time.timeScale + + + Sets the type of update (default or independent) for the tween + The type of update (default: UpdateType.Normal) + If TRUE the tween will ignore Unity's Time.timeScale + + + Sets the onStart callback for the tween. + Called the first time the tween is set in a playing state, after any eventual delay + + + Sets the onPlay callback for the tween. + Called when the tween is set in a playing state, after any eventual delay. + Also called each time the tween resumes playing from a paused state + + + Sets the onRewind callback for the tween. + Called when the tween is rewinded, + either by calling Rewind or by reaching the start position while playing backwards. + Rewinding a tween that is already rewinded will not fire this callback + + + Sets the onUpdate callback for the tween. + Called each time the tween updates + + + Sets the onStepComplete callback for the tween. + Called the moment the tween completes one loop cycle, even when going backwards + + + Sets the onComplete callback for the tween. + Called the moment the tween reaches its final forward position, loops included + + + Sets the onKill callback for the tween. + Called the moment the tween is killed + + + Sets the onWaypointChange callback for the tween. + Called when a path tween reaches a new waypoint + + + Sets a delayed startup for the tween. + Has no effect on Sequences or if the tween has already started + + + If isRelative is TRUE sets the tween as relative + (the endValue will be calculated as startValue + endValue instead than being used directly). + Has no effect on Sequences or if the tween has already started + + + If isSpeedBased is TRUE sets the tween as speed based + (the duration will represent the number of units the tween moves x second). + Has no effect on Sequences, nested tweens, or if the tween has already started + + + + Methods that extend Tween objects and allow to set their parameters + + + + Sets the autoKill behaviour of the tween to TRUE. + Has no effect if the tween has already started or if it's added to a Sequence + + + Sets the autoKill behaviour of the tween. + Has no effect if the tween has already started or if it's added to a Sequence + If TRUE the tween will be automatically killed when complete + + + Sets an ID for the tween (), which can then be used as a filter with DOTween's static methods. + The ID to assign to this tween. Can be an int, a string, an object or anything else. + + + Sets a string ID for the tween (), which can then be used as a filter with DOTween's static methods. + Filtering via string is 2X faster than using an object as an ID (using the alternate obejct overload) + The string ID to assign to this tween. + + + Sets an int ID for the tween (), which can then be used as a filter with DOTween's static methods. + Filtering via int is 4X faster than via object, 2X faster than via string (using the alternate object/string overloads) + The int ID to assign to this tween. + + + Allows to link this tween to a GameObject + so that it will be automatically killed when the GameObject is destroyed. + Has no effect if the tween is added to a Sequence + The link target (unrelated to the target set via SetTarget) + + + Allows to link this tween to a GameObject and assign a behaviour depending on it. + This will also automatically kill the tween when the GameObject is destroyed. + Has no effect if the tween is added to a Sequence + The link target (unrelated to the target set via SetTarget) + The behaviour to use ( is always evaluated even if you choose another one) + + + Sets the target for the tween, which can then be used as a filter with DOTween's static methods. + IMPORTANT: use it with caution. If you just want to set an ID for the tween use SetId instead. + When using shorcuts the shortcut target is already assigned as the tween's target, + so using this method will overwrite it and prevent shortcut-operations like myTarget.DOPause from working correctly. + The target to assign to this tween. Can be an int, a string, an object or anything else. + + + Sets the looping options for the tween. + Has no effect if the tween has already started + Number of cycles to play (-1 for infinite - will be converted to 1 in case the tween is nested in a Sequence) + + + Sets the looping options for the tween. + Has no effect if the tween has already started + Number of cycles to play (-1 for infinite - will be converted to 1 in case the tween is nested in a Sequence) + Loop behaviour type (default: LoopType.Restart) + + + Sets the ease of the tween. + If applied to Sequences eases the whole sequence animation + + + Sets the ease of the tween. + If applied to Sequences eases the whole sequence animation + + Eventual overshoot to use with Back or Flash ease (default is 1.70158 - 1 for Flash). + In case of Flash ease it must be an intenger and sets the total number of flashes that will happen. + Using an even number will complete the tween on the starting value, while an odd one will complete it on the end value. + + + + Sets the ease of the tween. + If applied to Sequences eases the whole sequence animation + Eventual amplitude to use with Elastic easeType or overshoot to use with Flash easeType (default is 1.70158 - 1 for Flash). + In case of Flash ease it must be an integer and sets the total number of flashes that will happen. + Using an even number will complete the tween on the starting value, while an odd one will complete it on the end value. + + Eventual period to use with Elastic or Flash easeType (default is 0). + In case of Flash ease it indicates the power in time of the ease, and must be between -1 and 1. + 0 is balanced, 1 weakens the ease with time, -1 starts the ease weakened and gives it power towards the end. + + + + Sets the ease of the tween using an AnimationCurve. + If applied to Sequences eases the whole sequence animation + + + Sets the ease of the tween using a custom ease function (which must return a value between 0 and 1). + If applied to Sequences eases the whole sequence animation + + + Allows the tween to be recycled after being killed. + + + Sets the recycling behaviour for the tween. + If TRUE the tween will be recycled after being killed, otherwise it will be destroyed. + + + Sets the update type to UpdateType.Normal and lets you choose if it should be independent from Unity's Time.timeScale + If TRUE the tween will ignore Unity's Time.timeScale + + + Sets the type of update for the tween + The type of update (defalt: UpdateType.Normal) + + + Sets the type of update for the tween and lets you choose if it should be independent from Unity's Time.timeScale + The type of update + If TRUE the tween will ignore Unity's Time.timeScale + + + EXPERIMENTAL: inverts this tween, so that it will play from the end to the beginning + (playing it backwards will actually play it from the beginning to the end). + Has no effect if the tween has already started or if it's added to a Sequence + + + EXPERIMENTAL: inverts this tween, so that it will play from the end to the beginning + (playing it backwards will actually play it from the beginning to the end). + Has no effect if the tween has already started or if it's added to a Sequence + If TRUE the tween will be inverted, otherwise it won't + + + Sets the onStart callback for the tween, clearing any previous onStart callback that was set. + Called the first time the tween is set in a playing state, after any eventual delay + + + Sets the onPlay callback for the tween, clearing any previous onPlay callback that was set. + Called when the tween is set in a playing state, after any eventual delay. + Also called each time the tween resumes playing from a paused state + + + Sets the onPause callback for the tween, clearing any previous onPause callback that was set. + Called when the tween state changes from playing to paused. + If the tween has autoKill set to FALSE, this is called also when the tween reaches completion. + + + Sets the onRewind callback for the tween, clearing any previous onRewind callback that was set. + Called when the tween is rewinded, + either by calling Rewind or by reaching the start position while playing backwards. + Rewinding a tween that is already rewinded will not fire this callback + + + Sets the onUpdate callback for the tween, clearing any previous onUpdate callback that was set. + Called each time the tween updates + + + Sets the onStepComplete callback for the tween, clearing any previous onStepComplete callback that was set. + Called the moment the tween completes one loop cycle, even when going backwards + + + Sets the onComplete callback for the tween, clearing any previous onComplete callback that was set. + Called the moment the tween reaches its final forward position, loops included + + + Sets the onKill callback for the tween, clearing any previous onKill callback that was set. + Called the moment the tween is killed + + + Sets the onWaypointChange callback for the tween, clearing any previous onWaypointChange callback that was set. + Called when a path tween's current waypoint changes + + + Sets the parameters of the tween (id, ease, loops, delay, timeScale, callbacks, etc) as the parameters of the given one. + Doesn't copy specific SetOptions settings: those will need to be applied manually each time. + Has no effect if the tween has already started. + NOTE: the tween's target will not be changed + Tween from which to copy the parameters + + + Sets the parameters of the tween (id, ease, loops, delay, timeScale, callbacks, etc) as the parameters of the given TweenParams. + Has no effect if the tween has already started. + TweenParams from which to copy the parameters + + + Adds the given tween to the end of the Sequence. + Has no effect if the Sequence has already started + The tween to append + + + Adds the given tween to the beginning of the Sequence, pushing forward the other nested content. + Has no effect if the Sequence has already started + The tween to prepend + + + Inserts the given tween at the same time position of the last tween, callback or interval added to the Sequence. + Note that, in case of a Join after an interval, the insertion time will be the time where the interval starts, not where it finishes. + Has no effect if the Sequence has already started + + + Inserts the given tween at the given time position in the Sequence, + automatically adding an interval if needed. + Has no effect if the Sequence has already started + The time position where the tween will be placed + The tween to insert + + + Adds the given interval to the end of the Sequence. + Has no effect if the Sequence has already started + The interval duration + + + Adds the given interval to the beginning of the Sequence, pushing forward the other nested content. + Has no effect if the Sequence has already started + The interval duration + + + Adds the given callback to the end of the Sequence. + Has no effect if the Sequence has already started + The callback to append + + + Adds the given callback to the beginning of the Sequence, pushing forward the other nested content. + Has no effect if the Sequence has already started + The callback to prepend + + + Inserts the given callback at the same time position of the last tween, callback or interval added to the Sequence. + Note that, in case of a Join after an interval, the insertion time will be the time where the interval starts, not where it finishes. + Has no effect if the Sequence has already started + /// <param name="callback">The callback to prepend</param> + + + Inserts the given callback at the given time position in the Sequence, + automatically adding an interval if needed. + Has no effect if the Sequence has already started + The time position where the callback will be placed + The callback to insert + + + Changes a TO tween into a FROM tween: sets the current target's position as the tween's endValue + then immediately sends the target to the previously set endValue. + + + Changes a TO tween into a FROM tween: sets the current target's position as the tween's endValue + then immediately sends the target to the previously set endValue. + If TRUE the FROM value will be calculated as relative to the current one + + + Changes a TO tween into a FROM tween: sets the current value of the target as the endValue, + and the previously passed endValue as the actual startValue. + If TRUE sets the target to from value immediately, otherwise waits for the tween to start + If TRUE the FROM value will be calculated as relative to the current one + + + Changes a TO tween into a FROM tween: sets the tween's starting value to the given one + and eventually sets the tween's target to that value immediately. + Value to start from + If TRUE sets the target to from value immediately, otherwise waits for the tween to start + If TRUE the FROM/TO values will be calculated as relative to the current ones + + + Changes a TO tween into a FROM tween: sets the tween's starting value to the given one + and eventually sets the tween's target to that value immediately. + Alpha value to start from (in case of Fade tweens) + If TRUE sets the target to from value immediately, otherwise waits for the tween to start + If TRUE the FROM/TO values will be calculated as relative to the current ones + + + Changes a TO tween into a FROM tween: sets the tween's starting value to the given one + and eventually sets the tween's target to that value immediately. + Value to start from (in case of Vector tweens that act on a single coordinate or scale tweens) + If TRUE sets the target to from value immediately, otherwise waits for the tween to start + If TRUE the FROM/TO values will be calculated as relative to the current ones + + + Changes a TO tween into a FROM tween: sets the tween's starting value to the given one + and eventually sets the tween's target to that value immediately. + Value to start from (in case of Vector tweens that act on a single coordinate or scale tweens) + If TRUE sets the target to from value immediately, otherwise waits for the tween to start + If TRUE the FROM/TO values will be calculated as relative to the current ones + + + Sets a delayed startup for the tween. + In case of Sequences behaves the same as , + which means the delay will repeat in case of loops (while with tweens it's ignored after the first loop cycle). + Has no effect if the tween has already started + + + EXPERIMENTAL: implemented in v1.2.340. + Sets a delayed startup for the tween with options to choose how the delay is applied in case of Sequences. + Has no effect if the tween has already started + Only used by types: If FALSE sets the delay as a one-time occurrence + (defaults to this for types), + otherwise as a Sequence interval which will repeat at the beginning of every loop cycle + + + Sets the tween as relative + (the endValue will be calculated as startValue + endValue instead than being used directly). + Has no effect on Sequences or if the tween has already started + + + If isRelative is TRUE sets the tween as relative + (the endValue will be calculated as startValue + endValue instead than being used directly). + Has no effect on Sequences or if the tween has already started + + + If isSpeedBased is TRUE sets the tween as speed based + (the duration will represent the number of units the tween moves x second). + Has no effect on Sequences, nested tweens, or if the tween has already started + + + If isSpeedBased is TRUE sets the tween as speed based + (the duration will represent the number of units the tween moves x second). + Has no effect on Sequences, nested tweens, or if the tween has already started + + + Options for float tweens + If TRUE the tween will smoothly snap all values to integers + + + Options for Vector2 tweens + If TRUE the tween will smoothly snap all values to integers + + + Options for Vector2 tweens + Selecting an axis will tween the vector only on that axis, leaving the others untouched + If TRUE the tween will smoothly snap all values to integers + + + Options for Vector3 tweens + If TRUE the tween will smoothly snap all values to integers + + + Options for Vector3 tweens + Selecting an axis will tween the vector only on that axis, leaving the others untouched + If TRUE the tween will smoothly snap all values to integers + + + Options for Vector4 tweens + If TRUE the tween will smoothly snap all values to integers + + + Options for Vector4 tweens + Selecting an axis will tween the vector only on that axis, leaving the others untouched + If TRUE the tween will smoothly snap all values to integers + + + Options for Quaternion tweens + If TRUE (default) the rotation will take the shortest route, and will not rotate more than 360°. + If FALSE the rotation will be fully accounted. Is always FALSE if the tween is set as relative + + + Options for Color tweens + If TRUE only the alpha value of the color will be tweened + + + Options for Vector4 tweens + If TRUE the tween will smoothly snap all values to integers + + + Options for Vector4 tweens + If TRUE, rich text will be interpreted correctly while animated, + otherwise all tags will be considered as normal text + The type of scramble to use, if any + A string containing the characters to use for scrambling. + Use as many characters as possible (minimum 10) because DOTween uses a fast scramble mode which gives better results with more characters. + Leave it to NULL to use default ones + + + Options for Vector3Array tweens + If TRUE the tween will smoothly snap all values to integers + + + Options for Vector3Array tweens + If TRUE the tween will smoothly snap all values to integers + + + Options for ShapeCircle tweens + If TRUE the center you set in the DOTween.To method will be considered as relative + to the starting position of the target + If TRUE the tween will smoothly snap all values to integers + + + Options for Path tweens (created via the DOPath shortcut) + The eventual movement axis to lock. You can input multiple axis if you separate them like this: + AxisConstrain.X | AxisConstraint.Y + The eventual rotation axis to lock. You can input multiple axis if you separate them like this: + AxisConstrain.X | AxisConstraint.Y + + + Options for Path tweens (created via the DOPath shortcut) + If TRUE the path will be automatically closed + The eventual movement axis to lock. You can input multiple axis if you separate them like this: + AxisConstrain.X | AxisConstraint.Y + The eventual rotation axis to lock. You can input multiple axis if you separate them like this: + AxisConstrain.X | AxisConstraint.Y + + + Additional LookAt options for Path tweens (created via the DOPath shortcut). + Orients the target towards the given position. + Must be chained directly to the tween creation method or to a SetOptions + The position to look at + The eventual direction to consider as "forward". + If left to NULL defaults to the regular forward side of the transform + The vector that defines in which direction up is (default: Vector3.up) + + + Additional LookAt options for Path tweens (created via the DOPath shortcut). + Orients the target towards the given position with options to keep the Z rotation stable. + Must be chained directly to the tween creation method or to a SetOptions + The position to look at + If TRUE doesn't rotate the target along the Z axis + + + Additional LookAt options for Path tweens (created via the DOPath shortcut). + Orients the target towards another transform. + Must be chained directly to the tween creation method or to a SetOptions + The transform to look at + The eventual direction to consider as "forward". + If left to NULL defaults to the regular forward side of the transform + The vector that defines in which direction up is (default: Vector3.up) + + + Additional LookAt options for Path tweens (created via the DOPath shortcut). + Orients the target towards another transform with options to keep the Z rotation stable. + Must be chained directly to the tween creation method or to a SetOptions + The transform to look at + If TRUE doesn't rotate the target along the Z axis + + + Additional LookAt options for Path tweens (created via the DOPath shortcut). + Orients the target to the path, with the given lookAhead. + Must be chained directly to the tween creation method or to a SetOptions + The percentage of lookAhead to use (0 to 1) + The eventual direction to consider as "forward". + If left to NULL defaults to the regular forward side of the transform + The vector that defines in which direction up is (default: Vector3.up) + + + Additional LookAt options for Path tweens (created via the DOPath shortcut). + Orients the path with options to keep the Z rotation stable. + Must be chained directly to the tween creation method or to a SetOptions + The percentage of lookAhead to use (0 to 1) + If TRUE doesn't rotate the target along the Z axis + + + + Types of log behaviours + + + + Log only warnings and errors + + + Log warnings, errors and additional infos + + + Log only errors + + + + Indicates either a Tweener or a Sequence + + + + TimeScale for the tween + + + If TRUE the tween will play backwards + + + If TRUE the tween is completely inverted but without playing it backwards + (play backwards will actually play the tween in the original direction) + + + Object ID (usable for filtering with DOTween static methods). Can be anything except a string or an int + (use or for those) + + + String ID (usable for filtering with DOTween static methods). 2X faster than using an object id + + + Int ID (usable for filtering with DOTween static methods). 4X faster than using an object id, 2X faster than using a string id. + Default is -999 so avoid using an ID like that or it will capture all unset intIds + + + Tween target (usable for filtering with DOTween static methods). Automatically set by tween creation shortcuts + + + Called when the tween is set in a playing state, after any eventual delay. + Also called each time the tween resumes playing from a paused state + + + Called when the tween state changes from playing to paused. + If the tween has autoKill set to FALSE, this is called also when the tween reaches completion. + + + Called when the tween is rewinded, + either by calling Rewind or by reaching the start position while playing backwards. + Rewinding a tween that is already rewinded will not fire this callback + + + Called each time the tween updates + + + Called the moment the tween completes one loop cycle + + + Called the moment the tween reaches completion (loops included) + + + Called the moment the tween is killed + + + Called when a path tween's current waypoint changes + + + Tweeners-only (ignored by Sequences), returns TRUE if the tween was set as relative + + + + Set by SetTarget if DOTween's Debug Mode is on (see DOTween Utility Panel -> "Store GameObject's ID" debug option + + + + FALSE when tween is (or should be) despawned - set only by TweenManager + + + Gets and sets the time position (loops included, delays excluded) of the tween + + + Returns TRUE if the tween is set to loop (either a set number of times or infinitely) + + + TRUE after the tween was set in a play state at least once, AFTER any delay is elapsed + + + Time position within a single loop cycle + + + + Animates a single value + + + + Changes the start value of a tween and rewinds it (without pausing it). + Has no effect with tweens that are inside Sequences + The new start value + If bigger than 0 applies it as the new tween duration + + + Changes the end value of a tween and rewinds it (without pausing it). + Has no effect with tweens that are inside Sequences + The new end value + If bigger than 0 applies it as the new tween duration + If TRUE the start value will become the current target's value, otherwise it will stay the same + + + Changes the end value of a tween and rewinds it (without pausing it). + Has no effect with tweens that are inside Sequences + The new end value + If TRUE the start value will become the current target's value, otherwise it will stay the same + + + Changes the start and end value of a tween and rewinds it (without pausing it). + Has no effect with tweens that are inside Sequences + The new start value + The new end value + If bigger than 0 applies it as the new tween duration + + + + Used internally + + + + + Update type + + + + Updates every frame during Update calls + + + Updates every frame during LateUpdate calls + + + Updates using FixedUpdate calls + + + Updates using manual update calls + +
+
diff --git a/Assets/Plugins/Demigiant/DOTween/DOTween.XML.meta b/Assets/Plugins/Demigiant/DOTween/DOTween.XML.meta new file mode 100644 index 0000000..7a866b5 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/DOTween.XML.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 34192c5e0d14aee43a0e86cc4823268a +TextScriptImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DOTween/DOTween.dll b/Assets/Plugins/Demigiant/DOTween/DOTween.dll new file mode 100644 index 0000000000000000000000000000000000000000..57112d34beef1b8bb4f78782d752c7bef2452e0c GIT binary patch literal 175616 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 + + + DOTweenEditor + + + + + Contains compatibility methods taken from DemiEditor (for when DOTween is without it) + + + + + Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account + + + + + Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account + + + + + Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account + + + + + Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account + + + + + Starts the update loop of tween in the editor. Has no effect during playMode. + + Eventual callback to call after every update + + + + Stops the update loop and clears the onPreviewUpdated callback. + + If TRUE also resets the tweened objects to their original state. + Note that this works by calling Rewind on all tweens, so it will work correctly + only if you have a single tween type per object and it wasn't killed + If TRUE also kills any cached tween + + + + Readies the tween for editor preview by setting its UpdateType to Manual plus eventual extra settings. + + The tween to ready + If TRUE (recommended) removes all callbacks (OnComplete/Rewind/etc) + If TRUE prevents the tween from being auto-killed at completion + If TRUE starts playing the tween immediately + + + Full major version + first minor version (ex: 2018.1f) + + + Major version + + + First minor version (ex: in 2018.1 it would be 1) + + + + Checks that the given editor texture use the correct import settings, + and applies them if they're incorrect. + + + + + Returns TRUE if setup is required + + + + + Returns TRUE if the file/directory at the given path exists. + + Path, relative to Unity's project folder + + + + + Converts the given project-relative path to a full path, + with backward (\) slashes). + + + + + Converts the given full path to a path usable with AssetDatabase methods + (relative to Unity's project folder, and with the correct Unity forward (/) slashes). + + + + + Connects to a asset. + If the asset already exists at the given path, loads it and returns it. + Otherwise, either returns NULL or automatically creates it before loading and returning it + (depending on the given parameters). + + Asset type + File path (relative to Unity's project folder) + If TRUE and the requested asset doesn't exist, forces its creation + + + + Full path for the given loaded assembly, assembly file included + + + + + Adds the given global define if it's not already present + + + + + Removes the given global define if it's present + + + + + Returns TRUE if the given global define is present in all the + or only in the given , depending on passed parameters. + + + to use. Leave NULL to check in all of them. + + + + Not used as menu item anymore, but as a utility function + + + + Full major version + first minor version (ex: 2018.1f) + + + Major version + + + First minor version (ex: in 2018.1 it would be 1) + + + diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.XML.meta b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.XML.meta new file mode 100644 index 0000000..7cec113 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.XML.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 2e2c6224d345d9249acfa6e8ef40bb2d +TextScriptImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll new file mode 100644 index 0000000000000000000000000000000000000000..4911a86b3feaad8d13ba041e50ed77832d813651 GIT binary patch literal 70656 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%0Dh6|eO%in;`_q3bA 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 literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll.meta b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll.meta new file mode 100644 index 0000000..53590f3 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 45d5034162d6cf04dbe46da84fc7d074 +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML new file mode 100644 index 0000000..02c3c95 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML @@ -0,0 +1,14 @@ + + + + DOTweenUpgradeManager + + + + + This class and its whole library are deleted the first time DOTween's setup is run after an upgrade (or after a new install). + NOTE: DidReloadScripts doesn't work on first install so it's useless, InitializeOnLoad is the only way + + + + diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML.meta b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML.meta new file mode 100644 index 0000000..a7f43a3 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 3df9fdaadcb4c394e826a4d8d20bb952 +TextScriptImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll new file mode 100644 index 0000000000000000000000000000000000000000..ec5dd4c3d4f9034e0b9482b721febf8a8a4536e0 GIT binary patch literal 10752 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 H@xXrrfJ!8a literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll.meta b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll.meta new file mode 100644 index 0000000..c6717e9 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 2bf936a5d80799e4e88ec9270fea75a4 +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/Imgs.meta b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs.meta new file mode 100644 index 0000000..a81ba5f --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 0034ebae0c2a9344e897db1160d71b6d +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..d06fc7c3e49fb705b19f50a23884e11e08fd6e89 GIT binary patch literal 1565 zcmV+&2IBdNP)pK&q+iZU-R{R_dCD)yXSsA=iKiWUaHS%xglyYZad)#h+<5;*}0 zNm4;#XNMU$Zj;|vsJ23aE-5O{$8uo1iN`?c(v%ev86gvrQJJtDUgxox^bsB@>w%Sv@Z{F3?7c1><;yj*g<&fQ;rHj}CCd5!B9uJ9iB}?8sX9 z0l}mbA`+6NSzvKr7orW|#Qq*|(_H8{K}SN-b6PMMr68BfK|728UnV4rbuENZG2Z=Z5Wu9k@Z ztFhSr_^u&Go2vR`!G?lmnDf^U%@^vc&8BfCWA&5;S^i0KcuQ?}kJ(Z3^ukf69xF;y zhTjIduJg}*jhXlo$g+|CIjkSftK3odtF^Ij{rKV$Cnn9$)I>`OWpR2BZvMLfc!?KG z`Ygj57^xT!Rkoeb;;a>--p1*pKcW45EApC=r9;lR-6-kL1bPPs&3JrJ`3>IVgWG}u zrp-R@PdWz2X;89OBJXFclQSuKH%hu+=km#Rb8S^yF>)=)yvW|npJ`O9bTXp9hsHlb znp{n43g)Eywa^bS0=L=}#fV_6`pc{T=00UOIql`_gv<&0h%GG1sFbh_*L zqP^;2G6HL$uEjx);7q^Pe;Vac1Sb6of8vi>KZaIU-M!xHLy7h)J?TTTtlXuy)v(S-r9V9I7cw) zBJ@dWbWCbJy!KBwxl~8X#1q??E z(FRaBcRnf^OG3xEWE{XiDJhYPVBV54Q*B2`fK%)r4bJp zv@(2PX=l*%^bG!@&}Ku`gi%4ta5WNM0#2BfuE7?N_gS0ljFV#0yW1U1N=~9Q$*7V9 zs*5|&bg|QQt;WLQDrER5jfAhm2W6wJag5au!96_|(2Th-DB`E<_rUdkM#GW4COG!3 z`K~-?KL;C^l|r|5RUE^pEPvtTLR^K!B04D#hpLNGOCz;*Z|Rx&7b{!rLVU{NI)eH5 zyg0@a6A$elUi>gA6@P$cWD53gSzVnTr*}j6sd4;47Sd19E6U{>QXP%UxLJ2^hjTS@ z6ZIq2+r)$@>IAiS(jN5U4r-m;p98e&wn5+}NTri*S7~M1@c0mh@Mz$FrSMzj$u5?< P00000NkvXXu0mjftl$Bl literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png.meta b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png.meta new file mode 100644 index 0000000..61c3cce --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 8da095e39e9b4df488dfd436f81116d6 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 128 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenMiniIcon.png b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenMiniIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..7cd74c1a26df1a45564c7a0e21c62d0ef3af2fd1 GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{!3Opi<85sBugD~Uq{1quc!H=FU zjv*3LlT#WP(iF^Cl2R3(u|Mi}s1fft&-^joZ3WZ(2Ug1Y!S$8-a*li}_21XqSnvJ# z@Y+`2=i8W`Zfg*cV81TuZmqUr`JI~8M}9x(m1v%HMLo`ySuokJ?%Vq7{C4$+ST-HH z5`RuO<@s#=8XoVy+lF)YEaxg?4vAr1(jlM1>Tx0PF<0}pFUf679a{7Ee==}5`qQz? zuIUa#(3byge21?t-^6oqTDwHc&iz0s`zDdQwtGKbESsPtIM1KwqFB4+nW=frYn!|7 zvs(U9y->(A=TFZ3t)>6Hv^;B{u+A(fd3smW;eIaTDS0KOITHVv7#gf%Y$mkMJ`MCd NgQu&X%Q~loCICTRfS>>X literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta new file mode 100644 index 0000000..c343a61 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 61521df2e071645488ba3d05e49289ae +timeCreated: 1602317874 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + 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: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer.png b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer.png new file mode 100644 index 0000000000000000000000000000000000000000..e29d02fe18b777b1d316feb647b339803c5126de GIT binary patch literal 4409 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 literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer.png.meta b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer.png.meta new file mode 100644 index 0000000..7ca1911 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 7051dba417b3d53409f2918f1ea4938d +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 256 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer_dark.png b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..e48db5ef7a2b83eff50d6e3b5fe9ba3bcd4a5015 GIT binary patch literal 4429 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 TqmFO~00000NkvXXu0mjf{EM6C literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer_dark.png.meta b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer_dark.png.meta new file mode 100644 index 0000000..f12a1a7 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer_dark.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 519694efe2bb2914788b151fbd8c01f4 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Header.jpg b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Header.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4d710d719075150879b1ee76680af87791c4d3b3 GIT binary patch literal 22787 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 QE#Li`lK-oJv9mh=KQ4fgsQ>@~ literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Header.jpg.meta b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Header.jpg.meta new file mode 100644 index 0000000..26e4255 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Header.jpg.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 78a59ca99f8987941adb61f9e14a06a7 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 512 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DOTween/Modules.meta b/Assets/Plugins/Demigiant/DOTween/Modules.meta new file mode 100644 index 0000000..24cd2ac --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 143604b8bad857d47a6f7cc7a533e2dc +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTween.Modules.asmdef b/Assets/Plugins/Demigiant/DOTween/Modules/DOTween.Modules.asmdef new file mode 100644 index 0000000..42ef5ab --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTween.Modules.asmdef @@ -0,0 +1,3 @@ +{ + "name": "DOTween.Modules" +} diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTween.Modules.asmdef.meta b/Assets/Plugins/Demigiant/DOTween/Modules/DOTween.Modules.asmdef.meta new file mode 100644 index 0000000..bec4881 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTween.Modules.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fad681b9bfe621d4fa07f4f69c311443 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs new file mode 100644 index 0000000..d958ae0 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs @@ -0,0 +1,198 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2018/07/13 + +#if true // MODULE_MARKER +using System; +using DG.Tweening.Core; +using DG.Tweening.Plugins.Options; +using UnityEngine; +using UnityEngine.Audio; // Required for AudioMixer + +#pragma warning disable 1591 +namespace DG.Tweening +{ + public static class DOTweenModuleAudio + { + #region Shortcuts + + #region Audio + + /// Tweens an AudioSource's volume to the given value. + /// Also stores the AudioSource as the tween's target so it can be used for filtered operations + /// The end value to reach (0 to 1)The duration of the tween + public static TweenerCore DOFade(this AudioSource target, float endValue, float duration) + { + if (endValue < 0) endValue = 0; + else if (endValue > 1) endValue = 1; + TweenerCore t = DOTween.To(() => target.volume, x => target.volume = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens an AudioSource's pitch to the given value. + /// Also stores the AudioSource as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOPitch(this AudioSource target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.pitch, x => target.pitch = x, endValue, duration); + t.SetTarget(target); + return t; + } + + #endregion + + #region AudioMixer + + /// Tweens an AudioMixer's exposed float to the given value. + /// Also stores the AudioMixer as the tween's target so it can be used for filtered operations. + /// Note that you need to manually expose a float in an AudioMixerGroup in order to be able to tween it from an AudioMixer. + /// Name given to the exposed float to set + /// The end value to reachThe duration of the tween + public static TweenerCore DOSetFloat(this AudioMixer target, string floatName, float endValue, float duration) + { + TweenerCore t = DOTween.To(()=> { + float currVal; + target.GetFloat(floatName, out currVal); + return currVal; + }, x=> target.SetFloat(floatName, x), endValue, duration); + t.SetTarget(target); + return t; + } + + #region Operation Shortcuts + + /// + /// Completes all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens completed + /// (meaning the tweens that don't have infinite loops and were not already complete) + /// + /// For Sequences only: if TRUE also internal Sequence callbacks will be fired, + /// otherwise they will be ignored + public static int DOComplete(this AudioMixer target, bool withCallbacks = false) + { + return DOTween.Complete(target, withCallbacks); + } + + /// + /// Kills all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens killed. + /// + /// If TRUE completes the tween before killing it + public static int DOKill(this AudioMixer target, bool complete = false) + { + return DOTween.Kill(target, complete); + } + + /// + /// Flips the direction (backwards if it was going forward or viceversa) of all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens flipped. + /// + public static int DOFlip(this AudioMixer target) + { + return DOTween.Flip(target); + } + + /// + /// Sends to the given position all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens involved. + /// + /// Time position to reach + /// (if higher than the whole tween duration the tween will simply reach its end) + /// If TRUE will play the tween after reaching the given position, otherwise it will pause it + public static int DOGoto(this AudioMixer target, float to, bool andPlay = false) + { + return DOTween.Goto(target, to, andPlay); + } + + /// + /// Pauses all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens paused. + /// + public static int DOPause(this AudioMixer target) + { + return DOTween.Pause(target); + } + + /// + /// Plays all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens played. + /// + public static int DOPlay(this AudioMixer target) + { + return DOTween.Play(target); + } + + /// + /// Plays backwards all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens played. + /// + public static int DOPlayBackwards(this AudioMixer target) + { + return DOTween.PlayBackwards(target); + } + + /// + /// Plays forward all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens played. + /// + public static int DOPlayForward(this AudioMixer target) + { + return DOTween.PlayForward(target); + } + + /// + /// Restarts all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens restarted. + /// + public static int DORestart(this AudioMixer target) + { + return DOTween.Restart(target); + } + + /// + /// Rewinds all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens rewinded. + /// + public static int DORewind(this AudioMixer target) + { + return DOTween.Rewind(target); + } + + /// + /// Smoothly rewinds all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens rewinded. + /// + public static int DOSmoothRewind(this AudioMixer target) + { + return DOTween.SmoothRewind(target); + } + + /// + /// Toggles the paused state (plays if it was paused, pauses if it was playing) of all tweens that have this target as a reference + /// (meaning tweens that were started from this target, or that had this target added as an Id) + /// and returns the total number of tweens involved. + /// + public static int DOTogglePause(this AudioMixer target) + { + return DOTween.TogglePause(target); + } + + #endregion + + #endregion + + #endregion + } +} +#endif diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs.meta b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs.meta new file mode 100644 index 0000000..50aa010 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b766d08851589514b97afb23c6f30a70 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs new file mode 100644 index 0000000..2ab3775 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs @@ -0,0 +1,146 @@ +using UnityEngine; + +#if false || EPO_DOTWEEN // MODULE_MARKER + +using EPOOutline; +using DG.Tweening.Plugins.Options; +using DG.Tweening; +using DG.Tweening.Core; + +namespace DG.Tweening +{ + public static class DOTweenModuleEPOOutline + { + public static int DOKill(this SerializedPass target, bool complete) + { + return DOTween.Kill(target, complete); + } + + public static TweenerCore DOFloat(this SerializedPass target, string propertyName, float endValue, float duration) + { + var tweener = DOTween.To(() => target.GetFloat(propertyName), x => target.SetFloat(propertyName, x), endValue, duration); + tweener.SetOptions(true).SetTarget(target); + return tweener; + } + + public static TweenerCore DOFade(this SerializedPass target, string propertyName, float endValue, float duration) + { + var tweener = DOTween.ToAlpha(() => target.GetColor(propertyName), x => target.SetColor(propertyName, x), endValue, duration); + tweener.SetOptions(true).SetTarget(target); + return tweener; + } + + public static TweenerCore DOColor(this SerializedPass target, string propertyName, Color endValue, float duration) + { + var tweener = DOTween.To(() => target.GetColor(propertyName), x => target.SetColor(propertyName, x), endValue, duration); + tweener.SetOptions(false).SetTarget(target); + return tweener; + } + + public static TweenerCore DOVector(this SerializedPass target, string propertyName, Vector4 endValue, float duration) + { + var tweener = DOTween.To(() => target.GetVector(propertyName), x => target.SetVector(propertyName, x), endValue, duration); + tweener.SetOptions(false).SetTarget(target); + return tweener; + } + + public static TweenerCore DOFloat(this SerializedPass target, int propertyId, float endValue, float duration) + { + var tweener = DOTween.To(() => target.GetFloat(propertyId), x => target.SetFloat(propertyId, x), endValue, duration); + tweener.SetOptions(true).SetTarget(target); + return tweener; + } + + public static TweenerCore DOFade(this SerializedPass target, int propertyId, float endValue, float duration) + { + var tweener = DOTween.ToAlpha(() => target.GetColor(propertyId), x => target.SetColor(propertyId, x), endValue, duration); + tweener.SetOptions(true).SetTarget(target); + return tweener; + } + + public static TweenerCore DOColor(this SerializedPass target, int propertyId, Color endValue, float duration) + { + var tweener = DOTween.To(() => target.GetColor(propertyId), x => target.SetColor(propertyId, x), endValue, duration); + tweener.SetOptions(false).SetTarget(target); + return tweener; + } + + public static TweenerCore DOVector(this SerializedPass target, int propertyId, Vector4 endValue, float duration) + { + var tweener = DOTween.To(() => target.GetVector(propertyId), x => target.SetVector(propertyId, x), endValue, duration); + tweener.SetOptions(false).SetTarget(target); + return tweener; + } + + public static int DOKill(this Outlinable.OutlineProperties target, bool complete = false) + { + return DOTween.Kill(target, complete); + } + + public static int DOKill(this Outliner target, bool complete = false) + { + return DOTween.Kill(target, complete); + } + + /// + /// Controls the alpha (transparency) of the outline + /// + public static TweenerCore DOFade(this Outlinable.OutlineProperties target, float endValue, float duration) + { + var tweener = DOTween.ToAlpha(() => target.Color, x => target.Color = x, endValue, duration); + tweener.SetOptions(true).SetTarget(target); + return tweener; + } + + /// + /// Controls the color of the outline + /// + public static TweenerCore DOColor(this Outlinable.OutlineProperties target, Color endValue, float duration) + { + var tweener = DOTween.To(() => target.Color, x => target.Color = x, endValue, duration); + tweener.SetOptions(false).SetTarget(target); + return tweener; + } + + /// + /// Controls the amount of blur applied to the outline + /// + public static TweenerCore DOBlurShift(this Outlinable.OutlineProperties target, float endValue, float duration, bool snapping = false) + { + var tweener = DOTween.To(() => target.BlurShift, x => target.BlurShift = x, endValue, duration); + tweener.SetOptions(snapping).SetTarget(target); + return tweener; + } + + /// + /// Controls the amount of blur applied to the outline + /// + public static TweenerCore DOBlurShift(this Outliner target, float endValue, float duration, bool snapping = false) + { + var tweener = DOTween.To(() => target.BlurShift, x => target.BlurShift = x, endValue, duration); + tweener.SetOptions(snapping).SetTarget(target); + return tweener; + } + + /// + /// Controls the amount of dilation applied to the outline + /// + public static TweenerCore DODilateShift(this Outlinable.OutlineProperties target, float endValue, float duration, bool snapping = false) + { + var tweener = DOTween.To(() => target.DilateShift, x => target.DilateShift = x, endValue, duration); + tweener.SetOptions(snapping).SetTarget(target); + return tweener; + } + + /// + /// Controls the amount of dilation applied to the outline + /// + public static TweenerCore DODilateShift(this Outliner target, float endValue, float duration, bool snapping = false) + { + var tweener = DOTween.To(() => target.DilateShift, x => target.DilateShift = x, endValue, duration); + tweener.SetOptions(snapping).SetTarget(target); + return tweener; + } + } +} +#endif diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs.meta b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs.meta new file mode 100644 index 0000000..4b8991f --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e944529dcaee98f4e9498d80e541d93e +timeCreated: 1602593330 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs new file mode 100644 index 0000000..08b0700 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs @@ -0,0 +1,216 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2018/07/13 + +#if true // MODULE_MARKER +using System; +using DG.Tweening.Core; +using DG.Tweening.Core.Enums; +using DG.Tweening.Plugins; +using DG.Tweening.Plugins.Core.PathCore; +using DG.Tweening.Plugins.Options; +using UnityEngine; + +#pragma warning disable 1591 +namespace DG.Tweening +{ + public static class DOTweenModulePhysics + { + #region Shortcuts + + #region Rigidbody + + /// Tweens a Rigidbody's position to the given value. + /// Also stores the rigidbody as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOMove(this Rigidbody target, Vector3 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.position, target.MovePosition, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + + /// Tweens a Rigidbody's X position to the given value. + /// Also stores the rigidbody as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOMoveX(this Rigidbody target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector3(endValue, 0, 0), duration); + t.SetOptions(AxisConstraint.X, snapping).SetTarget(target); + return t; + } + + /// Tweens a Rigidbody's Y position to the given value. + /// Also stores the rigidbody as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOMoveY(this Rigidbody target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector3(0, endValue, 0), duration); + t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target); + return t; + } + + /// Tweens a Rigidbody's Z position to the given value. + /// Also stores the rigidbody as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOMoveZ(this Rigidbody target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector3(0, 0, endValue), duration); + t.SetOptions(AxisConstraint.Z, snapping).SetTarget(target); + return t; + } + + /// Tweens a Rigidbody's rotation to the given value. + /// Also stores the rigidbody as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// Rotation mode + public static TweenerCore DORotate(this Rigidbody target, Vector3 endValue, float duration, RotateMode mode = RotateMode.Fast) + { + TweenerCore t = DOTween.To(() => target.rotation, target.MoveRotation, endValue, duration); + t.SetTarget(target); + t.plugOptions.rotateMode = mode; + return t; + } + + /// Tweens a Rigidbody's rotation so that it will look towards the given position. + /// Also stores the rigidbody as the tween's target so it can be used for filtered operations + /// The position to look atThe duration of the tween + /// Eventual axis constraint for the rotation + /// The vector that defines in which direction up is (default: Vector3.up) + public static TweenerCore DOLookAt(this Rigidbody target, Vector3 towards, float duration, AxisConstraint axisConstraint = AxisConstraint.None, Vector3? up = null) + { + TweenerCore t = DOTween.To(() => target.rotation, target.MoveRotation, towards, duration) + .SetTarget(target).SetSpecialStartupMode(SpecialStartupMode.SetLookAt); + t.plugOptions.axisConstraint = axisConstraint; + t.plugOptions.up = (up == null) ? Vector3.up : (Vector3)up; + return t; + } + + #region Special + + /// Tweens a Rigidbody's position to the given value, while also applying a jump effect along the Y axis. + /// Returns a Sequence instead of a Tweener. + /// Also stores the Rigidbody as the tween's target so it can be used for filtered operations + /// The end value to reach + /// Power of the jump (the max height of the jump is represented by this plus the final Y offset) + /// Total number of jumps + /// The duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static Sequence DOJump(this Rigidbody target, Vector3 endValue, float jumpPower, int numJumps, float duration, bool snapping = false) + { + if (numJumps < 1) numJumps = 1; + float startPosY = 0; + float offsetY = -1; + bool offsetYSet = false; + Sequence s = DOTween.Sequence(); + Tween yTween = DOTween.To(() => target.position, target.MovePosition, new Vector3(0, jumpPower, 0), duration / (numJumps * 2)) + .SetOptions(AxisConstraint.Y, snapping).SetEase(Ease.OutQuad).SetRelative() + .SetLoops(numJumps * 2, LoopType.Yoyo) + .OnStart(() => startPosY = target.position.y); + s.Append(DOTween.To(() => target.position, target.MovePosition, new Vector3(endValue.x, 0, 0), duration) + .SetOptions(AxisConstraint.X, snapping).SetEase(Ease.Linear) + ).Join(DOTween.To(() => target.position, target.MovePosition, new Vector3(0, 0, endValue.z), duration) + .SetOptions(AxisConstraint.Z, snapping).SetEase(Ease.Linear) + ).Join(yTween) + .SetTarget(target).SetEase(DOTween.defaultEaseType); + yTween.OnUpdate(() => { + if (!offsetYSet) { + offsetYSet = true; + offsetY = s.isRelative ? endValue.y : endValue.y - startPosY; + } + Vector3 pos = target.position; + pos.y += DOVirtual.EasedValue(0, offsetY, yTween.ElapsedPercentage(), Ease.OutQuad); + target.MovePosition(pos); + }); + return s; + } + + /// Tweens a Rigidbody's position through the given path waypoints, using the chosen path algorithm. + /// Also stores the Rigidbody as the tween's target so it can be used for filtered operations. + /// NOTE: to tween a rigidbody correctly it should be set to kinematic at least while being tweened. + /// BEWARE: doesn't work on Windows Phone store (waiting for Unity to fix their own bug). + /// If you plan to publish there you should use a regular transform.DOPath. + /// The waypoints to go through + /// The duration of the tween + /// The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) + /// The path mode: 3D, side-scroller 2D, top-down 2D + /// The resolution of the path (useless in case of Linear paths): higher resolutions make for more detailed curved paths but are more expensive. + /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints + /// The color of the path (shown when gizmos are active in the Play panel and the tween is running) + public static TweenerCore DOPath( + this Rigidbody target, Vector3[] path, float duration, PathType pathType = PathType.Linear, + PathMode pathMode = PathMode.Full3D, int resolution = 10, Color? gizmoColor = null + ) + { + if (resolution < 1) resolution = 1; + TweenerCore t = DOTween.To(PathPlugin.Get(), () => target.position, target.MovePosition, new Path(pathType, path, resolution, gizmoColor), duration) + .SetTarget(target).SetUpdate(UpdateType.Fixed); + + t.plugOptions.isRigidbody = true; + t.plugOptions.mode = pathMode; + return t; + } + /// Tweens a Rigidbody's localPosition through the given path waypoints, using the chosen path algorithm. + /// Also stores the Rigidbody as the tween's target so it can be used for filtered operations + /// NOTE: to tween a rigidbody correctly it should be set to kinematic at least while being tweened. + /// BEWARE: doesn't work on Windows Phone store (waiting for Unity to fix their own bug). + /// If you plan to publish there you should use a regular transform.DOLocalPath. + /// The waypoint to go through + /// The duration of the tween + /// The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) + /// The path mode: 3D, side-scroller 2D, top-down 2D + /// The resolution of the path: higher resolutions make for more detailed curved paths but are more expensive. + /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints + /// The color of the path (shown when gizmos are active in the Play panel and the tween is running) + public static TweenerCore DOLocalPath( + this Rigidbody target, Vector3[] path, float duration, PathType pathType = PathType.Linear, + PathMode pathMode = PathMode.Full3D, int resolution = 10, Color? gizmoColor = null + ) + { + if (resolution < 1) resolution = 1; + Transform trans = target.transform; + TweenerCore t = DOTween.To(PathPlugin.Get(), () => trans.localPosition, x => target.MovePosition(trans.parent == null ? x : trans.parent.TransformPoint(x)), new Path(pathType, path, resolution, gizmoColor), duration) + .SetTarget(target).SetUpdate(UpdateType.Fixed); + + t.plugOptions.isRigidbody = true; + t.plugOptions.mode = pathMode; + t.plugOptions.useLocalPosition = true; + return t; + } + // Used by path editor when creating the actual tween, so it can pass a pre-compiled path + internal static TweenerCore DOPath( + this Rigidbody target, Path path, float duration, PathMode pathMode = PathMode.Full3D + ) + { + TweenerCore t = DOTween.To(PathPlugin.Get(), () => target.position, target.MovePosition, path, duration) + .SetTarget(target); + + t.plugOptions.isRigidbody = true; + t.plugOptions.mode = pathMode; + return t; + } + internal static TweenerCore DOLocalPath( + this Rigidbody target, Path path, float duration, PathMode pathMode = PathMode.Full3D + ) + { + Transform trans = target.transform; + TweenerCore t = DOTween.To(PathPlugin.Get(), () => trans.localPosition, x => target.MovePosition(trans.parent == null ? x : trans.parent.TransformPoint(x)), path, duration) + .SetTarget(target); + + t.plugOptions.isRigidbody = true; + t.plugOptions.mode = pathMode; + t.plugOptions.useLocalPosition = true; + return t; + } + + #endregion + + #endregion + + #endregion + } +} +#endif diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs.meta b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs.meta new file mode 100644 index 0000000..0ce0d75 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dae9aa560b4242648a3affa2bfabc365 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs new file mode 100644 index 0000000..8ce2b56 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs @@ -0,0 +1,193 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2018/07/13 + +#if true // MODULE_MARKER +using System; +using DG.Tweening.Core; +using DG.Tweening.Plugins; +using DG.Tweening.Plugins.Core.PathCore; +using DG.Tweening.Plugins.Options; +using UnityEngine; + +#pragma warning disable 1591 +namespace DG.Tweening +{ + public static class DOTweenModulePhysics2D + { + #region Shortcuts + + #region Rigidbody2D Shortcuts + + /// Tweens a Rigidbody2D's position to the given value. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOMove(this Rigidbody2D target, Vector2 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.position, target.MovePosition, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + + /// Tweens a Rigidbody2D's X position to the given value. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOMoveX(this Rigidbody2D target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector2(endValue, 0), duration); + t.SetOptions(AxisConstraint.X, snapping).SetTarget(target); + return t; + } + + /// Tweens a Rigidbody2D's Y position to the given value. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOMoveY(this Rigidbody2D target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector2(0, endValue), duration); + t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target); + return t; + } + + /// Tweens a Rigidbody2D's rotation to the given value. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DORotate(this Rigidbody2D target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.rotation, target.MoveRotation, endValue, duration); + t.SetTarget(target); + return t; + } + + #region Special + + /// Tweens a Rigidbody2D's position to the given value, while also applying a jump effect along the Y axis. + /// Returns a Sequence instead of a Tweener. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations. + /// IMPORTANT: a rigidbody2D can't be animated in a jump arc using MovePosition, so the tween will directly set the position + /// The end value to reach + /// Power of the jump (the max height of the jump is represented by this plus the final Y offset) + /// Total number of jumps + /// The duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static Sequence DOJump(this Rigidbody2D target, Vector2 endValue, float jumpPower, int numJumps, float duration, bool snapping = false) + { + if (numJumps < 1) numJumps = 1; + float startPosY = 0; + float offsetY = -1; + bool offsetYSet = false; + Sequence s = DOTween.Sequence(); + Tween yTween = DOTween.To(() => target.position, x => target.position = x, new Vector2(0, jumpPower), duration / (numJumps * 2)) + .SetOptions(AxisConstraint.Y, snapping).SetEase(Ease.OutQuad).SetRelative() + .SetLoops(numJumps * 2, LoopType.Yoyo) + .OnStart(() => startPosY = target.position.y); + s.Append(DOTween.To(() => target.position, x => target.position = x, new Vector2(endValue.x, 0), duration) + .SetOptions(AxisConstraint.X, snapping).SetEase(Ease.Linear) + ).Join(yTween) + .SetTarget(target).SetEase(DOTween.defaultEaseType); + yTween.OnUpdate(() => { + if (!offsetYSet) { + offsetYSet = true; + offsetY = s.isRelative ? endValue.y : endValue.y - startPosY; + } + Vector3 pos = target.position; + pos.y += DOVirtual.EasedValue(0, offsetY, yTween.ElapsedPercentage(), Ease.OutQuad); + target.MovePosition(pos); + }); + return s; + } + + /// Tweens a Rigidbody2D's position through the given path waypoints, using the chosen path algorithm. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations. + /// NOTE: to tween a Rigidbody2D correctly it should be set to kinematic at least while being tweened. + /// BEWARE: doesn't work on Windows Phone store (waiting for Unity to fix their own bug). + /// If you plan to publish there you should use a regular transform.DOPath. + /// The waypoints to go through + /// The duration of the tween + /// The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) + /// The path mode: 3D, side-scroller 2D, top-down 2D + /// The resolution of the path (useless in case of Linear paths): higher resolutions make for more detailed curved paths but are more expensive. + /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints + /// The color of the path (shown when gizmos are active in the Play panel and the tween is running) + public static TweenerCore DOPath( + this Rigidbody2D target, Vector2[] path, float duration, PathType pathType = PathType.Linear, + PathMode pathMode = PathMode.Full3D, int resolution = 10, Color? gizmoColor = null + ) + { + if (resolution < 1) resolution = 1; + int len = path.Length; + Vector3[] path3D = new Vector3[len]; + for (int i = 0; i < len; ++i) path3D[i] = path[i]; + TweenerCore t = DOTween.To(PathPlugin.Get(), () => target.position, x => target.MovePosition(x), new Path(pathType, path3D, resolution, gizmoColor), duration) + .SetTarget(target).SetUpdate(UpdateType.Fixed); + + t.plugOptions.isRigidbody2D = true; + t.plugOptions.mode = pathMode; + return t; + } + /// Tweens a Rigidbody2D's localPosition through the given path waypoints, using the chosen path algorithm. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations + /// NOTE: to tween a Rigidbody2D correctly it should be set to kinematic at least while being tweened. + /// BEWARE: doesn't work on Windows Phone store (waiting for Unity to fix their own bug). + /// If you plan to publish there you should use a regular transform.DOLocalPath. + /// The waypoint to go through + /// The duration of the tween + /// The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) + /// The path mode: 3D, side-scroller 2D, top-down 2D + /// The resolution of the path: higher resolutions make for more detailed curved paths but are more expensive. + /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints + /// The color of the path (shown when gizmos are active in the Play panel and the tween is running) + public static TweenerCore DOLocalPath( + this Rigidbody2D target, Vector2[] path, float duration, PathType pathType = PathType.Linear, + PathMode pathMode = PathMode.Full3D, int resolution = 10, Color? gizmoColor = null + ) + { + if (resolution < 1) resolution = 1; + int len = path.Length; + Vector3[] path3D = new Vector3[len]; + for (int i = 0; i < len; ++i) path3D[i] = path[i]; + Transform trans = target.transform; + TweenerCore t = DOTween.To(PathPlugin.Get(), () => trans.localPosition, x => target.MovePosition(trans.parent == null ? x : trans.parent.TransformPoint(x)), new Path(pathType, path3D, resolution, gizmoColor), duration) + .SetTarget(target).SetUpdate(UpdateType.Fixed); + + t.plugOptions.isRigidbody2D = true; + t.plugOptions.mode = pathMode; + t.plugOptions.useLocalPosition = true; + return t; + } + // Used by path editor when creating the actual tween, so it can pass a pre-compiled path + internal static TweenerCore DOPath( + this Rigidbody2D target, Path path, float duration, PathMode pathMode = PathMode.Full3D + ) + { + TweenerCore t = DOTween.To(PathPlugin.Get(), () => target.position, x => target.MovePosition(x), path, duration) + .SetTarget(target); + + t.plugOptions.isRigidbody2D = true; + t.plugOptions.mode = pathMode; + return t; + } + internal static TweenerCore DOLocalPath( + this Rigidbody2D target, Path path, float duration, PathMode pathMode = PathMode.Full3D + ) + { + Transform trans = target.transform; + TweenerCore t = DOTween.To(PathPlugin.Get(), () => trans.localPosition, x => target.MovePosition(trans.parent == null ? x : trans.parent.TransformPoint(x)), path, duration) + .SetTarget(target); + + t.plugOptions.isRigidbody2D = true; + t.plugOptions.mode = pathMode; + t.plugOptions.useLocalPosition = true; + return t; + } + + #endregion + + #endregion + + #endregion + } +} +#endif diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs.meta b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs.meta new file mode 100644 index 0000000..ca9ed29 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 230fe34542e175245ba74b4659dae700 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs new file mode 100644 index 0000000..72afb7b --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs @@ -0,0 +1,93 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2018/07/13 + +#if true // MODULE_MARKER +using System; +using UnityEngine; +using DG.Tweening.Core; +using DG.Tweening.Plugins.Options; + +#pragma warning disable 1591 +namespace DG.Tweening +{ + public static class DOTweenModuleSprite + { + #region Shortcuts + + #region SpriteRenderer + + /// Tweens a SpriteRenderer's color to the given value. + /// Also stores the spriteRenderer as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOColor(this SpriteRenderer target, Color endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a Material's alpha color to the given value. + /// Also stores the spriteRenderer as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOFade(this SpriteRenderer target, float endValue, float duration) + { + TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a SpriteRenderer's color using the given gradient + /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The gradient to useThe duration of the tween + public static Sequence DOGradientColor(this SpriteRenderer target, Gradient gradient, float duration) + { + Sequence s = DOTween.Sequence(); + GradientColorKey[] colors = gradient.colorKeys; + int len = colors.Length; + for (int i = 0; i < len; ++i) { + GradientColorKey c = colors[i]; + if (i == 0 && c.time <= 0) { + target.color = c.color; + continue; + } + float colorDuration = i == len - 1 + ? duration - s.Duration(false) // Verifies that total duration is correct + : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); + s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); + } + s.SetTarget(target); + return s; + } + + #endregion + + #region Blendables + + #region SpriteRenderer + + /// Tweens a SpriteRenderer's color to the given value, + /// in a way that allows other DOBlendableColor tweens to work together on the same target, + /// instead than fight each other as multiple DOColor would do. + /// Also stores the SpriteRenderer as the tween's target so it can be used for filtered operations + /// The value to tween toThe duration of the tween + public static Tweener DOBlendableColor(this SpriteRenderer target, Color endValue, float duration) + { + endValue = endValue - target.color; + Color to = new Color(0, 0, 0, 0); + return DOTween.To(() => to, x => { + Color diff = x - to; + to = x; + target.color += diff; + }, endValue, duration) + .Blendable().SetTarget(target); + } + + #endregion + + #endregion + + #endregion + } +} +#endif diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs.meta b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs.meta new file mode 100644 index 0000000..a0c67c4 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 188918ab119d93148aa0de59ccf5286b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs new file mode 100644 index 0000000..2381f4c --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs @@ -0,0 +1,662 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2018/07/13 + +#if true // MODULE_MARKER + +using System; +using System.Globalization; +using UnityEngine; +using UnityEngine.UI; +using DG.Tweening.Core; +using DG.Tweening.Core.Enums; +using DG.Tweening.Plugins; +using DG.Tweening.Plugins.Options; +using Outline = UnityEngine.UI.Outline; +using Text = UnityEngine.UI.Text; + +#pragma warning disable 1591 +namespace DG.Tweening +{ + public static class DOTweenModuleUI + { + #region Shortcuts + + #region CanvasGroup + + /// Tweens a CanvasGroup's alpha color to the given value. + /// Also stores the canvasGroup as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOFade(this CanvasGroup target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.alpha, x => target.alpha = x, endValue, duration); + t.SetTarget(target); + return t; + } + + #endregion + + #region Graphic + + /// Tweens an Graphic's color to the given value. + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOColor(this Graphic target, Color endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens an Graphic's alpha color to the given value. + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOFade(this Graphic target, float endValue, float duration) + { + TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + #endregion + + #region Image + + /// Tweens an Image's color to the given value. + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOColor(this Image target, Color endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens an Image's alpha color to the given value. + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOFade(this Image target, float endValue, float duration) + { + TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens an Image's fillAmount to the given value. + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The end value to reach (0 to 1)The duration of the tween + public static TweenerCore DOFillAmount(this Image target, float endValue, float duration) + { + if (endValue > 1) endValue = 1; + else if (endValue < 0) endValue = 0; + TweenerCore t = DOTween.To(() => target.fillAmount, x => target.fillAmount = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens an Image's colors using the given gradient + /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The gradient to useThe duration of the tween + public static Sequence DOGradientColor(this Image target, Gradient gradient, float duration) + { + Sequence s = DOTween.Sequence(); + GradientColorKey[] colors = gradient.colorKeys; + int len = colors.Length; + for (int i = 0; i < len; ++i) { + GradientColorKey c = colors[i]; + if (i == 0 && c.time <= 0) { + target.color = c.color; + continue; + } + float colorDuration = i == len - 1 + ? duration - s.Duration(false) // Verifies that total duration is correct + : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); + s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); + } + s.SetTarget(target); + return s; + } + + #endregion + + #region LayoutElement + + /// Tweens an LayoutElement's flexibleWidth/Height to the given value. + /// Also stores the LayoutElement as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOFlexibleSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => new Vector2(target.flexibleWidth, target.flexibleHeight), x => { + target.flexibleWidth = x.x; + target.flexibleHeight = x.y; + }, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + + /// Tweens an LayoutElement's minWidth/Height to the given value. + /// Also stores the LayoutElement as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOMinSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => new Vector2(target.minWidth, target.minHeight), x => { + target.minWidth = x.x; + target.minHeight = x.y; + }, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + + /// Tweens an LayoutElement's preferredWidth/Height to the given value. + /// Also stores the LayoutElement as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOPreferredSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => new Vector2(target.preferredWidth, target.preferredHeight), x => { + target.preferredWidth = x.x; + target.preferredHeight = x.y; + }, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + + #endregion + + #region Outline + + /// Tweens a Outline's effectColor to the given value. + /// Also stores the Outline as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOColor(this Outline target, Color endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.effectColor, x => target.effectColor = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a Outline's effectColor alpha to the given value. + /// Also stores the Outline as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOFade(this Outline target, float endValue, float duration) + { + TweenerCore t = DOTween.ToAlpha(() => target.effectColor, x => target.effectColor = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a Outline's effectDistance to the given value. + /// Also stores the Outline as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOScale(this Outline target, Vector2 endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.effectDistance, x => target.effectDistance = x, endValue, duration); + t.SetTarget(target); + return t; + } + + #endregion + + #region RectTransform + + /// Tweens a RectTransform's anchoredPosition to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOAnchorPos(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + /// Tweens a RectTransform's anchoredPosition X to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOAnchorPosX(this RectTransform target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(endValue, 0), duration); + t.SetOptions(AxisConstraint.X, snapping).SetTarget(target); + return t; + } + /// Tweens a RectTransform's anchoredPosition Y to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOAnchorPosY(this RectTransform target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(0, endValue), duration); + t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target); + return t; + } + + /// Tweens a RectTransform's anchoredPosition3D to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOAnchorPos3D(this RectTransform target, Vector3 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + /// Tweens a RectTransform's anchoredPosition3D X to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOAnchorPos3DX(this RectTransform target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(endValue, 0, 0), duration); + t.SetOptions(AxisConstraint.X, snapping).SetTarget(target); + return t; + } + /// Tweens a RectTransform's anchoredPosition3D Y to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOAnchorPos3DY(this RectTransform target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(0, endValue, 0), duration); + t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target); + return t; + } + /// Tweens a RectTransform's anchoredPosition3D Z to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOAnchorPos3DZ(this RectTransform target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(0, 0, endValue), duration); + t.SetOptions(AxisConstraint.Z, snapping).SetTarget(target); + return t; + } + + /// Tweens a RectTransform's anchorMax to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOAnchorMax(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.anchorMax, x => target.anchorMax = x, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + + /// Tweens a RectTransform's anchorMin to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOAnchorMin(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.anchorMin, x => target.anchorMin = x, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + + /// Tweens a RectTransform's pivot to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOPivot(this RectTransform target, Vector2 endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.pivot, x => target.pivot = x, endValue, duration); + t.SetTarget(target); + return t; + } + /// Tweens a RectTransform's pivot X to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOPivotX(this RectTransform target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.pivot, x => target.pivot = x, new Vector2(endValue, 0), duration); + t.SetOptions(AxisConstraint.X).SetTarget(target); + return t; + } + /// Tweens a RectTransform's pivot Y to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOPivotY(this RectTransform target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.pivot, x => target.pivot = x, new Vector2(0, endValue), duration); + t.SetOptions(AxisConstraint.Y).SetTarget(target); + return t; + } + + /// Tweens a RectTransform's sizeDelta to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOSizeDelta(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.sizeDelta, x => target.sizeDelta = x, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + + /// Punches a RectTransform's anchoredPosition towards the given direction and then back to the starting one + /// as if it was connected to the starting position via an elastic. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The direction and strength of the punch (added to the RectTransform's current position) + /// The duration of the tween + /// Indicates how much will the punch vibrate + /// Represents how much (0 to 1) the vector will go beyond the starting position when bouncing backwards. + /// 1 creates a full oscillation between the punch direction and the opposite direction, + /// while 0 oscillates only between the punch and the start position + /// If TRUE the tween will smoothly snap all values to integers + public static Tweener DOPunchAnchorPos(this RectTransform target, Vector2 punch, float duration, int vibrato = 10, float elasticity = 1, bool snapping = false) + { + return DOTween.Punch(() => target.anchoredPosition, x => target.anchoredPosition = x, punch, duration, vibrato, elasticity) + .SetTarget(target).SetOptions(snapping); + } + + /// Shakes a RectTransform's anchoredPosition with the given values. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The duration of the tween + /// The shake strength + /// Indicates how much will the shake vibrate + /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + /// Setting it to 0 will shake along a single direction. + /// If TRUE the tween will smoothly snap all values to integers + /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + /// Randomness mode + public static Tweener DOShakeAnchorPos(this RectTransform target, float duration, float strength = 100, int vibrato = 10, float randomness = 90, bool snapping = false, bool fadeOut = true, ShakeRandomnessMode randomnessMode = ShakeRandomnessMode.Full) + { + return DOTween.Shake(() => target.anchoredPosition, x => target.anchoredPosition = x, duration, strength, vibrato, randomness, true, fadeOut, randomnessMode) + .SetTarget(target).SetSpecialStartupMode(SpecialStartupMode.SetShake).SetOptions(snapping); + } + /// Shakes a RectTransform's anchoredPosition with the given values. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The duration of the tween + /// The shake strength on each axis + /// Indicates how much will the shake vibrate + /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + /// Setting it to 0 will shake along a single direction. + /// If TRUE the tween will smoothly snap all values to integers + /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + /// Randomness mode + public static Tweener DOShakeAnchorPos(this RectTransform target, float duration, Vector2 strength, int vibrato = 10, float randomness = 90, bool snapping = false, bool fadeOut = true, ShakeRandomnessMode randomnessMode = ShakeRandomnessMode.Full) + { + return DOTween.Shake(() => target.anchoredPosition, x => target.anchoredPosition = x, duration, strength, vibrato, randomness, fadeOut, randomnessMode) + .SetTarget(target).SetSpecialStartupMode(SpecialStartupMode.SetShake).SetOptions(snapping); + } + + #region Special + + /// Tweens a RectTransform's anchoredPosition to the given value, while also applying a jump effect along the Y axis. + /// Returns a Sequence instead of a Tweener. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// The end value to reach + /// Power of the jump (the max height of the jump is represented by this plus the final Y offset) + /// Total number of jumps + /// The duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static Sequence DOJumpAnchorPos(this RectTransform target, Vector2 endValue, float jumpPower, int numJumps, float duration, bool snapping = false) + { + if (numJumps < 1) numJumps = 1; + float startPosY = 0; + float offsetY = -1; + bool offsetYSet = false; + + // Separate Y Tween so we can elaborate elapsedPercentage on that insted of on the Sequence + // (in case users add a delay or other elements to the Sequence) + Sequence s = DOTween.Sequence(); + Tween yTween = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(0, jumpPower), duration / (numJumps * 2)) + .SetOptions(AxisConstraint.Y, snapping).SetEase(Ease.OutQuad).SetRelative() + .SetLoops(numJumps * 2, LoopType.Yoyo) + .OnStart(()=> startPosY = target.anchoredPosition.y); + s.Append(DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(endValue.x, 0), duration) + .SetOptions(AxisConstraint.X, snapping).SetEase(Ease.Linear) + ).Join(yTween) + .SetTarget(target).SetEase(DOTween.defaultEaseType); + s.OnUpdate(() => { + if (!offsetYSet) { + offsetYSet = true; + offsetY = s.isRelative ? endValue.y : endValue.y - startPosY; + } + Vector2 pos = target.anchoredPosition; + pos.y += DOVirtual.EasedValue(0, offsetY, s.ElapsedDirectionalPercentage(), Ease.OutQuad); + target.anchoredPosition = pos; + }); + return s; + } + + #endregion + + #endregion + + #region ScrollRect + + /// Tweens a ScrollRect's horizontal/verticalNormalizedPosition to the given value. + /// Also stores the ScrollRect as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static Tweener DONormalizedPos(this ScrollRect target, Vector2 endValue, float duration, bool snapping = false) + { + return DOTween.To(() => new Vector2(target.horizontalNormalizedPosition, target.verticalNormalizedPosition), + x => { + target.horizontalNormalizedPosition = x.x; + target.verticalNormalizedPosition = x.y; + }, endValue, duration) + .SetOptions(snapping).SetTarget(target); + } + /// Tweens a ScrollRect's horizontalNormalizedPosition to the given value. + /// Also stores the ScrollRect as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static Tweener DOHorizontalNormalizedPos(this ScrollRect target, float endValue, float duration, bool snapping = false) + { + return DOTween.To(() => target.horizontalNormalizedPosition, x => target.horizontalNormalizedPosition = x, endValue, duration) + .SetOptions(snapping).SetTarget(target); + } + /// Tweens a ScrollRect's verticalNormalizedPosition to the given value. + /// Also stores the ScrollRect as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static Tweener DOVerticalNormalizedPos(this ScrollRect target, float endValue, float duration, bool snapping = false) + { + return DOTween.To(() => target.verticalNormalizedPosition, x => target.verticalNormalizedPosition = x, endValue, duration) + .SetOptions(snapping).SetTarget(target); + } + + #endregion + + #region Slider + + /// Tweens a Slider's value to the given value. + /// Also stores the Slider as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOValue(this Slider target, float endValue, float duration, bool snapping = false) + { + TweenerCore t = DOTween.To(() => target.value, x => target.value = x, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; + } + + #endregion + + #region Text + + /// Tweens a Text's color to the given value. + /// Also stores the Text as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOColor(this Text target, Color endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// + /// Tweens a Text's text from one integer to another, with options for thousands separators + /// + /// The value to start from + /// The end value to reach + /// The duration of the tween + /// If TRUE (default) also adds thousands separators + /// The to use (InvariantCulture if NULL) + public static TweenerCore DOCounter( + this Text target, int fromValue, int endValue, float duration, bool addThousandsSeparator = true, CultureInfo culture = null + ){ + int v = fromValue; + CultureInfo cInfo = !addThousandsSeparator ? null : culture ?? CultureInfo.InvariantCulture; + TweenerCore t = DOTween.To(() => v, x => { + v = x; + target.text = addThousandsSeparator + ? v.ToString("N0", cInfo) + : v.ToString(); + }, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a Text's alpha color to the given value. + /// Also stores the Text as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOFade(this Text target, float endValue, float duration) + { + TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a Text's text to the given value. + /// Also stores the Text as the tween's target so it can be used for filtered operations + /// The end string to tween toThe duration of the tween + /// If TRUE (default), rich text will be interpreted correctly while animated, + /// otherwise all tags will be considered as normal text + /// The type of scramble mode to use, if any + /// A string containing the characters to use for scrambling. + /// Use as many characters as possible (minimum 10) because DOTween uses a fast scramble mode which gives better results with more characters. + /// Leave it to NULL (default) to use default ones + public static TweenerCore DOText(this Text target, string endValue, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null) + { + if (endValue == null) { + if (Debugger.logPriority > 0) Debugger.LogWarning("You can't pass a NULL string to DOText: an empty string will be used instead to avoid errors"); + endValue = ""; + } + TweenerCore t = DOTween.To(() => target.text, x => target.text = x, endValue, duration); + t.SetOptions(richTextEnabled, scrambleMode, scrambleChars) + .SetTarget(target); + return t; + } + + #endregion + + #region Blendables + + #region Graphic + + /// Tweens a Graphic's color to the given value, + /// in a way that allows other DOBlendableColor tweens to work together on the same target, + /// instead than fight each other as multiple DOColor would do. + /// Also stores the Graphic as the tween's target so it can be used for filtered operations + /// The value to tween toThe duration of the tween + public static Tweener DOBlendableColor(this Graphic target, Color endValue, float duration) + { + endValue = endValue - target.color; + Color to = new Color(0, 0, 0, 0); + return DOTween.To(() => to, x => { + Color diff = x - to; + to = x; + target.color += diff; + }, endValue, duration) + .Blendable().SetTarget(target); + } + + #endregion + + #region Image + + /// Tweens a Image's color to the given value, + /// in a way that allows other DOBlendableColor tweens to work together on the same target, + /// instead than fight each other as multiple DOColor would do. + /// Also stores the Image as the tween's target so it can be used for filtered operations + /// The value to tween toThe duration of the tween + public static Tweener DOBlendableColor(this Image target, Color endValue, float duration) + { + endValue = endValue - target.color; + Color to = new Color(0, 0, 0, 0); + return DOTween.To(() => to, x => { + Color diff = x - to; + to = x; + target.color += diff; + }, endValue, duration) + .Blendable().SetTarget(target); + } + + #endregion + + #region Text + + /// Tweens a Text's color BY the given value, + /// in a way that allows other DOBlendableColor tweens to work together on the same target, + /// instead than fight each other as multiple DOColor would do. + /// Also stores the Text as the tween's target so it can be used for filtered operations + /// The value to tween toThe duration of the tween + public static Tweener DOBlendableColor(this Text target, Color endValue, float duration) + { + endValue = endValue - target.color; + Color to = new Color(0, 0, 0, 0); + return DOTween.To(() => to, x => { + Color diff = x - to; + to = x; + target.color += diff; + }, endValue, duration) + .Blendable().SetTarget(target); + } + + #endregion + + #endregion + + #region Shapes + + /// Tweens a RectTransform's anchoredPosition so that it draws a circle around the given center. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations. + /// IMPORTANT: SetFrom(value) requires a instead of a float, where the X property represents the "from degrees value" + /// Circle-center/pivot around which to rotate (in UI anchoredPosition coordinates) + /// The end value degrees to reach (to rotate counter-clockwise pass a negative value) + /// The duration of the tween + /// If TRUE the coordinates will be considered as relative to the target's current anchoredPosition + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOShapeCircle( + this RectTransform target, Vector2 center, float endValueDegrees, float duration, bool relativeCenter = false, bool snapping = false + ) + { + TweenerCore t = DOTween.To( + CirclePlugin.Get(), () => target.anchoredPosition, x => target.anchoredPosition = x, center, duration + ); + t.SetOptions(endValueDegrees, relativeCenter, snapping).SetTarget(target); + return t; + } + + #endregion + + #endregion + + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + // ███ INTERNAL CLASSES ████████████████████████████████████████████████████████████████████████████████████████████████ + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + + public static class Utils + { + /// + /// Converts the anchoredPosition of the first RectTransform to the second RectTransform, + /// taking into consideration offset, anchors and pivot, and returns the new anchoredPosition + /// + public static Vector2 SwitchToRectTransform(RectTransform from, RectTransform to) + { + Vector2 localPoint; + Vector2 fromPivotDerivedOffset = new Vector2(from.rect.width * 0.5f + from.rect.xMin, from.rect.height * 0.5f + from.rect.yMin); + Vector2 screenP = RectTransformUtility.WorldToScreenPoint(null, from.position); + screenP += fromPivotDerivedOffset; + RectTransformUtility.ScreenPointToLocalPointInRectangle(to, screenP, null, out localPoint); + Vector2 pivotDerivedOffset = new Vector2(to.rect.width * 0.5f + to.rect.xMin, to.rect.height * 0.5f + to.rect.yMin); + return to.anchoredPosition + localPoint - pivotDerivedOffset; + } + } + } +} +#endif diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs.meta b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs.meta new file mode 100644 index 0000000..60d55ef --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a060394c03331a64392db53a10e7f2d1 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs new file mode 100644 index 0000000..8f818ba --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs @@ -0,0 +1,389 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2018/07/13 + +using System; +using UnityEngine; +using DG.Tweening.Core; +using DG.Tweening.Plugins.Options; +//#if UNITY_2018_1_OR_NEWER && (NET_4_6 || NET_STANDARD_2_0) +//using Task = System.Threading.Tasks.Task; +//#endif + +#pragma warning disable 1591 +namespace DG.Tweening +{ + /// + /// Shortcuts/functions that are not strictly related to specific Modules + /// but are available only on some Unity versions + /// + public static class DOTweenModuleUnityVersion + { + #region Material + + /// Tweens a Material's color using the given gradient + /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The gradient to useThe duration of the tween + public static Sequence DOGradientColor(this Material target, Gradient gradient, float duration) + { + Sequence s = DOTween.Sequence(); + GradientColorKey[] colors = gradient.colorKeys; + int len = colors.Length; + for (int i = 0; i < len; ++i) { + GradientColorKey c = colors[i]; + if (i == 0 && c.time <= 0) { + target.color = c.color; + continue; + } + float colorDuration = i == len - 1 + ? duration - s.Duration(false) // Verifies that total duration is correct + : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); + s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); + } + s.SetTarget(target); + return s; + } + /// Tweens a Material's named color property using the given gradient + /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The gradient to use + /// The name of the material property to tween (like _Tint or _SpecColor) + /// The duration of the tween + public static Sequence DOGradientColor(this Material target, Gradient gradient, string property, float duration) + { + Sequence s = DOTween.Sequence(); + GradientColorKey[] colors = gradient.colorKeys; + int len = colors.Length; + for (int i = 0; i < len; ++i) { + GradientColorKey c = colors[i]; + if (i == 0 && c.time <= 0) { + target.SetColor(property, c.color); + continue; + } + float colorDuration = i == len - 1 + ? duration - s.Duration(false) // Verifies that total duration is correct + : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); + s.Append(target.DOColor(c.color, property, colorDuration).SetEase(Ease.Linear)); + } + s.SetTarget(target); + return s; + } + + #endregion + + #region CustomYieldInstructions + + /// + /// Returns a that waits until the tween is killed or complete. + /// It can be used inside a coroutine as a yield. + /// Example usage:yield return myTween.WaitForCompletion(true); + /// + public static CustomYieldInstruction WaitForCompletion(this Tween t, bool returnCustomYieldInstruction) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return null; + } + return new DOTweenCYInstruction.WaitForCompletion(t); + } + + /// + /// Returns a that waits until the tween is killed or rewinded. + /// It can be used inside a coroutine as a yield. + /// Example usage:yield return myTween.WaitForRewind(); + /// + public static CustomYieldInstruction WaitForRewind(this Tween t, bool returnCustomYieldInstruction) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return null; + } + return new DOTweenCYInstruction.WaitForRewind(t); + } + + /// + /// Returns a that waits until the tween is killed. + /// It can be used inside a coroutine as a yield. + /// Example usage:yield return myTween.WaitForKill(); + /// + public static CustomYieldInstruction WaitForKill(this Tween t, bool returnCustomYieldInstruction) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return null; + } + return new DOTweenCYInstruction.WaitForKill(t); + } + + /// + /// Returns a that waits until the tween is killed or has gone through the given amount of loops. + /// It can be used inside a coroutine as a yield. + /// Example usage:yield return myTween.WaitForElapsedLoops(2); + /// + /// Elapsed loops to wait for + public static CustomYieldInstruction WaitForElapsedLoops(this Tween t, int elapsedLoops, bool returnCustomYieldInstruction) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return null; + } + return new DOTweenCYInstruction.WaitForElapsedLoops(t, elapsedLoops); + } + + /// + /// Returns a that waits until the tween is killed + /// or has reached the given time position (loops included, delays excluded). + /// It can be used inside a coroutine as a yield. + /// Example usage:yield return myTween.WaitForPosition(2.5f); + /// + /// Position (loops included, delays excluded) to wait for + public static CustomYieldInstruction WaitForPosition(this Tween t, float position, bool returnCustomYieldInstruction) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return null; + } + return new DOTweenCYInstruction.WaitForPosition(t, position); + } + + /// + /// Returns a that waits until the tween is killed or started + /// (meaning when the tween is set in a playing state the first time, after any eventual delay). + /// It can be used inside a coroutine as a yield. + /// Example usage:yield return myTween.WaitForStart(); + /// + public static CustomYieldInstruction WaitForStart(this Tween t, bool returnCustomYieldInstruction) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return null; + } + return new DOTweenCYInstruction.WaitForStart(t); + } + + #endregion + +#if UNITY_2018_1_OR_NEWER + #region Unity 2018.1 or Newer + + #region Material + + /// Tweens a Material's named texture offset property with the given ID to the given value. + /// Also stores the material as the tween's target so it can be used for filtered operations + /// The end value to reach + /// The ID of the material property to tween (also called nameID in Unity's manual) + /// The duration of the tween + public static TweenerCore DOOffset(this Material target, Vector2 endValue, int propertyID, float duration) + { + if (!target.HasProperty(propertyID)) { + if (Debugger.logPriority > 0) Debugger.LogMissingMaterialProperty(propertyID); + return null; + } + TweenerCore t = DOTween.To(() => target.GetTextureOffset(propertyID), x => target.SetTextureOffset(propertyID, x), endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a Material's named texture scale property with the given ID to the given value. + /// Also stores the material as the tween's target so it can be used for filtered operations + /// The end value to reach + /// The ID of the material property to tween (also called nameID in Unity's manual) + /// The duration of the tween + public static TweenerCore DOTiling(this Material target, Vector2 endValue, int propertyID, float duration) + { + if (!target.HasProperty(propertyID)) { + if (Debugger.logPriority > 0) Debugger.LogMissingMaterialProperty(propertyID); + return null; + } + TweenerCore t = DOTween.To(() => target.GetTextureScale(propertyID), x => target.SetTextureScale(propertyID, x), endValue, duration); + t.SetTarget(target); + return t; + } + + #endregion + + #region .NET 4.6 or Newer + +#if UNITY_2018_1_OR_NEWER && (NET_4_6 || NET_STANDARD_2_0) + + #region Async Instructions + + /// + /// Returns an async that waits until the tween is killed or complete. + /// It can be used inside an async operation. + /// Example usage:await myTween.WaitForCompletion(); + /// + public static async System.Threading.Tasks.Task AsyncWaitForCompletion(this Tween t) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return; + } + while (t.active && !t.IsComplete()) await System.Threading.Tasks.Task.Yield(); + } + + /// + /// Returns an async that waits until the tween is killed or rewinded. + /// It can be used inside an async operation. + /// Example usage:await myTween.AsyncWaitForRewind(); + /// + public static async System.Threading.Tasks.Task AsyncWaitForRewind(this Tween t) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return; + } + while (t.active && (!t.playedOnce || t.position * (t.CompletedLoops() + 1) > 0)) await System.Threading.Tasks.Task.Yield(); + } + + /// + /// Returns an async that waits until the tween is killed. + /// It can be used inside an async operation. + /// Example usage:await myTween.AsyncWaitForKill(); + /// + public static async System.Threading.Tasks.Task AsyncWaitForKill(this Tween t) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return; + } + while (t.active) await System.Threading.Tasks.Task.Yield(); + } + + /// + /// Returns an async that waits until the tween is killed or has gone through the given amount of loops. + /// It can be used inside an async operation. + /// Example usage:await myTween.AsyncWaitForElapsedLoops(); + /// + /// Elapsed loops to wait for + public static async System.Threading.Tasks.Task AsyncWaitForElapsedLoops(this Tween t, int elapsedLoops) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return; + } + while (t.active && t.CompletedLoops() < elapsedLoops) await System.Threading.Tasks.Task.Yield(); + } + + /// + /// Returns an async that waits until the tween is killed or started + /// (meaning when the tween is set in a playing state the first time, after any eventual delay). + /// It can be used inside an async operation. + /// Example usage:await myTween.AsyncWaitForPosition(); + /// + /// Position (loops included, delays excluded) to wait for + public static async System.Threading.Tasks.Task AsyncWaitForPosition(this Tween t, float position) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return; + } + while (t.active && t.position * (t.CompletedLoops() + 1) < position) await System.Threading.Tasks.Task.Yield(); + } + + /// + /// Returns an async that waits until the tween is killed. + /// It can be used inside an async operation. + /// Example usage:await myTween.AsyncWaitForKill(); + /// + public static async System.Threading.Tasks.Task AsyncWaitForStart(this Tween t) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return; + } + while (t.active && !t.playedOnce) await System.Threading.Tasks.Task.Yield(); + } + + #endregion +#endif + + #endregion + + #endregion +#endif + } + + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + // ███ CLASSES █████████████████████████████████████████████████████████████████████████████████████████████████████████ + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + + public static class DOTweenCYInstruction + { + public class WaitForCompletion : CustomYieldInstruction + { + public override bool keepWaiting { get { + return t.active && !t.IsComplete(); + }} + readonly Tween t; + public WaitForCompletion(Tween tween) + { + t = tween; + } + } + + public class WaitForRewind : CustomYieldInstruction + { + public override bool keepWaiting { get { + return t.active && (!t.playedOnce || t.position * (t.CompletedLoops() + 1) > 0); + }} + readonly Tween t; + public WaitForRewind(Tween tween) + { + t = tween; + } + } + + public class WaitForKill : CustomYieldInstruction + { + public override bool keepWaiting { get { + return t.active; + }} + readonly Tween t; + public WaitForKill(Tween tween) + { + t = tween; + } + } + + public class WaitForElapsedLoops : CustomYieldInstruction + { + public override bool keepWaiting { get { + return t.active && t.CompletedLoops() < elapsedLoops; + }} + readonly Tween t; + readonly int elapsedLoops; + public WaitForElapsedLoops(Tween tween, int elapsedLoops) + { + t = tween; + this.elapsedLoops = elapsedLoops; + } + } + + public class WaitForPosition : CustomYieldInstruction + { + public override bool keepWaiting { get { + return t.active && t.position * (t.CompletedLoops() + 1) < position; + }} + readonly Tween t; + readonly float position; + public WaitForPosition(Tween tween, float position) + { + t = tween; + this.position = position; + } + } + + public class WaitForStart : CustomYieldInstruction + { + public override bool keepWaiting { get { + return t.active && !t.playedOnce; + }} + readonly Tween t; + public WaitForStart(Tween tween) + { + t = tween; + } + } + } +} diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta new file mode 100644 index 0000000..290189f --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 63c02322328255542995bd02b47b0457 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs new file mode 100644 index 0000000..12a365d --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs @@ -0,0 +1,167 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2018/07/13 + +using System; +using System.Reflection; +using UnityEngine; +using DG.Tweening.Core; +using DG.Tweening.Plugins.Core.PathCore; +using DG.Tweening.Plugins.Options; + +#pragma warning disable 1591 +namespace DG.Tweening +{ + /// + /// Utility functions that deal with available Modules. + /// Modules defines: + /// - DOTAUDIO + /// - DOTPHYSICS + /// - DOTPHYSICS2D + /// - DOTSPRITE + /// - DOTUI + /// Extra defines set and used for implementation of external assets: + /// - DOTWEEN_TMP ► TextMesh Pro + /// - DOTWEEN_TK2D ► 2D Toolkit + /// + public static class DOTweenModuleUtils + { + static bool _initialized; + + #region Reflection + + /// + /// Called via Reflection by DOTweenComponent on Awake + /// +#if UNITY_2018_1_OR_NEWER + [UnityEngine.Scripting.Preserve] +#endif + public static void Init() + { + if (_initialized) return; + + _initialized = true; + DOTweenExternalCommand.SetOrientationOnPath += Physics.SetOrientationOnPath; + +#if UNITY_EDITOR +#if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1 + UnityEditor.EditorApplication.playmodeStateChanged += PlaymodeStateChanged; +#else + UnityEditor.EditorApplication.playModeStateChanged += PlaymodeStateChanged; +#endif +#endif + } + +#if UNITY_2018_1_OR_NEWER +#pragma warning disable + [UnityEngine.Scripting.Preserve] + // Just used to preserve methods when building, never called + static void Preserver() + { + Assembly[] loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); + MethodInfo mi = typeof(MonoBehaviour).GetMethod("Stub"); + } +#pragma warning restore +#endif + + #endregion + +#if UNITY_EDITOR + // Fires OnApplicationPause in DOTweenComponent even when Editor is paused (otherwise it's only fired at runtime) +#if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1 + static void PlaymodeStateChanged() + #else + static void PlaymodeStateChanged(UnityEditor.PlayModeStateChange state) +#endif + { + if (DOTween.instance == null) return; + DOTween.instance.OnApplicationPause(UnityEditor.EditorApplication.isPaused); + } +#endif + + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + // ███ INTERNAL CLASSES ████████████████████████████████████████████████████████████████████████████████████████████████ + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + + public static class Physics + { + // Called via DOTweenExternalCommand callback + public static void SetOrientationOnPath(PathOptions options, Tween t, Quaternion newRot, Transform trans) + { +#if true // PHYSICS_MARKER + if (options.isRigidbody) ((Rigidbody)t.target).rotation = newRot; + else trans.rotation = newRot; +#else + trans.rotation = newRot; +#endif + } + + // Returns FALSE if the DOTween's Physics2D Module is disabled, or if there's no Rigidbody2D attached + public static bool HasRigidbody2D(Component target) + { +#if true // PHYSICS2D_MARKER + return target.GetComponent() != null; +#else + return false; +#endif + } + + #region Called via Reflection + + + // Called via Reflection by DOTweenPathInspector + // Returns FALSE if the DOTween's Physics Module is disabled, or if there's no rigidbody attached +#if UNITY_2018_1_OR_NEWER + [UnityEngine.Scripting.Preserve] +#endif + public static bool HasRigidbody(Component target) + { +#if true // PHYSICS_MARKER + return target.GetComponent() != null; +#else + return false; +#endif + } + + // Called via Reflection by DOTweenPath +#if UNITY_2018_1_OR_NEWER + [UnityEngine.Scripting.Preserve] +#endif + public static TweenerCore CreateDOTweenPathTween( + MonoBehaviour target, bool tweenRigidbody, bool isLocal, Path path, float duration, PathMode pathMode + ){ + TweenerCore t = null; + bool rBodyFoundAndTweened = false; +#if true // PHYSICS_MARKER + if (tweenRigidbody) { + Rigidbody rBody = target.GetComponent(); + if (rBody != null) { + rBodyFoundAndTweened = true; + t = isLocal + ? rBody.DOLocalPath(path, duration, pathMode) + : rBody.DOPath(path, duration, pathMode); + } + } +#endif +#if true // PHYSICS2D_MARKER + if (!rBodyFoundAndTweened && tweenRigidbody) { + Rigidbody2D rBody2D = target.GetComponent(); + if (rBody2D != null) { + rBodyFoundAndTweened = true; + t = isLocal + ? rBody2D.DOLocalPath(path, duration, pathMode) + : rBody2D.DOPath(path, duration, pathMode); + } + } +#endif + if (!rBodyFoundAndTweened) { + t = isLocal + ? target.transform.DOLocalPath(path, duration, pathMode) + : target.transform.DOPath(path, duration, pathMode); + } + return t; + } + + #endregion + } + } +} diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs.meta b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs.meta new file mode 100644 index 0000000..ab62186 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7bcaf917d9cf5b84090421a5a2abe42e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Plugins/Demigiant/DOTween/readme.txt b/Assets/Plugins/Demigiant/DOTween/readme.txt new file mode 100644 index 0000000..37ff7ef --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/readme.txt @@ -0,0 +1,29 @@ +DOTween and DOTween Pro are copyright (c) 2014-2018 Daniele Giardini - Demigiant + +// IMPORTANT!!! ///////////////////////////////////////////// +// Upgrading DOTween from versions older than 1.2.000 /////// +// (or DOTween Pro older than 1.0.000) ////////////////////// +------------------------------------------------------------- +If you're upgrading your project from a version of DOTween older than 1.2.000 (or DOTween Pro older than 1.0.000) please follow these instructions carefully. +1) Import the new version in the same folder as the previous one, overwriting old files. A lot of errors will appear but don't worry +2) Close and reopen Unity (and your project). This is fundamental: skipping this step will cause a bloodbath +3) Open DOTween's Utility Panel (Tools > Demigiant > DOTween Utility Panel) if it doesn't open automatically, then press "Setup DOTween...": this will run the upgrade setup +4) From the Add/Remove Modules panel that opens, activate/deactivate Modules for Unity systems and for external assets (Pro version only) + +// GET STARTED ////////////////////////////////////////////// + +- After importing a new DOTween update, select DOTween's Utility Panel from the "Tools/Demigiant" menu (if it doesn't open automatically) and press the "Setup DOTween..." button to activate/deactivate Modules. You can also access a Preferences Tab from there to choose default settings for DOTween. +- In your code, add "using DG.Tweening" to each class where you want to use DOTween. +- You're ready to tween. Check out the links below for full documentation and license info. + + +// LINKS /////////////////////////////////////////////////////// + +DOTween website (documentation, examples, etc): http://dotween.demigiant.com +DOTween license: http://dotween.demigiant.com/license.php +DOTween repository (Google Code): https://code.google.com/p/dotween/ +Demigiant website (documentation, examples, etc): http://www.demigiant.com + +// NOTES ////////////////////////////////////////////////////// + +- DOTween's Utility Panel can be found under "Tools > Demigiant > DOTween Utility Panel" and also contains other useful options, plus a tab to set DOTween's preferences \ No newline at end of file diff --git a/Assets/Plugins/Demigiant/DOTween/readme.txt.meta b/Assets/Plugins/Demigiant/DOTween/readme.txt.meta new file mode 100644 index 0000000..3799165 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/readme.txt.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: fccfc62abf2eb0a4db614853430894fd +TextScriptImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DOTweenPro Examples.meta b/Assets/Plugins/Demigiant/DOTweenPro Examples.meta new file mode 100644 index 0000000..12bbcd4 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 0e606767f2f03204fb289d21d2696684 +labels: +- Tween +- Tweening +- Animation +- HOTween +- Paths +- VisualScripting +- VisualEditor +- iTween +- DFTween +- LeanTween +- Ease +- Easing +- Shake +- Punch +- 2DToolkit +- TextMeshPro +- Text +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity new file mode 100644 index 0000000..6128791 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity @@ -0,0 +1,5322 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 1 + m_BakeResolution: 50 + m_AtlasSize: 1024 + m_AO: 1 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: a61c6e25af4800249ba8be0e0fe7c505, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &45542689 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 45542690} + - component: {fileID: 45542693} + - component: {fileID: 45542692} + - component: {fileID: 45542691} + m_Layer: 5 + m_Name: 'Button (ID: move)' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &45542690 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 45542689} + 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: 191643491} + m_Father: {fileID: 1997177219} + m_RootOrder: 2 + 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: -36} + m_SizeDelta: {x: 100, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &45542691 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 45542689} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 45542692} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1844382610} + m_TargetAssemblyTypeName: + m_MethodName: DORestartById + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: move + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &45542692 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 45542689} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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 &45542693 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 45542689} + m_CullTransparentMesh: 1 +--- !u!1 &76224661 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 76224668} + - component: {fileID: 76224667} + - component: {fileID: 76224666} + - component: {fileID: 76224665} + - component: {fileID: 76224664} + - component: {fileID: 76224663} + m_Layer: 0 + m_Name: Cube C (w animation) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &76224663 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 76224661} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d0390bd8b8ffd640b34fe25065ff1df, type: 3} + m_Name: + m_EditorClassIdentifier: + updateType: 0 + isSpeedBased: 0 + hasOnStart: 0 + hasOnPlay: 0 + hasOnUpdate: 0 + hasOnStepComplete: 0 + hasOnComplete: 0 + hasOnTweenCreated: 0 + hasOnRewind: 0 + onStart: + m_PersistentCalls: + m_Calls: [] + onPlay: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onStepComplete: + m_PersistentCalls: + m_Calls: [] + onComplete: + m_PersistentCalls: + m_Calls: [] + onTweenCreated: + m_PersistentCalls: + m_Calls: [] + onRewind: + m_PersistentCalls: + m_Calls: [] + targetIsSelf: 1 + targetGO: {fileID: 0} + tweenTargetIsTargetGO: 1 + delay: 0 + duration: 1 + easeType: 6 + easeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + loopType: 0 + loops: 1 + id: rotate + isRelative: 0 + isFrom: 0 + isIndependentUpdate: 0 + autoKill: 0 + autoGenerate: 1 + isActive: 1 + isValid: 1 + target: {fileID: 76224668} + animationType: 3 + targetType: 0 + forcedTargetType: 0 + autoPlay: 0 + useTargetAsV3: 0 + endValueFloat: 0 + endValueV3: {x: 0, y: 180, z: 0} + endValueV2: {x: 0, y: 0} + endValueColor: {r: 1, g: 1, b: 1, a: 1} + endValueString: + endValueRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + endValueTransform: {fileID: 0} + optionalBool0: 0 + optionalBool1: 0 + optionalFloat0: 0 + optionalInt0: 0 + optionalRotationMode: 0 + optionalScrambleMode: 0 + optionalShakeRandomnessMode: 0 + optionalString: +--- !u!114 &76224664 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 76224661} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d0390bd8b8ffd640b34fe25065ff1df, type: 3} + m_Name: + m_EditorClassIdentifier: + updateType: 0 + isSpeedBased: 0 + hasOnStart: 0 + hasOnPlay: 0 + hasOnUpdate: 0 + hasOnStepComplete: 0 + hasOnComplete: 0 + hasOnTweenCreated: 0 + hasOnRewind: 0 + onStart: + m_PersistentCalls: + m_Calls: [] + onPlay: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onStepComplete: + m_PersistentCalls: + m_Calls: [] + onComplete: + m_PersistentCalls: + m_Calls: [] + onTweenCreated: + m_PersistentCalls: + m_Calls: [] + onRewind: + m_PersistentCalls: + m_Calls: [] + targetIsSelf: 1 + targetGO: {fileID: 0} + tweenTargetIsTargetGO: 1 + delay: 0 + duration: 1 + easeType: 6 + easeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + loopType: 0 + loops: 1 + id: move + isRelative: 1 + isFrom: 0 + isIndependentUpdate: 0 + autoKill: 0 + autoGenerate: 1 + isActive: 1 + isValid: 1 + target: {fileID: 76224668} + animationType: 1 + targetType: 0 + forcedTargetType: 0 + autoPlay: 0 + useTargetAsV3: 0 + endValueFloat: 0 + endValueV3: {x: 0, y: 1, z: 0} + endValueV2: {x: 0, y: 0} + endValueColor: {r: 1, g: 1, b: 1, a: 1} + endValueString: + endValueRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + endValueTransform: {fileID: 0} + optionalBool0: 0 + optionalBool1: 0 + optionalFloat0: 0 + optionalInt0: 0 + optionalRotationMode: 0 + optionalScrambleMode: 0 + optionalShakeRandomnessMode: 0 + optionalString: +--- !u!114 &76224665 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 76224661} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d0390bd8b8ffd640b34fe25065ff1df, type: 3} + m_Name: + m_EditorClassIdentifier: + updateType: 0 + isSpeedBased: 0 + hasOnStart: 0 + hasOnPlay: 0 + hasOnUpdate: 0 + hasOnStepComplete: 0 + hasOnComplete: 0 + hasOnTweenCreated: 0 + hasOnRewind: 0 + onStart: + m_PersistentCalls: + m_Calls: [] + onPlay: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onStepComplete: + m_PersistentCalls: + m_Calls: [] + onComplete: + m_PersistentCalls: + m_Calls: [] + onTweenCreated: + m_PersistentCalls: + m_Calls: [] + onRewind: + m_PersistentCalls: + m_Calls: [] + targetIsSelf: 1 + targetGO: {fileID: 0} + tweenTargetIsTargetGO: 1 + delay: 0 + duration: 1 + easeType: 6 + easeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + loopType: 0 + loops: 1 + id: toRed + isRelative: 0 + isFrom: 0 + isIndependentUpdate: 0 + autoKill: 0 + autoGenerate: 1 + isActive: 1 + isValid: 1 + target: {fileID: 76224666} + animationType: 6 + targetType: 0 + forcedTargetType: 0 + autoPlay: 0 + useTargetAsV3: 0 + endValueFloat: 0 + endValueV3: {x: 0, y: 0, z: 0} + endValueV2: {x: 0, y: 0} + endValueColor: {r: 1, g: 0, b: 0, a: 1} + endValueString: + endValueRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + endValueTransform: {fileID: 0} + optionalBool0: 0 + optionalBool1: 0 + optionalFloat0: 0 + optionalInt0: 0 + optionalRotationMode: 0 + optionalScrambleMode: 0 + optionalShakeRandomnessMode: 0 + optionalString: +--- !u!23 &76224666 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 76224661} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &76224667 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 76224661} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &76224668 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 76224661} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1760580329} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &83016929 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 83016930} + - component: {fileID: 83016932} + - component: {fileID: 83016931} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &83016930 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 83016929} + 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: 1839080358} + m_RootOrder: 0 + 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 &83016931 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 83016929} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'ID: toRed' +--- !u!222 &83016932 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 83016929} + m_CullTransparentMesh: 1 +--- !u!1 &118309267 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 118309271} + - component: {fileID: 118309270} + - component: {fileID: 118309268} + - component: {fileID: 118309274} + - component: {fileID: 118309272} + - component: {fileID: 118309269} + m_Layer: 0 + m_Name: Cube A (w animation) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &118309268 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118309267} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &118309269 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118309267} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d0390bd8b8ffd640b34fe25065ff1df, type: 3} + m_Name: + m_EditorClassIdentifier: + updateType: 0 + isSpeedBased: 0 + hasOnStart: 0 + hasOnPlay: 0 + hasOnUpdate: 0 + hasOnStepComplete: 0 + hasOnComplete: 0 + hasOnTweenCreated: 0 + hasOnRewind: 0 + onStart: + m_PersistentCalls: + m_Calls: [] + onPlay: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onStepComplete: + m_PersistentCalls: + m_Calls: [] + onComplete: + m_PersistentCalls: + m_Calls: [] + onTweenCreated: + m_PersistentCalls: + m_Calls: [] + onRewind: + m_PersistentCalls: + m_Calls: [] + targetIsSelf: 1 + targetGO: {fileID: 0} + tweenTargetIsTargetGO: 1 + delay: 0 + duration: 1 + easeType: 6 + easeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + loopType: 0 + loops: 1 + id: rotate + isRelative: 0 + isFrom: 0 + isIndependentUpdate: 0 + autoKill: 0 + autoGenerate: 1 + isActive: 1 + isValid: 1 + target: {fileID: 118309271} + animationType: 3 + targetType: 0 + forcedTargetType: 0 + autoPlay: 0 + useTargetAsV3: 0 + endValueFloat: 0 + endValueV3: {x: 0, y: 180, z: 0} + endValueV2: {x: 0, y: 0} + endValueColor: {r: 1, g: 1, b: 1, a: 1} + endValueString: + endValueRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + endValueTransform: {fileID: 0} + optionalBool0: 0 + optionalBool1: 0 + optionalFloat0: 0 + optionalInt0: 0 + optionalRotationMode: 0 + optionalScrambleMode: 0 + optionalShakeRandomnessMode: 0 + optionalString: +--- !u!33 &118309270 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118309267} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &118309271 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118309267} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1192540964} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &118309272 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118309267} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d0390bd8b8ffd640b34fe25065ff1df, type: 3} + m_Name: + m_EditorClassIdentifier: + updateType: 0 + isSpeedBased: 0 + hasOnStart: 0 + hasOnPlay: 0 + hasOnUpdate: 0 + hasOnStepComplete: 0 + hasOnComplete: 0 + hasOnTweenCreated: 0 + hasOnRewind: 0 + onStart: + m_PersistentCalls: + m_Calls: [] + onPlay: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onStepComplete: + m_PersistentCalls: + m_Calls: [] + onComplete: + m_PersistentCalls: + m_Calls: [] + onTweenCreated: + m_PersistentCalls: + m_Calls: [] + onRewind: + m_PersistentCalls: + m_Calls: [] + targetIsSelf: 1 + targetGO: {fileID: 0} + tweenTargetIsTargetGO: 1 + delay: 0 + duration: 1 + easeType: 6 + easeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + loopType: 0 + loops: 1 + id: move + isRelative: 1 + isFrom: 0 + isIndependentUpdate: 0 + autoKill: 0 + autoGenerate: 1 + isActive: 1 + isValid: 1 + target: {fileID: 118309271} + animationType: 1 + targetType: 0 + forcedTargetType: 0 + autoPlay: 0 + useTargetAsV3: 0 + endValueFloat: 0 + endValueV3: {x: 0, y: 1, z: 0} + endValueV2: {x: 0, y: 0} + endValueColor: {r: 1, g: 1, b: 1, a: 1} + endValueString: + endValueRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + endValueTransform: {fileID: 0} + optionalBool0: 0 + optionalBool1: 0 + optionalFloat0: 0 + optionalInt0: 0 + optionalRotationMode: 0 + optionalScrambleMode: 0 + optionalShakeRandomnessMode: 0 + optionalString: +--- !u!114 &118309274 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118309267} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d0390bd8b8ffd640b34fe25065ff1df, type: 3} + m_Name: + m_EditorClassIdentifier: + updateType: 0 + isSpeedBased: 0 + hasOnStart: 0 + hasOnPlay: 0 + hasOnUpdate: 0 + hasOnStepComplete: 0 + hasOnComplete: 0 + hasOnTweenCreated: 0 + hasOnRewind: 0 + onStart: + m_PersistentCalls: + m_Calls: [] + onPlay: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onStepComplete: + m_PersistentCalls: + m_Calls: [] + onComplete: + m_PersistentCalls: + m_Calls: [] + onTweenCreated: + m_PersistentCalls: + m_Calls: [] + onRewind: + m_PersistentCalls: + m_Calls: [] + targetIsSelf: 1 + targetGO: {fileID: 0} + tweenTargetIsTargetGO: 1 + delay: 0 + duration: 1 + easeType: 6 + easeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + loopType: 0 + loops: 1 + id: toRed + isRelative: 0 + isFrom: 0 + isIndependentUpdate: 0 + autoKill: 0 + autoGenerate: 1 + isActive: 1 + isValid: 1 + target: {fileID: 118309268} + animationType: 6 + targetType: 0 + forcedTargetType: 0 + autoPlay: 0 + useTargetAsV3: 0 + endValueFloat: 0 + endValueV3: {x: 0, y: 0, z: 0} + endValueV2: {x: 0, y: 0} + endValueColor: {r: 1, g: 0, b: 0, a: 1} + endValueString: + endValueRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + endValueTransform: {fileID: 0} + optionalBool0: 0 + optionalBool1: 0 + optionalFloat0: 0 + optionalInt0: 0 + optionalRotationMode: 0 + optionalScrambleMode: 0 + optionalShakeRandomnessMode: 0 + optionalString: +--- !u!1 &186391000 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 186391001} + m_Layer: 5 + m_Name: Buttons - PlayAllById + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &186391001 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 186391000} + 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: 467194356} + - {fileID: 1492174307} + - {fileID: 323853745} + - {fileID: 1644045641} + m_Father: {fileID: 1260203941} + m_RootOrder: 2 + 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: -34} + m_SizeDelta: {x: 0, y: -48.000015} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &191643490 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 191643491} + - component: {fileID: 191643493} + - component: {fileID: 191643492} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &191643491 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 191643490} + 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: 45542690} + m_RootOrder: 0 + 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 &191643492 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 191643490} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'ID: move' +--- !u!222 &191643493 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 191643490} + m_CullTransparentMesh: 1 +--- !u!1 &215583160 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 215583161} + - component: {fileID: 215583163} + - component: {fileID: 215583162} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &215583161 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 215583160} + 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: 1619597526} + m_RootOrder: 0 + 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 &215583162 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 215583160} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'ID: move' +--- !u!222 &215583163 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 215583160} + m_CullTransparentMesh: 1 +--- !u!1 &286188793 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 286188794} + m_Layer: 5 + m_Name: Buttons - PlayById + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &286188794 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 286188793} + 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: 1158456312} + - {fileID: 1839080358} + - {fileID: 1095596651} + - {fileID: 566135255} + m_Father: {fileID: 1260203941} + m_RootOrder: 1 + 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: 42} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &323853744 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 323853745} + - component: {fileID: 323853748} + - component: {fileID: 323853747} + - component: {fileID: 323853746} + m_Layer: 5 + m_Name: 'Button (ID: move)' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &323853745 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 323853744} + 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: 645240663} + m_Father: {fileID: 186391001} + m_RootOrder: 2 + 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: -36} + m_SizeDelta: {x: 100, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &323853746 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 323853744} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 323853747} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1844382610} + m_TargetAssemblyTypeName: + m_MethodName: DOPlayAllById + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: move + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &323853747 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 323853744} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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 &323853748 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 323853744} + m_CullTransparentMesh: 1 +--- !u!1 &386943563 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 386943564} + - component: {fileID: 386943566} + - component: {fileID: 386943565} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &386943564 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 386943563} + 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: 766204080} + m_RootOrder: 0 + 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 &386943565 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 386943563} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'ID: toRed' +--- !u!222 &386943566 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 386943563} + m_CullTransparentMesh: 1 +--- !u!1 &461995929 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 461995932} + - component: {fileID: 461995931} + - component: {fileID: 461995930} + m_Layer: 0 + m_Name: Name + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!102 &461995930 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 461995929} + m_Text: B + m_OffsetZ: 0 + m_CharacterSize: 20 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 30 + m_FontStyle: 1 + m_RichText: 1 + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &461995931 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 461995929} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!4 &461995932 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 461995929} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1844382606} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &467194355 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 467194356} + - component: {fileID: 467194358} + - component: {fileID: 467194357} + m_Layer: 5 + m_Name: Description + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &467194356 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 467194355} + 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: 186391001} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 550, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &467194357 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 467194355} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 'DOPlayAllById (Cube B as target) + + Will play the DOTweenAnimations + with the given ID, on ANY gameObject' +--- !u!222 &467194358 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 467194355} + m_CullTransparentMesh: 1 +--- !u!1 &502741617 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 502741618} + - component: {fileID: 502741621} + - component: {fileID: 502741620} + - component: {fileID: 502741619} + m_Layer: 5 + m_Name: 'Button (ID: rotate)' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &502741618 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 502741617} + 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: 685170976} + m_Father: {fileID: 1997177219} + m_RootOrder: 3 + 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: 100, y: -36} + m_SizeDelta: {x: 100, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &502741619 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 502741617} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 502741620} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1844382610} + m_TargetAssemblyTypeName: + m_MethodName: DORestartById + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: rotate + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &502741620 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 502741617} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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 &502741621 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 502741617} + m_CullTransparentMesh: 1 +--- !u!1 &566135254 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 566135255} + - component: {fileID: 566135258} + - component: {fileID: 566135257} + - component: {fileID: 566135256} + m_Layer: 5 + m_Name: 'Button (ID: rotate)' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &566135255 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 566135254} + 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: 740664255} + m_Father: {fileID: 286188794} + m_RootOrder: 3 + 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: 100, y: -36} + m_SizeDelta: {x: 100, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &566135256 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 566135254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 566135257} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1844382610} + m_TargetAssemblyTypeName: + m_MethodName: DOPlayById + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: rotate + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &566135257 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 566135254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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 &566135258 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 566135254} + m_CullTransparentMesh: 1 +--- !u!1 &608072282 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 608072283} + - component: {fileID: 608072285} + - component: {fileID: 608072284} + m_Layer: 5 + m_Name: Description + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &608072283 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608072282} + 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: 1785989881} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 550, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &608072284 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608072282} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 'DORestartAllById (Cube B as target) + + Will restart the DOTweenAnimations + with the given ID, on ANY gameObject' +--- !u!222 &608072285 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608072282} + m_CullTransparentMesh: 1 +--- !u!1 &645240662 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 645240663} + - component: {fileID: 645240665} + - component: {fileID: 645240664} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &645240663 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 645240662} + 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: 323853745} + m_RootOrder: 0 + 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 &645240664 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 645240662} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'ID: move' +--- !u!222 &645240665 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 645240662} + m_CullTransparentMesh: 1 +--- !u!1 &685170975 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 685170976} + - component: {fileID: 685170978} + - component: {fileID: 685170977} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &685170976 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 685170975} + 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: 502741618} + m_RootOrder: 0 + 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 &685170977 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 685170975} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'ID: rotate' +--- !u!222 &685170978 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 685170975} + m_CullTransparentMesh: 1 +--- !u!1 &718047501 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 718047502} + - component: {fileID: 718047504} + - component: {fileID: 718047503} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &718047502 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 718047501} + 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: 1371900811} + m_RootOrder: 0 + 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 &718047503 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 718047501} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'ID: rotate' +--- !u!222 &718047504 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 718047501} + m_CullTransparentMesh: 1 +--- !u!1 &731424937 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 731424938} + - component: {fileID: 731424940} + - component: {fileID: 731424939} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &731424938 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 731424937} + 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: 899835911} + m_RootOrder: 0 + 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 &731424939 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 731424937} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'ID: toRed' +--- !u!222 &731424940 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 731424937} + m_CullTransparentMesh: 1 +--- !u!1 &740664254 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 740664255} + - component: {fileID: 740664257} + - component: {fileID: 740664256} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &740664255 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740664254} + 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: 566135255} + m_RootOrder: 0 + 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 &740664256 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740664254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'ID: rotate' +--- !u!222 &740664257 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740664254} + m_CullTransparentMesh: 1 +--- !u!1 &766204079 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 766204080} + - component: {fileID: 766204083} + - component: {fileID: 766204082} + - component: {fileID: 766204081} + m_Layer: 5 + m_Name: 'Button (ID: toRed)' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &766204080 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 766204079} + 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: 386943564} + m_Father: {fileID: 1785989881} + m_RootOrder: 1 + 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: -100, y: -36} + m_SizeDelta: {x: 100, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &766204081 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 766204079} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 766204082} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1844382610} + m_TargetAssemblyTypeName: + m_MethodName: DORestartAllById + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: toRed + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &766204082 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 766204079} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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 &766204083 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 766204079} + m_CullTransparentMesh: 1 +--- !u!1 &848136767 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 848136772} + - component: {fileID: 848136771} + - component: {fileID: 848136769} + - component: {fileID: 848136768} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &848136768 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 848136767} + m_Enabled: 1 +--- !u!124 &848136769 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 848136767} + m_Enabled: 1 +--- !u!20 &848136771 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 848136767} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.16176468, g: 0.16176468, b: 0.16176468, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &848136772 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 848136767} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &899835910 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 899835911} + - component: {fileID: 899835914} + - component: {fileID: 899835913} + - component: {fileID: 899835912} + m_Layer: 5 + m_Name: 'Button (ID: toRed)' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &899835911 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899835910} + 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: 731424938} + m_Father: {fileID: 1997177219} + m_RootOrder: 1 + 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: -100, y: -36} + m_SizeDelta: {x: 100, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &899835912 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899835910} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 899835913} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1844382610} + m_TargetAssemblyTypeName: + m_MethodName: DORestartById + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: toRed + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &899835913 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899835910} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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 &899835914 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899835910} + m_CullTransparentMesh: 1 +--- !u!1 &970591913 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 970591914} + - component: {fileID: 970591916} + - component: {fileID: 970591915} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &970591914 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970591913} + 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: 1356883401} + m_RootOrder: 0 + 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 &970591915 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970591913} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: DOPlayNext +--- !u!222 &970591916 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970591913} + m_CullTransparentMesh: 1 +--- !u!1 &1025578319 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1025578320} + - component: {fileID: 1025578322} + - component: {fileID: 1025578321} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1025578320 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1025578319} + 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: 1095596651} + m_RootOrder: 0 + 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 &1025578321 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1025578319} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'ID: move' +--- !u!222 &1025578322 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1025578319} + m_CullTransparentMesh: 1 +--- !u!1 &1053889438 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1053889442} + - component: {fileID: 1053889441} + - component: {fileID: 1053889440} + - component: {fileID: 1053889439} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1053889439 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053889438} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_ForceModuleActive: 0 +--- !u!114 &1053889440 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053889438} + 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 &1053889441 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053889438} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1053889442 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053889438} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1095596650 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1095596651} + - component: {fileID: 1095596654} + - component: {fileID: 1095596653} + - component: {fileID: 1095596652} + m_Layer: 5 + m_Name: 'Button (ID: move)' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1095596651 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1095596650} + 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: 1025578320} + m_Father: {fileID: 286188794} + m_RootOrder: 2 + 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: -36} + m_SizeDelta: {x: 100, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1095596652 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1095596650} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1095596653} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1844382610} + m_TargetAssemblyTypeName: + m_MethodName: DOPlayById + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: move + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1095596653 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1095596650} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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 &1095596654 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1095596650} + m_CullTransparentMesh: 1 +--- !u!1 &1158456309 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1158456312} + - component: {fileID: 1158456311} + - component: {fileID: 1158456310} + m_Layer: 5 + m_Name: Description + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1158456310 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1158456309} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 'DOPlayById (Cube B as target) + + Will play only the DOTweenAnimations + with the given ID that are on Cube B' +--- !u!222 &1158456311 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1158456309} + m_CullTransparentMesh: 1 +--- !u!224 &1158456312 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1158456309} + 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: 286188794} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 550, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1192540961 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1192540964} + - component: {fileID: 1192540963} + - component: {fileID: 1192540962} + m_Layer: 0 + m_Name: Name + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!102 &1192540962 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1192540961} + m_Text: A + m_OffsetZ: 0 + m_CharacterSize: 20 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 30 + m_FontStyle: 1 + m_RichText: 1 + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &1192540963 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1192540961} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!4 &1192540964 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1192540961} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 118309271} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1242857378 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1242857380} + - component: {fileID: 1242857379} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1242857379 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242857378} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 1 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1242857380 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242857378} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.10938166, w: 0.8754261} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 0.99999994, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1260203940 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1260203941} + - component: {fileID: 1260203944} + - component: {fileID: 1260203943} + - component: {fileID: 1260203942} + m_Layer: 5 + m_Name: Canvas (w button controls) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1260203941 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1260203940} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1356883401} + - {fileID: 286188794} + - {fileID: 186391001} + - {fileID: 1997177219} + - {fileID: 1785989881} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1260203942 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1260203940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1260203943 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1260203940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1260203944 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1260203940} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 1 + m_Camera: {fileID: 848136771} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &1305249262 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1305249263} + - component: {fileID: 1305249265} + - component: {fileID: 1305249264} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1305249263 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1305249262} + 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: 1492174307} + m_RootOrder: 0 + 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 &1305249264 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1305249262} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'ID: toRed' +--- !u!222 &1305249265 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1305249262} + m_CullTransparentMesh: 1 +--- !u!1 &1356883400 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1356883401} + - component: {fileID: 1356883404} + - component: {fileID: 1356883403} + - component: {fileID: 1356883402} + m_Layer: 5 + m_Name: Button (DOPlayNext) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1356883401 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356883400} + 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: 970591914} + m_Father: {fileID: 1260203941} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 82} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1356883402 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356883400} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1356883403} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 118309274} + m_TargetAssemblyTypeName: + m_MethodName: DOPlayNext + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 1844382610} + m_TargetAssemblyTypeName: + m_MethodName: DOPlayNext + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 76224665} + m_TargetAssemblyTypeName: + m_MethodName: DOPlayNext + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1356883403 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356883400} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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 &1356883404 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356883400} + m_CullTransparentMesh: 1 +--- !u!1 &1371900810 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1371900811} + - component: {fileID: 1371900814} + - component: {fileID: 1371900813} + - component: {fileID: 1371900812} + m_Layer: 5 + m_Name: 'Button (ID: rotate)' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1371900811 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1371900810} + 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: 718047502} + m_Father: {fileID: 1785989881} + m_RootOrder: 3 + 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: 100, y: -36} + m_SizeDelta: {x: 100, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1371900812 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1371900810} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1371900813} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1844382610} + m_TargetAssemblyTypeName: + m_MethodName: DORestartAllById + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: rotate + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1371900813 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1371900810} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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 &1371900814 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1371900810} + m_CullTransparentMesh: 1 +--- !u!1 &1477055226 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1477055227} + - component: {fileID: 1477055229} + - component: {fileID: 1477055228} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1477055227 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1477055226} + 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: 1644045641} + m_RootOrder: 0 + 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 &1477055228 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1477055226} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'ID: rotate' +--- !u!222 &1477055229 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1477055226} + m_CullTransparentMesh: 1 +--- !u!1 &1492174306 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1492174307} + - component: {fileID: 1492174310} + - component: {fileID: 1492174309} + - component: {fileID: 1492174308} + m_Layer: 5 + m_Name: 'Button (ID: toRed)' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1492174307 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1492174306} + 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: 1305249263} + m_Father: {fileID: 186391001} + m_RootOrder: 1 + 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: -100, y: -36} + m_SizeDelta: {x: 100, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1492174308 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1492174306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1492174309} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1844382610} + m_TargetAssemblyTypeName: + m_MethodName: DOPlayAllById + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: toRed + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1492174309 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1492174306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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 &1492174310 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1492174306} + m_CullTransparentMesh: 1 +--- !u!1 &1619597525 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1619597526} + - component: {fileID: 1619597529} + - component: {fileID: 1619597528} + - component: {fileID: 1619597527} + m_Layer: 5 + m_Name: 'Button (ID: move)' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1619597526 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1619597525} + 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: 215583161} + m_Father: {fileID: 1785989881} + m_RootOrder: 2 + 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: -36} + m_SizeDelta: {x: 100, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1619597527 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1619597525} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1619597528} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1844382610} + m_TargetAssemblyTypeName: + m_MethodName: DORestartAllById + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: move + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1619597528 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1619597525} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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 &1619597529 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1619597525} + m_CullTransparentMesh: 1 +--- !u!1 &1644045637 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1644045641} + - component: {fileID: 1644045640} + - component: {fileID: 1644045639} + - component: {fileID: 1644045638} + m_Layer: 5 + m_Name: 'Button (ID: rotate)' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1644045638 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1644045637} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1644045639} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1844382610} + m_TargetAssemblyTypeName: + m_MethodName: DOPlayAllById + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: rotate + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1644045639 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1644045637} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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 &1644045640 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1644045637} + m_CullTransparentMesh: 1 +--- !u!224 &1644045641 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1644045637} + 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: 1477055227} + m_Father: {fileID: 186391001} + m_RootOrder: 3 + 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: 100, y: -36} + m_SizeDelta: {x: 100, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1760580328 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1760580329} + - component: {fileID: 1760580331} + - component: {fileID: 1760580330} + m_Layer: 0 + m_Name: Name + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1760580329 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1760580328} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 76224668} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!102 &1760580330 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1760580328} + m_Text: C + m_OffsetZ: 0 + m_CharacterSize: 20 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 30 + m_FontStyle: 1 + m_RichText: 1 + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &1760580331 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1760580328} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1785989880 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1785989881} + m_Layer: 5 + m_Name: Buttons - RestartAllById + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1785989881 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1785989880} + 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: 608072283} + - {fileID: 766204080} + - {fileID: 1619597526} + - {fileID: 1371900811} + m_Father: {fileID: 1260203941} + m_RootOrder: 4 + 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: -184} + m_SizeDelta: {x: 0, y: -48} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1812319720 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1812319721} + - component: {fileID: 1812319723} + - component: {fileID: 1812319722} + m_Layer: 5 + m_Name: Description + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1812319721 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1812319720} + 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: 1997177219} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 550, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1812319722 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1812319720} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 'DORestartById (Cube B as target) + + Will restart only the DOTweenAnimations + with the given ID that are on Cube B' +--- !u!222 &1812319723 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1812319720} + m_CullTransparentMesh: 1 +--- !u!1 &1839080357 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1839080358} + - component: {fileID: 1839080361} + - component: {fileID: 1839080360} + - component: {fileID: 1839080359} + m_Layer: 5 + m_Name: 'Button (ID: toRed)' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1839080358 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1839080357} + 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: 83016930} + m_Father: {fileID: 286188794} + m_RootOrder: 1 + 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: -100, y: -36} + m_SizeDelta: {x: 100, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1839080359 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1839080357} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1839080360} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1844382610} + m_TargetAssemblyTypeName: + m_MethodName: DOPlayById + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: toRed + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1839080360 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1839080357} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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 &1839080361 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1839080357} + m_CullTransparentMesh: 1 +--- !u!1 &1844382605 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1844382606} + - component: {fileID: 1844382612} + - component: {fileID: 1844382611} + - component: {fileID: 1844382610} + - component: {fileID: 1844382609} + - component: {fileID: 1844382608} + m_Layer: 0 + m_Name: Cube B (w animation) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1844382606 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1844382605} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 461995932} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1844382608 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1844382605} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d0390bd8b8ffd640b34fe25065ff1df, type: 3} + m_Name: + m_EditorClassIdentifier: + updateType: 0 + isSpeedBased: 0 + hasOnStart: 0 + hasOnPlay: 0 + hasOnUpdate: 0 + hasOnStepComplete: 0 + hasOnComplete: 0 + hasOnTweenCreated: 0 + hasOnRewind: 0 + onStart: + m_PersistentCalls: + m_Calls: [] + onPlay: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onStepComplete: + m_PersistentCalls: + m_Calls: [] + onComplete: + m_PersistentCalls: + m_Calls: [] + onTweenCreated: + m_PersistentCalls: + m_Calls: [] + onRewind: + m_PersistentCalls: + m_Calls: [] + targetIsSelf: 1 + targetGO: {fileID: 0} + tweenTargetIsTargetGO: 1 + delay: 0 + duration: 1 + easeType: 6 + easeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + loopType: 0 + loops: 1 + id: rotate + isRelative: 0 + isFrom: 0 + isIndependentUpdate: 0 + autoKill: 0 + autoGenerate: 1 + isActive: 1 + isValid: 1 + target: {fileID: 1844382606} + animationType: 3 + targetType: 0 + forcedTargetType: 0 + autoPlay: 0 + useTargetAsV3: 0 + endValueFloat: 0 + endValueV3: {x: 0, y: 180, z: 0} + endValueV2: {x: 0, y: 0} + endValueColor: {r: 1, g: 1, b: 1, a: 1} + endValueString: + endValueRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + endValueTransform: {fileID: 0} + optionalBool0: 0 + optionalBool1: 0 + optionalFloat0: 0 + optionalInt0: 0 + optionalRotationMode: 0 + optionalScrambleMode: 0 + optionalShakeRandomnessMode: 0 + optionalString: +--- !u!114 &1844382609 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1844382605} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d0390bd8b8ffd640b34fe25065ff1df, type: 3} + m_Name: + m_EditorClassIdentifier: + updateType: 0 + isSpeedBased: 0 + hasOnStart: 0 + hasOnPlay: 0 + hasOnUpdate: 0 + hasOnStepComplete: 0 + hasOnComplete: 0 + hasOnTweenCreated: 0 + hasOnRewind: 0 + onStart: + m_PersistentCalls: + m_Calls: [] + onPlay: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onStepComplete: + m_PersistentCalls: + m_Calls: [] + onComplete: + m_PersistentCalls: + m_Calls: [] + onTweenCreated: + m_PersistentCalls: + m_Calls: [] + onRewind: + m_PersistentCalls: + m_Calls: [] + targetIsSelf: 1 + targetGO: {fileID: 0} + tweenTargetIsTargetGO: 1 + delay: 0 + duration: 1 + easeType: 6 + easeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + loopType: 0 + loops: 1 + id: move + isRelative: 1 + isFrom: 0 + isIndependentUpdate: 0 + autoKill: 0 + autoGenerate: 1 + isActive: 1 + isValid: 1 + target: {fileID: 1844382606} + animationType: 1 + targetType: 0 + forcedTargetType: 0 + autoPlay: 0 + useTargetAsV3: 0 + endValueFloat: 0 + endValueV3: {x: 0, y: 1, z: 0} + endValueV2: {x: 0, y: 0} + endValueColor: {r: 1, g: 1, b: 1, a: 1} + endValueString: + endValueRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + endValueTransform: {fileID: 0} + optionalBool0: 0 + optionalBool1: 0 + optionalFloat0: 0 + optionalInt0: 0 + optionalRotationMode: 0 + optionalScrambleMode: 0 + optionalShakeRandomnessMode: 0 + optionalString: +--- !u!114 &1844382610 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1844382605} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d0390bd8b8ffd640b34fe25065ff1df, type: 3} + m_Name: + m_EditorClassIdentifier: + updateType: 0 + isSpeedBased: 0 + hasOnStart: 0 + hasOnPlay: 0 + hasOnUpdate: 0 + hasOnStepComplete: 0 + hasOnComplete: 0 + hasOnTweenCreated: 0 + hasOnRewind: 0 + onStart: + m_PersistentCalls: + m_Calls: [] + onPlay: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onStepComplete: + m_PersistentCalls: + m_Calls: [] + onComplete: + m_PersistentCalls: + m_Calls: [] + onTweenCreated: + m_PersistentCalls: + m_Calls: [] + onRewind: + m_PersistentCalls: + m_Calls: [] + targetIsSelf: 1 + targetGO: {fileID: 0} + tweenTargetIsTargetGO: 1 + delay: 0 + duration: 1 + easeType: 6 + easeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + loopType: 0 + loops: 1 + id: toRed + isRelative: 0 + isFrom: 0 + isIndependentUpdate: 0 + autoKill: 0 + autoGenerate: 1 + isActive: 1 + isValid: 1 + target: {fileID: 1844382611} + animationType: 6 + targetType: 0 + forcedTargetType: 0 + autoPlay: 0 + useTargetAsV3: 0 + endValueFloat: 0 + endValueV3: {x: 0, y: 0, z: 0} + endValueV2: {x: 0, y: 0} + endValueColor: {r: 1, g: 0, b: 0, a: 1} + endValueString: + endValueRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + endValueTransform: {fileID: 0} + optionalBool0: 0 + optionalBool1: 0 + optionalFloat0: 0 + optionalInt0: 0 + optionalRotationMode: 0 + optionalScrambleMode: 0 + optionalShakeRandomnessMode: 0 + optionalString: +--- !u!23 &1844382611 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1844382605} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1844382612 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1844382605} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1997177218 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1997177219} + m_Layer: 5 + m_Name: Buttons - RestartById + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1997177219 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1997177218} + 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: 1812319721} + - {fileID: 899835911} + - {fileID: 45542690} + - {fileID: 502741618} + m_Father: {fileID: 1260203941} + m_RootOrder: 3 + 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: -110} + m_SizeDelta: {x: 0, y: -200} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity.meta b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity.meta new file mode 100644 index 0000000..e46232a --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: a5f7a56d339da84449899ecf95fbe33d +DefaultImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting new file mode 100644 index 0000000..3673603 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting @@ -0,0 +1,64 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DOTweenAnimation_AdvancedSettings + serializedVersion: 4 + m_GIWorkflowMode: 1 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 0 + m_LightmapMaxSize: 1024 + m_BakeResolution: 50 + m_Padding: 2 + m_LightmapCompression: 0 + m_AO: 1 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 1 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_PVRTiledBaking: 0 diff --git a/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting.meta b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting.meta new file mode 100644 index 0000000..36823f1 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a61c6e25af4800249ba8be0e0fe7c505 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity new file mode 100644 index 0000000..c80dacb --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity @@ -0,0 +1,1809 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 1 + m_BakeResolution: 50 + m_AtlasSize: 1024 + m_AO: 1 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: 33462f7ef60d029488368069e8e34659, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &118309267 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 118309271} + - component: {fileID: 118309270} + - component: {fileID: 118309268} + - component: {fileID: 118309273} + - component: {fileID: 118309272} + m_Layer: 0 + m_Name: Cube (w animation) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &118309268 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118309267} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &118309270 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118309267} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &118309271 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118309267} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &118309272 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118309267} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d0390bd8b8ffd640b34fe25065ff1df, type: 3} + m_Name: + m_EditorClassIdentifier: + updateType: 0 + isSpeedBased: 0 + hasOnStart: 0 + hasOnPlay: 0 + hasOnUpdate: 0 + hasOnStepComplete: 0 + hasOnComplete: 0 + hasOnTweenCreated: 0 + hasOnRewind: 0 + onStart: + m_PersistentCalls: + m_Calls: [] + onPlay: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onStepComplete: + m_PersistentCalls: + m_Calls: [] + onComplete: + m_PersistentCalls: + m_Calls: [] + onTweenCreated: + m_PersistentCalls: + m_Calls: [] + onRewind: + m_PersistentCalls: + m_Calls: [] + targetIsSelf: 1 + targetGO: {fileID: 0} + tweenTargetIsTargetGO: 1 + delay: 0 + duration: 2 + easeType: 6 + easeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + loopType: 1 + loops: -1 + id: + isRelative: 0 + isFrom: 0 + isIndependentUpdate: 0 + autoKill: 1 + autoGenerate: 1 + isActive: 1 + isValid: 1 + target: {fileID: 118309271} + animationType: 3 + targetType: 11 + forcedTargetType: 0 + autoPlay: 0 + useTargetAsV3: 0 + endValueFloat: 0 + endValueV3: {x: 0, y: 180, z: 0} + endValueV2: {x: 0, y: 0} + endValueColor: {r: 1, g: 1, b: 1, a: 1} + endValueString: + endValueRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + endValueTransform: {fileID: 0} + optionalBool0: 0 + optionalBool1: 0 + optionalFloat0: 0 + optionalInt0: 0 + optionalRotationMode: 0 + optionalScrambleMode: 0 + optionalShakeRandomnessMode: 0 + optionalString: +--- !u!114 &118309273 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118309267} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d0390bd8b8ffd640b34fe25065ff1df, type: 3} + m_Name: + m_EditorClassIdentifier: + updateType: 0 + isSpeedBased: 0 + hasOnStart: 0 + hasOnPlay: 0 + hasOnUpdate: 0 + hasOnStepComplete: 0 + hasOnComplete: 0 + hasOnTweenCreated: 0 + hasOnRewind: 0 + onStart: + m_PersistentCalls: + m_Calls: [] + onPlay: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onStepComplete: + m_PersistentCalls: + m_Calls: [] + onComplete: + m_PersistentCalls: + m_Calls: [] + onTweenCreated: + m_PersistentCalls: + m_Calls: [] + onRewind: + m_PersistentCalls: + m_Calls: [] + targetIsSelf: 1 + targetGO: {fileID: 0} + tweenTargetIsTargetGO: 1 + delay: 0 + duration: 2 + easeType: 6 + easeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + loopType: 1 + loops: -1 + id: + isRelative: 1 + isFrom: 0 + isIndependentUpdate: 0 + autoKill: 1 + autoGenerate: 1 + isActive: 1 + isValid: 1 + target: {fileID: 118309271} + animationType: 1 + targetType: 11 + forcedTargetType: 0 + autoPlay: 0 + useTargetAsV3: 0 + endValueFloat: 0 + endValueV3: {x: 0, y: 4, z: 0} + endValueV2: {x: 0, y: 0} + endValueColor: {r: 1, g: 1, b: 1, a: 1} + endValueString: + endValueRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + endValueTransform: {fileID: 0} + optionalBool0: 0 + optionalBool1: 0 + optionalFloat0: 0 + optionalInt0: 0 + optionalRotationMode: 0 + optionalScrambleMode: 0 + optionalShakeRandomnessMode: 0 + optionalString: +--- !u!1 &848136767 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 848136772} + - component: {fileID: 848136771} + - component: {fileID: 848136769} + - component: {fileID: 848136768} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &848136768 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 848136767} + m_Enabled: 1 +--- !u!124 &848136769 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 848136767} + m_Enabled: 1 +--- !u!20 &848136771 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 848136767} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.16176468, g: 0.16176468, b: 0.16176468, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &848136772 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 848136767} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &970591913 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 970591914} + - component: {fileID: 970591916} + - component: {fileID: 970591915} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &970591914 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970591913} + 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: 1356883401} + m_RootOrder: 0 + 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 &970591915 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970591913} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: PLAY +--- !u!222 &970591916 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970591913} + m_CullTransparentMesh: 1 +--- !u!1 &990238542 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 990238543} + - component: {fileID: 990238545} + - component: {fileID: 990238544} + - component: {fileID: 990238546} + m_Layer: 5 + m_Name: Text (w text animation) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &990238543 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 990238542} + 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: 1260203941} + m_RootOrder: 1 + 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: 230} + m_SizeDelta: {x: 400, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &990238544 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 990238542} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 'Original text that will be + tweened + +' +--- !u!222 &990238545 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 990238542} + m_CullTransparentMesh: 1 +--- !u!114 &990238546 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 990238542} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d0390bd8b8ffd640b34fe25065ff1df, type: 3} + m_Name: + m_EditorClassIdentifier: + updateType: 0 + isSpeedBased: 0 + hasOnStart: 0 + hasOnPlay: 0 + hasOnUpdate: 0 + hasOnStepComplete: 0 + hasOnComplete: 0 + hasOnTweenCreated: 0 + hasOnRewind: 0 + onStart: + m_PersistentCalls: + m_Calls: [] + onPlay: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onStepComplete: + m_PersistentCalls: + m_Calls: [] + onComplete: + m_PersistentCalls: + m_Calls: [] + onTweenCreated: + m_PersistentCalls: + m_Calls: [] + onRewind: + m_PersistentCalls: + m_Calls: [] + targetIsSelf: 1 + targetGO: {fileID: 0} + tweenTargetIsTargetGO: 1 + delay: 0 + duration: 3 + easeType: 1 + easeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + loopType: 1 + loops: 0 + id: + isRelative: 0 + isFrom: 0 + isIndependentUpdate: 0 + autoKill: 1 + autoGenerate: 1 + isActive: 1 + isValid: 1 + target: {fileID: 990238544} + animationType: 8 + targetType: 0 + forcedTargetType: 0 + autoPlay: 0 + useTargetAsV3: 0 + endValueFloat: 0 + endValueV3: {x: 0, y: 0, z: 0} + endValueV2: {x: 0, y: 0} + endValueColor: {r: 1, g: 1, b: 1, a: 1} + endValueString: This is the new tweened text + (scandalous)! + endValueRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + endValueTransform: {fileID: 0} + optionalBool0: 1 + optionalBool1: 0 + optionalFloat0: 0 + optionalInt0: 0 + optionalRotationMode: 0 + optionalScrambleMode: 0 + optionalShakeRandomnessMode: 0 + optionalString: +--- !u!1 &1053889438 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1053889442} + - component: {fileID: 1053889441} + - component: {fileID: 1053889440} + - component: {fileID: 1053889439} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1053889439 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053889438} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_ForceModuleActive: 0 +--- !u!114 &1053889440 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053889438} + 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 &1053889441 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053889438} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1053889442 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053889438} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1127963255 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1127963256} + - component: {fileID: 1127963258} + - component: {fileID: 1127963257} + m_Layer: 5 + m_Name: Info + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1127963256 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1127963255} + 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: 1260203941} + m_RootOrder: 4 + 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: -186} + m_SizeDelta: {x: 300, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1127963257 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1127963255} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: The PLAY button starts the logo fade out. When the fade out is complete, + it will start all the other animations (thanks to the Events created in the logo + DOTweenAnimation Component) +--- !u!222 &1127963258 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1127963255} + m_CullTransparentMesh: 1 +--- !u!1 &1242857378 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1242857380} + - component: {fileID: 1242857379} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1242857379 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242857378} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 1 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1242857380 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242857378} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.10938166, w: 0.8754261} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 0.99999994, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1260203940 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1260203941} + - component: {fileID: 1260203944} + - component: {fileID: 1260203943} + - component: {fileID: 1260203942} + m_Layer: 5 + m_Name: Canvas (contains animated objects) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1260203941 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1260203940} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1636198022} + - {fileID: 990238543} + - {fileID: 1323952358} + - {fileID: 1356883401} + - {fileID: 1127963256} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1260203942 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1260203940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1260203943 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1260203940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1260203944 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1260203940} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &1323952357 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1323952358} + - component: {fileID: 1323952362} + - component: {fileID: 1323952361} + - component: {fileID: 1323952360} + - component: {fileID: 1323952359} + m_Layer: 5 + m_Name: Text (w color animation) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1323952358 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323952357} + 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: 1260203941} + m_RootOrder: 2 + 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: 254} + m_SizeDelta: {x: 400, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1323952359 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323952357} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d0390bd8b8ffd640b34fe25065ff1df, type: 3} + m_Name: + m_EditorClassIdentifier: + updateType: 0 + isSpeedBased: 0 + hasOnStart: 0 + hasOnPlay: 0 + hasOnUpdate: 0 + hasOnStepComplete: 0 + hasOnComplete: 0 + hasOnTweenCreated: 0 + hasOnRewind: 0 + onStart: + m_PersistentCalls: + m_Calls: [] + onPlay: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onStepComplete: + m_PersistentCalls: + m_Calls: [] + onComplete: + m_PersistentCalls: + m_Calls: [] + onTweenCreated: + m_PersistentCalls: + m_Calls: [] + onRewind: + m_PersistentCalls: + m_Calls: [] + targetIsSelf: 1 + targetGO: {fileID: 0} + tweenTargetIsTargetGO: 1 + delay: 0 + duration: 3 + easeType: 1 + easeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + loopType: 1 + loops: -1 + id: + isRelative: 0 + isFrom: 0 + isIndependentUpdate: 0 + autoKill: 1 + autoGenerate: 1 + isActive: 1 + isValid: 1 + target: {fileID: 1323952361} + animationType: 6 + targetType: 0 + forcedTargetType: 0 + autoPlay: 0 + useTargetAsV3: 0 + endValueFloat: 0 + endValueV3: {x: 0, y: 0, z: 0} + endValueV2: {x: 0, y: 0} + endValueColor: {r: 1, g: 0, b: 0.8068962, a: 1} + endValueString: + endValueRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + endValueTransform: {fileID: 0} + optionalBool0: 0 + optionalBool1: 0 + optionalFloat0: 0 + optionalInt0: 0 + optionalRotationMode: 0 + optionalScrambleMode: 0 + optionalShakeRandomnessMode: 0 + optionalString: +--- !u!114 &1323952360 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323952357} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d0390bd8b8ffd640b34fe25065ff1df, type: 3} + m_Name: + m_EditorClassIdentifier: + updateType: 0 + isSpeedBased: 0 + hasOnStart: 0 + hasOnPlay: 0 + hasOnUpdate: 0 + hasOnStepComplete: 0 + hasOnComplete: 0 + hasOnTweenCreated: 0 + hasOnRewind: 0 + onStart: + m_PersistentCalls: + m_Calls: [] + onPlay: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onStepComplete: + m_PersistentCalls: + m_Calls: [] + onComplete: + m_PersistentCalls: + m_Calls: [] + onTweenCreated: + m_PersistentCalls: + m_Calls: [] + onRewind: + m_PersistentCalls: + m_Calls: [] + targetIsSelf: 1 + targetGO: {fileID: 0} + tweenTargetIsTargetGO: 1 + delay: 0 + duration: 3 + easeType: 1 + easeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + loopType: 1 + loops: 0 + id: + isRelative: 1 + isFrom: 0 + isIndependentUpdate: 0 + autoKill: 1 + autoGenerate: 1 + isActive: 1 + isValid: 1 + target: {fileID: 1323952361} + animationType: 8 + targetType: 0 + forcedTargetType: 0 + autoPlay: 0 + useTargetAsV3: 0 + endValueFloat: 0 + endValueV3: {x: 0, y: 0, z: 0} + endValueV2: {x: 0, y: 0} + endValueColor: {r: 1, g: 1, b: 1, a: 1} + endValueString: ' See? What did I tell you?' + endValueRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + endValueTransform: {fileID: 0} + optionalBool0: 1 + optionalBool1: 0 + optionalFloat0: 0 + optionalInt0: 0 + optionalRotationMode: 0 + optionalScrambleMode: 0 + optionalShakeRandomnessMode: 0 + optionalString: +--- !u!114 &1323952361 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323952357} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: This text will change color... +--- !u!222 &1323952362 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323952357} + m_CullTransparentMesh: 1 +--- !u!1 &1356883400 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1356883401} + - component: {fileID: 1356883404} + - component: {fileID: 1356883403} + - component: {fileID: 1356883402} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1356883401 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356883400} + 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: 970591914} + m_Father: {fileID: 1260203941} + m_RootOrder: 3 + 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: -147} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1356883402 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356883400} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1356883403} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1636198019} + m_TargetAssemblyTypeName: + m_MethodName: DOPlay + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1356883403 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356883400} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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 &1356883404 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356883400} + m_CullTransparentMesh: 1 +--- !u!1 &1636198018 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1636198022} + - component: {fileID: 1636198021} + - component: {fileID: 1636198020} + - component: {fileID: 1636198019} + m_Layer: 5 + m_Name: Logo (starts animations w events) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1636198019 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1636198018} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d0390bd8b8ffd640b34fe25065ff1df, type: 3} + m_Name: + m_EditorClassIdentifier: + updateType: 0 + isSpeedBased: 0 + hasOnStart: 0 + hasOnPlay: 0 + hasOnUpdate: 0 + hasOnStepComplete: 0 + hasOnComplete: 1 + hasOnTweenCreated: 0 + hasOnRewind: 0 + onStart: + m_PersistentCalls: + m_Calls: [] + onPlay: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onStepComplete: + m_PersistentCalls: + m_Calls: [] + onComplete: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 990238546} + m_TargetAssemblyTypeName: + m_MethodName: DOPlay + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 118309273} + m_TargetAssemblyTypeName: + m_MethodName: DOPlay + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 1323952360} + m_TargetAssemblyTypeName: + m_MethodName: DOPlay + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + onTweenCreated: + m_PersistentCalls: + m_Calls: [] + onRewind: + m_PersistentCalls: + m_Calls: [] + targetIsSelf: 1 + targetGO: {fileID: 0} + tweenTargetIsTargetGO: 1 + delay: 0 + duration: 1 + easeType: 5 + easeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + loopType: 0 + loops: 1 + id: + isRelative: 0 + isFrom: 0 + isIndependentUpdate: 0 + autoKill: 1 + autoGenerate: 1 + isActive: 1 + isValid: 1 + target: {fileID: 1636198020} + animationType: 7 + targetType: 0 + forcedTargetType: 0 + autoPlay: 0 + useTargetAsV3: 0 + endValueFloat: 0 + endValueV3: {x: 0, y: 0, z: 0} + endValueV2: {x: 0, y: 0} + endValueColor: {r: 1, g: 1, b: 1, a: 1} + endValueString: + endValueRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + endValueTransform: {fileID: 0} + optionalBool0: 0 + optionalBool1: 0 + optionalFloat0: 0 + optionalInt0: 0 + optionalRotationMode: 0 + optionalScrambleMode: 0 + optionalShakeRandomnessMode: 0 + optionalString: +--- !u!114 &1636198020 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1636198018} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 44a054df1702e39458b7072b08d0f212, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1636198021 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1636198018} + m_CullTransparentMesh: 1 +--- !u!224 &1636198022 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1636198018} + 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: 1260203941} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 45} + m_SizeDelta: {x: 241, y: 320} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity.meta b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity.meta new file mode 100644 index 0000000..226d596 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 6a2ad353325ffe64983c28d69a8738f5 +DefaultImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting new file mode 100644 index 0000000..2457909 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting @@ -0,0 +1,64 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DOTweenAnimation_BasicsSettings + serializedVersion: 4 + m_GIWorkflowMode: 1 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 0 + m_LightmapMaxSize: 1024 + m_BakeResolution: 50 + m_Padding: 2 + m_LightmapCompression: 0 + m_AO: 1 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 1 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_PVRTiledBaking: 0 diff --git a/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting.meta b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting.meta new file mode 100644 index 0000000..c3ffa31 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 33462f7ef60d029488368069e8e34659 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPath.unity b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPath.unity new file mode 100644 index 0000000..89ed7eb --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPath.unity @@ -0,0 +1,1596 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 1 + m_BakeResolution: 50 + m_AtlasSize: 1024 + m_AO: 1 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: 133ec7d8995da094dab824158c2ddb8e, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &118309267 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 118309271} + - component: {fileID: 118309270} + - component: {fileID: 118309268} + - component: {fileID: 118309269} + m_Layer: 0 + m_Name: Cube A (w path) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &118309268 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118309267} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &118309269 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118309267} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -333801856, guid: aa0b1eebb5db27a419fa4564bbe5c9c5, type: 3} + m_Name: + m_EditorClassIdentifier: + updateType: 0 + isSpeedBased: 0 + hasOnStart: 0 + hasOnPlay: 0 + hasOnUpdate: 0 + hasOnStepComplete: 0 + hasOnComplete: 1 + hasOnTweenCreated: 0 + hasOnRewind: 0 + onStart: + m_PersistentCalls: + m_Calls: [] + onPlay: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onStepComplete: + m_PersistentCalls: + m_Calls: [] + onComplete: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1087750405} + m_TargetAssemblyTypeName: + m_MethodName: DOPlay + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + onTweenCreated: + m_PersistentCalls: + m_Calls: [] + onRewind: + m_PersistentCalls: + m_Calls: [] + delay: 0 + duration: 3 + easeType: 6 + easeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + loops: 1 + id: + loopType: 0 + orientType: 0 + lookAtTransform: {fileID: 0} + lookAtPosition: {x: 0, y: 0, z: 0} + lookAhead: 0.01 + autoPlay: 0 + autoKill: 1 + relative: 0 + isLocal: 0 + isClosedPath: 1 + pathResolution: 10 + pathMode: 1 + lockRotation: 0 + assignForwardAndUp: 0 + forwardDirection: {x: 0, y: 0, z: 1} + upDirection: {x: 0, y: 1, z: 0} + tweenRigidbody: 0 + wps: + - {x: 3.8321667, y: 6.9544535, z: 0} + - {x: -6.0542445, y: 9.465288, z: 0} + - {x: -12.069765, y: 6.1698112, z: 0} + - {x: -12.069786, y: -0.2641964, z: 0} + - {x: -6.368099, y: -4.187376, z: 0} + fullWps: [] + path: + wpLengths: + - 0 + - 9.359136 + - 10.405018 + - 7.102792 + - 6.6672983 + - 7.1915474 + - 11.289525 + wps: + - {x: 4.45, y: -1.83, z: 0} + - {x: 3.8321667, y: 6.9544535, z: 0} + - {x: -6.0542445, y: 9.465288, z: 0} + - {x: -12.069765, y: 6.1698112, z: 0} + - {x: -12.069786, y: -0.2641964, z: 0} + - {x: -6.368099, y: -4.187376, z: 0} + - {x: 4.45, y: -1.83, z: 0} + type: 1 + subdivisionsXSegment: 10 + subdivisions: 70 + controlPoints: + - a: {x: -6.368099, y: -4.187376, z: 0} + b: {x: 0, y: 0, z: 0} + - a: {x: 3.8321667, y: 6.9544535, z: 0} + b: {x: 0, y: 0, z: 0} + length: 52.02238 + isFinalized: 1 + timesTable: + - 0.014285714 + - 0.028571429 + - 0.042857144 + - 0.057142857 + - 0.071428575 + - 0.08571429 + - 0.1 + - 0.114285715 + - 0.12857144 + - 0.14285715 + - 0.15714286 + - 0.17142858 + - 0.18571429 + - 0.2 + - 0.21428572 + - 0.22857143 + - 0.24285714 + - 0.25714287 + - 0.27142859 + - 0.2857143 + - 0.3 + - 0.31428573 + - 0.32857144 + - 0.34285715 + - 0.35714287 + - 0.37142858 + - 0.3857143 + - 0.4 + - 0.41428572 + - 0.42857143 + - 0.44285715 + - 0.45714286 + - 0.47142857 + - 0.4857143 + - 0.5 + - 0.51428574 + - 0.5285714 + - 0.54285717 + - 0.55714285 + - 0.5714286 + - 0.5857143 + - 0.6 + - 0.6142857 + - 0.62857145 + - 0.64285713 + - 0.6571429 + - 0.67142856 + - 0.6857143 + - 0.7 + - 0.71428573 + - 0.7285714 + - 0.74285716 + - 0.75714284 + - 0.7714286 + - 0.78571427 + - 0.8 + - 0.8142857 + - 0.82857144 + - 0.8428571 + - 0.85714287 + - 0.87142855 + - 0.8857143 + - 0.9 + - 0.9142857 + - 0.92857146 + - 0.94285715 + - 0.9571429 + - 0.9714286 + - 0.9857143 + - 1 + lengthsTable: + - 0.66792893 + - 1.3899281 + - 2.16896 + - 2.9980419 + - 3.8644814 + - 4.752426 + - 5.6444182 + - 6.5224686 + - 7.368998 + - 8.167948 + - 8.906464 + - 9.58573 + - 10.313842 + - 11.125577 + - 12.012393 + - 12.959278 + - 13.947668 + - 14.956963 + - 15.965341 + - 16.950247 + - 17.888689 + - 18.75748 + - 19.533484 + - 20.220243 + - 20.891918 + - 21.555 + - 22.208927 + - 22.852415 + - 23.483595 + - 24.100157 + - 24.699495 + - 25.278862 + - 25.83552 + - 26.366951 + - 26.8711 + - 27.376375 + - 27.912098 + - 28.475262 + - 29.060778 + - 29.66227 + - 30.272577 + - 30.884148 + - 31.48931 + - 32.080574 + - 32.650936 + - 33.194313 + - 33.709743 + - 34.240025 + - 34.79521 + - 35.371506 + - 35.965523 + - 36.574467 + - 37.19625 + - 37.829685 + - 38.474625 + - 39.132145 + - 39.804657 + - 40.496033 + - 41.23852 + - 42.10978 + - 43.088493 + - 44.145332 + - 45.25077 + - 46.375446 + - 47.49042 + - 48.567577 + - 49.58027 + - 50.50447 + - 51.32128 + - 52.02238 + inspectorMode: 0 + pathType: 1 + handlesType: 0 + livePreview: 1 + handlesDrawMode: 0 + perspectiveHandleSize: 0.5 + showIndexes: 1 + showWpLength: 0 + pathColor: {r: 1, g: 1, b: 1, a: 0.5} + lastSrcPosition: {x: 4.45, y: -1.83, z: 0} + lastSrcRotation: {x: 0, y: 0, z: 0, w: 0} + wpsDropdown: 0 + dropToFloorOffset: 0 +--- !u!33 &118309270 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118309267} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &118309271 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118309267} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4.45, y: -1.83, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &848136767 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 848136772} + - component: {fileID: 848136771} + - component: {fileID: 848136769} + - component: {fileID: 848136768} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &848136768 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 848136767} + m_Enabled: 1 +--- !u!124 &848136769 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 848136767} + m_Enabled: 1 +--- !u!20 &848136771 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 848136767} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.16176468, g: 0.16176468, b: 0.16176468, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &848136772 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 848136767} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -30} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &970591913 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 970591914} + - component: {fileID: 970591916} + - component: {fileID: 970591915} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &970591914 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970591913} + 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: 1356883401} + m_RootOrder: 0 + 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 &970591915 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970591913} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: PLAY +--- !u!222 &970591916 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970591913} + m_CullTransparentMesh: 1 +--- !u!1 &1053889438 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1053889442} + - component: {fileID: 1053889441} + - component: {fileID: 1053889440} + - component: {fileID: 1053889439} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1053889439 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053889438} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_ForceModuleActive: 0 +--- !u!114 &1053889440 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053889438} + 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 &1053889441 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053889438} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1053889442 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053889438} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1087750404 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1087750408} + - component: {fileID: 1087750407} + - component: {fileID: 1087750406} + - component: {fileID: 1087750405} + m_Layer: 0 + m_Name: Cube B (animated after Cube A) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1087750405 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1087750404} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -333801856, guid: aa0b1eebb5db27a419fa4564bbe5c9c5, type: 3} + m_Name: + m_EditorClassIdentifier: + updateType: 0 + isSpeedBased: 0 + hasOnStart: 0 + hasOnPlay: 0 + hasOnUpdate: 0 + hasOnStepComplete: 0 + hasOnComplete: 0 + hasOnTweenCreated: 0 + hasOnRewind: 0 + onStart: + m_PersistentCalls: + m_Calls: [] + onPlay: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onStepComplete: + m_PersistentCalls: + m_Calls: [] + onComplete: + m_PersistentCalls: + m_Calls: [] + onTweenCreated: + m_PersistentCalls: + m_Calls: [] + onRewind: + m_PersistentCalls: + m_Calls: [] + delay: 0 + duration: 3 + easeType: 1 + easeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + loops: -1 + id: + loopType: 0 + orientType: 0 + lookAtTransform: {fileID: 0} + lookAtPosition: {x: 0, y: 0, z: 0} + lookAhead: 0.01 + autoPlay: 0 + autoKill: 1 + relative: 1 + isLocal: 0 + isClosedPath: 1 + pathResolution: 10 + pathMode: 1 + lockRotation: 0 + assignForwardAndUp: 0 + forwardDirection: {x: 0, y: 0, z: 1} + upDirection: {x: 0, y: 1, z: 0} + tweenRigidbody: 0 + wps: + - {x: 13.417454, y: 2.978077, z: 0} + - {x: 9.493597, y: 8.510473, z: 0} + - {x: -3.3649445, y: 5.5603714, z: 0} + - {x: -13.000723, y: 12.019701, z: 0} + - {x: -19.387083, y: 4.5597005, z: 0} + - {x: -15.279156, y: -3.646319, z: 0} + - {x: -4.1231623, y: -1.0233588, z: 0} + - {x: 3.7979867, y: -4.5040193, z: 0} + fullWps: [] + path: + wpLengths: + - 0 + - 5.8644567 + - 7.2802324 + - 13.301847 + - 11.81175 + - 10.301735 + - 9.680841 + - 11.593836 + - 8.754475 + - 7.309784 + wps: + - {x: 10.45, y: -1.83, z: 0} + - {x: 13.417454, y: 2.978077, z: 0} + - {x: 9.493597, y: 8.510473, z: 0} + - {x: -3.3649445, y: 5.5603714, z: 0} + - {x: -13.000723, y: 12.019701, z: 0} + - {x: -19.387083, y: 4.5597005, z: 0} + - {x: -15.279156, y: -3.646319, z: 0} + - {x: -4.1231623, y: -1.0233588, z: 0} + - {x: 3.7979867, y: -4.5040193, z: 0} + - {x: 10.45, y: -1.83, z: 0} + type: 1 + subdivisionsXSegment: 10 + subdivisions: 100 + controlPoints: + - a: {x: 3.7979867, y: -4.5040193, z: 0} + b: {x: 0, y: 0, z: 0} + - a: {x: 13.417454, y: 2.978077, z: 0} + b: {x: 0, y: 0, z: 0} + length: 85.91056 + isFinalized: 1 + timesTable: + - 0.01 + - 0.02 + - 0.03 + - 0.04 + - 0.049999997 + - 0.06 + - 0.07 + - 0.08 + - 0.089999996 + - 0.099999994 + - 0.11 + - 0.12 + - 0.13 + - 0.14 + - 0.14999999 + - 0.16 + - 0.17 + - 0.17999999 + - 0.19 + - 0.19999999 + - 0.21 + - 0.22 + - 0.22999999 + - 0.24 + - 0.25 + - 0.26 + - 0.26999998 + - 0.28 + - 0.29 + - 0.29999998 + - 0.31 + - 0.32 + - 0.32999998 + - 0.34 + - 0.35 + - 0.35999998 + - 0.37 + - 0.38 + - 0.39 + - 0.39999998 + - 0.41 + - 0.42 + - 0.42999998 + - 0.44 + - 0.45 + - 0.45999998 + - 0.47 + - 0.48 + - 0.48999998 + - 0.5 + - 0.51 + - 0.52 + - 0.53 + - 0.53999996 + - 0.55 + - 0.56 + - 0.57 + - 0.58 + - 0.59 + - 0.59999996 + - 0.61 + - 0.62 + - 0.63 + - 0.64 + - 0.65 + - 0.65999997 + - 0.66999996 + - 0.68 + - 0.69 + - 0.7 + - 0.71 + - 0.71999997 + - 0.72999996 + - 0.74 + - 0.75 + - 0.76 + - 0.77 + - 0.78 + - 0.78999996 + - 0.79999995 + - 0.81 + - 0.82 + - 0.83 + - 0.84 + - 0.84999996 + - 0.85999995 + - 0.87 + - 0.88 + - 0.89 + - 0.9 + - 0.90999997 + - 0.91999996 + - 0.93 + - 0.94 + - 0.95 + - 0.96 + - 0.96999997 + - 0.97999996 + - 0.98999995 + - 1 + lengthsTable: + - 0.5545968 + - 1.1175883 + - 1.6830537 + - 2.245447 + - 2.7997518 + - 3.3416884 + - 3.867998 + - 4.376838 + - 4.868309 + - 5.3450947 + - 5.813135 + - 6.311367 + - 6.877433 + - 7.495066 + - 8.148528 + - 8.823632 + - 9.508459 + - 10.194385 + - 10.877503 + - 11.560418 + - 12.254057 + - 12.978595 + - 13.783311 + - 14.741959 + - 15.848983 + - 17.077965 + - 18.394625 + - 19.761522 + - 21.140495 + - 22.494476 + - 23.78951 + - 24.997858 + - 26.103634 + - 27.136875 + - 28.20907 + - 29.343433 + - 30.531721 + - 31.750658 + - 32.96895 + - 34.151752 + - 35.26419 + - 36.275455 + - 37.165974 + - 37.94238 + - 38.672184 + - 39.461693 + - 40.331173 + - 41.275455 + - 42.278408 + - 43.318016 + - 44.36911 + - 45.404976 + - 46.39841 + - 47.322807 + - 48.15364 + - 48.891544 + - 49.678425 + - 50.534695 + - 51.444313 + - 52.38865 + - 53.348053 + - 54.30292 + - 55.23473 + - 56.12729 + - 56.968613 + - 57.754013 + - 58.495777 + - 59.294735 + - 60.205452 + - 61.226448 + - 62.33766 + - 63.510315 + - 64.71169 + - 65.907745 + - 67.06497 + - 68.15262 + - 69.14602 + - 70.03488 + - 70.87562 + - 71.70776 + - 72.54151 + - 73.377945 + - 74.21172 + - 75.033615 + - 75.83277 + - 76.59903 + - 77.325615 + - 78.01288 + - 78.67338 + - 79.33375 + - 80.00281 + - 80.68108 + - 81.366684 + - 82.05582 + - 82.74328 + - 83.422775 + - 84.087204 + - 84.728836 + - 85.33948 + - 85.91056 + inspectorMode: 0 + pathType: 1 + handlesType: 0 + livePreview: 1 + handlesDrawMode: 0 + perspectiveHandleSize: 0.5 + showIndexes: 1 + showWpLength: 0 + pathColor: {r: 1, g: 1, b: 1, a: 0.5} + lastSrcPosition: {x: 10.45, y: -1.83, z: 0} + lastSrcRotation: {x: 0, y: 0, z: 0, w: 0} + wpsDropdown: 0 + dropToFloorOffset: 0 +--- !u!23 &1087750406 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1087750404} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1087750407 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1087750404} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1087750408 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1087750404} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 10.45, y: -1.83, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1127963255 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1127963256} + - component: {fileID: 1127963258} + - component: {fileID: 1127963257} + m_Layer: 5 + m_Name: Info + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1127963256 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1127963255} + 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: 1260203941} + m_RootOrder: 1 + 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: -186} + m_SizeDelta: {x: 300, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1127963257 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1127963255} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: The PLAY button starts Cube A path animation. When that is complete, it + will start the other cube's animation (thanks to the Event created in Cube A's + DOTweenPath Component) +--- !u!222 &1127963258 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1127963255} + m_CullTransparentMesh: 1 +--- !u!1 &1242857378 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1242857380} + - component: {fileID: 1242857379} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1242857379 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242857378} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 1 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1242857380 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242857378} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.10938166, w: 0.8754261} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 0.99999994, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1260203940 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1260203941} + - component: {fileID: 1260203944} + - component: {fileID: 1260203943} + - component: {fileID: 1260203942} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1260203941 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1260203940} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1356883401} + - {fileID: 1127963256} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1260203942 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1260203940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1260203943 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1260203940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1260203944 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1260203940} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &1356883400 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1356883401} + - component: {fileID: 1356883404} + - component: {fileID: 1356883403} + - component: {fileID: 1356883402} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1356883401 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356883400} + 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: 970591914} + m_Father: {fileID: 1260203941} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -147} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1356883402 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356883400} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1356883403} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 118309269} + m_TargetAssemblyTypeName: + m_MethodName: DOPlay + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1356883403 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356883400} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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 &1356883404 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356883400} + m_CullTransparentMesh: 1 diff --git a/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPath.unity.meta b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPath.unity.meta new file mode 100644 index 0000000..9051851 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPath.unity.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: a351b59ca54a0bc4083c35844da13a61 +DefaultImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting new file mode 100644 index 0000000..f278f45 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting @@ -0,0 +1,64 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DOTweenPathSettings + serializedVersion: 4 + m_GIWorkflowMode: 1 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 0 + m_LightmapMaxSize: 1024 + m_BakeResolution: 50 + m_Padding: 2 + m_LightmapCompression: 0 + m_AO: 1 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 1 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_PVRTiledBaking: 0 diff --git a/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting.meta b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting.meta new file mode 100644 index 0000000..712f451 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 133ec7d8995da094dab824158c2ddb8e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTweenPro Examples/Examples Assets.meta b/Assets/Plugins/Demigiant/DOTweenPro Examples/Examples Assets.meta new file mode 100644 index 0000000..27d6f9b --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/Examples Assets.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 2add6a5374e55e642a55ed3b43fd9db4 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DOTweenPro Examples/Examples Assets/dotweenpro_logo.png b/Assets/Plugins/Demigiant/DOTweenPro Examples/Examples Assets/dotweenpro_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c6d84204d243ecbb2398c9130d5346cc91e86889 GIT binary patch literal 17098 zcmYg&18^oy)NX9s+1R!>+}Io2wyihG8*XfSW81dvWMkXO&G+BB_1~(Q>YkbI)7?k? z^r@Z(D$4&tgu{aa0Rcgjk`z<^PH#X!K!3tOedlax(`~;KSO-Z>XAlsi{{L>!Vf#`O z5Re}rQewiY9+~G^us-OEOFh%%Mey3{(s}0@HVlb!CZ5XFsy`u=lp=n>H2i=&eiFN; z$t8{OV?!fJr;FrSohk>3l`1QPbU-)ql^tu_c&w4=S(ivN`y@xAiE$&Dwl8$6w%PTja(O}84) zgZ%yir+;bxjG#@|Bwwrm5@q|!?}NT%Sg_EYG}=?`(4=z-r(*O13&5j1q_YK7Te*RP zmjnmw@om?+x(--3xXB~DVId@881 zz}3*Q0xRV&npHte!WvHUDBlHH!J0|6i|uMbB(>L7)FizyY(^_lLn=wYi2aupC_N;? zW9lR{^wbL4!_e4Z?JFr3%@Bx8!w@IKT-l3WL)}5QS@k;=K4H4HwuY@n8|eO;;=;^5 zWQc;$=01AIAk*%^@1b(V(<{fl3xwluc4POAHM>t4?h2$Ga>Dh+Wi@Dyy_y}PK(DSm z=ZNLjkROW5IREgAOPD5CXv}oB19b?p7M?5l=Pu{#fc*;By;&;c(w!0(8?di( zAjHzg0E%ya@9wg7tvt`&W@TtL*7`8>DUsfhKZ-cqE%ljvyZ%a`o|NexbAH4SyeaLo z#g*E%)a^Xkg?|0s_2)`CW%cc2X#|ge1xTGxCmrSBZU*|i`|8korAM@c`f5@n!jyJ| z%uSd>@NWB8#V%CS5tZAJN)xD{Rw0k!0aK`2=KEByaqCT0NW~}0uQ_|-VjY}JnEYYp z;b~z~niA*!7j4~EUjK$s$_Q1%#!_%tRO&cIp}{J1=JIBsqU%&wTndN*I(Y=x{R%p6 z`sz{$)ZUy301T%nIj8UPpR4U<=w-7F)dQa|tw%WCGKzGM-MA|TC3#6oF(1_{;eGQd zdorT4Lqs+O`m0E4XVi$KOcJu;c6zJSCSAYfAmiP68dBx^$;rF2%y4FxGDaz3mXT;9}&F^EuW$UiacZ zM{uz9M`2I!hqHwT4~ImZKje6B)H-t-i_9habsMOVtMvIBv+!Q$JUa`Cg|1fNN3^t| zMvt}-_q*AnxDhY>5Z2XAHL^m3S6WpwmCk$Q(5g{S2c1KyG=rV^1JbpqhWD)NrT;;8 zi0Q9xGh+kHZw)-d_&2j$Z(=imVj$+SrBKjT!jI0=guZoNQM=v^>Z?lE2J4ve)K??Z zo@*!EBodTt=;y?ZONU6J&2$ek6Ui~0c2tY2y?f!@-8wNjJYTb($?0u%0b@a)!K_v2 z_}Lir;6ELj+{`F#92oKqHFSbQkcj?Qv z`*4SEn+?%-t)R2idq61b8a!r;?%b>zI`9uU98_XRWJ4^swWn~N;R(WK`w2CwttHyi zuoVS~#~Yy~Sw!ETRNCea@}T!Q72#T94N7wLgRvt$+oYa#|Jqcq(oQu^-}+Y8TMC*% z@)TBY$Qb0^Ejjx^Yq?JEM;pA7 zn;eA2S-RGD9@v}QDWR^}!gBjbbPVPwX@a`YK&krh)hO$wMusL-5JIm|y){Vhrw#@4 z3EV26sB{z@|FN`GHg^=^Lt&~WPcQenI_qbEX!~}c=a&!sq@8}<4Z;BX6s(r$?v84G8Qt$^18Ui_Ul&- z>4VI1qPxUvFTp_2*7MosnnY<&t8n>At9-&0|@5u z-F89rO0wUGLNNiwTmd~DaZ$B2Yi%dWVJ=X?QVm7w#Ma{zlU3p~i25H2epfMw2M**7 z3%G#}{av0bn~9PU0b6HwQ=A*VXU{?A5z|#@cX(Q~Jl38=5D=E$0nEiG zV=e$O6rWU^|0WgQUu1m_9-%--unM1UxeT``*Lg5Kktx@EO2|lVJPb$EOemlWKI(F` zuC<+|j)vtCD>9a$6(2^he9QP+9$foK6~`zyVN!iKc?7}gn0aW z#nq6-@Dz(gRrTzy-Xfaw4KjEfy~^9ls^jvtlTgzc$Z+!ar$OSyZWnBM4~a9u>9U|J zN1Cp_t=>o&{=q0xQFguzE$WwftI)?@R64@MNi1J4VsIESb+HuyJdt7+BulHJL;ss7 zh~pOYxvU_*rdD5Ry+wntV}7E+9x{)1kVjfAlO`u;1CfL~JX$)TEznQ_+~805M$_7u zYB<4B+tBvr=2)jFzIbu|8g{9imrd7);V0w?EiROTvpSrpeuDYD>bUQ?!5JV<@SOn8 zF)#F-&{#VndLHbGJs&S9Jn_)w0zY)b`0uUmXl;?9k+PwKzd}L<#PjCB9r)nA6_MPckt7gy*qG zP{txt?Hf;whJ5xQ#~jQY;i9#$<5m;S zx+&EVT^0xDD5LnKKKqd<7t-@?p7VM~d! zY6?toENG`@o%_;)JKuOBamA@kMns!Dm5R^GjNY9#K9;OOg zCT(MF|4NU`GSn2}VzkWMpYP!#4zRF{W$gO}XOmy3gA_a#smWA>Eo;E5dtp(+mVRTlGo&Fmp%NeNWZgHS z>`hqy3~k20539PMnzec=#n^O`AGv%mR#WcK)VW3^H(oLrxrPn8>k^JHNO8!AFYvk+ ziD^qiy09(e9By8e= z{V$iZ{ymVtQq21)@2#!IQ|v!!9i)?ZS||4y7G!)DZ1(=}shr}}#4}mT z3CQhj%*suqmD?uo!NwIj{RNxj258ML9!c|^;J?<`g-1&LkKum+n%dwMc4I&cgvQEQ zTKU`V@QmB{S_j_Kr3ksOt`?s2!TLkQ$ zDob;Ab)~eM!2KDHMXg?LG!Lpft{7piHV#IfOY5g-Z z{fJWNxeg}mUP2O(?Ly+iM=Jm8*0NByJ7Jz7WKdhHC)@&7JWv-UJ4K6nGUat5Hd@}f zm>c1UA5Htzgg z*69jP%_>J$tzwd-M8i#nYb`w?Rm_%)nQ$oUh%+Uc;TLA=$wP^cW)yBoz=i@BY4xZ4 z4fD2afEDJw+fX?Ek!}4h)9Wl0A#An_Ed|m%6WwbfP-dMhU>_=8L0K&3n$$mUItfMY zH}{km7AO}*Ki8isMGL}dWh1s@GNNr`4yD7Ue_%tJ7Q4LE{P!UPle&rM@`$qO&Oe5W z21~%6HLt@&dJ!9>B{xEw;sH~Z6STYm3KbB$I-@#nxM2=u zZHUI+7ORQw(5}}K+R(oYG4lq}I#~BwdxqsZe)k~SsT)$?qyml_lTLc%*OCtLWo8}p zIG&_e^B{Qrh^}?qdq4Pv;`rgAsoIg6OdL@%;eYBscYZ!tj_gs)6>QF`=jIqAKh0dw z&5#|n6hc5)&2l_pyc4WJeZu&_WTTFDA679_`27jkX#9hp7^V%zkR9@ZFKTF0(GZ~f zU|}h`zVWujAYBD7A=u?A9J36${Uc5^rx1uuX+l0U&I1QcCx(acTLQ&<*XEmZtcnK*J1{(M5G$5>-{rfM_AL(()ytHD z4^=FDh_uX0XLF>oK!&)oZRza05d3R7!`@;yX`nG1!N7_~Pn7b3>$BI-gF!rvRG*pO z(nlK?(Hy*@lZh*6^93wnOHk#u+?x*KCbdaPbe*8a&1*1X`R#YOvj4xyCj>5r0%2P%jSWTPTwun~5yKRk@?K!SVJ} z-r6vfo8pAHS`{R6&#};CwNKFUf#LOfKMlJH;)^ zt~6npRI3<(A^}e9W9l$|>g3;?5(vM`<2lcp@`hBBy}7w-0PTsTW|Vv4M@d5-%?$`m z3EVfSw7|6(3A;HNW#)G_Z~dE)is#`tId$#0sZkCWBx`X?V6!b0NvWxdN3-t~6I|&< zHBoxE)Zt+ols3P#BSzUglSk?pX$^r#UR5bsB^LQoa52En>fCO5mHlKnC?#WRtVA-b z^Nj9x@dna%kX_?d=j=yP!#}b1G2>~#O}b}V#F)a@pSXfI__}G}t0PO#Vax?6MD0aR z3IErYmr2GIQdKYiVFSk=PDMEQGdL*>eYchFt)i)4I?)Q^SpSZZMV=Nn664E`!a&*v z5igrMUNyGfljoP8bVXnpYu1H1HN6$$jeyN9^04F4xxd;^n@6QyPK^!*8jY8Z;50#s zgonk5LAt~iGFjkYtp?#Pkxm1vkwzewk(b^t0bE%z=F%%e9_?)GX)l4iL6dSK%=1-O32g`mjHD;BWjaSx4%`KK0=t8 z(hP5s?+~OVlkGbk*!!UkmeEI;atEY54jG(dc; z^5H@YW(eBr`8ea<9O)PgyPYSH<8~BC`4qVt*6*;a2<9-FsrT?#tvlt8lIjWGr~Gd! z=|oh?Ao@L|5s+D2Y#qfw7m!|46l|DC2@=>5ah(<&Lc*K;C@)`C6o9dR}oS9dOR)>-r8>R+0lgVJu0tPLXm zLC$`!Yss8hJ=nE^P2&EktDKowbd~Cvg2LkshB)$AErKXwO8VoJz`p*oh^$HMmFN3X zq^5~TY(j6dg6&6fAwNS;Z~5Iw4Pq9t30tY1d;j6gpdDg+xf!s1?03?f^%`F@8d1OJ zmen^vjUe}-n9MqsZK6v@>CI!$=}J9m^Z$_;yQraw&K)COI9wO`p@{uh(c5?{vlP?vrU59RiYm%vLE2#c} zmw}Ql6Mi;XMmkWA`yvvhOVC_yX>KbO%-o%moWCYo5|>iQ%99_i4O7D?=F8_4MYRN= z%OGBP-pglvh317T6d{G2xd_J6H>#Ry1OzlZsw*&*DJ?-N+%O~yc11A9F4 zb|8igC7x<5{1h}qO|$#?@_f{U%umpZUCZbpabDuEnNy@;i-m+dxGAxB?|ju8weQR^ z3=!!82IzfJBh*3O?Folm+j6XT&?nqXJ#bFz-Dvj_{7qh7@>p@NhYq`*Fk9C9?|KP@1@b+#q%gL`}%&h)td ztEPJ+;TA(_gs&O-aXTVb5I^xR{`5gZ<9AS>T>+kYY{o9V+(i4@!k=9A_%uo-8SNum zue{&zrb1mK+*riT=OONv=(n3cble`4II@LoRo|l145T=sC}DKH(pLl zhcTUZG;^3{Em?AU3lkcYsV}_0ekN@Fb_pxZK28jH(>TG-qV9`4YeiJZ z8)w?q57S6faba$0lODfIiU7lUPUgl^sK|B9$?uN~Rsh^Rgy}Ht1Zy@v_EKEPx8B-Y zEWcU39uHupUeeQmR$0X<4{C2qRFlUj&IL2=X%x~NdG)IY{5II`qKhtGa*Vpp{J2^> z02XEa82^x(!Je~4h1mcyuDZmXRGc%Hw4-58NzWFWi8L(g0^#Uq-=KYR*+TJ9>}}xx`&O*<+;k)LEMG2 zKpHhC6>xxtdmWO-|Caz(m>oX2C-sv^T!cEe*J9~SbSR&?rSBx>xg~4?^(ND_ zHNXYE(^!dP#`alwr@4E@r^*0LpBn;44P10?Np6e( zt(n)IRQNxPS`_;%Wyxi+8P9nO7p9&Yq82Z{p$Gka7j>TvIVT`D?g0EFt}mT?J~NjS z0|s$Uup|;{WNxq_y6Zhg+|af!DN<)PXu~s| z91&HIclo5z)Ekm-7ji!JbMd_H&408f7WUaiCsm(#7N#}buuj}abnB}-vU$Ssda6Z+ z3UKgcD@R<3$HVE3rg*J_Z80yURoP44)lRWB4OZ0uaXLQEK=We9^P(F=7rJd^#-51P z4nPyhbesp!go|uR@8G6pmaG_kisx+8FUUA=rkeIUnWa1g4&2VPJ?b$@Xk6eV&2#2n zYdW>*th}bVUb31&qsrwPPX7RYO=VY!k*K=y!#?YJi1!f4oJ<$3bhW`pI1$T8fx?5u zKl^S1b#0e&8!9s9H(5p&rL*etyu{?I<_Upf4TT`y{a>jxX+($xlm4qlZOI1~LPlgE zuk5)K619=)cUimirRQWJVIJw~5`c2Lr(`lLyrx=fWQ0mdN`5H!DJnzUn zk1j>H(qm9F7JA%o?V3HL)VpR2;}<8;UiIb8`Pp-=HlTv*@RAujs{gvfL4!jbH$Lq5B6B}-rwh|!H|hor5z#x3+avA} z?|Jw`D?W_<#PNAlmu+8SBY!eBj z-(vx{KC$P1pfL}&If-_7P+cu|nXKy*bF2#sRfzoqDu^rY`L%m>qtz#MpHlVh@3{+bS&%V8+E}`6G9qhQCJNH=2ZIZ4 z&a>EYE8$E0C+Sl64$n(XerTGELDU?GnrW_jIdN6R=ia0#hRxDHjJPa6a9*^;=x|}B zBH};Y&=9?{Fz@Y0YvUQLf+s;H=+^6ql-htqVQT!Jkvzj9D0|BJO?_RLx36;&M%A_r z30ZZF6$)uCMJl#ZA30{34ljd?;^y9ykMj*Rcf`aC&o`sJ%5_MD_9GV5dBkx)Uo=|Y zzAY|4)(rMigoZB$i%m#q&IPy9iPg1HG4M1AHU-?2OLlyG2zg>M~tgwVLR<0ba49b+77&3wn;oIEQ!?j3l?C�v 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%0DY$h0<3+C#9u^kxY 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 + /// Attach this to a GameObject to create a tween + /// + [AddComponentMenu("DOTween/DOTween Animation")] + public class DOTweenAnimation : ABSAnimationComponent + { + public enum AnimationType + { + None, + Move, LocalMove, + Rotate, LocalRotate, + Scale, + Color, Fade, + Text, + PunchPosition, PunchRotation, PunchScale, + ShakePosition, ShakeRotation, ShakeScale, + CameraAspect, CameraBackgroundColor, CameraFieldOfView, CameraOrthoSize, CameraPixelRect, CameraRect, + UIWidthHeight, + FillAmount + } + + public enum TargetType + { + Unset, + + Camera, + CanvasGroup, + Image, + Light, + RectTransform, + Renderer, SpriteRenderer, + Rigidbody, Rigidbody2D, + Text, + Transform, + + tk2dBaseSprite, + tk2dTextMesh, + + TextMeshPro, + TextMeshProUGUI + } + + #region EVENTS - EDITOR-ONLY + + /// Used internally by the editor + public static event Action OnReset; + static void Dispatch_OnReset(DOTweenAnimation anim) { if (OnReset != null) OnReset(anim); } + + #endregion + + public bool targetIsSelf = true; // If FALSE allows to set the target manually + public GameObject targetGO = null; // Used in case targetIsSelf is FALSE + // If FALSE always uses the GO containing this DOTweenAnimation (and not the one containing the target) as DOTween's SetTarget target + public bool tweenTargetIsTargetGO = true; + + public float delay; + public float duration = 1; + public Ease easeType = Ease.OutQuad; + public AnimationCurve easeCurve = new AnimationCurve(new Keyframe(0, 0), new Keyframe(1, 1)); + public LoopType loopType = LoopType.Restart; + public int loops = 1; + public string id = ""; + public bool isRelative; + public bool isFrom; + public bool isIndependentUpdate = false; + public bool autoKill = true; + public bool autoGenerate = true; // If TRUE automatically creates the tween at startup + + public bool isActive = true; + public bool isValid; + public Component target; + public AnimationType animationType; + public TargetType targetType; + public TargetType forcedTargetType; // Used when choosing between multiple targets + public bool autoPlay = true; + public bool useTargetAsV3; + + public float endValueFloat; + public Vector3 endValueV3; + public Vector2 endValueV2; + public Color endValueColor = new Color(1, 1, 1, 1); + public string endValueString = ""; + public Rect endValueRect = new Rect(0, 0, 0, 0); + public Transform endValueTransform; + + public bool optionalBool0, optionalBool1; + public float optionalFloat0; + public int optionalInt0; + public RotateMode optionalRotationMode = RotateMode.Fast; + public ScrambleMode optionalScrambleMode = ScrambleMode.None; + public ShakeRandomnessMode optionalShakeRandomnessMode = ShakeRandomnessMode.Full; + public string optionalString; + + bool _tweenAutoGenerationCalled; // TRUE after the tweens have been autoGenerated + int _playCount = -1; // Used when calling DOPlayNext + readonly List _tmpTweens = new List(); + + #region Unity Methods + + void Awake() + { + if (!isActive || !autoGenerate) return; + + if (animationType != AnimationType.Move || !useTargetAsV3) { + // Don't create tweens if we're using a RectTransform as a Move target, + // because that will work only inside Start + CreateTween(false, autoPlay); + _tweenAutoGenerationCalled = true; + } + } + + void Start() + { + if (_tweenAutoGenerationCalled || !isActive || !autoGenerate) return; + + CreateTween(false, autoPlay); + _tweenAutoGenerationCalled = true; + } + + void Reset() + { + Dispatch_OnReset(this); + } + + void OnDestroy() + { + if (tween != null && tween.active) tween.Kill(); + tween = null; + } + + /// + /// Creates/recreates the tween without playing it, but first rewinding and killing the existing one if present. + /// + public void RewindThenRecreateTween() + { + if (tween != null && tween.active) tween.Rewind(); + CreateTween(true, false); + } + /// + /// Creates/recreates the tween and plays it, first rewinding and killing the existing one if present. + /// + public void RewindThenRecreateTweenAndPlay() + { + if (tween != null && tween.active) tween.Rewind(); + CreateTween(true, true); + } + /// + /// Creates/recreates the tween from its target's current value without playing it, but first killing the existing one if present. + /// + public void RecreateTween() + { CreateTween(true, false); } + /// + /// Creates/recreates the tween from its target's current value and plays it, first killing the existing one if present. + /// + public void RecreateTweenAndPlay() + { CreateTween(true, true); } + // Used also by DOTweenAnimationInspector when applying runtime changes and restarting + /// + /// Creates the tween manually (called automatically if AutoGenerate is set in the Inspector) + /// from its target's current value. + /// + /// If TRUE and an existing tween was already created (and not killed), kills it and recreates it with the current + /// parameters. Otherwise, if a tween already exists, does nothing. + /// If TRUE also plays the tween, otherwise only creates it + public void CreateTween(bool regenerateIfExists = false, bool andPlay = true) + { + if (!isValid) { + if (regenerateIfExists) { // Called manually: warn users + Debug.LogWarning(string.Format("{0} :: This DOTweenAnimation isn't valid and its tween won't be created", this.gameObject.name), this.gameObject); + } + return; + } + if (tween != null) { + if (tween.active) { + if (regenerateIfExists) tween.Kill(); + else return; + } + tween = null; + } + +// if (target == null) { +// Debug.LogWarning(string.Format("{0} :: This DOTweenAnimation's target is NULL, because the animation was created with a DOTween Pro version older than 0.9.255. To fix this, exit Play mode then simply select this object, and it will update automatically", this.gameObject.name), this.gameObject); +// return; +// } + + GameObject tweenGO = GetTweenGO(); + if (target == null || tweenGO == null) { + if (targetIsSelf && target == null) { + // Old error caused during upgrade from DOTween Pro 0.9.255 + Debug.LogWarning(string.Format("{0} :: This DOTweenAnimation's target is NULL, because the animation was created with a DOTween Pro version older than 0.9.255. To fix this, exit Play mode then simply select this object, and it will update automatically", this.gameObject.name), this.gameObject); + } else { + // Missing non-self target + Debug.LogWarning(string.Format("{0} :: This DOTweenAnimation's target/GameObject is unset: the tween will not be created.", this.gameObject.name), this.gameObject); + } + return; + } + + if (forcedTargetType != TargetType.Unset) targetType = forcedTargetType; + if (targetType == TargetType.Unset) { + // Legacy DOTweenAnimation (made with a version older than 0.9.450) without stored targetType > assign it now + targetType = TypeToDOTargetType(target.GetType()); + } + + switch (animationType) { + case AnimationType.None: + break; + case AnimationType.Move: + if (useTargetAsV3) { + isRelative = false; + if (endValueTransform == null) { + Debug.LogWarning(string.Format("{0} :: This tween's TO target is NULL, a Vector3 of (0,0,0) will be used instead", this.gameObject.name), this.gameObject); + endValueV3 = Vector3.zero; + } else { +#if true // UI_MARKER + if (targetType == TargetType.RectTransform) { + RectTransform endValueT = endValueTransform as RectTransform; + if (endValueT == null) { + Debug.LogWarning(string.Format("{0} :: This tween's TO target should be a RectTransform, a Vector3 of (0,0,0) will be used instead", this.gameObject.name), this.gameObject); + endValueV3 = Vector3.zero; + } else { + RectTransform rTarget = target as RectTransform; + if (rTarget == null) { + Debug.LogWarning(string.Format("{0} :: This tween's target and TO target are not of the same type. Please reassign the values", this.gameObject.name), this.gameObject); + } else { + // Problem: doesn't work inside Awake (ararargh!) + endValueV3 = DOTweenModuleUI.Utils.SwitchToRectTransform(endValueT, rTarget); + } + } + } else +#endif + endValueV3 = endValueTransform.position; + } + } + switch (targetType) { + case TargetType.Transform: + tween = ((Transform)target).DOMove(endValueV3, duration, optionalBool0); + break; + case TargetType.RectTransform: +#if true // UI_MARKER + tween = ((RectTransform)target).DOAnchorPos3D(endValueV3, duration, optionalBool0); +#else + tween = ((Transform)target).DOMove(endValueV3, duration, optionalBool0); +#endif + break; + case TargetType.Rigidbody: +#if true // PHYSICS_MARKER + tween = ((Rigidbody)target).DOMove(endValueV3, duration, optionalBool0); +#else + tween = ((Transform)target).DOMove(endValueV3, duration, optionalBool0); +#endif + break; + case TargetType.Rigidbody2D: +#if true // PHYSICS2D_MARKER + tween = ((Rigidbody2D)target).DOMove(endValueV3, duration, optionalBool0); +#else + tween = ((Transform)target).DOMove(endValueV3, duration, optionalBool0); +#endif + break; + } + break; + case AnimationType.LocalMove: + tween = tweenGO.transform.DOLocalMove(endValueV3, duration, optionalBool0); + break; + case AnimationType.Rotate: + switch (targetType) { + case TargetType.Transform: + tween = ((Transform)target).DORotate(endValueV3, duration, optionalRotationMode); + break; + case TargetType.Rigidbody: +#if true // PHYSICS_MARKER + tween = ((Rigidbody)target).DORotate(endValueV3, duration, optionalRotationMode); +#else + tween = ((Transform)target).DORotate(endValueV3, duration, optionalRotationMode); +#endif + break; + case TargetType.Rigidbody2D: +#if true // PHYSICS2D_MARKER + tween = ((Rigidbody2D)target).DORotate(endValueFloat, duration); +#else + tween = ((Transform)target).DORotate(endValueV3, duration, optionalRotationMode); +#endif + break; + } + break; + case AnimationType.LocalRotate: + tween = tweenGO.transform.DOLocalRotate(endValueV3, duration, optionalRotationMode); + break; + case AnimationType.Scale: + switch (targetType) { +#if false // TK2D_MARKER + case TargetType.tk2dTextMesh: + tween = ((tk2dTextMesh)target).DOScale(optionalBool0 ? new Vector3(endValueFloat, endValueFloat, endValueFloat) : endValueV3, duration); + break; + case TargetType.tk2dBaseSprite: + tween = ((tk2dBaseSprite)target).DOScale(optionalBool0 ? new Vector3(endValueFloat, endValueFloat, endValueFloat) : endValueV3, duration); + break; +#endif + default: + tween = tweenGO.transform.DOScale(optionalBool0 ? new Vector3(endValueFloat, endValueFloat, endValueFloat) : endValueV3, duration); + break; + } + break; +#if true // UI_MARKER + case AnimationType.UIWidthHeight: + tween = ((RectTransform)target).DOSizeDelta(optionalBool0 ? new Vector2(endValueFloat, endValueFloat) : endValueV2, duration); + break; + case AnimationType.FillAmount: + tween = ((Image)target).DOFillAmount(endValueFloat, duration); + break; +#endif + case AnimationType.Color: + isRelative = false; + switch (targetType) { + case TargetType.Renderer: + tween = ((Renderer)target).material.DOColor(endValueColor, duration); + break; + case TargetType.Light: + tween = ((Light)target).DOColor(endValueColor, duration); + break; +#if true // SPRITE_MARKER + case TargetType.SpriteRenderer: + tween = ((SpriteRenderer)target).DOColor(endValueColor, duration); + break; +#endif +#if true // UI_MARKER + case TargetType.Image: + tween = ((Graphic)target).DOColor(endValueColor, duration); + break; + case TargetType.Text: + tween = ((Text)target).DOColor(endValueColor, duration); + break; +#endif +#if false // TK2D_MARKER + case TargetType.tk2dTextMesh: + tween = ((tk2dTextMesh)target).DOColor(endValueColor, duration); + break; + case TargetType.tk2dBaseSprite: + tween = ((tk2dBaseSprite)target).DOColor(endValueColor, duration); + break; +#endif +#if false // TEXTMESHPRO_MARKER + case TargetType.TextMeshProUGUI: + tween = ((TextMeshProUGUI)target).DOColor(endValueColor, duration); + break; + case TargetType.TextMeshPro: + tween = ((TextMeshPro)target).DOColor(endValueColor, duration); + break; +#endif + } + break; + case AnimationType.Fade: + isRelative = false; + switch (targetType) { + case TargetType.Renderer: + tween = ((Renderer)target).material.DOFade(endValueFloat, duration); + break; + case TargetType.Light: + tween = ((Light)target).DOIntensity(endValueFloat, duration); + break; +#if true // SPRITE_MARKER + case TargetType.SpriteRenderer: + tween = ((SpriteRenderer)target).DOFade(endValueFloat, duration); + break; +#endif +#if true // UI_MARKER + case TargetType.Image: + tween = ((Graphic)target).DOFade(endValueFloat, duration); + break; + case TargetType.Text: + tween = ((Text)target).DOFade(endValueFloat, duration); + break; + case TargetType.CanvasGroup: + tween = ((CanvasGroup)target).DOFade(endValueFloat, duration); + break; +#endif +#if false // TK2D_MARKER + case TargetType.tk2dTextMesh: + tween = ((tk2dTextMesh)target).DOFade(endValueFloat, duration); + break; + case TargetType.tk2dBaseSprite: + tween = ((tk2dBaseSprite)target).DOFade(endValueFloat, duration); + break; +#endif +#if false // TEXTMESHPRO_MARKER + case TargetType.TextMeshProUGUI: + tween = ((TextMeshProUGUI)target).DOFade(endValueFloat, duration); + break; + case TargetType.TextMeshPro: + tween = ((TextMeshPro)target).DOFade(endValueFloat, duration); + break; +#endif + } + break; + case AnimationType.Text: +#if true // UI_MARKER + switch (targetType) { + case TargetType.Text: + tween = ((Text)target).DOText(endValueString, duration, optionalBool0, optionalScrambleMode, optionalString); + break; + } +#endif +#if false // TK2D_MARKER + switch (targetType) { + case TargetType.tk2dTextMesh: + tween = ((tk2dTextMesh)target).DOText(endValueString, duration, optionalBool0, optionalScrambleMode, optionalString); + break; + } +#endif +#if false // TEXTMESHPRO_MARKER + switch (targetType) { + case TargetType.TextMeshProUGUI: + tween = ((TextMeshProUGUI)target).DOText(endValueString, duration, optionalBool0, optionalScrambleMode, optionalString); + break; + case TargetType.TextMeshPro: + tween = ((TextMeshPro)target).DOText(endValueString, duration, optionalBool0, optionalScrambleMode, optionalString); + break; + } +#endif + break; + case AnimationType.PunchPosition: + switch (targetType) { + case TargetType.Transform: + tween = ((Transform)target).DOPunchPosition(endValueV3, duration, optionalInt0, optionalFloat0, optionalBool0); + break; +#if true // UI_MARKER + case TargetType.RectTransform: + tween = ((RectTransform)target).DOPunchAnchorPos(endValueV3, duration, optionalInt0, optionalFloat0, optionalBool0); + break; +#endif + } + break; + case AnimationType.PunchScale: + tween = tweenGO.transform.DOPunchScale(endValueV3, duration, optionalInt0, optionalFloat0); + break; + case AnimationType.PunchRotation: + tween = tweenGO.transform.DOPunchRotation(endValueV3, duration, optionalInt0, optionalFloat0); + break; + case AnimationType.ShakePosition: + switch (targetType) { + case TargetType.Transform: + tween = ((Transform)target).DOShakePosition(duration, endValueV3, optionalInt0, optionalFloat0, optionalBool0, optionalBool1, optionalShakeRandomnessMode); + break; +#if true // UI_MARKER + case TargetType.RectTransform: + tween = ((RectTransform)target).DOShakeAnchorPos(duration, endValueV3, optionalInt0, optionalFloat0, optionalBool0, optionalBool1, optionalShakeRandomnessMode); + break; +#endif + } + break; + case AnimationType.ShakeScale: + tween = tweenGO.transform.DOShakeScale(duration, endValueV3, optionalInt0, optionalFloat0, optionalBool1, optionalShakeRandomnessMode); + break; + case AnimationType.ShakeRotation: + tween = tweenGO.transform.DOShakeRotation(duration, endValueV3, optionalInt0, optionalFloat0, optionalBool1, optionalShakeRandomnessMode); + break; + case AnimationType.CameraAspect: + tween = ((Camera)target).DOAspect(endValueFloat, duration); + break; + case AnimationType.CameraBackgroundColor: + tween = ((Camera)target).DOColor(endValueColor, duration); + break; + case AnimationType.CameraFieldOfView: + tween = ((Camera)target).DOFieldOfView(endValueFloat, duration); + break; + case AnimationType.CameraOrthoSize: + tween = ((Camera)target).DOOrthoSize(endValueFloat, duration); + break; + case AnimationType.CameraPixelRect: + tween = ((Camera)target).DOPixelRect(endValueRect, duration); + break; + case AnimationType.CameraRect: + tween = ((Camera)target).DORect(endValueRect, duration); + break; + } + + if (tween == null) return; + + // Created + + if (isFrom) { + ((Tweener)tween).From(isRelative); + } else { + tween.SetRelative(isRelative); + } + GameObject setTarget = GetTweenTarget(); + tween.SetTarget(setTarget).SetDelay(delay).SetLoops(loops, loopType).SetAutoKill(autoKill) + .OnKill(()=> tween = null); + if (isSpeedBased) tween.SetSpeedBased(); + if (easeType == Ease.INTERNAL_Custom) tween.SetEase(easeCurve); + else tween.SetEase(easeType); + if (!string.IsNullOrEmpty(id)) tween.SetId(id); + tween.SetUpdate(isIndependentUpdate); + + if (hasOnStart) { + if (onStart != null) tween.OnStart(onStart.Invoke); + } else onStart = null; + if (hasOnPlay) { + if (onPlay != null) tween.OnPlay(onPlay.Invoke); + } else onPlay = null; + if (hasOnUpdate) { + if (onUpdate != null) tween.OnUpdate(onUpdate.Invoke); + } else onUpdate = null; + if (hasOnStepComplete) { + if (onStepComplete != null) tween.OnStepComplete(onStepComplete.Invoke); + } else onStepComplete = null; + if (hasOnComplete) { + if (onComplete != null) tween.OnComplete(onComplete.Invoke); + } else onComplete = null; + if (hasOnRewind) { + if (onRewind != null) tween.OnRewind(onRewind.Invoke); + } else onRewind = null; + + if (andPlay) tween.Play(); + else tween.Pause(); + + if (hasOnTweenCreated && onTweenCreated != null) onTweenCreated.Invoke(); + } + + #endregion + + #region Public Methods + + #region Special + + /// + /// Returns the tweens (if generated and not killed) created by all DOTweenAnimations on this gameObject, + /// in the same order as they appear in the Inspector (top to bottom). + /// Note that a tween is generated inside the Awake call (except RectTransform tweens which are generated inside Start), + /// so this method won't return them before that + /// + public List GetTweens() + { + List result = new List(); + DOTweenAnimation[] anims = this.GetComponents(); + foreach (DOTweenAnimation anim in anims) { + if (anim.tween != null && anim.tween.active) result.Add(anim.tween); + } + return result; + } + + /// + /// Sets the animation target (which must be of the same type of the one set in the Inspector). + /// This is useful if you want to change it BEFORE this + /// creates a tween, while after that it won't have any effect. + /// Consider that a creates its tween inside its Awake (except for special tweens), + /// so you will need to sure your code runs before this object's Awake (via ScriptExecutionOrder or enabling/disabling methods) + /// + /// + /// New target for the animation (must be of the same type of the previous one) + /// If TRUE also uses tweenTarget's gameObject when settings the target-ID of the tween + /// (which is used with DOPlay/DORestart/etc to apply the same operation on all tweens that have the same target-id). + /// You should usually leave this to TRUE if you change the target. + /// + public void SetAnimationTarget(Component tweenTarget, bool useTweenTargetGameObjectForGroupOperations = true) + { + TargetType newTargetType = TypeToDOTargetType(target.GetType()); + if (newTargetType != targetType) { + Debug.LogError("DOTweenAnimation ► SetAnimationTarget: the new target is of a different type from the one set in the Inspector"); + return; + } + target = tweenTarget; + targetGO = target.gameObject; + tweenTargetIsTargetGO = useTweenTargetGameObjectForGroupOperations; + } + + #endregion + + /// + /// Plays all tweens whose target-id is the same as the one set by this animation + /// + public override void DOPlay() + { + DOTween.Play(GetTweenTarget()); + } + + /// + /// Plays backwards all tweens whose target-id is the same as the one set by this animation + /// + public override void DOPlayBackwards() + { + DOTween.PlayBackwards(GetTweenTarget()); + } + + /// + /// Plays foward all tweens whose target-id is the same as the one set by this animation + /// + public override void DOPlayForward() + { + DOTween.PlayForward(GetTweenTarget()); + } + + /// + /// Pauses all tweens whose target-id is the same as the one set by this animation + /// + public override void DOPause() + { + DOTween.Pause(GetTweenTarget()); + } + + /// + /// Pauses/unpauses (depending on the current state) all tweens whose target-id is the same as the one set by this animation + /// + public override void DOTogglePause() + { + DOTween.TogglePause(GetTweenTarget()); + } + + /// + /// Rewinds all tweens created by this animation in the correct order + /// + public override void DORewind() + { + _playCount = -1; + // Rewind using Components order (in case there are multiple animations on the same property) + DOTweenAnimation[] anims = this.gameObject.GetComponents(); + for (int i = anims.Length - 1; i > -1; --i) { + Tween t = anims[i].tween; + if (t != null && t.IsInitialized()) anims[i].tween.Rewind(); + } + // DOTween.Rewind(GetTweenTarget()); + } + + /// + /// Restarts all tweens whose target-id is the same as the one set by this animation + /// + public override void DORestart() + { DORestart(false); } + /// + /// Restarts all tweens whose target-id is the same as the one set by this animation + /// + /// If TRUE, re-evaluates the tween's start and end values from its current position. + /// Set it to TRUE when spawning the same DOTweenAnimation in different positions (like when using a pooling system) + public override void DORestart(bool fromHere) + { + _playCount = -1; + if (tween == null) { + if (Debugger.logPriority > 1) Debugger.LogNullTween(tween); return; + } + if (fromHere && isRelative) ReEvaluateRelativeTween(); + DOTween.Restart(GetTweenTarget()); + } + + /// + /// Completes all tweens whose target-id is the same as the one set by this animation + /// + public override void DOComplete() + { + DOTween.Complete(GetTweenTarget()); + } + + /// + /// Sends to the given time (and pauses) all the tweens whose target-id is the one set by this animation + /// + /// Time to send the tween to + public override void DOGotoAndPause(float time) + { DOGoto(time, false); } + /// + /// Sends to the given time (and plays) all the tweens whose target-id is the one set by this animation + /// + /// Time to send the tween to + public override void DOGotoAndPlay(float time) + { DOGoto(time, true); } + void DOGoto(float time, bool andPlay) + { + _tmpTweens.Clear(); + DOTween.TweensByTarget(GetTweenTarget(), false, _tmpTweens); + int len = _tmpTweens.Count; + if (len == 0) { + Debugger.LogWarning((andPlay ? "DOGotoAndPlay" : "DoGotoAndPause") + " ► tween doesn't exist"); + } else { + for (int i = 0; i < _tmpTweens.Count; ++i) { + _tmpTweens[i].Goto(time, andPlay); + } + } + _tmpTweens.Clear(); + } + + /// + /// Kills all tweens whose target-id is the same as the one set by this animation + /// + public override void DOKill() + { + DOTween.Kill(GetTweenTarget()); + tween = null; + } + + #region Specifics + + /// + /// Plays all tweens with the given ID and whose target-id is the same as the one set by this animation + /// + public void DOPlayById(string id) + { + DOTween.Play(GetTweenTarget(), id); + } + /// + /// Plays all tweens with the given ID (regardless of their target gameObject) + /// + public void DOPlayAllById(string id) + { + DOTween.Play(id); + } + + /// + /// Pauses all tweens that with the given ID (regardless of their target gameObject) + /// + public void DOPauseAllById(string id) + { + DOTween.Pause(id); + } + + /// + /// Plays backwards all tweens with the given ID and whose target-id is the same as the one set by this animation + /// + public void DOPlayBackwardsById(string id) + { + DOTween.PlayBackwards(GetTweenTarget(), id); + } + /// + /// Plays backwards all tweens with the given ID (regardless of their target gameObject) + /// + public void DOPlayBackwardsAllById(string id) + { + DOTween.PlayBackwards(id); + } + + /// + /// Plays forward all tweens with the given ID and whose target-id is the same as the one set by this animation + /// + public void DOPlayForwardById(string id) + { + DOTween.PlayForward(GetTweenTarget(), id); + } + /// + /// Plays forward all tweens with the given ID (regardless of their target gameObject) + /// + public void DOPlayForwardAllById(string id) + { + DOTween.PlayForward(id); + } + + /// + /// Plays the next animation on this animation's gameObject (if any) + /// + public void DOPlayNext() + { + DOTweenAnimation[] anims = this.GetComponents(); + while (_playCount < anims.Length - 1) { + _playCount++; + DOTweenAnimation anim = anims[_playCount]; + if (anim != null && anim.tween != null && anim.tween.active && !anim.tween.IsPlaying() && !anim.tween.IsComplete()) { + anim.tween.Play(); + break; + } + } + } + + /// + /// Rewinds all tweens with the given ID and whose target-id is the same as the one set by this animation, + /// then plays the next animation on this animation's gameObject (if any) + /// + public void DORewindAndPlayNext() + { + _playCount = -1; + DOTween.Rewind(GetTweenTarget()); + DOPlayNext(); + } + + /// + /// Rewinds all tweens with the given ID (regardless of their target gameObject) + /// + public void DORewindAllById(string id) + { + _playCount = -1; + DOTween.Rewind(id); + } + + /// + /// Restarts all tweens with the given ID and whose target-id is the same as the one set by this animation + /// + public void DORestartById(string id) + { + _playCount = -1; + DOTween.Restart(GetTweenTarget(), id); + } + /// + /// Restarts all tweens with the given ID (regardless of their target gameObject) + /// + public void DORestartAllById(string id) + { + _playCount = -1; + DOTween.Restart(id); + } + + /// + /// Kills all tweens with the given ID and whose target-id is the same as the one set by this animation + /// + public void DOKillById(string id) + { + DOTween.Kill(GetTweenTarget(), id); + } + /// + /// Kills all tweens with the given ID (regardless of their target gameObject) + /// + public void DOKillAllById(string id) + { + DOTween.Kill(id); + } + + #endregion + + #region Internal (also used by Inspector) + + public static TargetType TypeToDOTargetType(Type t) + { + string str = t.ToString(); + int dotIndex = str.LastIndexOf("."); + if (dotIndex != -1) str = str.Substring(dotIndex + 1); + if (str.IndexOf("Renderer") != -1 && (str != "SpriteRenderer")) str = "Renderer"; +//#if true // PHYSICS_MARKER +// if (str == "Rigidbody") str = "Transform"; +//#endif +//#if true // PHYSICS2D_MARKER +// if (str == "Rigidbody2D") str = "Transform"; +//#endif +#if true // UI_MARKER +// if (str == "RectTransform") str = "Transform"; + if (str == "RawImage" || str == "Graphic") str = "Image"; // RawImages/Graphics are managed like Images for DOTweenAnimation (color and fade use Graphic target anyway) +#endif + return (TargetType)Enum.Parse(typeof(TargetType), str); + } + + // Editor preview system + /// + /// Previews the tween in the editor. Only for DOTween internal usage: don't use otherwise. + /// + public Tween CreateEditorPreview() + { + if (Application.isPlaying) return null; + + // CHANGE: first param switched to TRUE otherwise changing an animation and replaying in editor would still play old one + CreateTween(true, autoPlay); + return tween; + } + + #endregion + + #endregion + + #region Private + + /// + /// Returns the gameObject whose target component should be animated + /// + /// + GameObject GetTweenGO() + { + return targetIsSelf ? this.gameObject : targetGO; + } + + /// + /// Returns the GameObject which should be used/retrieved for SetTarget + /// + GameObject GetTweenTarget() + { + return targetIsSelf || !tweenTargetIsTargetGO ? this.gameObject : targetGO; + } + + // Re-evaluate relative position of path + void ReEvaluateRelativeTween() + { + GameObject tweenGO = GetTweenGO(); + if (tweenGO == null) { + Debug.LogWarning(string.Format("{0} :: This DOTweenAnimation's target/GameObject is unset: the tween will not be created.", this.gameObject.name), this.gameObject); + return; + } + if (animationType == AnimationType.Move) { + ((Tweener)tween).ChangeEndValue(tweenGO.transform.position + endValueV3, true); + } else if (animationType == AnimationType.LocalMove) { + ((Tweener)tween).ChangeEndValue(tweenGO.transform.localPosition + endValueV3, true); + } + } + + #endregion + } + + public static class DOTweenAnimationExtensions + { +// // Doesn't work on Win 8.1 +// public static bool IsSameOrSubclassOf(this Type t, Type tBase) +// { +// return t.IsSubclassOf(tBase) || t == tBase; +// } + + public static bool IsSameOrSubclassOf(this Component t) + { + return t is T; + } + } +} diff --git a/Assets/Plugins/Demigiant/DOTweenPro/DOTweenAnimation.cs.meta b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenAnimation.cs.meta new file mode 100644 index 0000000..a10ceea --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenAnimation.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4d0390bd8b8ffd640b34fe25065ff1df +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeAudio.cs b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeAudio.cs new file mode 100644 index 0000000..c9df396 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeAudio.cs @@ -0,0 +1,9 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2015/03/27 19:02 +// +// License Copyright (c) Daniele Giardini. +// This work is subject to the terms at http://dotween.demigiant.com/license.php + + +#if false // MODULE_MARKER +#endif diff --git a/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeAudio.cs.meta b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeAudio.cs.meta new file mode 100644 index 0000000..32c1ec8 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeAudio.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1d1aa01bacf85c04ea18116651a7f0db +timeCreated: 1587116610 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeUnityExtended.cs b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeUnityExtended.cs new file mode 100644 index 0000000..c9df396 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeUnityExtended.cs @@ -0,0 +1,9 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2015/03/27 19:02 +// +// License Copyright (c) Daniele Giardini. +// This work is subject to the terms at http://dotween.demigiant.com/license.php + + +#if false // MODULE_MARKER +#endif diff --git a/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeUnityExtended.cs.meta b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeUnityExtended.cs.meta new file mode 100644 index 0000000..9cba4ea --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeUnityExtended.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0a0cc3e90c4a6ea41bb14d7f35c577c3 +timeCreated: 1587116610 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.Scripts.asmdef b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.Scripts.asmdef new file mode 100644 index 0000000..2f0fde6 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.Scripts.asmdef @@ -0,0 +1,6 @@ +{ + "name": "DOTweenPro.Scripts", + "references": [ + "DOTween.Modules" + ] +} diff --git a/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.Scripts.asmdef.meta b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.Scripts.asmdef.meta new file mode 100644 index 0000000..16077f9 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.Scripts.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 51491f1e8b9b8204a9f0c3d3935f742d +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.XML b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.XML new file mode 100644 index 0000000..8179cfe --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.XML @@ -0,0 +1,80 @@ + + + + DOTweenPro + + + + + Restarts the tween + + + + + Restarts the tween + + If TRUE, re-evaluates the tween's start and end values from its current position. + Set it to TRUE when spawning the same DOTweenPath in different positions (like when using a pooling system) + + + + Attach this to a GameObject to create and assign a path to it + + + + Used internally by the editor + + + + Restarts the tween + + + + + Restarts the tween + + If TRUE, re-evaluates the tween's start and end values from its current position. + Set it to TRUE when spawning the same DOTweenPath in different positions (like when using a pooling system) + + + + Sends the tween to the given time then pauses it + + Time to send the tween to + + + + Sends the tween to the given time then plays it + + Time to send the tween to + + + + Kills all tweens (path/animations/etc.) with the given ID (regardless of their target gameObject) + + + + + Returns a list of points that are used to draw the path inside the editor, + or NULL if the path hasn't been initialized yet or if its tween has been killed + + + + + Tweens a Vector3 along a spiral. + EndValue represents the direction of the spiral + + + + + Spiral tween mode + + + + The spiral motion will expand outwards for the whole the tween + + + The spiral motion will expand outwards for half the tween and then will spiral back to the starting position + + + diff --git a/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.XML.meta b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.XML.meta new file mode 100644 index 0000000..ddc78e5 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.XML.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: db7d7ef84c388bc4fbc3835d31a15306 +TextScriptImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.dll b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.dll new file mode 100644 index 0000000000000000000000000000000000000000..1c376027b5137fc6b36b3334cf4115922de9adb3 GIT binary patch literal 16384 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 N2J(wvT>t+(@LyGI0%-sM literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.dll.meta b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.dll.meta new file mode 100644 index 0000000..9ecbfd3 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.dll.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: aa0b1eebb5db27a419fa4564bbe5c9c5 +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTweenPro/DOTweenProShortcuts.cs b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenProShortcuts.cs new file mode 100644 index 0000000..12ee7ef --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenProShortcuts.cs @@ -0,0 +1,90 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2018/07/13 + +using System; +using DG.Tweening.Core; +using DG.Tweening.Plugins; +using UnityEngine; + +#pragma warning disable 1591 +namespace DG.Tweening +{ + public static class DOTweenProShortcuts + { + static DOTweenProShortcuts() + { + // Create stub instances of custom plugins, in order to allow IL2CPP to understand they must be included in the build +#pragma warning disable 219 + SpiralPlugin stub = new SpiralPlugin(); +#pragma warning restore 219 + } + + #region Shortcuts + + #region Transform + + /// Tweens a Transform's localPosition in a spiral shape. + /// Also stores the transform as the tween's target so it can be used for filtered operations + /// The duration of the tween + /// The axis around which the spiral will rotate + /// The type of spiral movement + /// Speed of the rotations + /// Frequency of the rotation. Lower values lead to wider spirals + /// Indicates how much the tween should move along the spiral's axis + /// If TRUE the tween will smoothly snap all values to integers + public static Tweener DOSpiral( + this Transform target, float duration, Vector3? axis = null, SpiralMode mode = SpiralMode.Expand, + float speed = 1, float frequency = 10, float depth = 0, bool snapping = false + ) { + if (Mathf.Approximately(speed, 0)) speed = 1; + if (axis == null || axis == Vector3.zero) axis = Vector3.forward; + + TweenerCore t = DOTween.To(SpiralPlugin.Get(), () => target.localPosition, x => target.localPosition = x, (Vector3)axis, duration) + .SetTarget(target); + + t.plugOptions.mode = mode; + t.plugOptions.speed = speed; + t.plugOptions.frequency = frequency; + t.plugOptions.depth = depth; + t.plugOptions.snapping = snapping; + return t; + } + + #endregion + +#if true // PHYSICS_MARKER + #region Rigidbody + + /// Tweens a Rigidbody's position in a spiral shape. + /// Also stores the transform as the tween's target so it can be used for filtered operations + /// The duration of the tween + /// The axis around which the spiral will rotate + /// The type of spiral movement + /// Speed of the rotations + /// Frequency of the rotation. Lower values lead to wider spirals + /// Indicates how much the tween should move along the spiral's axis + /// If TRUE the tween will smoothly snap all values to integers + public static Tweener DOSpiral( + this Rigidbody target, float duration, Vector3? axis = null, SpiralMode mode = SpiralMode.Expand, + float speed = 1, float frequency = 10, float depth = 0, bool snapping = false + ) { + if (Mathf.Approximately(speed, 0)) speed = 1; + if (axis == null || axis == Vector3.zero) axis = Vector3.forward; + + TweenerCore t = DOTween.To(SpiralPlugin.Get(), () => target.position, target.MovePosition, (Vector3)axis, duration) + .SetTarget(target); + + t.plugOptions.mode = mode; + t.plugOptions.speed = speed; + t.plugOptions.frequency = frequency; + t.plugOptions.depth = depth; + t.plugOptions.snapping = snapping; + return t; + } + + #endregion +#endif + + #endregion + } +} diff --git a/Assets/Plugins/Demigiant/DOTweenPro/DOTweenProShortcuts.cs.meta b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenProShortcuts.cs.meta new file mode 100644 index 0000000..bc6e863 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenProShortcuts.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1c3190a1a1c53f449926f6d5542b4ce5 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Plugins/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs new file mode 100644 index 0000000..935bbee --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs @@ -0,0 +1,1037 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2015/03/27 19:02 +// +// License Copyright (c) Daniele Giardini. +// This work is subject to the terms at http://dotween.demigiant.com/license.php + + +#if false // MODULE_MARKER +using System; +using System.Globalization; +using System.Collections.Generic; +using DG.Tweening.Core; +using DG.Tweening.Plugins.Options; +using UnityEngine; +using TMPro; +using Object = UnityEngine.Object; + +namespace DG.Tweening +{ + public enum TMPSkewSpanMode + { + /// Applies the skew as-is (like normal skew works): the longer the text-span the higher the last character will be + Default, + /// Applies the skew scaled by the size of the text-span: the max skew/displacement will be the given skew factor + AsMaxSkewFactor + } + + /// + /// Methods that extend TMP_Text objects and allow to directly create and control tweens from their instances. + /// + public static class ShortcutExtensionsTMPText + { + #region Colors + + /// Tweens a TextMeshPro's color to the given value. + /// Also stores the TextMeshPro as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOColor(this TMP_Text target, Color endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a TextMeshPro's faceColor to the given value. + /// Also stores the TextMeshPro as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOFaceColor(this TMP_Text target, Color32 endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.faceColor, x => target.faceColor = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a TextMeshPro's outlineColor to the given value. + /// Also stores the TextMeshPro as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOOutlineColor(this TMP_Text target, Color32 endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.outlineColor, x => target.outlineColor = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a TextMeshPro's glow color to the given value. + /// Also stores the TextMeshPro as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + /// If TRUE will use the fontSharedMaterial instead than the fontMaterial + public static TweenerCore DOGlowColor(this TMP_Text target, Color endValue, float duration, bool useSharedMaterial = false) + { + TweenerCore t = useSharedMaterial + ? target.fontSharedMaterial.DOColor(endValue, "_GlowColor", duration) + : target.fontMaterial.DOColor(endValue, "_GlowColor", duration); + t.SetTarget(target); + return t; + } + + /// Tweens a TextMeshPro's alpha color to the given value. + /// Also stores the TextMeshPro as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOFade(this TMP_Text target, float endValue, float duration) + { + TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a TextMeshPro faceColor's alpha to the given value. + /// Also stores the TextMeshPro as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOFaceFade(this TMP_Text target, float endValue, float duration) + { + TweenerCore t = DOTween.ToAlpha(() => target.faceColor, x => target.faceColor = x, endValue, duration); + t.SetTarget(target); + return t; + } + + #endregion + + #region Other + + /// Tweens a TextMeshPro's scale to the given value (using correct uniform scale as TMP requires). + /// Also stores the TextMeshPro as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOScale(this TMP_Text target, float endValue, float duration) + { + Transform trans = target.transform; + Vector3 endValueV3 = new Vector3(endValue, endValue, endValue); + TweenerCore t = DOTween.To(() => trans.localScale, x => trans.localScale = x, endValueV3, duration); + t.SetTarget(target); + return t; + } + + /// + /// Tweens a TextMeshPro's text from one integer to another, with options for thousands separators + /// + /// The value to start from + /// The end value to reach + /// The duration of the tween + /// If TRUE (default) also adds thousands separators + /// The to use (InvariantCulture if NULL) + public static TweenerCore DOCounter( + this TMP_Text target, int fromValue, int endValue, float duration, bool addThousandsSeparator = true, CultureInfo culture = null + ){ + int v = fromValue; + CultureInfo cInfo = !addThousandsSeparator ? null : culture ?? CultureInfo.InvariantCulture; + TweenerCore t = DOTween.To(() => v, x => { + v = x; + target.text = addThousandsSeparator + ? v.ToString("N0", cInfo) + : v.ToString(); + }, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a TextMeshPro's fontSize to the given value. + /// Also stores the TextMeshPro as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOFontSize(this TMP_Text target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.fontSize, x => target.fontSize = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a TextMeshPro's maxVisibleCharacters to the given value. + /// Also stores the TextMeshPro as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOMaxVisibleCharacters(this TMP_Text target, int endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.maxVisibleCharacters, x => target.maxVisibleCharacters = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a TextMeshPro's text to the given value. + /// Also stores the TextMeshPro as the tween's target so it can be used for filtered operations + /// The end string to tween toThe duration of the tween + /// If TRUE (default), rich text will be interpreted correctly while animated, + /// otherwise all tags will be considered as normal text + /// The type of scramble mode to use, if any + /// A string containing the characters to use for scrambling. + /// Use as many characters as possible (minimum 10) because DOTween uses a fast scramble mode which gives better results with more characters. + /// Leave it to NULL (default) to use default ones + public static TweenerCore DOText(this TMP_Text target, string endValue, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null) + { + TweenerCore t = DOTween.To(() => target.text, x => target.text = x, endValue, duration); + t.SetOptions(richTextEnabled, scrambleMode, scrambleChars) + .SetTarget(target); + return t; + } + + #endregion + } + + #region DOTweenTMPAnimator + + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + // ███ CLASS ███████████████████████████████████████████████████████████████████████████████████████████████████████████ + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + + /// + /// Wrapper for objects that enables per-character tweening + /// (you don't need this if instead you want to animate the whole text object). + /// It also contains various handy methods to simply deform text without animating it ;) + /// EXAMPLE: + /// DOTweenTMPAnimator animator = new DOTweenTMPAnimator(myTextMeshProTextField); + /// Tween tween = animator.DOCharScale(characterIndex, scaleValue, duration); + /// + /// + public class DOTweenTMPAnimator : IDisposable + { + static readonly Dictionary _targetToAnimator = new Dictionary(); + + /// that this animator is linked to + public TMP_Text target { get; private set; } + public TMP_TextInfo textInfo { get; private set; } + readonly List _charTransforms = new List(); + TMP_MeshInfo[] _cachedMeshInfos; + bool _ignoreTextChangedEvent; + + /// + /// Creates a new instance of the , which is necessary to animate by single characters. + /// If a already exists for the same object it will be disposed + /// (but not its tweens, those you will have to kill manually). + /// If you want to animate the whole text object you don't need this, and you can use direct DO shortcuts instead. + /// IMPORTANT: the target must have been enabled/activated at least once before you can use it with this + /// + /// The that will be linked to this animator + public DOTweenTMPAnimator(TMP_Text target) + { + if (target == null) { + Debugger.LogError("DOTweenTMPAnimator target can't be null"); + return; + } + if (!target.gameObject.activeInHierarchy) { + Debugger.LogError("You can't create a DOTweenTMPAnimator if its target is disabled"); + return; + } + // Verify that there's no other animators for the same target, and in case dispose them + if (_targetToAnimator.ContainsKey(target)) { + if (Debugger.logPriority >= 2) { + Debugger.Log(string.Format( + "A DOTweenTMPAnimator for \"{0}\" already exists: disposing it because you can't have more than one DOTweenTMPAnimator" + + " for the same TextMesh Pro object. If you have tweens running on the disposed DOTweenTMPAnimator you should kill them manually", + target + )); + } + _targetToAnimator[target].Dispose(); + _targetToAnimator.Remove(target); + } + // + this.target = target; + _targetToAnimator.Add(target, this); + Refresh(); + // Listeners + TMPro_EventManager.TEXT_CHANGED_EVENT.Add(OnTextChanged); + } + + /// + /// If a instance exists for the given target disposes it + /// + public static void DisposeInstanceFor(TMP_Text target) + { + if (!_targetToAnimator.ContainsKey(target)) return; + _targetToAnimator[target].Dispose(); + _targetToAnimator.Remove(target); + } + + /// + /// Clears and disposes of this object + /// + public void Dispose() + { + target = null; + _charTransforms.Clear(); + textInfo = null; + _cachedMeshInfos = null; + TMPro_EventManager.TEXT_CHANGED_EVENT.Remove(OnTextChanged); + } + + /// + /// Refreshes the animator text data and resets all transformation data. Call this after you change the target + /// + public void Refresh() + { + _ignoreTextChangedEvent = true; + target.ForceMeshUpdate(true); + textInfo = target.textInfo; + _cachedMeshInfos = textInfo.CopyMeshInfoVertexData(); + int totChars = textInfo.characterCount; + int totCurrent = _charTransforms.Count; + if (totCurrent > totChars) { + _charTransforms.RemoveRange(totChars, totCurrent - totChars); + totCurrent = totChars; + } + for (int i = 0; i < totCurrent; ++i) { + CharTransform c = _charTransforms[i]; + c.ResetTransformationData(); + c.Refresh(textInfo, _cachedMeshInfos); + _charTransforms[i] = c; + } + for (int i = totCurrent; i < totChars; ++i) _charTransforms.Add(new CharTransform(i, textInfo, _cachedMeshInfos)); + _ignoreTextChangedEvent = false; + } + + /// + /// Resets all deformations + /// + public void Reset() + { + int totCurrent = _charTransforms.Count; + for (int i = 0; i < totCurrent; ++i) _charTransforms[i].ResetAll(target, textInfo.meshInfo, _cachedMeshInfos); + } + + void OnTextChanged(Object obj) + { + if (_ignoreTextChangedEvent || target == null || obj != target) return; + Refresh(); + } + + bool ValidateChar(int charIndex, bool isTween = true) + { + if (textInfo.characterCount <= charIndex) { + Debugger.LogError(string.Format("CharIndex {0} doesn't exist", charIndex)); + return false; + } + if (!textInfo.characterInfo[charIndex].isVisible) { + if (Debugger.logPriority > 1) { + if (isTween) { + Debugger.Log(string.Format( + "CharIndex {0} isn't visible, ignoring it and returning an empty tween (TextMesh Pro will behave weirdly if invisible chars are included in the animation)", + charIndex + )); + } else { + Debugger.Log(string.Format("CharIndex {0} isn't visible, ignoring it", charIndex)); + } + } + return false; + } + return true; + } + + bool ValidateSpan(int fromCharIndex, int toCharIndex, out int firstVisibleCharIndex, out int lastVisibleCharIndex) + { + firstVisibleCharIndex = -1; // First visible/existing charIndex from given index + lastVisibleCharIndex = -1; // Last visible/existing charIndex backwards from given index + int charCount = textInfo.characterCount; + if (fromCharIndex >= charCount) return false; + if (toCharIndex >= charCount) toCharIndex = charCount - 1; + for (int i = fromCharIndex; i < toCharIndex + 1; ++i) { + if (!_charTransforms[i].isVisible) continue; + firstVisibleCharIndex = i; + break; + } + if (firstVisibleCharIndex == -1) return false; + for (int i = toCharIndex; i > firstVisibleCharIndex - 1; --i) { + if (!_charTransforms[i].isVisible) continue; + lastVisibleCharIndex = i; + break; + } + if (lastVisibleCharIndex == -1) return false; + return true; + } + + #region Word Setters + + /// + /// Skews a span of characters uniformly (like normal skew works in graphic applications) + /// + /// First char index of the span to skew + /// Last char index of the span to skew + /// Skew factor + /// If TRUE skews the top side of the span, otherwise the bottom one + public void SkewSpanX(int fromCharIndex, int toCharIndex, float skewFactor, bool skewTop = true) + { + int firstVisibleCharIndex, lastVisibleCharIndex; + if (!ValidateSpan(fromCharIndex, toCharIndex, out firstVisibleCharIndex, out lastVisibleCharIndex)) return; + for (int i = firstVisibleCharIndex; i < lastVisibleCharIndex + 1; ++i) { + if (!_charTransforms[i].isVisible) continue; + CharVertices v = _charTransforms[i].GetVertices(); + float skew = SkewCharX(i, skewFactor, skewTop); + } + } + + /// + /// Skews a span of characters uniformly (like normal skew works in graphic applications) + /// + /// First char index of the span to skew + /// Last char index of the span to skew + /// Skew factor + /// Skew mode + /// If TRUE skews the right side of the span, otherwise the left one + public void SkewSpanY( + int fromCharIndex, int toCharIndex, float skewFactor, + TMPSkewSpanMode mode = TMPSkewSpanMode.Default, bool skewRight = true + ){ + int firstVisibleCharIndex, lastVisibleCharIndex; + if (!ValidateSpan(fromCharIndex, toCharIndex, out firstVisibleCharIndex, out lastVisibleCharIndex)) return; + if (mode == TMPSkewSpanMode.AsMaxSkewFactor) { + CharVertices firstVisibleCharVertices = _charTransforms[firstVisibleCharIndex].GetVertices(); + CharVertices lastVisibleCharVertices = _charTransforms[lastVisibleCharIndex].GetVertices(); + float spanW = Mathf.Abs(lastVisibleCharVertices.bottomRight.x - firstVisibleCharVertices.bottomLeft.x); + float spanH = Mathf.Abs(lastVisibleCharVertices.topRight.y - lastVisibleCharVertices.bottomRight.y); + float ratio = spanH / spanW; + skewFactor *= ratio; + } + float offsetY = 0; + CharVertices prevCharVertices = new CharVertices(); + float prevCharSkew = 0; + if (skewRight) { + for (int i = firstVisibleCharIndex; i < lastVisibleCharIndex + 1; ++i) { + if (!_charTransforms[i].isVisible) continue; + CharVertices v = _charTransforms[i].GetVertices(); + float skew = SkewCharY(i, skewFactor, skewRight); + if (i > firstVisibleCharIndex) { + float prevCharW = Mathf.Abs(prevCharVertices.bottomLeft.x - prevCharVertices.bottomRight.x); + float charsDist = Mathf.Abs(v.bottomLeft.x - prevCharVertices.bottomRight.x); + offsetY += prevCharSkew + (prevCharSkew * charsDist) / prevCharW; + SetCharOffset(i, new Vector3(0, _charTransforms[i].offset.y + offsetY, 0)); + } + prevCharVertices = v; + prevCharSkew = skew; + } + } else { + for (int i = lastVisibleCharIndex; i > firstVisibleCharIndex - 1; --i) { + if (!_charTransforms[i].isVisible) continue; + CharVertices v = _charTransforms[i].GetVertices(); + float skew = SkewCharY(i, skewFactor, skewRight); + if (i < lastVisibleCharIndex) { + float prevCharW = Mathf.Abs(prevCharVertices.bottomLeft.x - prevCharVertices.bottomRight.x); + float charsDist = Mathf.Abs(v.bottomRight.x - prevCharVertices.bottomLeft.x); + offsetY += prevCharSkew + (prevCharSkew * charsDist) / prevCharW; + SetCharOffset(i, new Vector3(0, _charTransforms[i].offset.y + offsetY, 0)); + } + prevCharVertices = v; + prevCharSkew = skew; + } + } + } + + #endregion + + #region Char Getters + + /// + /// Returns the current color of the given character, if it exists and is visible. + /// + /// Character index + public Color GetCharColor(int charIndex) + { + if (!ValidateChar(charIndex)) return Color.white; + return _charTransforms[charIndex].GetColor(textInfo.meshInfo); + } + + /// + /// Returns the current offset of the given character, if it exists and is visible. + /// + /// Character index + public Vector3 GetCharOffset(int charIndex) + { + if (!ValidateChar(charIndex)) return Vector3.zero; + return _charTransforms[charIndex].offset; + } + + /// + /// Returns the current rotation of the given character, if it exists and is visible. + /// + /// Character index + public Vector3 GetCharRotation(int charIndex) + { + if (!ValidateChar(charIndex)) return Vector3.zero; + return _charTransforms[charIndex].rotation.eulerAngles; + } + + /// + /// Returns the current scale of the given character, if it exists and is visible. + /// + /// Character index + public Vector3 GetCharScale(int charIndex) + { + if (!ValidateChar(charIndex)) return Vector3.zero; + return _charTransforms[charIndex].scale; + } + + #endregion + + #region Char Setters + + /// + /// Immediately sets the color of the given character. + /// Will do nothing if the is invalid or the character isn't visible + /// + /// Character index + /// Color to set + public void SetCharColor(int charIndex, Color32 color) + { + if (!ValidateChar(charIndex)) return; + CharTransform c = _charTransforms[charIndex]; + c.UpdateColor(target, color, textInfo.meshInfo); + _charTransforms[charIndex] = c; + } + + /// + /// Immediately sets the offset of the given character. + /// Will do nothing if the is invalid or the character isn't visible + /// + /// Character index + /// Offset to set + public void SetCharOffset(int charIndex, Vector3 offset) + { + if (!ValidateChar(charIndex)) return; + CharTransform c = _charTransforms[charIndex]; + c.UpdateGeometry(target, offset, c.rotation, c.scale, _cachedMeshInfos); + _charTransforms[charIndex] = c; + } + + /// + /// Immediately sets the rotation of the given character. + /// Will do nothing if the is invalid or the character isn't visible + /// + /// Character index + /// Rotation to set + public void SetCharRotation(int charIndex, Vector3 rotation) + { + if (!ValidateChar(charIndex)) return; + CharTransform c = _charTransforms[charIndex]; + c.UpdateGeometry(target, c.offset, Quaternion.Euler(rotation), c.scale, _cachedMeshInfos); + _charTransforms[charIndex] = c; + } + + /// + /// Immediately sets the scale of the given character. + /// Will do nothing if the is invalid or the character isn't visible + /// + /// Character index + /// Scale to set + public void SetCharScale(int charIndex, Vector3 scale) + { + if (!ValidateChar(charIndex)) return; + CharTransform c = _charTransforms[charIndex]; + c.UpdateGeometry(target, c.offset, c.rotation, scale, _cachedMeshInfos); + _charTransforms[charIndex] = c; + } + + /// + /// Immediately shifts the vertices of the given character by the given factor. + /// Will do nothing if the is invalid or the character isn't visible + /// + /// Character index + /// Top left offset + /// Top right offset + /// Bottom left offset + /// Bottom right offset + public void ShiftCharVertices(int charIndex, Vector3 topLeftShift, Vector3 topRightShift, Vector3 bottomLeftShift, Vector3 bottomRightShift) + { + if (!ValidateChar(charIndex)) return; + CharTransform c = _charTransforms[charIndex]; + c.ShiftVertices(target, topLeftShift, topRightShift, bottomLeftShift, bottomRightShift); + _charTransforms[charIndex] = c; + } + + /// + /// Skews the given character horizontally along the X axis and returns the skew amount applied (based on the character's size) + /// + /// Character index + /// skew amount + /// If TRUE skews the top side of the character, otherwise the bottom one + public float SkewCharX(int charIndex, float skewFactor, bool skewTop = true) + { + if (!ValidateChar(charIndex)) return 0; + Vector3 skewV = new Vector3(skewFactor, 0, 0); + CharTransform c = _charTransforms[charIndex]; + if (skewTop) c.ShiftVertices(target, skewV, skewV, Vector3.zero, Vector3.zero); + else c.ShiftVertices(target, Vector3.zero, Vector3.zero, skewV, skewV); + _charTransforms[charIndex] = c; + return skewFactor; + } + + /// + /// Skews the given character vertically along the Y axis and returns the skew amount applied (based on the character's size) + /// + /// Character index + /// skew amount + /// If TRUE skews the right side of the character, otherwise the left one + /// If TRUE applies exactly the given , + /// otherwise modifies it based on the aspectRation of the character + public float SkewCharY(int charIndex, float skewFactor, bool skewRight = true, bool fixedSkew = false) + { + if (!ValidateChar(charIndex)) return 0; + float skew = fixedSkew ? skewFactor : skewFactor * textInfo.characterInfo[charIndex].aspectRatio; + Vector3 skewV = new Vector3(0, skew, 0); + CharTransform c = _charTransforms[charIndex]; + if (skewRight) c.ShiftVertices(target, Vector3.zero, skewV, Vector3.zero, skewV); + else c.ShiftVertices(target, skewV, Vector3.zero, skewV, Vector3.zero); + _charTransforms[charIndex] = c; + return skew; + } + + /// + /// Resets the eventual vertices shift applied to the given character via . + /// Will do nothing if the is invalid or the character isn't visible + /// + /// Character index + public void ResetVerticesShift(int charIndex) + { + if (!ValidateChar(charIndex)) return; + CharTransform c = _charTransforms[charIndex]; + c.ResetVerticesShift(target); + _charTransforms[charIndex] = c; + } + + #endregion + + #region Char Tweens + + /// Tweens a character's alpha to the given value and returns the . + /// Will return NULL if the is invalid or the character isn't visible. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The end value to reachThe duration of the tween + public TweenerCore DOFadeChar(int charIndex, float endValue, float duration) + { + if (!ValidateChar(charIndex)) return null; + TweenerCore t = DOTween.ToAlpha(() => _charTransforms[charIndex].GetColor(textInfo.meshInfo), x => { + _charTransforms[charIndex].UpdateAlpha(target, x, textInfo.meshInfo); + }, endValue, duration); + return t; + } + + /// Tweens a character's color to the given value and returns the . + /// Will return NULL if the is invalid or the character isn't visible. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The end value to reachThe duration of the tween + public TweenerCore DOColorChar(int charIndex, Color endValue, float duration) + { + if (!ValidateChar(charIndex)) return null; + TweenerCore t = DOTween.To(() => _charTransforms[charIndex].GetColor(textInfo.meshInfo), x => { + _charTransforms[charIndex].UpdateColor(target, x, textInfo.meshInfo); + }, endValue, duration); + return t; + } + + /// Tweens a character's offset to the given value and returns the . + /// Will return NULL if the is invalid or the character isn't visible. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The end value to reachThe duration of the tween + public TweenerCore DOOffsetChar(int charIndex, Vector3 endValue, float duration) + { + if (!ValidateChar(charIndex)) return null; + TweenerCore t = DOTween.To(() => _charTransforms[charIndex].offset, x => { + CharTransform charT = _charTransforms[charIndex]; + charT.UpdateGeometry(target, x, charT.rotation, charT.scale, _cachedMeshInfos); + _charTransforms[charIndex] = charT; + }, endValue, duration); + return t; + } + + /// Tweens a character's rotation to the given value and returns the . + /// Will return NULL if the is invalid or the character isn't visible. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The end value to reachThe duration of the tween + /// Rotation mode + public TweenerCore DORotateChar(int charIndex, Vector3 endValue, float duration, RotateMode mode = RotateMode.Fast) + { + if (!ValidateChar(charIndex)) return null; + TweenerCore t = DOTween.To(() => _charTransforms[charIndex].rotation, x => { + CharTransform charT = _charTransforms[charIndex]; + charT.UpdateGeometry(target, charT.offset, x, charT.scale, _cachedMeshInfos); + _charTransforms[charIndex] = charT; + }, endValue, duration); + t.plugOptions.rotateMode = mode; + return t; + } + + /// Tweens a character's scale to the given value and returns the . + /// Will return NULL if the is invalid or the character isn't visible. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The end value to reachThe duration of the tween + public TweenerCore DOScaleChar(int charIndex, float endValue, float duration) + { + return DOScaleChar(charIndex, new Vector3(endValue, endValue, endValue), duration); + } + /// Tweens a character's color to the given value and returns the . + /// Will return NULL if the is invalid or the character isn't visible. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The end value to reachThe duration of the tween + public TweenerCore DOScaleChar(int charIndex, Vector3 endValue, float duration) + { + if (!ValidateChar(charIndex)) return null; + TweenerCore t = DOTween.To(() => _charTransforms[charIndex].scale, x => { + CharTransform charT = _charTransforms[charIndex]; + charT.UpdateGeometry(target, charT.offset, charT.rotation, x, _cachedMeshInfos); + _charTransforms[charIndex] = charT; + }, endValue, duration); + return t; + } + + /// Punches a character's offset towards the given direction and then back to the starting one + /// as if it was connected to the starting position via an elastic. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The punch strength + /// The duration of the tween + /// Indicates how much will the punch vibrate per second + /// Represents how much (0 to 1) the vector will go beyond the starting size when bouncing backwards. + /// 1 creates a full oscillation between the punch offset and the opposite offset, + /// while 0 oscillates only between the punch offset and the start offset + public Tweener DOPunchCharOffset(int charIndex, Vector3 punch, float duration, int vibrato = 10, float elasticity = 1) + { + if (!ValidateChar(charIndex)) return null; + if (duration <= 0) { + if (Debugger.logPriority > 0) Debug.LogWarning("Duration can't be 0, returning NULL without creating a tween"); + return null; + } + return DOTween.Punch(() => _charTransforms[charIndex].offset, x => { + CharTransform charT = _charTransforms[charIndex]; + charT.UpdateGeometry(target, x, charT.rotation, charT.scale, _cachedMeshInfos); + _charTransforms[charIndex] = charT; + }, punch, duration, vibrato, elasticity); + } + + /// Punches a character's rotation towards the given direction and then back to the starting one + /// as if it was connected to the starting position via an elastic. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The punch strength + /// The duration of the tween + /// Indicates how much will the punch vibrate per second + /// Represents how much (0 to 1) the vector will go beyond the starting size when bouncing backwards. + /// 1 creates a full oscillation between the punch rotation and the opposite rotation, + /// while 0 oscillates only between the punch rotation and the start rotation + public Tweener DOPunchCharRotation(int charIndex, Vector3 punch, float duration, int vibrato = 10, float elasticity = 1) + { + if (!ValidateChar(charIndex)) return null; + if (duration <= 0) { + if (Debugger.logPriority > 0) Debug.LogWarning("Duration can't be 0, returning NULL without creating a tween"); + return null; + } + return DOTween.Punch(() => _charTransforms[charIndex].rotation.eulerAngles, x => { + CharTransform charT = _charTransforms[charIndex]; + charT.UpdateGeometry(target, charT.offset, Quaternion.Euler(x), charT.scale, _cachedMeshInfos); + _charTransforms[charIndex] = charT; + }, punch, duration, vibrato, elasticity); + } + + /// Punches a character's scale towards the given direction and then back to the starting one + /// as if it was connected to the starting position via an elastic. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The punch strength (added to the character's current scale) + /// The duration of the tween + /// Indicates how much will the punch vibrate per second + /// Represents how much (0 to 1) the vector will go beyond the starting size when bouncing backwards. + /// 1 creates a full oscillation between the punch scale and the opposite scale, + /// while 0 oscillates only between the punch scale and the start scale + public Tweener DOPunchCharScale(int charIndex, float punch, float duration, int vibrato = 10, float elasticity = 1) + { + return DOPunchCharScale(charIndex, new Vector3(punch, punch, punch), duration, vibrato, elasticity); + } + /// Punches a character's scale towards the given direction and then back to the starting one + /// as if it was connected to the starting position via an elastic. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The punch strength (added to the character's current scale) + /// The duration of the tween + /// Indicates how much will the punch vibrate per second + /// Represents how much (0 to 1) the vector will go beyond the starting size when bouncing backwards. + /// 1 creates a full oscillation between the punch scale and the opposite scale, + /// while 0 oscillates only between the punch scale and the start scale + public Tweener DOPunchCharScale(int charIndex, Vector3 punch, float duration, int vibrato = 10, float elasticity = 1) + { + if (!ValidateChar(charIndex)) return null; + if (duration <= 0) { + if (Debugger.logPriority > 0) Debug.LogWarning("Duration can't be 0, returning NULL without creating a tween"); + return null; + } + return DOTween.Punch(() => _charTransforms[charIndex].scale, x => { + CharTransform charT = _charTransforms[charIndex]; + charT.UpdateGeometry(target, charT.offset, charT.rotation, x, _cachedMeshInfos); + _charTransforms[charIndex] = charT; + }, punch, duration, vibrato, elasticity); + } + + /// Shakes a character's offset with the given values. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The duration of the tween + /// The shake strength + /// Indicates how much will the shake vibrate + /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + /// Setting it to 0 will shake along a single direction. + /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + public Tweener DOShakeCharOffset(int charIndex, float duration, float strength, int vibrato = 10, float randomness = 90, bool fadeOut = true) + { + return DOShakeCharOffset(charIndex, duration, new Vector3(strength, strength, strength), vibrato, randomness, fadeOut); + } + /// Shakes a character's offset with the given values. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The duration of the tween + /// The shake strength + /// Indicates how much will the shake vibrate + /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + /// Setting it to 0 will shake along a single direction. + /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + public Tweener DOShakeCharOffset(int charIndex, float duration, Vector3 strength, int vibrato = 10, float randomness = 90, bool fadeOut = true) + { + if (!ValidateChar(charIndex)) return null; + if (duration <= 0) { + if (Debugger.logPriority > 0) Debug.LogWarning("Duration can't be 0, returning NULL without creating a tween"); + return null; + } + return DOTween.Shake(() => _charTransforms[charIndex].offset, x => { + CharTransform charT = _charTransforms[charIndex]; + charT.UpdateGeometry(target, x, charT.rotation, charT.scale, _cachedMeshInfos); + _charTransforms[charIndex] = charT; + }, duration, strength, vibrato, randomness, fadeOut); + } + + /// Shakes a character's rotation with the given values. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The duration of the tween + /// The shake strength + /// Indicates how much will the shake vibrate + /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + /// Setting it to 0 will shake along a single direction. + /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + public Tweener DOShakeCharRotation(int charIndex, float duration, Vector3 strength, int vibrato = 10, float randomness = 90, bool fadeOut = true) + { + if (!ValidateChar(charIndex)) return null; + if (duration <= 0) { + if (Debugger.logPriority > 0) Debug.LogWarning("Duration can't be 0, returning NULL without creating a tween"); + return null; + } + return DOTween.Shake(() => _charTransforms[charIndex].rotation.eulerAngles, x => { + CharTransform charT = _charTransforms[charIndex]; + charT.UpdateGeometry(target, charT.offset, Quaternion.Euler(x), charT.scale, _cachedMeshInfos); + _charTransforms[charIndex] = charT; + }, duration, strength, vibrato, randomness, fadeOut); + } + + /// Shakes a character's scale with the given values. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The duration of the tween + /// The shake strength + /// Indicates how much will the shake vibrate + /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + /// Setting it to 0 will shake along a single direction. + /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + public Tweener DOShakeCharScale(int charIndex, float duration, float strength, int vibrato = 10, float randomness = 90, bool fadeOut = true) + { + return DOShakeCharScale(charIndex, duration, new Vector3(strength, strength, strength), vibrato, randomness, fadeOut); + } + /// Shakes a character's scale with the given values. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The duration of the tween + /// The shake strength + /// Indicates how much will the shake vibrate + /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + /// Setting it to 0 will shake along a single direction. + /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + public Tweener DOShakeCharScale(int charIndex, float duration, Vector3 strength, int vibrato = 10, float randomness = 90, bool fadeOut = true) + { + if (!ValidateChar(charIndex)) return null; + if (duration <= 0) { + if (Debugger.logPriority > 0) Debug.LogWarning("Duration can't be 0, returning NULL without creating a tween"); + return null; + } + return DOTween.Shake(() => _charTransforms[charIndex].scale, x => { + CharTransform charT = _charTransforms[charIndex]; + charT.UpdateGeometry(target, charT.offset, charT.rotation, x, _cachedMeshInfos); + _charTransforms[charIndex] = charT; + }, duration, strength, vibrato, randomness, fadeOut); + } + + #endregion + + // ███ INTERNAL CLASSES ████████████████████████████████████████████████████████████████████████████████████████████████ + + struct CharVertices + { + public Vector3 bottomLeft, topLeft, topRight, bottomRight; + + public CharVertices(Vector3 bottomLeft, Vector3 topLeft, Vector3 topRight, Vector3 bottomRight) + { + this.bottomLeft = bottomLeft; + this.topLeft = topLeft; + this.topRight = topRight; + this.bottomRight = bottomRight; + } + } + + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + + // Vertices of each character are: + // 0 : bottom left, 1 : top left, 2 : top right, 3 : bottom right + struct CharTransform + { + public int charIndex; + public bool isVisible { get; private set; } // FALSE both if it's invisible or if it's a space + public Vector3 offset; + public Quaternion rotation; + public Vector3 scale; + Vector3 _topLeftShift, _topRightShift, _bottomLeftShift, _bottomRightShift; + Vector3 _charMidBaselineOffset; + int _matIndex, _firstVertexIndex; + TMP_MeshInfo _meshInfo; + + public CharTransform(int charIndex, TMP_TextInfo textInfo, TMP_MeshInfo[] cachedMeshInfos) : this() + { + this.charIndex = charIndex; + offset = Vector3.zero; + rotation = Quaternion.identity; + scale = Vector3.one; + Refresh(textInfo, cachedMeshInfos); + } + + public void Refresh(TMP_TextInfo textInfo, TMP_MeshInfo[] cachedMeshInfos) + { + TMP_CharacterInfo charInfo = textInfo.characterInfo[charIndex]; + bool isSpaceChar = charInfo.character == ' '; + isVisible = charInfo.isVisible && !isSpaceChar; + _matIndex = charInfo.materialReferenceIndex; + _firstVertexIndex = charInfo.vertexIndex; + _meshInfo = textInfo.meshInfo[_matIndex]; + Vector3[] cachedVertices = cachedMeshInfos[_matIndex].vertices; + _charMidBaselineOffset = isSpaceChar + ? Vector3.zero + : (cachedVertices[_firstVertexIndex] + cachedVertices[_firstVertexIndex + 2]) * 0.5f; + } + + public void ResetAll(TMP_Text target, TMP_MeshInfo[] meshInfos, TMP_MeshInfo[] cachedMeshInfos) + { + ResetGeometry(target, cachedMeshInfos); + ResetColors(target, meshInfos); + } + + public void ResetTransformationData() + { + offset = Vector3.zero; + rotation = Quaternion.identity; + scale = Vector3.one; + _topLeftShift = _topRightShift = _bottomLeftShift = _bottomRightShift = Vector3.zero; + } + + public void ResetGeometry(TMP_Text target, TMP_MeshInfo[] cachedMeshInfos) + { + ResetTransformationData(); + Vector3[] destinationVertices = _meshInfo.vertices; + Vector3[] cachedVertices = cachedMeshInfos[_matIndex].vertices; + destinationVertices[_firstVertexIndex + 0] = cachedVertices[_firstVertexIndex + 0]; + destinationVertices[_firstVertexIndex + 1] = cachedVertices[_firstVertexIndex + 1]; + destinationVertices[_firstVertexIndex + 2] = cachedVertices[_firstVertexIndex + 2]; + destinationVertices[_firstVertexIndex + 3] = cachedVertices[_firstVertexIndex + 3]; + _meshInfo.mesh.vertices = _meshInfo.vertices; + target.UpdateGeometry(_meshInfo.mesh, _matIndex); + } + + public void ResetColors(TMP_Text target, TMP_MeshInfo[] meshInfos) + { + Color color = target.color; + Color32[] vertexCols = meshInfos[_matIndex].colors32; + vertexCols[_firstVertexIndex] = color; + vertexCols[_firstVertexIndex + 1] = color; + vertexCols[_firstVertexIndex + 2] = color; + vertexCols[_firstVertexIndex + 3] = color; + target.UpdateVertexData(TMP_VertexDataUpdateFlags.Colors32); + } + + public Color32 GetColor(TMP_MeshInfo[] meshInfos) + { + return meshInfos[_matIndex].colors32[_firstVertexIndex]; + } + + public CharVertices GetVertices() + { + return new CharVertices( + _meshInfo.vertices[_firstVertexIndex], _meshInfo.vertices[_firstVertexIndex + 1], + _meshInfo.vertices[_firstVertexIndex + 2], _meshInfo.vertices[_firstVertexIndex + 3] + ); + } + + public void UpdateAlpha(TMP_Text target, Color alphaColor, TMP_MeshInfo[] meshInfos, bool apply = true) + { + byte alphaByte = (byte)(alphaColor.a * 255); + Color32[] vertexCols = meshInfos[_matIndex].colors32; + vertexCols[_firstVertexIndex].a = alphaByte; + vertexCols[_firstVertexIndex + 1].a = alphaByte; + vertexCols[_firstVertexIndex + 2].a = alphaByte; + vertexCols[_firstVertexIndex + 3].a = alphaByte; + if (apply) target.UpdateVertexData(TMP_VertexDataUpdateFlags.Colors32); + } + + public void UpdateColor(TMP_Text target, Color32 color, TMP_MeshInfo[] meshInfos, bool apply = true) + { + Color32[] vertexCols = meshInfos[_matIndex].colors32; + vertexCols[_firstVertexIndex] = color; + vertexCols[_firstVertexIndex + 1] = color; + vertexCols[_firstVertexIndex + 2] = color; + vertexCols[_firstVertexIndex + 3] = color; + if (apply) target.UpdateVertexData(TMP_VertexDataUpdateFlags.Colors32); + } + + public void UpdateGeometry(TMP_Text target, Vector3 offset, Quaternion rotation, Vector3 scale, TMP_MeshInfo[] cachedMeshInfos, bool apply = true) + { + this.offset = offset; + this.rotation = rotation; + this.scale = scale; + + if (!apply) return; + + Vector3[] destinationVertices = _meshInfo.vertices; + Vector3[] cachedVertices = cachedMeshInfos[_matIndex].vertices; + destinationVertices[_firstVertexIndex] = cachedVertices[_firstVertexIndex + 0] - _charMidBaselineOffset; + destinationVertices[_firstVertexIndex + 1] = cachedVertices[_firstVertexIndex + 1] - _charMidBaselineOffset; + destinationVertices[_firstVertexIndex + 2] = cachedVertices[_firstVertexIndex + 2] - _charMidBaselineOffset; + destinationVertices[_firstVertexIndex + 3] = cachedVertices[_firstVertexIndex + 3] - _charMidBaselineOffset; + Matrix4x4 matrix = Matrix4x4.TRS(this.offset, this.rotation, this.scale); + destinationVertices[_firstVertexIndex] + = matrix.MultiplyPoint3x4(destinationVertices[_firstVertexIndex + 0]) + _charMidBaselineOffset + _bottomLeftShift; + destinationVertices[_firstVertexIndex + 1] + = matrix.MultiplyPoint3x4(destinationVertices[_firstVertexIndex + 1]) + _charMidBaselineOffset + _topLeftShift; + destinationVertices[_firstVertexIndex + 2] + = matrix.MultiplyPoint3x4(destinationVertices[_firstVertexIndex + 2]) + _charMidBaselineOffset + _topRightShift; + destinationVertices[_firstVertexIndex + 3] + = matrix.MultiplyPoint3x4(destinationVertices[_firstVertexIndex + 3]) + _charMidBaselineOffset + _bottomRightShift; + _meshInfo.mesh.vertices = _meshInfo.vertices; + target.UpdateGeometry(_meshInfo.mesh, _matIndex); + } + + public void ShiftVertices(TMP_Text target, Vector3 topLeftShift, Vector3 topRightShift, Vector3 bottomLeftShift, Vector3 bottomRightShift) + { + _topLeftShift += topLeftShift; + _topRightShift += topRightShift; + _bottomLeftShift += bottomLeftShift; + _bottomRightShift += bottomRightShift; + Vector3[] destinationVertices = _meshInfo.vertices; + destinationVertices[_firstVertexIndex] = destinationVertices[_firstVertexIndex] + _bottomLeftShift; + destinationVertices[_firstVertexIndex + 1] = destinationVertices[_firstVertexIndex + 1] + _topLeftShift; + destinationVertices[_firstVertexIndex + 2] = destinationVertices[_firstVertexIndex + 2] + _topRightShift; + destinationVertices[_firstVertexIndex + 3] = destinationVertices[_firstVertexIndex + 3] + _bottomRightShift; + _meshInfo.mesh.vertices = _meshInfo.vertices; + target.UpdateGeometry(_meshInfo.mesh, _matIndex); + } + + public void ResetVerticesShift(TMP_Text target) + { + Vector3[] destinationVertices = _meshInfo.vertices; + destinationVertices[_firstVertexIndex] = destinationVertices[_firstVertexIndex] - _bottomLeftShift; + destinationVertices[_firstVertexIndex + 1] = destinationVertices[_firstVertexIndex + 1] - _topLeftShift; + destinationVertices[_firstVertexIndex + 2] = destinationVertices[_firstVertexIndex + 2] - _topRightShift; + destinationVertices[_firstVertexIndex + 3] = destinationVertices[_firstVertexIndex + 3] - _bottomRightShift; + _meshInfo.mesh.vertices = _meshInfo.vertices; + target.UpdateGeometry(_meshInfo.mesh, _matIndex); + _topLeftShift = _topRightShift = _bottomLeftShift = _bottomRightShift = Vector3.zero; + } + } + } + + #endregion +} +#endif diff --git a/Assets/Plugins/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs.meta b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs.meta new file mode 100644 index 0000000..613cdbc --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8fb0d65aa5b048649a3a785b82b8f8db +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Plugins/Demigiant/DOTweenPro/DOTweenTk2d.cs b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenTk2d.cs new file mode 100644 index 0000000..0c57bfe --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenTk2d.cs @@ -0,0 +1,247 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2014/10/27 15:59 +// +// License Copyright (c) Daniele Giardini. +// This work is subject to the terms at http://dotween.demigiant.com/license.php + +#if false // MODULE_MARKER +using DG.Tweening.Core; +using DG.Tweening.Plugins.Options; +using UnityEngine; + +namespace DG.Tweening +{ + /// + /// Methods that extend 2D Toolkit objects and allow to directly create and control tweens from their instances. + /// + public static class ShortcutExtensionsTk2d + { + #region Sprite + + /// Tweens a 2D Toolkit Sprite's dimensions to the given value. + /// Also stores the Sprite as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOScale(this tk2dBaseSprite target, Vector3 endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.scale, x => target.scale = x, endValue, duration); + t.SetTarget(target); + return t; + } + /// Tweens a Sprite's dimensions to the given value. + /// Also stores the Sprite as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOScaleX(this tk2dBaseSprite target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.scale, x => target.scale = x, new Vector3(endValue, 0, 0), duration); + t.SetOptions(AxisConstraint.X) + .SetTarget(target); + return t; + } + /// Tweens a Sprite's dimensions to the given value. + /// Also stores the Sprite as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOScaleY(this tk2dBaseSprite target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.scale, x => target.scale = x, new Vector3(0, endValue, 0), duration); + t.SetOptions(AxisConstraint.Y) + .SetTarget(target); + return t; + } + /// Tweens a Sprite's dimensions to the given value. + /// Also stores the Sprite as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOScaleZ(this tk2dBaseSprite target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.scale, x => target.scale = x, new Vector3(0, 0, endValue), duration); + t.SetOptions(AxisConstraint.Z) + .SetTarget(target); + return t; + } + + /// Tweens a 2D Toolkit Sprite's color to the given value. + /// Also stores the Sprite as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOColor(this tk2dBaseSprite target, Color endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a 2D Toolkit Sprite's alpha color to the given value. + /// Also stores the Sprite as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOFade(this tk2dBaseSprite target, float endValue, float duration) + { + TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a 2D Toolkit Sprite's color using the given gradient + /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The gradient to useThe duration of the tween + public static Sequence DOGradientColor(this tk2dBaseSprite target, Gradient gradient, float duration) + { + Sequence s = DOTween.Sequence(); + GradientColorKey[] colors = gradient.colorKeys; + int len = colors.Length; + for (int i = 0; i < len; ++i) { + GradientColorKey c = colors[i]; + if (i == 0 && c.time <= 0) { + target.color = c.color; + continue; + } + float colorDuration = i == len - 1 + ? duration - s.Duration(false) // Verifies that total duration is correct + : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); + s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); + } + s.SetTarget(target); + return s; + } + + #endregion + + #region tk2dSlicedSprite + + /// Tweens a 2D Toolkit SlicedSprite's dimensions to the given value. + /// Also stores the SlicedSprite as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOScaleDimensions(this tk2dSlicedSprite target, Vector2 endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.dimensions, x => target.dimensions = x, endValue, duration); + t.SetTarget(target); + return t; + } + /// Tweens a SlicedSprite's dimensions to the given value. + /// Also stores the SlicedSprite as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOScaleDimensionsX(this tk2dSlicedSprite target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.dimensions, x => target.dimensions = x, new Vector2(endValue, 0), duration); + t.SetOptions(AxisConstraint.X) + .SetTarget(target); + return t; + } + /// Tweens a SlicedSprite's dimensions to the given value. + /// Also stores the SlicedSprite as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOScaleDimensionsY(this tk2dSlicedSprite target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.dimensions, x => target.dimensions = x, new Vector2(0, endValue), duration); + t.SetOptions(AxisConstraint.Y) + .SetTarget(target); + return t; + } + + #endregion + + #region TextMesh + + /// Tweens a 2D Toolkit TextMesh's dimensions to the given value. + /// Also stores the TextMesh as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOScale(this tk2dTextMesh target, Vector3 endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.scale, x => target.scale = x, endValue, duration); + t.SetTarget(target); + return t; + } + /// Tweens a 2D Toolkit TextMesh's dimensions to the given value. + /// Also stores the TextMesh as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOScaleX(this tk2dTextMesh target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.scale, x => target.scale = x, new Vector3(endValue, 0, 0), duration); + t.SetOptions(AxisConstraint.X) + .SetTarget(target); + return t; + } + /// Tweens a 2D Toolkit TextMesh's dimensions to the given value. + /// Also stores the TextMesh as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOScaleY(this tk2dTextMesh target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.scale, x => target.scale = x, new Vector3(0, endValue, 0), duration); + t.SetOptions(AxisConstraint.Y) + .SetTarget(target); + return t; + } + /// Tweens a 2D Toolkit TextMesh's dimensions to the given value. + /// Also stores the TextMesh as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOScaleZ(this tk2dTextMesh target, float endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.scale, x => target.scale = x, new Vector3(0, 0, endValue), duration); + t.SetOptions(AxisConstraint.Z) + .SetTarget(target); + return t; + } + + /// Tweens a 2D Toolkit TextMesh's color to the given value. + /// Also stores the TextMesh as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOColor(this tk2dTextMesh target, Color endValue, float duration) + { + TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a 2D Toolkit TextMesh's alpha color to the given value. + /// Also stores the TextMesh as the tween's target so it can be used for filtered operations + /// The end value to reachThe duration of the tween + public static TweenerCore DOFade(this tk2dTextMesh target, float endValue, float duration) + { + TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; + } + + /// Tweens a 2D Toolkit TextMesh's color using the given gradient + /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). + /// Also stores the image as the tween's target so it can be used for filtered operations + /// The gradient to useThe duration of the tween + public static Sequence DOGradientColor(this tk2dTextMesh target, Gradient gradient, float duration) + { + Sequence s = DOTween.Sequence(); + GradientColorKey[] colors = gradient.colorKeys; + int len = colors.Length; + for (int i = 0; i < len; ++i) { + GradientColorKey c = colors[i]; + if (i == 0 && c.time <= 0) { + target.color = c.color; + continue; + } + float colorDuration = i == len - 1 + ? duration - s.Duration(false) // Verifies that total duration is correct + : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); + s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); + } + s.SetTarget(target); + return s; + } + + /// Tweens a tk2dTextMesh's text to the given value. + /// Also stores the tk2dTextMesh as the tween's target so it can be used for filtered operations + /// The end string to tween toThe duration of the tween + /// If TRUE (default), rich text will be interpreted correctly while animated, + /// otherwise all tags will be considered as normal text + /// The type of scramble mode to use, if any + /// A string containing the characters to use for scrambling. + /// Use as many characters as possible (minimum 10) because DOTween uses a fast scramble mode which gives better results with more characters. + /// Leave it to NULL (default) to use default ones + public static TweenerCore DOText(this tk2dTextMesh target, string endValue, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null) + { + TweenerCore t = DOTween.To(() => target.text, x => target.text = x, endValue, duration); + t.SetOptions(richTextEnabled, scrambleMode, scrambleChars) + .SetTarget(target); + return t; + } + + #endregion + } +} +#endif diff --git a/Assets/Plugins/Demigiant/DOTweenPro/DOTweenTk2d.cs.meta b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenTk2d.cs.meta new file mode 100644 index 0000000..c909f96 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenTk2d.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b590cd7c24ffa5d4faa5b6fa993cccad +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Plugins/Demigiant/DOTweenPro/Editor.meta b/Assets/Plugins/Demigiant/DOTweenPro/Editor.meta new file mode 100644 index 0000000..e9164f7 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/Editor.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 34ca5bde92f87fa4dbeb9593d201fde2 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs new file mode 100644 index 0000000..69f753d --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs @@ -0,0 +1,764 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2015/03/12 16:03 + +using System; +using System.Collections.Generic; +using System.IO; +using DG.DemiEditor; +using DG.DOTweenEditor.Core; +using DG.DOTweenEditor.UI; +using DG.Tweening; +using DG.Tweening.Core; +using UnityEditor; +using UnityEngine; +using DOTweenSettings = DG.Tweening.Core.DOTweenSettings; +#if true // UI_MARKER +using UnityEngine.UI; +#endif +#if false // TEXTMESHPRO_MARKER + using TMPro; +#endif + +namespace DG.DOTweenEditor +{ + [CustomEditor(typeof(DOTweenAnimation))] + public class DOTweenAnimationInspector : ABSAnimationInspector + { + enum FadeTargetType + { + CanvasGroup, + Image + } + + enum ChooseTargetMode + { + None, + BetweenCanvasGroupAndImage + } + + static readonly Dictionary _AnimationTypeToComponent = new Dictionary() { + { DOTweenAnimation.AnimationType.Move, new[] { +#if true // PHYSICS_MARKER + typeof(Rigidbody), +#endif +#if true // PHYSICS2D_MARKER + typeof(Rigidbody2D), +#endif +#if true // UI_MARKER + typeof(RectTransform), +#endif + typeof(Transform) + }}, + { DOTweenAnimation.AnimationType.Rotate, new[] { +#if true // PHYSICS_MARKER + typeof(Rigidbody), +#endif +#if true // PHYSICS2D_MARKER + typeof(Rigidbody2D), +#endif + typeof(Transform) + }}, + { DOTweenAnimation.AnimationType.LocalMove, new[] { typeof(Transform) } }, + { DOTweenAnimation.AnimationType.LocalRotate, new[] { typeof(Transform) } }, + { DOTweenAnimation.AnimationType.Scale, new[] { typeof(Transform) } }, + { DOTweenAnimation.AnimationType.Color, new[] { + typeof(Light), +#if true // SPRITE_MARKER + typeof(SpriteRenderer), +#endif +#if true // UI_MARKER + typeof(Image), typeof(Text), typeof(RawImage), typeof(Graphic), +#endif + typeof(Renderer), + }}, + { DOTweenAnimation.AnimationType.Fade, new[] { + typeof(Light), +#if true // SPRITE_MARKER + typeof(SpriteRenderer), +#endif +#if true // UI_MARKER + typeof(Image), typeof(Text), typeof(CanvasGroup), typeof(RawImage), typeof(Graphic), +#endif + typeof(Renderer), + }}, +#if true // UI_MARKER + { DOTweenAnimation.AnimationType.Text, new[] { typeof(Text) } }, +#endif + { DOTweenAnimation.AnimationType.PunchPosition, new[] { +#if true // UI_MARKER + typeof(RectTransform), +#endif + typeof(Transform) + }}, + { DOTweenAnimation.AnimationType.PunchRotation, new[] { typeof(Transform) } }, + { DOTweenAnimation.AnimationType.PunchScale, new[] { typeof(Transform) } }, + { DOTweenAnimation.AnimationType.ShakePosition, new[] { +#if true // UI_MARKER + typeof(RectTransform), +#endif + typeof(Transform) + }}, + { DOTweenAnimation.AnimationType.ShakeRotation, new[] { typeof(Transform) } }, + { DOTweenAnimation.AnimationType.ShakeScale, new[] { typeof(Transform) } }, + { DOTweenAnimation.AnimationType.CameraAspect, new[] { typeof(Camera) } }, + { DOTweenAnimation.AnimationType.CameraBackgroundColor, new[] { typeof(Camera) } }, + { DOTweenAnimation.AnimationType.CameraFieldOfView, new[] { typeof(Camera) } }, + { DOTweenAnimation.AnimationType.CameraOrthoSize, new[] { typeof(Camera) } }, + { DOTweenAnimation.AnimationType.CameraPixelRect, new[] { typeof(Camera) } }, + { DOTweenAnimation.AnimationType.CameraRect, new[] { typeof(Camera) } }, +#if true // UI_MARKER + { DOTweenAnimation.AnimationType.UIWidthHeight, new[] { typeof(RectTransform) } }, + { DOTweenAnimation.AnimationType.FillAmount, new[] { typeof(Image) } }, +#endif + }; + +#if false // TK2D_MARKER + static readonly Dictionary _Tk2dAnimationTypeToComponent = new Dictionary() { + { DOTweenAnimation.AnimationType.Scale, new[] { typeof(tk2dBaseSprite), typeof(tk2dTextMesh) } }, + { DOTweenAnimation.AnimationType.Color, new[] { typeof(tk2dBaseSprite), typeof(tk2dTextMesh) } }, + { DOTweenAnimation.AnimationType.Fade, new[] { typeof(tk2dBaseSprite), typeof(tk2dTextMesh) } }, + { DOTweenAnimation.AnimationType.Text, new[] { typeof(tk2dTextMesh) } } + }; +#endif +#if false // TEXTMESHPRO_MARKER + static readonly Dictionary _TMPAnimationTypeToComponent = new Dictionary() { + { DOTweenAnimation.AnimationType.Color, new[] { typeof(TextMeshPro), typeof(TextMeshProUGUI) } }, + { DOTweenAnimation.AnimationType.Fade, new[] { typeof(TextMeshPro), typeof(TextMeshProUGUI) } }, + { DOTweenAnimation.AnimationType.Text, new[] { typeof(TextMeshPro), typeof(TextMeshProUGUI) } } + }; +#endif + + static readonly string[] _AnimationType = new[] { + "None", + "Move", "LocalMove", + "Rotate", "LocalRotate", + "Scale", + "Color", "Fade", +#if true // UI_MARKER + "FillAmount", + "Text", +#endif +#if false // TK2D_MARKER + "Text", +#endif +#if false // TEXTMESHPRO_MARKER + "Text", +#endif +#if true // UI_MARKER + "UIWidthHeight", +#endif + "Punch/Position", "Punch/Rotation", "Punch/Scale", + "Shake/Position", "Shake/Rotation", "Shake/Scale", + "Camera/Aspect", "Camera/BackgroundColor", "Camera/FieldOfView", "Camera/OrthoSize", "Camera/PixelRect", "Camera/Rect" + }; + static string[] _animationTypeNoSlashes; // _AnimationType list without slashes in values + static string[] _datString; // String representation of DOTweenAnimation enum (here for caching reasons) + + DOTweenAnimation _src; + DOTweenSettings _settings; + bool _runtimeEditMode; // If TRUE allows to change and save stuff at runtime + bool _refreshRequired; // If TRUE refreshes components data + int _totComponentsOnSrc; // Used to determine if a Component is added or removed from the source + bool _isLightSrc; // Used to determine if we're tweening a Light, to set the max Fade value to more than 1 +#pragma warning disable 414 + ChooseTargetMode _chooseTargetMode = ChooseTargetMode.None; +#pragma warning restore 414 + + static readonly GUIContent _GuiC_selfTarget_true = new GUIContent( + "SELF", "Will animate components on this gameObject" + ); + static readonly GUIContent _GuiC_selfTarget_false = new GUIContent( + "OTHER", "Will animate components on the given gameObject instead than on this one" + ); + static readonly GUIContent _GuiC_tweenTargetIsTargetGO_true = new GUIContent( + "Use As Tween Target", "Will set the tween target (via SetTarget, used to control a tween directly from a target) to the \"OTHER\" gameObject" + ); + static readonly GUIContent _GuiC_tweenTargetIsTargetGO_false = new GUIContent( + "Use As Tween Target", "Will set the tween target (via SetTarget, used to control a tween directly from a target) to the gameObject containing this animation, not the \"OTHER\" one" + ); + + #region MonoBehaviour Methods + + void OnEnable() + { + _src = target as DOTweenAnimation; + _settings = DOTweenUtilityWindow.GetDOTweenSettings(); + + onStartProperty = base.serializedObject.FindProperty("onStart"); + onPlayProperty = base.serializedObject.FindProperty("onPlay"); + onUpdateProperty = base.serializedObject.FindProperty("onUpdate"); + onStepCompleteProperty = base.serializedObject.FindProperty("onStepComplete"); + onCompleteProperty = base.serializedObject.FindProperty("onComplete"); + onRewindProperty = base.serializedObject.FindProperty("onRewind"); + onTweenCreatedProperty = base.serializedObject.FindProperty("onTweenCreated"); + + // Convert _AnimationType to _animationTypeNoSlashes + int len = _AnimationType.Length; + _animationTypeNoSlashes = new string[len]; + for (int i = 0; i < len; ++i) { + string a = _AnimationType[i]; + a = a.Replace("/", ""); + _animationTypeNoSlashes[i] = a; + } + } + + void OnDisable() + { + DOTweenPreviewManager.StopAllPreviews(); + } + + override public void OnInspectorGUI() + { + base.OnInspectorGUI(); + + GUILayout.Space(3); + EditorGUIUtils.SetGUIStyles(); + + bool playMode = Application.isPlaying; + _runtimeEditMode = _runtimeEditMode && playMode; + + GUILayout.BeginHorizontal(); + EditorGUIUtils.InspectorLogo(); + GUILayout.Label(_src.animationType.ToString() + (string.IsNullOrEmpty(_src.id) ? "" : " [" + _src.id + "]"), EditorGUIUtils.sideLogoIconBoldLabelStyle); + // Up-down buttons + GUILayout.FlexibleSpace(); + if (GUILayout.Button("▲", DeGUI.styles.button.toolIco)) UnityEditorInternal.ComponentUtility.MoveComponentUp(_src); + if (GUILayout.Button("▼", DeGUI.styles.button.toolIco)) UnityEditorInternal.ComponentUtility.MoveComponentDown(_src); + GUILayout.EndHorizontal(); + + if (playMode) { + if (_runtimeEditMode) { + + } else { + GUILayout.Space(8); + GUILayout.Label("Animation Editor disabled while in play mode", EditorGUIUtils.wordWrapLabelStyle); + if (!_src.isActive) { + GUILayout.Label("This animation has been toggled as inactive and won't be generated", EditorGUIUtils.wordWrapLabelStyle); + GUI.enabled = false; + } + if (GUILayout.Button(new GUIContent("Activate Edit Mode", "Switches to Runtime Edit Mode, where you can change animations values and restart them"))) { + _runtimeEditMode = true; + } + GUILayout.Label("NOTE: when using DOPlayNext, the sequence is determined by the DOTweenAnimation Components order in the target GameObject's Inspector", EditorGUIUtils.wordWrapLabelStyle); + GUILayout.Space(10); + if (!_runtimeEditMode) return; + } + } + + Undo.RecordObject(_src, "DOTween Animation"); + Undo.RecordObject(_settings, "DOTween Animation"); + +// _src.isValid = Validate(); // Moved down + + EditorGUIUtility.labelWidth = 110; + + if (playMode) { + GUILayout.Space(4); + DeGUILayout.Toolbar("Edit Mode Commands"); + DeGUILayout.BeginVBox(DeGUI.styles.box.stickyTop); + GUILayout.BeginHorizontal(); + if (GUILayout.Button("TogglePause")) _src.tween.TogglePause(); + if (GUILayout.Button("Rewind")) _src.tween.Rewind(); + if (GUILayout.Button("Restart")) _src.tween.Restart(); + GUILayout.EndHorizontal(); + if (GUILayout.Button("Commit changes and restart")) { + _src.tween.Rewind(); + _src.tween.Kill(); + if (_src.isValid) { + _src.CreateTween(); + _src.tween.Play(); + } + } + GUILayout.Label("To apply your changes when exiting Play mode, use the Component's upper right menu and choose \"Copy Component\", then \"Paste Component Values\" after exiting Play mode", DeGUI.styles.label.wordwrap); + DeGUILayout.EndVBox(); + } else { + GUILayout.BeginHorizontal(); + bool hasManager = _src.GetComponent() != null; + EditorGUI.BeginChangeCheck(); + _settings.showPreviewPanel = hasManager + ? DeGUILayout.ToggleButton(_settings.showPreviewPanel, "Preview Controls", styles.custom.inlineToggle) + : DeGUILayout.ToggleButton(_settings.showPreviewPanel, "Preview Controls", styles.custom.inlineToggle, GUILayout.Width(120)); + if (EditorGUI.EndChangeCheck()) { + EditorUtility.SetDirty(_settings); + DOTweenPreviewManager.StopAllPreviews(); + } + if (!hasManager) { + if (GUILayout.Button(new GUIContent("Add Manager", "Adds a manager component which allows you to choose additional options for this gameObject"))) { + _src.gameObject.AddComponent(); + } + } + GUILayout.EndHorizontal(); + } + + // Preview in editor + bool isPreviewing = _settings.showPreviewPanel ? DOTweenPreviewManager.PreviewGUI(_src) : false; + + EditorGUI.BeginDisabledGroup(isPreviewing); + // Choose target + GUILayout.BeginHorizontal(); + _src.isActive = EditorGUILayout.Toggle(new GUIContent("", "If unchecked, this animation will not be created"), _src.isActive, GUILayout.Width(14)); + EditorGUI.BeginChangeCheck(); + EditorGUI.BeginChangeCheck(); + _src.targetIsSelf = DeGUILayout.ToggleButton( + _src.targetIsSelf, _src.targetIsSelf ? _GuiC_selfTarget_true : _GuiC_selfTarget_false, + new Color(1f, 0.78f, 0f), DeGUI.colors.bg.toggleOn, new Color(0.33f, 0.14f, 0.02f), DeGUI.colors.content.toggleOn, + null, GUILayout.Width(47) + ); + bool innerChanged = EditorGUI.EndChangeCheck(); + if (innerChanged) { + _src.targetGO = null; + GUI.changed = true; + } + if (_src.targetIsSelf) GUILayout.Label(_GuiC_selfTarget_true.tooltip); + else { + using (new DeGUI.ColorScope(null, null, _src.targetGO == null ? Color.red : Color.white)) { + _src.targetGO = (GameObject)EditorGUILayout.ObjectField(_src.targetGO, typeof(GameObject), true); + } + _src.tweenTargetIsTargetGO = DeGUILayout.ToggleButton( + _src.tweenTargetIsTargetGO, _src.tweenTargetIsTargetGO ? _GuiC_tweenTargetIsTargetGO_true : _GuiC_tweenTargetIsTargetGO_false, + GUILayout.Width(131) + ); + } + bool check = EditorGUI.EndChangeCheck(); + if (check) _refreshRequired = true; + GUILayout.EndHorizontal(); + + GameObject targetGO = _src.targetIsSelf ? _src.gameObject : _src.targetGO; + + if (targetGO == null) { + // Uses external target gameObject but it's not set + if (_src.targetGO != null || _src.target != null) { + _src.targetGO = null; + _src.target = null; + GUI.changed = true; + } + } else { + GUILayout.BeginHorizontal(); + DOTweenAnimation.AnimationType prevAnimType = _src.animationType; +// _src.animationType = (DOTweenAnimation.AnimationType)EditorGUILayout.EnumPopup(_src.animationType, EditorGUIUtils.popupButton); + GUI.enabled = GUI.enabled && _src.isActive; + _src.animationType = AnimationToDOTweenAnimationType(_AnimationType[EditorGUILayout.Popup(DOTweenAnimationTypeToPopupId(_src.animationType), _AnimationType)]); + _src.autoGenerate = DeGUILayout.ToggleButton(_src.autoGenerate, new GUIContent("AutoGenerate", "If selected, the tween will be generated at startup (during Start for RectTransform position tween, Awake for all the others)")); + if (_src.autoGenerate) { + _src.autoPlay = DeGUILayout.ToggleButton(_src.autoPlay, new GUIContent("AutoPlay", "If selected, the tween will play automatically")); + } + _src.autoKill = DeGUILayout.ToggleButton(_src.autoKill, new GUIContent("AutoKill", "If selected, the tween will be killed when it completes, and won't be reusable")); + GUILayout.EndHorizontal(); + if (prevAnimType != _src.animationType) { + // Set default optional values based on animation type + _src.endValueTransform = null; + _src.useTargetAsV3 = false; + switch (_src.animationType) { + case DOTweenAnimation.AnimationType.Move: + case DOTweenAnimation.AnimationType.LocalMove: + case DOTweenAnimation.AnimationType.Rotate: + case DOTweenAnimation.AnimationType.LocalRotate: + case DOTweenAnimation.AnimationType.Scale: + _src.endValueV3 = Vector3.zero; + _src.endValueFloat = 0; + _src.optionalBool0 = _src.animationType == DOTweenAnimation.AnimationType.Scale; + break; + case DOTweenAnimation.AnimationType.UIWidthHeight: + _src.endValueV3 = Vector3.zero; + _src.endValueFloat = 0; + _src.optionalBool0 = _src.animationType == DOTweenAnimation.AnimationType.UIWidthHeight; + break; + case DOTweenAnimation.AnimationType.FillAmount: + _src.endValueFloat = 1; + break; + case DOTweenAnimation.AnimationType.Color: + case DOTweenAnimation.AnimationType.Fade: + _isLightSrc = targetGO.GetComponent() != null; + _src.endValueFloat = 0; + break; + case DOTweenAnimation.AnimationType.Text: + _src.optionalBool0 = true; + break; + case DOTweenAnimation.AnimationType.PunchPosition: + case DOTweenAnimation.AnimationType.PunchRotation: + case DOTweenAnimation.AnimationType.PunchScale: + _src.endValueV3 = _src.animationType == DOTweenAnimation.AnimationType.PunchRotation ? new Vector3(0, 180, 0) : Vector3.one; + _src.optionalFloat0 = 1; + _src.optionalInt0 = 10; + _src.optionalBool0 = false; + break; + case DOTweenAnimation.AnimationType.ShakePosition: + case DOTweenAnimation.AnimationType.ShakeRotation: + case DOTweenAnimation.AnimationType.ShakeScale: + _src.endValueV3 = _src.animationType == DOTweenAnimation.AnimationType.ShakeRotation ? new Vector3(90, 90, 90) : Vector3.one; + _src.optionalInt0 = 10; + _src.optionalFloat0 = 90; + _src.optionalBool0 = false; + _src.optionalBool1 = true; + break; + case DOTweenAnimation.AnimationType.CameraAspect: + case DOTweenAnimation.AnimationType.CameraFieldOfView: + case DOTweenAnimation.AnimationType.CameraOrthoSize: + _src.endValueFloat = 0; + break; + case DOTweenAnimation.AnimationType.CameraPixelRect: + case DOTweenAnimation.AnimationType.CameraRect: + _src.endValueRect = new Rect(0, 0, 0, 0); + break; + } + } + if (_src.animationType == DOTweenAnimation.AnimationType.None) { + _src.isValid = false; + if (GUI.changed) EditorUtility.SetDirty(_src); + return; + } + + if (_refreshRequired || prevAnimType != _src.animationType || ComponentsChanged()) { + _refreshRequired = false; + _src.isValid = Validate(targetGO); + // See if we need to choose between multiple targets +#if true // UI_MARKER + if (_src.animationType == DOTweenAnimation.AnimationType.Fade && targetGO.GetComponent() != null && targetGO.GetComponent() != null) { + _chooseTargetMode = ChooseTargetMode.BetweenCanvasGroupAndImage; + // Reassign target and forcedTargetType if lost + if (_src.forcedTargetType == DOTweenAnimation.TargetType.Unset) _src.forcedTargetType = _src.targetType; + switch (_src.forcedTargetType) { + case DOTweenAnimation.TargetType.CanvasGroup: + _src.target = targetGO.GetComponent(); + break; + case DOTweenAnimation.TargetType.Image: + _src.target = targetGO.GetComponent(); + break; + } + } else { +#endif + _chooseTargetMode = ChooseTargetMode.None; + _src.forcedTargetType = DOTweenAnimation.TargetType.Unset; +#if true // UI_MARKER + } +#endif + } + + if (!_src.isValid) { + GUI.color = Color.red; + GUILayout.BeginVertical(GUI.skin.box); + GUILayout.Label("No valid Component was found for the selected animation", EditorGUIUtils.wordWrapLabelStyle); + GUILayout.EndVertical(); + GUI.color = Color.white; + if (GUI.changed) EditorUtility.SetDirty(_src); + return; + } + +#if true // UI_MARKER + // Special cases in which multiple target types could be used (set after validation) + if (_chooseTargetMode == ChooseTargetMode.BetweenCanvasGroupAndImage && _src.forcedTargetType != DOTweenAnimation.TargetType.Unset) { + FadeTargetType fadeTargetType = (FadeTargetType)Enum.Parse(typeof(FadeTargetType), _src.forcedTargetType.ToString()); + DOTweenAnimation.TargetType prevTargetType = _src.forcedTargetType; + _src.forcedTargetType = (DOTweenAnimation.TargetType)Enum.Parse(typeof(DOTweenAnimation.TargetType), EditorGUILayout.EnumPopup(_src.animationType + " Target", fadeTargetType).ToString()); + if (_src.forcedTargetType != prevTargetType) { + // Target type change > assign correct target + switch (_src.forcedTargetType) { + case DOTweenAnimation.TargetType.CanvasGroup: + _src.target = targetGO.GetComponent(); + break; + case DOTweenAnimation.TargetType.Image: + _src.target = targetGO.GetComponent(); + break; + } + } + } +#endif + + GUILayout.BeginHorizontal(); + _src.duration = EditorGUILayout.FloatField("Duration", _src.duration); + if (_src.duration < 0) _src.duration = 0; + _src.isSpeedBased = DeGUILayout.ToggleButton(_src.isSpeedBased, new GUIContent("SpeedBased", "If selected, the duration will count as units/degree x second"), DeGUI.styles.button.tool, GUILayout.Width(75)); + GUILayout.EndHorizontal(); + _src.delay = EditorGUILayout.FloatField("Delay", _src.delay); + if (_src.delay < 0) _src.delay = 0; + _src.isIndependentUpdate = EditorGUILayout.Toggle("Ignore TimeScale", _src.isIndependentUpdate); + _src.easeType = EditorGUIUtils.FilteredEasePopup("Ease", _src.easeType); + if (_src.easeType == Ease.INTERNAL_Custom) { + _src.easeCurve = EditorGUILayout.CurveField(" Ease Curve", _src.easeCurve); + } + _src.loops = EditorGUILayout.IntField(new GUIContent("Loops", "Set to -1 for infinite loops"), _src.loops); + if (_src.loops < -1) _src.loops = -1; + if (_src.loops > 1 || _src.loops == -1) + _src.loopType = (LoopType)EditorGUILayout.EnumPopup(" Loop Type", _src.loopType); + _src.id = EditorGUILayout.TextField("ID", _src.id); + + bool canBeRelative = true; + // End value and eventual specific options + switch (_src.animationType) { + case DOTweenAnimation.AnimationType.Move: + case DOTweenAnimation.AnimationType.LocalMove: + GUIEndValueV3(targetGO, _src.animationType == DOTweenAnimation.AnimationType.Move); + _src.optionalBool0 = EditorGUILayout.Toggle(" Snapping", _src.optionalBool0); + canBeRelative = !_src.useTargetAsV3; + break; + case DOTweenAnimation.AnimationType.Rotate: + case DOTweenAnimation.AnimationType.LocalRotate: + bool isRigidbody2D = DOTweenModuleUtils.Physics.HasRigidbody2D(_src); + if (isRigidbody2D) GUIEndValueFloat(); + else { + GUIEndValueV3(targetGO); + _src.optionalRotationMode = (RotateMode)EditorGUILayout.EnumPopup(" Rotation Mode", _src.optionalRotationMode); + } + break; + case DOTweenAnimation.AnimationType.Scale: + if (_src.optionalBool0) GUIEndValueFloat(); + else GUIEndValueV3(targetGO); + _src.optionalBool0 = EditorGUILayout.Toggle("Uniform Scale", _src.optionalBool0); + break; + case DOTweenAnimation.AnimationType.UIWidthHeight: + if (_src.optionalBool0) GUIEndValueFloat(); + else GUIEndValueV2(); + _src.optionalBool0 = EditorGUILayout.Toggle("Uniform Scale", _src.optionalBool0); + break; + case DOTweenAnimation.AnimationType.FillAmount: + GUIEndValueFloat(); + if (_src.endValueFloat < 0) _src.endValueFloat = 0; + if (_src.endValueFloat > 1) _src.endValueFloat = 1; + canBeRelative = false; + break; + case DOTweenAnimation.AnimationType.Color: + GUIEndValueColor(); + canBeRelative = false; + break; + case DOTweenAnimation.AnimationType.Fade: + GUIEndValueFloat(); + if (_src.endValueFloat < 0) _src.endValueFloat = 0; + if (!_isLightSrc && _src.endValueFloat > 1) _src.endValueFloat = 1; + canBeRelative = false; + break; + case DOTweenAnimation.AnimationType.Text: + GUIEndValueString(); + _src.optionalBool0 = EditorGUILayout.Toggle("Rich Text Enabled", _src.optionalBool0); + _src.optionalScrambleMode = (ScrambleMode)EditorGUILayout.EnumPopup("Scramble Mode", _src.optionalScrambleMode); + _src.optionalString = EditorGUILayout.TextField(new GUIContent("Custom Scramble", "Custom characters to use in case of ScrambleMode.Custom"), _src.optionalString); + break; + case DOTweenAnimation.AnimationType.PunchPosition: + case DOTweenAnimation.AnimationType.PunchRotation: + case DOTweenAnimation.AnimationType.PunchScale: + GUIEndValueV3(targetGO); + canBeRelative = false; + _src.optionalInt0 = EditorGUILayout.IntSlider(new GUIContent(" Vibrato", "How much will the punch vibrate"), _src.optionalInt0, 1, 50); + _src.optionalFloat0 = EditorGUILayout.Slider(new GUIContent(" Elasticity", "How much the vector will go beyond the starting position when bouncing backwards"), _src.optionalFloat0, 0, 1); + if (_src.animationType == DOTweenAnimation.AnimationType.PunchPosition) _src.optionalBool0 = EditorGUILayout.Toggle(" Snapping", _src.optionalBool0); + break; + case DOTweenAnimation.AnimationType.ShakePosition: + case DOTweenAnimation.AnimationType.ShakeRotation: + case DOTweenAnimation.AnimationType.ShakeScale: + GUIEndValueV3(targetGO); + canBeRelative = false; + _src.optionalInt0 = EditorGUILayout.IntSlider(new GUIContent(" Vibrato", "How much will the shake vibrate"), _src.optionalInt0, 1, 50); + using (new GUILayout.HorizontalScope()) { + _src.optionalFloat0 = EditorGUILayout.Slider(new GUIContent(" Randomness", "The shake randomness"), _src.optionalFloat0, 0, 90); + _src.optionalShakeRandomnessMode = (ShakeRandomnessMode)EditorGUILayout.EnumPopup(_src.optionalShakeRandomnessMode, GUILayout.Width(70)); + } + _src.optionalBool1 = EditorGUILayout.Toggle(new GUIContent(" FadeOut", "If selected the shake will fade out, otherwise it will constantly play with full force"), _src.optionalBool1); + if (_src.animationType == DOTweenAnimation.AnimationType.ShakePosition) _src.optionalBool0 = EditorGUILayout.Toggle(" Snapping", _src.optionalBool0); + break; + case DOTweenAnimation.AnimationType.CameraAspect: + case DOTweenAnimation.AnimationType.CameraFieldOfView: + case DOTweenAnimation.AnimationType.CameraOrthoSize: + GUIEndValueFloat(); + canBeRelative = false; + break; + case DOTweenAnimation.AnimationType.CameraBackgroundColor: + GUIEndValueColor(); + canBeRelative = false; + break; + case DOTweenAnimation.AnimationType.CameraPixelRect: + case DOTweenAnimation.AnimationType.CameraRect: + GUIEndValueRect(); + canBeRelative = false; + break; + } + + // Final settings + if (canBeRelative) _src.isRelative = EditorGUILayout.Toggle(" Relative", _src.isRelative); + + // Events + AnimationInspectorGUI.AnimationEvents(this, _src); + } + EditorGUI.EndDisabledGroup(); + + if (GUI.changed) EditorUtility.SetDirty(_src); + } + + #endregion + + #region Methods + + // Returns TRUE if the Component layout on the src gameObject changed (a Component was added or removed) + bool ComponentsChanged() + { + int prevTotComponentsOnSrc = _totComponentsOnSrc; + _totComponentsOnSrc = _src.gameObject.GetComponents().Length; + return prevTotComponentsOnSrc != _totComponentsOnSrc; + } + + // Checks if a Component that can be animated with the given animationType is attached to the src + bool Validate(GameObject targetGO) + { + if (_src.animationType == DOTweenAnimation.AnimationType.None) return false; + + Component srcTarget; + // First check for external plugins +#if false // TK2D_MARKER + if (_Tk2dAnimationTypeToComponent.ContainsKey(_src.animationType)) { + foreach (Type t in _Tk2dAnimationTypeToComponent[_src.animationType]) { + srcTarget = targetGO.GetComponent(t); + if (srcTarget != null) { + _src.target = srcTarget; + _src.targetType = DOTweenAnimation.TypeToDOTargetType(t); + return true; + } + } + } +#endif +#if false // TEXTMESHPRO_MARKER + if (_TMPAnimationTypeToComponent.ContainsKey(_src.animationType)) { + foreach (Type t in _TMPAnimationTypeToComponent[_src.animationType]) { + srcTarget = targetGO.GetComponent(t); + if (srcTarget != null) { + _src.target = srcTarget; + _src.targetType = DOTweenAnimation.TypeToDOTargetType(t); + return true; + } + } + } +#endif + // Then check for regular stuff + if (_AnimationTypeToComponent.ContainsKey(_src.animationType)) { + foreach (Type t in _AnimationTypeToComponent[_src.animationType]) { + srcTarget = targetGO.GetComponent(t); + if (srcTarget != null) { + _src.target = srcTarget; + _src.targetType = DOTweenAnimation.TypeToDOTargetType(t); + return true; + } + } + } + return false; + } + + DOTweenAnimation.AnimationType AnimationToDOTweenAnimationType(string animation) + { + if (_datString == null) _datString = Enum.GetNames(typeof(DOTweenAnimation.AnimationType)); + animation = animation.Replace("/", ""); + return (DOTweenAnimation.AnimationType)(Array.IndexOf(_datString, animation)); + } + int DOTweenAnimationTypeToPopupId(DOTweenAnimation.AnimationType animation) + { + return Array.IndexOf(_animationTypeNoSlashes, animation.ToString()); + } + + #endregion + + #region GUI Draw Methods + + void GUIEndValueFloat() + { + GUILayout.BeginHorizontal(); + GUIToFromButton(); + _src.endValueFloat = EditorGUILayout.FloatField(_src.endValueFloat); + GUILayout.EndHorizontal(); + } + + void GUIEndValueColor() + { + GUILayout.BeginHorizontal(); + GUIToFromButton(); + _src.endValueColor = EditorGUILayout.ColorField(_src.endValueColor); + GUILayout.EndHorizontal(); + } + + void GUIEndValueV3(GameObject targetGO, bool optionalTransform = false) + { + GUILayout.BeginHorizontal(); + GUIToFromButton(); + if (_src.useTargetAsV3) { + Transform prevT = _src.endValueTransform; + _src.endValueTransform = EditorGUILayout.ObjectField(_src.endValueTransform, typeof(Transform), true) as Transform; + if (_src.endValueTransform != prevT && _src.endValueTransform != null) { +#if true // UI_MARKER + // Check that it's a Transform for a Transform or a RectTransform for a RectTransform + if (targetGO.GetComponent() != null) { + if (_src.endValueTransform.GetComponent() == null) { + EditorUtility.DisplayDialog("DOTween Pro", "For Unity UI elements, the target must also be a UI element", "Ok"); + _src.endValueTransform = null; + } + } else if (_src.endValueTransform.GetComponent() != null) { + EditorUtility.DisplayDialog("DOTween Pro", "You can't use a UI target for a non UI object", "Ok"); + _src.endValueTransform = null; + } +#endif + } + } else { + _src.endValueV3 = EditorGUILayout.Vector3Field("", _src.endValueV3, GUILayout.Height(16)); + } + if (optionalTransform) { + if (GUILayout.Button(_src.useTargetAsV3 ? "target" : "value", EditorGUIUtils.sideBtStyle, GUILayout.Width(44))) _src.useTargetAsV3 = !_src.useTargetAsV3; + } + GUILayout.EndHorizontal(); +#if true // UI_MARKER + if (_src.useTargetAsV3 && _src.endValueTransform != null && _src.target is RectTransform) { + EditorGUILayout.HelpBox("NOTE: when using a UI target, the tween will be created during Start instead of Awake", MessageType.Info); + } +#endif + } + + void GUIEndValueV2() + { + GUILayout.BeginHorizontal(); + GUIToFromButton(); + _src.endValueV2 = EditorGUILayout.Vector2Field("", _src.endValueV2, GUILayout.Height(16)); + GUILayout.EndHorizontal(); + } + + void GUIEndValueString() + { + GUILayout.BeginHorizontal(); + GUIToFromButton(); + _src.endValueString = EditorGUILayout.TextArea(_src.endValueString, EditorGUIUtils.wordWrapTextArea); + GUILayout.EndHorizontal(); + } + + void GUIEndValueRect() + { + GUILayout.BeginHorizontal(); + GUIToFromButton(); + _src.endValueRect = EditorGUILayout.RectField(_src.endValueRect); + GUILayout.EndHorizontal(); + } + + void GUIToFromButton() + { + if (GUILayout.Button(_src.isFrom ? "FROM" : "TO", EditorGUIUtils.sideBtStyle, GUILayout.Width(90))) _src.isFrom = !_src.isFrom; + GUILayout.Space(16); + } + + #endregion + } + + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + // ███ INTERNAL CLASSES ████████████████████████████████████████████████████████████████████████████████████████████████ + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + + [InitializeOnLoad] + static class Initializer + { + static Initializer() + { + DOTweenAnimation.OnReset += OnReset; + } + + static void OnReset(DOTweenAnimation src) + { + DOTweenSettings settings = DOTweenUtilityWindow.GetDOTweenSettings(); + if (settings == null) return; + + Undo.RecordObject(src, "DOTweenAnimation"); + src.autoPlay = settings.defaultAutoPlay == AutoPlay.All || settings.defaultAutoPlay == AutoPlay.AutoPlayTweeners; + src.autoKill = settings.defaultAutoKill; + EditorUtility.SetDirty(src); + } + } +} diff --git a/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs.meta b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs.meta new file mode 100644 index 0000000..d2d7eee --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e0203fd81362bab4d842d87ad09ee76e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs new file mode 100644 index 0000000..73d8a6b --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs @@ -0,0 +1,265 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2015/03/12 16:03 + +using System; +using System.Collections.Generic; +using DG.DemiEditor; +using DG.DemiLib; +using DG.Tweening; +using DG.Tweening.Core; +using UnityEditor; +using UnityEditorInternal; +using UnityEngine; +using Object = UnityEngine.Object; + +namespace DG.DOTweenEditor +{ + public static class DOTweenPreviewManager + { + static bool _previewOnlyIfSetToAutoPlay = true; + static readonly Dictionary _AnimationToTween = new Dictionary(); + static readonly List _TmpKeys = new List(); + + #region Public Methods & GUI + + /// + /// Returns TRUE if its actually previewing animations + /// + public static bool PreviewGUI(DOTweenAnimation src) + { + if (EditorApplication.isPlaying) return false; + + Styles.Init(); + + bool isPreviewing = _AnimationToTween.Count > 0; + bool isPreviewingThis = isPreviewing && _AnimationToTween.ContainsKey(src); + + // Preview in editor + GUI.backgroundColor = isPreviewing + ? new DeSkinColor(new Color(0.49f, 0.8f, 0.86f), new Color(0.15f, 0.26f, 0.35f)) + : new DeSkinColor(Color.white, new Color(0.13f, 0.13f, 0.13f)); + GUILayout.BeginVertical(Styles.previewBox); + DeGUI.ResetGUIColors(); + GUILayout.BeginHorizontal(); + GUILayout.Label("Preview Mode - Experimental", Styles.previewLabel); + _previewOnlyIfSetToAutoPlay = DeGUILayout.ToggleButton( + _previewOnlyIfSetToAutoPlay, + new GUIContent("AutoPlay only", "If toggled only previews animations that have AutoPlay turned ON"), + Styles.btOption + ); + GUILayout.EndHorizontal(); + GUILayout.Space(1); + // Preview - Play + GUILayout.BeginHorizontal(); + EditorGUI.BeginDisabledGroup( + isPreviewingThis || src.animationType == DOTweenAnimation.AnimationType.None + || !src.isActive || _previewOnlyIfSetToAutoPlay && !src.autoPlay + ); + if (GUILayout.Button("► Play", Styles.btPreview)) { + if (!isPreviewing) StartupGlobalPreview(); + AddAnimationToGlobalPreview(src); + } + EditorGUI.EndDisabledGroup(); + EditorGUI.BeginDisabledGroup(isPreviewing); + if (GUILayout.Button("► Play All on GameObject", Styles.btPreview)) { + if (!isPreviewing) StartupGlobalPreview(); + DOTweenAnimation[] anims = src.gameObject.GetComponents(); + foreach (DOTweenAnimation anim in anims) AddAnimationToGlobalPreview(anim); + } + if (GUILayout.Button("► Play All in Scene", Styles.btPreview)) { + if (!isPreviewing) StartupGlobalPreview(); + // DOTweenAnimation[] anims = Object.FindObjectsOfType(); // OBSOLETE + DOTweenAnimation[] anims = DeEditorCompatibilityUtils.FindObjectsOfType(); + foreach (DOTweenAnimation anim in anims) AddAnimationToGlobalPreview(anim); + } + EditorGUI.EndDisabledGroup(); + GUILayout.EndHorizontal(); + // Preview - Stop + GUILayout.BeginHorizontal(); + EditorGUI.BeginDisabledGroup(!isPreviewingThis); + if (GUILayout.Button("■ Stop", Styles.btPreview)) { + if (_AnimationToTween.ContainsKey(src)) StopPreview(_AnimationToTween[src].tween); + } + EditorGUI.EndDisabledGroup(); + EditorGUI.BeginDisabledGroup(!isPreviewing); + if (GUILayout.Button("■ Stop All on GameObject", Styles.btPreview)) { + StopPreview(src.gameObject); + } + if (GUILayout.Button("■ Stop All in Scene", Styles.btPreview)) { + StopAllPreviews(); + } + EditorGUI.EndDisabledGroup(); + GUILayout.EndHorizontal(); + if (isPreviewing) { + int playingTweens = 0; + int completedTweens = 0; + int pausedTweens = 0; + foreach (KeyValuePair kvp in _AnimationToTween) { + Tween t = kvp.Value.tween; + if (t.IsPlaying()) playingTweens++; + else if (t.IsComplete()) completedTweens++; + else pausedTweens++; + } + GUILayout.Label("Playing Tweens: " + playingTweens, Styles.previewStatusLabel); + GUILayout.Label("Completed Tweens: " + completedTweens, Styles.previewStatusLabel); +// GUILayout.Label("Paused Tweens: " + playingTweens); + } + GUILayout.EndVertical(); + + return isPreviewing; + } + +#if !(UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5) + public static void StopAllPreviews(PlayModeStateChange state) + { + StopAllPreviews(); + } +#endif + + public static void StopAllPreviews() + { + _TmpKeys.Clear(); + foreach (KeyValuePair kvp in _AnimationToTween) { + _TmpKeys.Add(kvp.Key); + } + StopPreview(_TmpKeys); + _TmpKeys.Clear(); + _AnimationToTween.Clear(); + + DOTweenEditorPreview.Stop(); +#if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 + UnityEditor.EditorApplication.playmodeStateChanged -= StopAllPreviews; +#else + UnityEditor.EditorApplication.playModeStateChanged -= StopAllPreviews; +#endif +// EditorApplication.playmodeStateChanged -= StopAllPreviews; + + InternalEditorUtility.RepaintAllViews(); + } + +#endregion + +#region Methods + + static void StartupGlobalPreview() + { + DOTweenEditorPreview.Start(); +#if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 + UnityEditor.EditorApplication.playmodeStateChanged += StopAllPreviews; +#else + UnityEditor.EditorApplication.playModeStateChanged += StopAllPreviews; +#endif +// EditorApplication.playmodeStateChanged += StopAllPreviews; + } + + static void AddAnimationToGlobalPreview(DOTweenAnimation src) + { + if (!src.isActive) return; // Ignore sources whose tweens have been set to inactive + if (_previewOnlyIfSetToAutoPlay && !src.autoPlay) return; + + Tween t = src.CreateEditorPreview(); + if (t == null) return; + _AnimationToTween.Add(src, new TweenInfo(src, t, src.isFrom)); + // Tween setup + DOTweenEditorPreview.PrepareTweenForPreview(t); + } + + static void StopPreview(GameObject go) + { + _TmpKeys.Clear(); + foreach (KeyValuePair kvp in _AnimationToTween) { + if (kvp.Key.gameObject != go) continue; + _TmpKeys.Add(kvp.Key); + } + StopPreview(_TmpKeys); + _TmpKeys.Clear(); + + if (_AnimationToTween.Count == 0) StopAllPreviews(); + else InternalEditorUtility.RepaintAllViews(); + } + + static void StopPreview(Tween t) + { + TweenInfo tInfo = null; + foreach (KeyValuePair kvp in _AnimationToTween) { + if (kvp.Value.tween != t) continue; + tInfo = kvp.Value; + _AnimationToTween.Remove(kvp.Key); + break; + } + if (tInfo == null) { + Debug.LogWarning("DOTween Preview ► Couldn't find tween to stop"); + return; + } + if (tInfo.isFrom) { + int totLoops = tInfo.tween.Loops(); + if (totLoops < 0 || totLoops > 1) { + tInfo.tween.Goto(tInfo.tween.Duration(false)); + } else tInfo.tween.Complete(); + } else tInfo.tween.Rewind(); + tInfo.tween.Kill(); + EditorUtility.SetDirty(tInfo.animation); // Refresh views + + if (_AnimationToTween.Count == 0) StopAllPreviews(); + else InternalEditorUtility.RepaintAllViews(); + } + + // Stops while iterating inversely, which deals better with tweens that overwrite each other + static void StopPreview(List keys) + { + for (int i = keys.Count - 1; i > -1; --i) { + DOTweenAnimation anim = keys[i]; + TweenInfo tInfo = _AnimationToTween[anim]; + if (tInfo.isFrom) { + int totLoops = tInfo.tween.Loops(); + if (totLoops < 0 || totLoops > 1) { + tInfo.tween.Goto(tInfo.tween.Duration(false)); + } else tInfo.tween.Complete(); + } else tInfo.tween.Rewind(); + tInfo.tween.Kill(); + EditorUtility.SetDirty(anim); // Refresh views + _AnimationToTween.Remove(anim); + } + } + +#endregion + + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + // ███ INTERNAL CLASSES ████████████████████████████████████████████████████████████████████████████████████████████████ + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + + class TweenInfo + { + public DOTweenAnimation animation; + public Tween tween; + public bool isFrom; + public TweenInfo(DOTweenAnimation animation, Tween tween, bool isFrom) + { + this.animation = animation; + this.tween = tween; + this.isFrom = isFrom; + } + } + + static class Styles + { + static bool _initialized; + + public static GUIStyle previewBox, previewLabel, btOption, btPreview, previewStatusLabel; + + public static void Init() + { + if (_initialized) return; + + _initialized = true; + + previewBox = new GUIStyle(GUI.skin.box).Clone().Padding(1, 1, 0, 3) + .Background(DeStylePalette.squareBorderCurved_darkBorders).Border(7, 7, 7, 7); + previewLabel = new GUIStyle(GUI.skin.label).Clone(10, FontStyle.Bold).Padding(1, 0, 3, 0).Margin(3, 6, 0, 0).StretchWidth(false); + btOption = DeGUI.styles.button.bBlankBorderCompact.MarginBottom(2).MarginRight(4); + btPreview = EditorStyles.miniButton.Clone(Format.RichText); + previewStatusLabel = EditorStyles.miniLabel.Clone().Padding(4, 0, 0, 0).Margin(0); + } + } + } +} diff --git a/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs.meta b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs.meta new file mode 100644 index 0000000..53780cc --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 22292a5f27a9a644ba9e6ad1bf863531 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPro.EditorScripts.asmdef b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPro.EditorScripts.asmdef new file mode 100644 index 0000000..086d099 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPro.EditorScripts.asmdef @@ -0,0 +1,11 @@ +{ + "name": "DOTweenPro.EditorScripts", + "references": [ + "DOTween.Modules", + "DOTweenPro.Scripts" + ], + "includePlatforms": [ + "Editor" + ], + "autoReferenced": false +} diff --git a/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPro.EditorScripts.asmdef.meta b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPro.EditorScripts.asmdef.meta new file mode 100644 index 0000000..1987add --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPro.EditorScripts.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f204545569d26d24e977ab29ba7ee4eb +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML new file mode 100644 index 0000000..ad80aef --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML @@ -0,0 +1,18 @@ + + + + DOTweenProEditor + + + + + Custom colors + + + + + Needs to be overridden in order to initialize new styles added from inherited classes + + + + diff --git a/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML.meta b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML.meta new file mode 100644 index 0000000..f37a133 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 753a4f4ed73b17143923101226957756 +TextScriptImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll new file mode 100644 index 0000000000000000000000000000000000000000..a97f9a285d31bfafb31ff74c1096b9af5f5e370b GIT binary patch literal 35840 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 literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.meta b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.meta new file mode 100644 index 0000000..62ab8c0 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: a6402d4311c862b4eb1325590d6466af +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTweenPro/readme.txt b/Assets/Plugins/Demigiant/DOTweenPro/readme.txt new file mode 100644 index 0000000..9837c95 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/readme.txt @@ -0,0 +1,35 @@ +DOTween and DOTween Pro are copyright (c) 2014-2018 Daniele Giardini - Demigiant + +// IMPORTANT!!! ///////////////////////////////////////////// +// Upgrading DOTween from versions older than 1.2.000 /////// +// (or DOTween Pro older than 1.0.000) ////////////////////// +------------------------------------------------------------- +If you're upgrading your project from a version of DOTween older than 1.2.000 (or DOTween Pro older than 1.0.000) please follow these instructions carefully. +1) Import the new version in the same folder as the previous one, overwriting old files. A lot of errors will appear but don't worry +2) Close and reopen Unity (and your project). This is fundamental: skipping this step will cause a bloodbath +3) Open DOTween's Utility Panel (Tools > Demigiant > DOTween Utility Panel) if it doesn't open automatically, then press "Setup DOTween...": this will run the upgrade setup +4) From the Add/Remove Modules panel that opens, activate/deactivate Modules for Unity systems and for external assets (like TextMesh Pro) + +// GET STARTED ////////////////////////////////////////////// + +- After importing a new DOTween update, select DOTween's Utility Panel from the "Tools/Demigiant" menu (if it doesn't open automatically) and press the "Setup DOTween..." button to activate/deactivate Modules. You can also access a Preferences Tab from there to choose default settings for DOTween. + +// VISUAL SCRIPTING (PRO ONLY) +- To animate a gameObject, select it and choose "Add Component > DOTween > DOTween Animation" +- To animate a gameObject along a path, select it and choose "Add Component > DOTween > DOTween Path" + +// SCRIPTING +- In your code, add "using DG.Tweening" to each class where you want to use DOTween. +- You're ready to tween. Check out the links below for full documentation and license info. + + +// LINKS /////////////////////////////////////////////////////// + +DOTween website (documentation, examples, etc): http://dotween.demigiant.com +DOTween license: http://dotween.demigiant.com/license.php +DOTween repository (Google Code): https://code.google.com/p/dotween/ +Demigiant website (documentation, examples, etc): http://www.demigiant.com + +// NOTES ////////////////////////////////////////////////////// + +- DOTween's Utility Panel can be found under "Tools > Demigiant > DOTween Utility Panel" and also contains other useful options, plus a tab to set DOTween's preferences \ No newline at end of file diff --git a/Assets/Plugins/Demigiant/DOTweenPro/readme.txt.meta b/Assets/Plugins/Demigiant/DOTweenPro/readme.txt.meta new file mode 100644 index 0000000..6a87c35 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/readme.txt.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: aa8f07903bf128e44a7d0b91a63dedab +TextScriptImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib.meta b/Assets/Plugins/Demigiant/DemiLib.meta new file mode 100644 index 0000000..edcf2cc --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 5a499e4809836274eb38cd99b370a2c1 +labels: +- Tween +- Tweening +- Animation +- HOTween +- Paths +- iTween +- DFTween +- LeanTween +- Ease +- Easing +- Shake +- Punch +- 2DToolkit +- TextMeshPro +- Text +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core.meta b/Assets/Plugins/Demigiant/DemiLib/Core.meta new file mode 100644 index 0000000..86e5075 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 03513cf143bb144409fbb3a51ec77b1b +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.dll b/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..4ab2cf38d7001682e365dcdbcfbb3b0b50aa319f GIT binary patch literal 14848 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 Q88&@9vHx`a(M8}t0mTXY5C8xG literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.dll.meta b/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.dll.meta new file mode 100644 index 0000000..1ed9199 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.dll.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 54be29b67d0d29a478da2c6e5c62f091 +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.xml b/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.xml new file mode 100644 index 0000000..6322fe3 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.xml @@ -0,0 +1,231 @@ + + + + DemiLib + + + + + Class attribute + Sets the script execution order index + + + + + Sets the script execution order for this class + + Script execution order index + + + + Set when calling DeGUI.BeginGUI + + + + + Stores a color palette, which can be passed to default DeGUI layouts when calling DeGUI.BeginGUI, + and changed at any time by calling DeGUI.ChangePalette. + You can inherit from this class to create custom color palettes with more hColor options. + + + + + Converts a HEX color to a Unity Color and returns it + + The HEX color, either with or without the initial # (accepts both regular and short format) + + + + Global colors + + + + + Background colors + + + + Editor background color + + + + Content colors + + + + + Toggle button specific colors + + + + + Various Input utils + + + + + Returns a number key int if a number key was pressed in this frame, or -1 otherwise + + + + + + Extend this to replicate Unity's Scope system with any Unity version. + Thanks to Dmitriy Yukhanov for pointing this out and creating an initial version. + Expand this class to create scopes. + Example: + public class VBoxScope : DeScope + { + public VBoxScope(GUIStyle style) + { + BeginVBox(style); + } + + protected override void CloseScope() + { + EndVBox(); + } + } + Usage: + using (new VBoxScope(myStyle) { + // Do something + } + + + + + Contains both free and pro skins color variations, + and automatically returns the correct one when converted to Color + + + + + Used by DeHierarchy + + + + + Returns a list of all items whose gameObject is NULL, or NULL if there's no missing gameObjects. + + + + + If the item exists sets it, otherwise first creates it and then sets it + + + + + If the item exists sets it, otherwise first creates it and then sets it + + + + + If the item exists sets it, otherwise first creates it and then sets it + + + + + Returns TRUE if the item existed and was removed. + + + + + Returns TRUE if the item existed and was changed. + + + + + Returns the customizedItem for the given gameObject, or NULL if none was found + + + + + Returns the color corresponding to the given + + + + Must be univocal + + + Node position in editor GUI + + + Ids of all forward connected nodes. Length indicates how many forward connections are allowed. + Min length represents available connections from node. + + + + A serializable struct including a min and a max int value + + + + Min value + + + Max value + + + + Creates a new Range + + + + + Returns a random value within this range (min/max included) + + + + + + + + A serializable struct including a min and a max float value + + + + Min value + + + Max value + + + + Creates a new Range + + + + + Returns a random value within this range (min/max included) + + + + + + + + Returns ONLY the Components in the children, and ignores the parent. + + If TRUE also includes inactive children + + + + Returns the Component only if it's in a child, and ignores the parent. + + If TRUE also searches inactive children + + + + Returns a HEX version of the given Unity Color, without the initial # + + If TRUE, also converts the alpha value and returns a hex of 8 characters, + otherwise doesn't and returns a hex of 6 characters + + + + Returns a HEX version of the given Unity Color, without the initial # + + If TRUE, also converts the alpha value and returns a hex of 8 characters, + otherwise doesn't and returns a hex of 6 characters + + + diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.xml.meta b/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.xml.meta new file mode 100644 index 0000000..473a9b5 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.xml.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 9bf2564c9817bb34988453ae948954d2 +TextScriptImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor.meta new file mode 100644 index 0000000..11f8e33 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 77fbbad1c51d68f4c844d26743104b07 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.dll b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.dll new file mode 100644 index 0000000000000000000000000000000000000000..483f860638b4b011f61d588bb2eb60911654f27e GIT binary patch literal 195072 zcmd?S33wdEwLjYG?&+TCkz}=IG^53~WPwC8i@eAf*#=uSOMtM45X&ZD7DJ4IhLIt_ zFhXR#A%>6zk~o17bIHCZHya@#}k&%y4=5L+gL}3 zb7(;N^y4(`sa-#A-dIw&D@b@mzJ&g{~y{JiqfZ%V^(Awd=vfa=YhOmQq4>egA>@@r* z#Nv(Z+;;6w_kVj{ zQv=}2!Mq1SI$`+Fp%~ZnjG#RhrQk)s1|R@NpgFy z2}Aefy&p%xGeBqc13-=9+)d6_pk8x1X}=4arLFFk&Sd{+(?&hx#Y@b`=qjaUKfWK}LHoTj){*~EidqPLcY zLSwsmBy2ZmUgnx}THDRXT1EHYb8FaK@smz*Hp_g`c@XV}WaqRS#%*mkO_I%GOST)v znRqj+)4?>InGUiyr+xK7H>&o<@L2nrLO`H3!g5tbIZ_l-&(zMyU96~A&oD!1XN1q& z&URYT&Lmv5vpA$#y3LXuDHdW4PT`7f{8ZT9ATV=HwY7|I+iw|%x!fBykNMggi56!a zJXL#x9*Q^M`6^9BFlcY2Q4ksvxBkCSetq+4lAthqW3u&tgOmLn>Lx#n9G)Hb+=wFjO$cIBmedqTBXYeZFb zAk1np423e;+Z%a$_tqm%-`*Hn|6X+2fuaq{i3yjt%%4*KyeY+q_r{6$%}+d*p~)Gh zmLCYEw2Q2XCM5TJMtaR%B)(^)FBJs!cbY*DMbwgt-=B;hM(Yiu^|eN$tS#*gkS_mb zPylANrue#e6oOu~_Xbc`w$59Wpv96QV)?{a;C+ceA*Bq1VR1JVS<^HL3;>c6j7TrU z)q8H4p&hH(({vBI&Z_A7(o82}>AnZkK%D;Ja23agW=eSH_gPRk)^r(euY$+U8DwIX zL3)YwUIcpRj9k6iRw~f4St3Mize<$x1w}>F_Q&8ayJFBp$*g$Ts#GFxb)H0*wj^3w zQeDvlMzCrVbDZ03;M48nd)QFZyc`WpE9Iv_cmy{IvkEJlnLxkUrY5t9wTQCL;BY zh6@rSpxSPEkb>o{V~j%SRy~o|E-lKTu5x#?E+BtBq7*mzlX%TAOGA=jioGmHi3nfE!k_Ip>Wb3)Ni?G9HGjb7wi>3 zES8SfsSPX-j95YTr9Phw`mpER8H&2#9|I0_pTZ{b5zBskyM)B4j~VH5o8hB%JEP4( z!*>MDKMp{oHAB%y6(YzlYEE3%R_$FVtdbs=cO?K?9@HahxK&a};MLSVf%q`|UGI3L zlJ}m2XQizqKJNs092MC+kpXEbX{S7Fc_+ayWW<82bXf&!aLj)$pi++^_+}ATv$glI zxXX)hX*8uUoMvNmF!f`ImP&zNJUgR;$9wJAfp()Lb8karp%r{mG#VMtcqMG_hB zOaN4U!+=h6Sf10*gTt}>v+%l=_0IC2A3BS~)iocu(1@+L*+P4{Y^Qg3Wc;&%Uwbjq zR{3%>!lnmJZFw(1*eFWy&E*)J0HH1 zU3(wggDchS1CdpXZoBsIyaCzTQ_aZA5_|$WV`)e2!zs|b05nI-+1j_89`8bc93g5o zZFK)40F`k*QY^-Xa--yb0DWH#Z*&;YMWU#>Ybi^+Qdjk!4JKdGr?-)EdBm>mLYOF; zO0R7Xu94;zv>5+lAhkd0S^gz(jAX0ddK7(>W%WXOfi@^EU0b4!pT*{* zX}8Y6@G~pf+Tk{`D9u&(U^!SGw3#)_K=$9uRsTK4{<|5aJsm}<&WTc1QAVW8M;%su zDtaf^g8||=-I})@?^$SX)4LR|YRX#%D#g-C@}6Np!P|k5(b5XC=}3F=zJVtU}H%<= zpOAg(xM~HyzchV^z}J%r!+PK=H+^>5Ddz0*a50xIFG9!$gs9S4P#DRjb9OT=*RCAt zri!=R2APi(28ZtSuOMR`Zb$97Fw*LOpak5G#r`CNGGKV(*My{3|BSD>u{+()+6%(i zl@2$Rb6hKzo%k1`cLud1x4>P{vv!Yw3hn~Y&ABcmCb!Fjo&*!rXkoNul})!|f5pe#WD{ZV&kBQT(`hxbw=LL0j5@=7MS{_Qxktv-aZG z4nO}0e;WSt@!kqg9R63p!LxQ*3{IQ)Fu;&;ccvdT-?6f`uFUr%P=(rWBrt7zFq+Gb zWsg6`eqr7?OOeN&`-yXs(5^W0@~;JE>C-d-pf)^|tyKy~5Ub#sZv+vbW8^RwQxa~D zH59!8^j$|Izum}}AyyPrbRD%#=^8^UO#eDCQtdFr>J(4K)eFi*D^5wJ>uNKklY)^! z6SC^o{sJO~QkoF5Q?hE?9qr1Zhn~WjS&0fWQZ0_ojKi_dT8-*BjS-|XGRqJT)E%q-XaQm|cXckPFWqgb_Asmlx4 zPr50FsrsbUj778I>!{Z$)SXmNk4$A-+z6_*UxQ9sx{HiFUDKNd+`9=6-9z_N_Ff7n zs#~DDAJC3^N>wN7!GDHqVR9l?5BQFxbADF4(u_$*Ne{!T4Il>T{RhGW>7f=oCF%0p zZRvNA&2-werT2G(&LwA8pF}P!XLcYssfV$KGr- zM=~JzY9xUQP5pHm_=7d*&cJ>%t3}=4g|OP94%lsnDqE2O5~}-K5$0Ic_S#Z}O99f{ zXAF^i&FKt!ZKWIE3);xFJAsDg z!+$LtW~ImSUq^@P@@&iWUk`67i2Me)M|E$bG{MU1XGKGiu>9Le@4=bH`+6A2~aM){!af6yt6W#YcF<`SK67~ zIWsLNP#;kEj;bSQXQuZ?ct=|T+o|Rn-S!%>;lgxR@d z{7~;rpoBuhtd)huyf?#lHL7S^X`L?W%_@4knO0CAFq+d)c~M{A!gv@wPh#1v{#JOf z_O>3cj?ALv`E+5CbPKhYg+*S?X9lz59qHN|nh?~&=D7OP1vM5N1ASBhclyqNe4lRn zcfoCN{A;yaY5#5TNj%-Z8_pGvS^;k_L|oKH%n7}nk#&C$UL*cJcxFfZf5xjl@864; z?q$%xMlAoGM9}?r;pM-ZZi!+Gl5(g0_W*8GZN1>3zB({|--lN<pPUg6ivHXm)L@&`yT~X&p4DgIne!&!8=;&_x?piW?eW5 zaab2-4gtn6DXg5>iwYIgi}$Gtt?ET3Z=o);R@_?$#w??h9YmU4FK(d$rbw6h8zNmi z%&J%W8cP}lg6dW2wrZFy!lI2D>=8qufl+#z4Mroal!gk0Q4sa(f;R8tpi${A-ZBXe zMhXCY0)V^9`Mm@vt@uemcEUIt;0XF$JN*U>o;N|Hl~Xg`rw~RvA#8PnYgJp*m90Hq zE;=rPrS=w<89K(0E5WO-COJ-%*cr6BPs7z5ZNJqjv48(L_=Gf2=k7x&P2m3x#}kmg z7BRgVovyZjzH=$v{|vdZ%4@nU?|wSbiMe)=pOKdQn66!Jmka@cnUP1%M9j~U<@-_D ztbGL-fI(%mD(Pfy*Kd9L>8GV0tGaiM_MH1w-D6oj32sp@{#Ru+ac67JZ*Jy1Sz0W? zpv1;5!4x>89@r>_Tnd8=(@pKx)p)Taf&S-^y~6Si@eHn26M5nhTxEe^5Vt9pg77#e zbYDhAJdRR|m-hP2$iIZCsY6xvOWQQ<(EszY|8A=UzHk5uAg9fuUlREIDt zpp8J5&$6|%16pp`Z)i`e*1jYytvy+H!g>?$alVQkN9mel@g7CmYFf>EfTd5Jk)%S^ zQj{r4H7{o;XW*V-y|Alo#+O#Ez2M1 zKWQqB)F!AX^I~0f)J}*zu&7r*0bX5m^^fG0_O~L!&g(!;Mn5dgUIS$bixv$MGd4x& zh>ozJ3{>&QU2FB*5ILjb%Di39o`L0S_KzPi1Gde4xJ>8T;WU|>!Wy3y`1)EV&B`Se zDO^FFKay-#8J&UgVdf78)0Xv~HBWHPA#Y!ep0zEPaWfd*WK@sHvfHpwjpNYAs z6YzsgE`KbC3HXt*gDZ#MAlkDi2dGY#13IEsQ9_jr)+XHt`a`v+4`~yz{((~pG=3u+a;wx%u_3vDX)26vdFg7O zOx}MGRZ+DyU3(QIgXnIwmCA#{bFRi1c|cjA`K*P}efhjJ&0qA&|BB$nVr24NVz!NQise4na_xIkAec+rZrcAc0=Yey6_p)D6_h%b_a5&w#hxke0s`uVc=d^M}fI?Y!`!+{SOUhO5|v< zc-JH_gB4>oRA+`r`w!2m1-Xi2i;|&*iDeS8udW4;L*P+VNd>xW@9`lQ-dB*x+C^YR z_RCO`7<$$27Ty%w)IV13voQ!8yENX4D=+`6Aad*WSt`Hf)Urp$Z}xLy8LBZJaxZ_n_YENHMxzWQ-E36&@*V=LQH4_`tMq-= z3!yRRo!0uSU|<#ivT#}umjV!5LC*_m*yO=JQ=~4*=yj$urPs;8k!uc?T%C+ovbwz0 zgxqH2Vl|-1#Tvd+jkS1{MrYRHmEUKS&J-6%RN|;Vhrt)m0~CGVMDGdEPat}d#u)^z z=+X0rnd1CB*LsY+nd&r^Z$(dDj|CAe3_{&8wM&C?5H7fyh}mPym^}_;%~@02pbUW+MYnR)G{>Ryj|Cv)$VZ?)-1zv1nX*2HX9I;f(?Y+s84?y#l1ry$2+jw%%Z> zQJVg@5zR3a;JFA|suD69^vq1+QC%^!0WV{DQLx0*I2n-QEQ8BA0b9i>0UEP{91$Gv zjksDguBaCpry!=np=-_CO-);1c>fM&Dj7Jw14lXK!H#qS0l~~S*I+=R#i&ib7yeH3 zI0G*zN2w7n!F%HMc*OEFu4rT$r;^|6B;6b6_8vh3Xy2N)>Oz4Q8%#%>F|6+atK0DS z^1hD;G+5(wk{U}!Dkyj%2`>s9G=6~SIaB4~hjga`J}JpoK;>BMXD|d@`Tq<5CgA3 z9CuGnKL$W~uoVGrZK}ZIXPAr4W zZp2SAgUjL>dbAT1?)7osLg_|>EqufqS&m#V5sqTS{cuL`3wHpY)Lb5^%CJU;%>b&X#l zD~ipfv5I)ee)O4ZMXkpB4@504t*Y2PvDld+dYH@E6BLT_9vuj~2Bn7UVZqf;tg zY^vWvYL&3Bsm8h#Hc^R&$-nj}YM{mH&9*Bz%iG#S?T~i}J|h|Td{&MJXK3!^)zU#$JpO-zjnWJapaAZO$Nx3q z@5zhx(<7!)VRjN&JHaD@2VBQ@AH`mVi=2k2#uk4^ZhTnPQvUS7yufDf# z_=8_McKz_h7mu!=eiHO&X&xzpr9bOEq9FAljK^*idjb$Pt-x|N8x#(VO_mHSP)bej zG#h8&T^gHt0bX3zDU@#3D=ED=)>$gf5?GksM2v!Xipn#l>d$YO$D5TK?ZBz#XNX(L zD$ws3T)^lfK>58wA<;P~7ke*8j;meXHGE~fYw=Q(<241!i4i{YJVc%ve&`z~uiIyW za!o}G0?$eYl1eoQe12=-W{Fwp5b9VQCn}g-r@)qg@zyX}SzFt3Xv9gRu6Gu}qn-2qUEAZyi+MhJvnZYwnC41-xR6$Gz~ zg6Rx{DH#T@kAmrprJtEhA!pthND}0|Gx44P?*WVd4HgF`(L=>p=D>Y$Xzix}bj=~o zlTIC%hKF`1e@lWN#!ni5s21{@cq<%WY$F&bN+zV*%(B`{%*Ml*0~N+vQ@*4bNqBz< zJk7GkluwnGQR&-X_*gR_L6IUS8--SpYa(r_Wm4z74UmTSJUnb!2buws{L=@QO&#aJ zu?oKl{Fu$7@I$|%P2vYtEgQ$7demXSAx*@@I68hNeinWd8)5DEb>i2BALi<1qO07) z=Gj~7EA^KKN()PiN{dT_nNm;b_~}1W0<3yU3zR;q?{&k;f^lp5F9^mK>A&J-a1|Y! zzm49l{@>vD|IV=2>9Q7F#g;qF15E!9VAm@U7oaV5$_#99zuZ6YUW$^&+zGbE$)FZn zd7eU)YKOJ=x@NMvj@4iwJC&0xe;?lZ)iC_pvbO&;JRb7zaOS6&wljVkJd#qz*Wpxa zn}WCEv9wCVGZ0XUwoqEW2|z_sL4|cH=LdKeJUP=ETq!yAZF*DX!@5&mnoi5L)Y3I4 zh+tP+m=3okZ9ju>pgDL|_hKqNwXe|ETqki&=r0$-$s+iA$Ux1Py;f$;4Wclu%`!=MAl=t{&FPJ zUQYSz-YqB_?%bn|9QkM=8Mcx6c9p}Pi^gQgLYc!U&NX;>Po@-y<$N+a@-DPvQd zB>1vKE381?x}hPNxome^EOYch^8{I?PZ%2pBiahXz@WGj67wDd3MLP92!_dcZvY|5 zx1kLYld>~R?{+0T-Fr=t5XU**0#LA|ZL{e~{saMHHoPtt2>E<_TM%Y=yAb<;MG z1;rk@U_$i8DUf2E0{x1D%EWC4F9$}ASUGrB%_?#f)_LJ4C1oE;QQD1u72AuCr50@3 zS1lu-E)I!lQX~HGR7g%Ea#lO{GF(JDkU@+7$>K zLZH@qR{GRXyY9*RLy+PusmpS5GD`EHT@(eU&!D%|JT_Jz;s;10V#06r1gkdN!omNV z+{IvUNcL?Pg>*C(u4c(cO9~t=6X`f-797JH!FjxEz;K8N8B)eq<2}wc+>~)bvd+x; zNVIyiRcjS-?e3N=HP3)W5(de}rgsl(X&7Z8gTAX9bBRw01+&^71PNw5p_BCKMTp%XS8A-H>b|MH6S6r1GVvB8 z+zHR3bYyzQiEJXAD2!#&0V-C0 z1@#idw`+fb?9#GVYKW7fCCoC&^ZtuMk4#v|A5w26&~i=$>ZfaOfAqPw8nB?Uj6aFjRU;^z8xX72|=H8bw& z>3iw(5y6@G6G&$Eey}B!KEKS+?@DM>MM+%xeB3GFOng#8j|=0Db!GN`DD+Ie1%bMc z^VN>-kI56G5V&Dp;kjI%E95yY&y{#)_C~}y()S9nBLFX3>3bP6lFRzYvg2k)a*lF2 zBe{%nWpKPexzZy!Te<8J>|~c1)<`a;Tds}}sR=D-jsBZX2k`FGC;BOjB*G>RA ziR(I@W*k%kDDQoQ#Y@`*Rsn55*9i2V?R^VDU2VWYb#^L-(WR#%w-J|%G2-~Ek(edV zct}Cr{*m?9AQ*@5$liVgmm2Ai=$Vmrd8ZRZ=NEU700cwYZfYcFDwjFZnrKvVW`b}O zG9R}h*0toD{kl1Q6r8^Dqpj<5E&xL_?AD2$C)h3J zq(Je)RFE~;G!JaUpOiRF?}k<{8X1^wh8`ncCUva1T9Q(rcv1?2*vA1omXz`~lTzMh zQpy`8b^P3<6eymQf*`5qv?isz&7_pKnUwNINnzs#vWr^1!#`1+%<4%^*K@_Sd&Y+z zul9K-!^^#xR_*oFzo(%%W*H>mr895567JgD5rk7cMGpim0IwqOiwR(jz#k`o(*(BV zTBGkI@bCl>c86IzEdhjmV%D&op(XVf6Zn<{@LB>tp8#UCY}S4WU@^u#be>u3$+yz1 z6Ie|EZy@k_31EZ3>k_~j0^gPZ-bmmV6Tn#lf1Lo{MBvj2;7bVX>uKflr38*AfG;EP zxe4IQ2|Pamd9fejtG0ZV*M7UCzJb7j-d38o z6L?$#cn5(mNC4kR;Ef63n+W_UfbpvMW&%H-0PZI6j{@v!wm9^_IOpEi$`Xb~W^G9V zcqf5JCxCYmxFrF68-X_^fOivkdjj}&0`E@%_YnA#1Q2$xSxfaZn-TLck-=vIcrSrR z3NTVE?;!9w3E(>k+>!vki@@y(;JXQ|CxGuE@HGI&H5fFWS$k&!_&x$ZmjJ@}@pCNE60sI_+*Cl`t5cui@@O}c{ zn*e^6!21%w&lC9l1n@xu|0@Cf0)fRvt<3)`fg=gv7YW>u0Dg(U=O=()Ch)}x;8zHI zbprTR0^gqievQB{B!FKh@RteTHwgTn1n?mO7cFLvCJSK){ci*=PXND3;E4hpYGUps z@R9@&7Oz=*RRZ`hfuBeKzfIux6|kwS{++<56Tt5fc*tO@r3;MxT6X9S*?0REi7n-aiZ5cu8}Ajjc<)--K3ZS(r&K&ULx>sR3I zy$9ADZ~f4V4Z?K+G$iO0n1%kSe26u#X3u_VV|usGI}PAro>{>I`xc{tK>bCa;v*{N zS+~;(OgJy4^9*tBp!0d+yo^pv=wb2%c7cN}+JD1~yTX^Liz-e>GJ6+c;3;Ei5^yRm zt}@vQw4H?eFlDXg5t6UPc+3iqYUH8zd!{rbEr0sy!Qky&z4jeQic52rEZaEIU5|1u z@ajBaSoG;L>7-cn z>9gphSoG<$>7-bKiJ!&I2_TM3A8ZTw_oQqVwHdjcmtjkN!1+8l=Z=^I)NaSlVmiJg_2DJ z3XUS zPpeSoVV+P8%@_G5zw?B)sn7&dVYij2uh_k zn_zgmP5-VBq6ff=i3io}>^hDfnFscumVzcd&|mBo_1llXNOAP^6bc?p-FP#w6fbH8$SYg@zEEJDMHF`r!mFKFt9%Qiv_yVp(?pyHvyo4Q|4nWptrY z+Q_XAQz!)8@ID7st=h~XNMjA{Z5%IAf!tK*>p)hI{c#KOW0Sa})vB+mKtyC39@*y7?0n};CbRq4qEg69pWm^JO zauhIfsvfZcnO;OT;?jMHfCSRTNu+NQz&4WNT^OniX3j$*1sur^1n+Gp(o0ZaM`0vU zO&il&DVLPsNeKu7X{?6s0}`%jy2hxSqE|;+Gsj-9JQd3=JG$}-tw`*^$}3|??6b;; z=q+Mm?^<3ELt>}sly}aTD$R$MRN1*DQ)O@3k}5mUWU4e`T2f^X?JO|8^C6JRLMtpZ zKu{~f4vw+@T0DT{!1ACqJ$rX zuEJT{uOXWkBojtEy@~-pz{x8nmPiPfl@QoU9n=s_=wYcxs+#0snuM5#6Oo5?$b*V} zDYz(_{tmn(E0@7hzZ?&%ensRID5MZV>1?unYAhKfeKiw88cge?Icb@x|4mv^o=Df! zE(hK9q0aHH1UHUeHOz8bN|cOVH9O6+uEghbS}j$d=1`YqbXuMEJXJ^zEU04(yugPl z)b>7wEa|0HVwGXj)%DDw@}W_SZxl!SldxYzr4njc_T`rh(99=&7LH>?9L)CN!ga zxVDy-+HD(HZjMwO)C1G|1H&O}t9j>cs@j)CR~6SOAMU~UvZ7nOg{s=?Gg55c35|-^ z2GS|-kI#_ypXP+WxP`YY4j7hR5odhp?@j9M1V^lW3Rh z`xesrK$e@$=l~9u$LoX&+qWZoRyHK)h+<=_?M%1ejw4O}8J+2h*_m$XU)a_=GcjX_ zXH|uQj(T6(qlzI_@X;I`51R^bh5#;b0|lze%OGM@Ajo`cftb$_o_dCGi{W?0>VwdS zZVEY|?!y6Fn|PE>S!EZ~lu_H2+MP*6k$k2Z4Ki)#9&h=Z6E8bYyv|Ig<7I-lx@=pg zec7~WaDfzyi+e2CpU@^-ps8*=0|$F=Y~MW_FC$dGoRpNg!mc)DDvAy?0;SXdYG9c4 zdo%FJ-k9eHJexbb8v&EiiLs+7{r?C~i_HSKhsw{HlX^bZW4;6k(lvWefa{bZruwLi z?2TeFJb|6>ky_^MY1YLkoQJpP3x@$Oe{zCb6&6ZQQOGUJ@cuyglf&P0!X4gSB7e%} zplOIInwC0SpvGuM`L$w-{p!vj&dfqo@ajpiam8CXuJCY62a@Huf=yZtB`~g-iafn@ z2N|R#1eqqbS3_G=dJJ_h+$WKwx?|GFcR|BPd-@AO;l31^ z!eByFi-7^+^T@|Ln4LRxvx0s*Zi&)@Z;nsA-x6za&+Gu0EA`JD%GY9jR^I(HBY{`m z{WFIJUU~1CSq?AmySO>bb?sphj=JoDfr3%mGqWOz_>>@uf}CZbV4%WqymMJtUj2vQ z^Z?6ib`&T*vlTq2Uq*jb{9||)W|tC*ISpra8C>2g;2N17f^)VAr(9%!PYQe(*;F?t zpqa)lL{Rb377RIZ!ldOOW$)5z&ny!-NCGp&EpC!1k`G;bC1`C#yM+n!38e0LuOyR8 z$mABfhUubdHG2qMr@-aEfRBH|!+STPs82cU-u~3FM;2q@uR^$5^1xXp@4Y}&r;#v; zfIFlsmR%fkaNN;*KSFrik#E@O3)*l8;+tUW8`M{AS||8h2L8O)(*DN|_BZ2QIy*cg zDl~&5m8Hdb?`EV5IkjmoppfvVSJL_{4dn8`jE5JlD10?=X6Y7y1R9mJG0Wj2unt#P zCxM??x&ceG8 z=L50Q4#x#>(AIYr=pj&7K%uo5S7RytZ)g_=H1+x|z*o=BmmTt|4O@S{clg`uv7h)> zf%6IY1znp~f9xwiUB7vgUVn`Q@QHx0Uh~VBf71?V;Rn{YBHl3r!Q;>z`fz-VKzR!O>){Im-avA9#jtQ0ghVm?+Zhyk7$soV8^{f;--1EaKuMcIcWu z7w6V+rI-P`micyC@4-!HAcjmN2FgL5ae9~5{xNk&Dkga1lQG^GS;Jd_DFrOCcT`Tu zXYRa@Ayqn6aX1AA^Bdua&HJRHadqDND$~MP+l)bBcnO&EKG^drZmwNnCOkIp zqte3dvvVeXaKg5;IgM(@rhZh#P@}GZ|6DNFlBzUJH8XRXQRSVsajG)ovN<+SqES_x zn84BroIB;xG<~+y^x4mpOMU-|{|(W~@x*1~C7JksW?otopMT~>H!bf?D56Tc!C90x zHH#wp*U(-HIYI82i|R7vcGmDlBeXSK2|3c5fSD9Qihx5}k>=$ht6NoDCU(kgrY!}P zE@0*?u|0~VbQM>tF11wN3YffX5!*LKY|?f= zjj~13f!tQc<#yOi6*=^3b?aWk_sZf4FRLPYIdm;V@7m(O74i`eChv>+wg*vG8kgBr!ryQ zGJCqehK?E%)BoPXtRd9BSe5%O-N~-t-&D>eU5CrgpS zkC`y$N?Q{~C-^-EV6HTn7rh8ICz_Q_%{N)fv6Z5Sxl&V%dFJ5OY+Qlo05Fg9fTC?6h0@KTe=@p(n?PmYsTKfl?KB!>#TrXjRqwojo;5Ukk73=rQLRHtLW|Y~1L* z9SKMqx3zbJ|L0Iwi4jKSzG$qiWcqu6vLm&5yJPzI1kS9r!;lN3tQ{|$+TNZnEH$n4 zrgj_9M-k5^v?Bwko!QjUZ9*eqQ=60CF$LEXaN&imNC0et>v6a;J2q|e9)rU*)m6)| zeQ|(aU8ZI2*a8>P>>XRCiRJyXVq4_C1ehm)Z?oDt!|`6#_Rv>Ym=?iU%);c7mGXYV z^8ZrPc^^Q;Xqdi>laH-q^--K|=YS3en(@?SQIkV% zNBm)(dpUSSTzor1q-k!(ffEs?xj7q}vWM%2@a0HFl;N^RyjW*{#;^DkOZ*F*=k@2VEx6Yn${wxYtH}I(`K~GX(c(;m)71gqyv_{A z0xKBwW9Wvd!5r3T($GI?=pWq44p`Z30im8dT`9YIUAl^4PAN*Siu=`-uQ?!83aKMg zJy8XG5OFI<8&!4tlK&@&Y_MZ2pz&Kuv^AtlMH9RMUc^%D$W#tdtmZ|6p>#sgSxR(Z z>_4Tw&Kc2jia<4AHH44`{vR;wV~rVy+oVUpxaqf42h`aQpbkElI`2aufJq|Mf=W9s zKNZ)l+sBT8`<5fo=w}&(TQ?R;NXE*%=3LHpVLHhXqI=}(4PKl2Xt{z9fs}CtCt|qf zZrqa*;mYS0)Mr0jli1%c;EPVF@*;f6=^j$#4Pf3!K-C<_oqf2hRo%Ny)F0`FEkwPK zA{#);tHg&`eTT)K&L1O#`)OBeR#X6#%J)FxI+l; zN3O(B6vZVJ?ei+z6gk3T>iM^n|l%NXMu#o6-ayaDny}>Sb_|om@s1|2YFMC&xxz?0A3UALVQ1ENem@_aRu^U z{XK9NQfI)t)S2uAcBO&!{gf`*P}IdG)HCN*8X;*yTS+r9lr%|~&jwv9(XvZYYnV|* zS6o8ZIj=Gj(j}C1l^E!X(S4RRsDJ(B+!_?GKbYjwvZyc8@F5M}eGa=3Uov8u=8Mx8 zLH9XWNww;y;YKSgR{k51{jGS&xpvN6s=;34OoUtY)A7v4zg1|Llzwrv6-TLLn8rJh z#%V2S;5$v5_mc=N=b4Xz>o7so#zj4~G&jsc8s3B8M=pxAY?*-*w#tV;%N(@Fa}a%7 z(a~<(9p=H7IjTTTg#*ZGC%TO`?+fHB5>aJB?%0_0`k?;ODE1~#=kEx4N@+KNr_)jH7+vNM%oOSpYg{Kj)X}VR zGIrxUu#*MP_SKl7Z#!7-<`ikbUsk*H>X1K6d*2+HNxwe7gz8NGOW;PnU@nr7j=r)9 z^Xp#*ymDwDE@A@q6~K0^T!6iRyM`cLRX59+L=oiSIC4rMuj;TmQxWpKg&(%BJMND1 zfq4P#4As8o5%Xur_y8KtKHQ*I?NgFg)k5;5f;j6J=H9NZN{5IoO5l2s!e=z*Y6lY9 zUM|iPBB?|1sO`a#*jB$2!iSW;M#&u#t7w3I9k8V$xFt=&l^{65T@uGl3GQ-{TNBr= ztc>9lmUdc&U1UR*z>1by9l`t4m0~<-M^w(LAUfh|f}f3SepiC}6zi25)?-wmz)!sg zTQt*w-YhL_!IMZ8IvH zl-v`<>=vv`fDrB3U62m3(sQw3eybEQhw)?B2eR`~D!yIm z3$+(Bi7yEyd+fP=VrUy;m!q~3@;;?Sf0^18;L7HK6a%A2R2JmuN9|8bdPw7C2Q6Z0TFEMY7HNJ`2*4tS?|A?=7B{T>g|mu zhdR%s?%|!H)Op=)-MZHWJ(e~$x2I{QYb({Oz1&I1?D|z=(XVf}Y+SP54OC3sC_8UK zw*jZvf-+K};lO#f`RLom=Byp3pDlON-=v>C82Y6JxSxsxCB1a9UjG4VlwSX#Jb#3z zAvcQis#z)!x#sUtf|ZZF+1ky_BL4I`W2o4x#zG${t{Ng+lW~wjL&xB`RQX|=O>7O= z5gUrJCbndH9%e&oN@fl4gr45*w2ZSmty3k^*tuqE71o&AOl)R6)tU+fIF|2B*#K-g zyAyYGrl#yIo6atGb*3av0NaFjr%5soOcGBKT)8NO&aU5db}5RYqN=_ur48#E+kq>a zm>jkGFutf;GaJk?-^?uEl;OmGL$#`Po$Qi$$Jd+g7ht^zR57ft|cuc8AfKf zvW;6QTDG;|qIl5()T7vU?BdH8Z6yQibpGRrku76^eG0eB6*u9AIYRuO;-O<2mv75l z_82iX5o2n8j1`Z`+&<=9c#g=O!JI5NB|d@Zvvlh|CKqrC`^3Wq-%Q%Aj_a2AKJOX!%8v%HW z!_{Acw?KWbFzj-h1;i1x{=3=x6|)L2G18m8|7_+>*LG3B_%kcVgM^4#N&5(Vc2)^i z$#>PE@QWywM32bBFTzvTUhhj`#R|19Dh?7`wLB_3mdVN`@CPC%u~q!YrchPH@FfO* z!`RZk37%jZy4Z5affxE4x!;qEp-zt zQwmeaJ)Ep87I0IWg2Fehkl_>yo$uCSI&dlKCbQ zfFvh$Nv;KHH+E5ZOC)rqH+b!RTv}3NuD-x}}6xkp*qL6)`=GC4LPpyL#1AKjcZ0P53pbE2qJtFf}23?b!9 zwI76Tbt`!yt$4bcF08cSwF@~UO`UG4F1Ul_aXw6qbOAEyE~?-Z-RIFAB*gytwE5+@ z9a+B-zXAMEY}y0(u?XLc-!A+p+lTP`0e%=mXlw|b_#J^CDDpG8awO;-cw?jX)%OAH zTVMblnaA{TdQ3bNqmMIT;-MVA5<+qMSd@wgv zgsER$prCV>HJETUp^i*vH^SSfOlvjO4^a;rciOhZaP=&avCMsH29u zf4_W`6`pa#p_2~V@VBA@s4t&L$eZBBmfFs=k@q3!Fi5_tf-kUszS~d=AcLc({5F$O zb#VPJ5ZP<%{>5-Ly|i0c;lYxtC)Jl@Bq3Ssn}ALm%hrxPH2eYy?jf77(z`_!b=ZL; zXQqK#oEo?AO?UM4c#d`Au@wB^wH$rB+(*WJ7!SsXaV&cqY6i0G;wtYo;C1kj@eFSM zo`e%yFNAZ)TDZ?#&B_$ucx$0~cC>h)@n$z{=8lFNkJ*CwBo&~=JuPTiy*G{*_q5=( zTm54;A?wSB>3#7iaZgJWNG7Ak%B{SpJSxUoBDB)oFDp4yABZ#1AM>=(Locv6VtP>w zOY&An{wewjvvZuac$rjqu%u0*`)FA|6~4Qa1{sFm&vJROrM4B33h>;cY)eG)|Fuj13rK`gy*;St> zvP7Gcz3lPyyrWQ&amIN}x=Iij>$I)qP8hFCvm`luIfxA!?W?F4ETN6Ip&}~`j`yU^ zlw|D)Grc^2<#Nr~@%!;`<}~-LvF0OS$u8_}FJcQ-AuXRZu-(*d`LaQKxOWN)pg6VS z@q9-CUwO~NsMwvBuRmi0TZfBeX=kuq|2$JI)XsvQNY}RFDMY3Rko5H#TWIX|7sAIo z|0|1JGml$k^77>be-Xf<@N)K#IbqPmUyOi!qz@5{Gj^JtOBZsP@!=jk-S$d{+aBo4uC}r(VWg(CYgd~K6O5mFclmwpj~hYij~Fx}SuFjnOsOHM|y*VEq{w;_6`D4ddhWbAV1}U4y5PD(F z8-`1bgK3cDSqBG~N)3R;0_`_=PT;{uV_>E@vutmrOAU;?_rO@dW@0_uO04X3^eeh{ z7ighQqpf0g8ita02$H!P5PtgVP`G=?kG1^~II2h4{wUtY__*yK21jbVWcwZ*=J*oZ zKO7Ex7+l_i{}^9j`z1g+&3#xG;BG^Fe$ejq%YfMhzrvT{SNTf$um~O7^kIfN_TWE! zaOK$89KIZH%exV5;Y_U80ht8jZ&tu<vg6UkoAv1K=`$U6|aFM%{sMr3_Xr4evhRw<9RIFD!P5|7{0kitMjavh7K0@ zhmx3&k5yw{BnLf+uT(q1`QZsTM*&)mclBrZyqC7Ga44dyZFQw!4WnHfs)(&5Ho^^{ z3xg9j0*4!tIoyNrH0;NwM7rznr$DpInrPO)%0xZAraOl7?#-8=|dYjqo#i}UQVkwYx($co>RLN#VEt6cJQrf&`G9|GI_74Gm870 zJ_dfe+PYK0d_gb`fY&2npE1^NhUam3yvOk9w(!}tpQ)h9$xZP5g3wfmj*BDVX`-9{ zB+~IV@UamO5PWO{tAkUkfiKy}it$^@wJpVwY>7x$asraE0*?wp1(xyQXkdx$FWW*o z)NYWY)XBDVWua@@5@C5-z42u^*AxS_T+HB8b|ACLR__igBbF{JsN>qT>%oiKC~LX4 zo#2F^1SbL_!2@%$G;K-5oM|UHSs7%d1E18R%`KdWV8q2ne;mN7yg9hypI*mk4Lg;e z1Cdv3-8-HbxSQ>0K!c|99Do}1qo=?=U29YdT^=g7(uaXt4g`oooF`BeXB;u^_D(=T zqY8oxpyBaOA~&ZNYcGK?iyj6sWxYXunU|9p_8=MO$2{S)N;n$Nw|t}CgP~xx09F7X z?dhG!_ob-oEulpBP615^-DuV>ta}--_I@>NRs2}tRTg?Wbe#UFK+B~tZ@9%xrHiV) zpDxbR7=o_&*6lgFkV}_WV!)r?z4LOAK}Uy+(jaCxvy)`GnCj#l*BL{A>v$M3J1*?= zTpC@fz2Zx<1K3{iYL=HF-{aXq9Z=tl{5w|GHoOXA?9`#e+VvX)BHl9UYp46q4#*UzEcvF6ke2geNeB5mn6r?JJ%X<(5&=r@3bb#+s( z?P0meS8l!M0fn~dS$KOGqB@Ni3CbsdlJ_>D*hXq!VVl{G4U9E?6cPQ);2a&PrQuQF z{y2D96MR7&{IVwaLlL<4Kok1=2&&iq3Qw4N`(a@+V{kQ7KdK47s0prJFV4#qe|I!7 zzP2BXCz}{0FC<-CCr+VJI~8t~#m~%(pw}J)Jml0mJj7lBm*TWG*>pl=XEiZyh=Xr# zfc_2*zC0b-|_0I|OfKuidiJqT+d5q7EZ zVAUI^f*S);_yVfBMIeO@t_#-19=qS%7u)5kZWh2{?1!mB-vOcFY5}vt{>eoOKSFPU zkx)x-LVxWXl#>XregXE42A$1LMCb8tbNZ))>L9NS9gPgm)Qb;JIehc zGIK6U3YG^BsLP6SIgdTT7jk28@R&Xi2$HWzw2>p*Zb!)zZv<$TzAGpAxd}VUkZj@r;ZvNaC9MDvEoG-Dt360!3=g>s=|&$ z5xGL4s3vUh@LsC)4i7oP#Z<%#D5|tCZlxjD|G8OM z2r|l+{P{@7S-$`iD<}crJ8Nn@KhW8o*;g2C4sXPcvP6^cdjlKZfc63zorzkHVW5WQ zCKK&&3j9L|JQnUh;oVLk{)qo(JT9TfXoY_O{>1=)BLN?Vt}Oz-8t*urlYnNf`7&!CD5))PiVVW#gC{tSR}Mz7nx! z**1qCe{Ac~!@J+qyMFlZf5irU&Kk;m+ALMe@b`E1tsh?X*U9z6-+s6j58cYpFSK>8 z8@~0DSF9Vp{f_Uhi^XM474PtuZ#$LIG%Xf-0Yh;J;ON-nk$bKT(q)Z9z#;2mk0_MY zQcW^k3Ku@$Z8UbkfiKfu&R3yv8DAc>jMKP+&V0jH0axM`#}~wuigqygLO&H!OD0oj z2>k~me&X~yO%*SeP7vWEQG_4?;W~^Ec!Zpwt|B$L6JB76zL+vGu;1rBFt~AF)awe4N4j8@InbX(&w+Rph*9xjr7?t$}r(D&=ZTaXO9h?K22Mr6gyGFfqYvnWXpNv;J%DuOrwxGn^U<9NOP zQULhX=9e*`$T-)BDB=L19sJOT!z?jidazyV|jpaQ=CC^K%TUN0f7kLa*`8bHH==quFgO1|=5P5G{o zSL5YGK3gTyH;$A0R{?IwMiEtC&Hx`*MtnerqF_iBBFC#i0fo_N)lyKnjHw_Fv(gL3 zO{;IbORtkJu{-1dxZF@JG$c2D<7q@DF-*6sH%=-m)^RT!(t@()nDKt_!#`zB-;EZB zZ?)g>3Pkj3(B3e&#Z$iteV=I9RcG--&l9VQ32>Bz|_6Vk;M4n>fJlO zND0Ef4D~8NdnwRl&MLS!CY~zGL=q7)DlXU(VG50MTYmZ~u-71?*!iVoi#0**D$2Ib zVu0{j)F{^}IWwyxl)WBjC(9f4!44^`^7=rMw;+mtA0o7;Q4!L;W9{Wb@qrG7)UOY= zD_57kSUFfGOhzSEDJU{NZFvQfgY(L1$s}=U3<4b5FnbeX$-Kwm;G`z}zLNY#a|q~< zIfp?3AuYpe*tT@ncZVLh80N}MDKpX(P zE(C}JfY*lraR6{f2oMMI$oZ0S*cbfMr#}t}HC_!IeHtyvX}m$4KAkW^0PSbNzA=Kn zNt~#&PUFquM4NINyTyst=QJ=bL^PrB*2uX>oLeB5#yxa~?O9B9vvDtBsm43_(xLiu54AI=S@gAST!Qnf@2VNzVKqi<46H zuV$k4x5HV=U(f|+7n`D9|zdo?NJ zYWBwake*)jUQPnuTL`T|4Sj%6qw)SZfk=Tmh)GSO9e7Zp7_W=ib&o9x9hUb4NCWd! zA0Rb_Pun(zUz~&c{{7+>=Eofdm+t|4YMpQw+R;w%vp0oyC~F81AuE~fzZe`=M?H+A z%Oi5OQ*W$8fH)yu zjpCs$;E{k?_+VP<9(pTmUM%)bZ$Ykn^hmflVD(2pUat$T|5AXs(pjesy9P;V1x)>B zcqf#};aqXd#t3yRUq0IKUj|(NK8PIR$vNe76{O&!mOJX|!JGmWBM{b>fI42twU-A~ zpxYjWR#FV@aoaI=#IkHGi4_mK&gzUXN>!%vKk-*oc)cEE`4vbuDA3hEkpPkE$ADhh z5iiZk3w0&%k0VG;bIen&EhUHYy?c^d2-Kd2nSVyi`s>(JLtSzjDOQ@8vA9sLD=uFN zo+{7pHpF0+r6E$%B87T8pBM96}IF6SZD!Wp)mckfXLOAyYPmsaVKBOhTwh# zj$5GS$gXOD)IZ;YZ`JVt(-DD*v~nrH%tr)9!8ogW0j47Y6G^uGuE331ysPZ@OqutV zz7OeMjdTI`x~0SK!3K5=wjYP!MZIL<`6tL(uT#O>KD0E}MtX2fr~oXQ9tdQ!@u85N z_VRH!V*|zFa6Pbmct$ERCIMM*4Rt9|X9&#uw*VU6A)}yD=U03MM4PIk(q3Z5rVW^ni;)j(Q-fNOeqGop_~=6&|28~CLB+YumWQC@$z?k_G{#9s zh}`Ca%Y)k#1CM}#wm1VUGsVN# zeHh~8#Sv?uaw1aM84w&SvG1exKnGV2_3l9O(Y(CE@!m)vW-`?j{j)Y;c;c1Q_`xeM zaHim8*BiV-sQLsL3g2o)Z$(oLKW7G4&c(csgQQY)Zz98c;q||T2fosws@SC+z^|*!7K}2bxluM*$1yU8y}om~=lM2EEF*pvj=84VSP>D$~ls z34%Y0U@6f+nmiF?mA!c|NvH+$CtQ4p%!uAe=-*)MO7Sh4{CD_++))YUQWNh01cnw> z3|0?B956_l$|#`rNu;zxdcK_PEk`Q3bhi^&K~Cffus;RtnB9|cF^>;E1B1ESmU((i z?PCn$;GRKSxM%Rlwe}%6CaMV4>l~-}Ujv;ri{OvO|FlTBQLMPu z289VtkXiK<3T!*azZTJg%7CGyl|#3UYvJ9F-m%jszUhG4G0-y=)MeV1MgKE`PPhL> zILmnz;C~LDs3LhE7BnW+D>Z)NWh8YhN!66$7Nm&*pruT>PPenZ0}(1EI4)yiV~gTQ zP1~)w4>o6;nrm3SNDM3{)UTSBB(3rX6W*D43bIr@#);8H&f#mwjOb&yX%#2mD~JU2 z#VMUko+sP|RqQBYwqsO^{sYWr4B~x|0M(i%UIKzjdP@T#QDO(8q#~A22F?j{QY)y` z0vr!Ghw6cx6MVH`rdDTAYjp2@NPA*mn!=DwCklJn#7`xRq@qDZVR@t*q|8~&qZ6NK zqQ>$r!;Up?Wl*S2=H+YRx`+v?#$1=%)vM-pFi4YC4Rj;g#J8Iz+goHGXia<`kf`Pc zNn;pi$qH}I?RLGlqS4LVgghJzU8#9k4zX6lQbVRiwS5R7tG`Wus^H~dn~lw|Dr{1*~)o2qJK%WJ9rBRmaaeHFb;v}G84pf_1D`>Hr z#R?$f?T8`e-3snwl|-%zjNx$PEu)$k?8kt`qtHL)VQ3Nb>(rP+Cyqoy3Q2l{##d41 zK~1_3ycNd-K;*+hgmt2* ziZ-w-Ba&WZTNd|2SIsa@Y!g~hKlc14?Eys_iM|&pO&lcw(wLzR%+(e6rC(XiCDABp zDJAL0_nEm~-3|7bumDZ({mA0PAB+(HPXG=MjKdORx8=PJ!YCa5?UvwNpW8R&qW(?w ztr~=rbD&ejW4JsE-)i{Q?ty#aPR2TwUB;B+g|u`1Zofnx^Wew>d2$IJs^1RFS0-}4 zPR3Hru%OFP`dGq#)zngvl3wjGQEVEvs*dzGtBVA11}--+4;NF%K~flXYw|Uz3f_zH zE3fJvfV^fur*7l)lyANA^@m|>5asqTj6T)Fb-Ii^w1E>=NHwUlk|$-m;b^%s+(u;X z%pH)r;lCZ|p$>g?PHlaL%D4=92uf>&PBFbj;3%!Z3zsc)`xcL#0q6N^zl2PQL!j(gnna652Z}agP25kX>PtSz>i2%}O9TDC z*n9K%D68ua_|7wvXC{*cCId6sAZ!UkX2OyL42vNk2!bLz2_S+Xt2&whF2i6D_qySN zYZXPU`%?ERF4d}4tGE?^+A6kgt!r(q)hfQ<@45Gxc@l!Pzu)`c`@$!8?m73~bI(2Z z-2L49NMSdiJR`XWWu>?)oq!}{cUre$iEwZJ`C{ELiWa8yZyzJm7(;;W@YxoQW*7V+k&pk-KMmQ%bgXBm`?|;GV1sUq6 zcch*;k)(T|@QGxH;-~gKXqKBUuDoLxxA(wXwhs}Oi3qild{WQ8g*jQsHtSAnXnl_;2xT156n#f5D|0)r7uK9fezYTpPa<)(F4p_HOJ4;5- zJ-!g8aMLIOi+p=hdZ2Gbt8Y333mrQilmM*T$YIuaZlf$VieKK4IEqa z(Y=!fPhCRgZ$gxCuTZa%uc3K`+_Uk~T$1RC{Kh{bb?P3hFl8RE_gyPO73QoCJ4hm) zAyCAI5;jv=1^8p*pvE=c2)9>zyJ&ElAL=bTTcKV_PIzMdQClM?BI#byObpravdX36 z&3IL=8%#H{nN8+U{3QxD>hItv67CZT_l-}?M$ubqeO)`e{q_oUXB!RoiT4im#rALC zP~T25^|ssgP@kHzP9Y8js9LZ~#^-`LEvXG6sl>WY6ohuPCA=4R{q~k!E{JtX9_r_? za4tmLB@3Jbc3>y>n-nnf5(fI!XaK{~tUQKbflwc&k;d7B0_oV}}5nQ0Rm+=O8_GpFH`_N0f;eJGh`MuT@Ui+65 zmQj}r4en~;6@cwfz8Y9S81Q<4Rq>Pb!6q;C>k7)1o+UT=HblVlrPRIXZ4$Ghn5%Oi zOb6>dgSsjN-_PKHzTX#52s_wOm7c{;-he#fQN+5Bv7Bvl+iaWT$roNS=(+!R?A*we zUNbM}$Uas9X(uX7g>sghD~FAtT>aT=-RoE>9zc#7!u~$99oVbs8tI2+D83KjBRLh( z9dLFo7i~lWU^&lsg>~L`4+o>+y!fyX1kfoatTN9Br`Z*PY`o(@%osPih{|?#?Zal& z=gE>-f5h@3W!VucDlofd1zDdyW6BQ&`*n4`v;`t{&X@AB8m7rKGVYXpU(4-oCIP?>B^SpgQ*`QvUnv?HP1+m#5f-#f{5)lL5iSpe)qz`F1z@wK4yK6W)`)^ zFl*DgaWQoR)*9TMb<0mzAN8@M4#zQE2q!-WWVUAA7ZP|}b1lQal5m;M{Z_ovlI2JV zM`UuOBuD&7tiC{q_9FUlvRc3Q-y-OKmvnDsD~gESbJiZfyQI9{7$j!$G{Ph zF+j`M3<0`xNmL??y-cUgSA{+| zOWw@*y+IC@aM!rlK=@*}0EhdWO&o&;Sp5#P%oudJHDHJ1U*nB$)n~buddFKEa>l7g zeZ{}m{t>zz%a(DKoYnf&GK?@-!NR8RY-B`R5$QPDUgaB;HKj%f5!wkrylj6xWZw(N z5}c<7ZFAVp5ZmmCQPcGSLFW7g%VLu}ASakfbV7EKHpc9fDIO-1e6at>OylbeSS+BO z9rB{X<_EN$=1iR7HEDmY*lEg%QOB}yQAj3plUZJHmPDSSL~5`jDA}8{RsLH)zAQ<0> zWBPO8!_96k0rIVYSI*LV)}im^#;l+7A$(duQ}HJwSWL>%XXgG~-R=8jexVa2U!y)KeSEWCAK&0YbM~xUC)GQ*odDh_ zj(f^?APx@W9tWS;y1A1OK1#z0-f>t5m*KPxmn`>0=$EYhlG-4+;p4@e@Gksn{R-Jq zOf6OeNTnzL2U22FLqrZW`;Pb~Bc37=Wg@953K56kMhWF%yMv+rfd9MkGpaswOjnz+ ziQsh(Q$&P4Z?`%vWN(XHHgv3nwzjm)=3>X9hY+oe4oYSDrO>sbw+05tBpmH zry;-0q!&FXSASjEiahCLczfpzjr~r!T6luiZ%bXM=KV$cX#=hO`Sk+BuNN34 zvaLZoQlET}4|`}KZvq2~Oh$eU!ja324Fyds5+1ykgaTzkU0%L=(kU)38BB4-usZ}N zEPO-O9U5)EERGQ}LmTX0h8JnkJ=ho%2V^TcFDFNA zU34F$&0NgsWG^ksY3?D(8$-WDTO`^)!7f#`Q@(nje+2Rj#;2lP?0_#%uV!mT>$R&t zc`sN*i{;o9kebFdNdvK`(Mo|E?T@o?0m%oX9tEkI+jJ9yt(aqum3cFxd6{lk^JCY5 zNcK3^d}bZ;wA5hmNj*UAm1cqYJbaNUudE0bZGVeFU4@2O!o_GZY_U?8&O%#Q%9QA9^ z;y>(yaGxDNJi5gXjZ^S*ul~7@Km8u;ozvLw{9k|7*zd`&R*sdcplL2=5$^&1RFtM4 zl!(+0*O~(K^_n96kO^*T;VwW>z@IS>7U2-56_^i@^dlW@l@`_ zBG4DZu0k-)hN!L7tJhmGY)3$?(+`Lm(51a#vIGquUj|MQ!A%L=K#?fCN%I?|7h`_$ z0P(bg5D#Y1JWBA2p5cCrfgS{!xDz(UUr7 zAN9cHMjguAH zy~iE{y2^?@g&$Ln>RL;7-jkG|E~_Qqt&p;2gA8+e{@Np3OzzruEZCnr7tEP6MpfSi z&GUM534-M{UfKPZn-6@rd?x~2lMWHd9?Nyti4n97JakKKma;#CQen{C_%gzh>$v9A zgygCV8b-|l@@Ol3-N(mbh@5_f`CBRZkvt_T76aO(b^`;%LW-++d;~96g;em$vc0{@ z@nIXFZ-$&CvUJk-(Ye6-{S%l2XpF&QZ;belfiJ=ZbjgNsLGbbM&2-0!+tlnzz}%V) z{4OHPMuKKu?t9CojQ;vCYCo7lTQGOVar%J;L|F*teU4AI6R?F1K9Zp)-;B4%7&F8X89hYJ6R=+{SJvOQhAAB!H?;TI>Cb*-PpZtm;h3k za?Ue_aH7HcrUHV9d#=>=Hr4gA{Y zaJ*6|RJj$cqx)rr*MgOkEbq8(6T?+GL3dwl3L(^NRBH4#F<*-r|%e z*kySj3|{H5Yp-c|8FI(ni-!A97aeHlcP7QwXhBhYs1GJ+)Be)4q9h6GP=~Mw6OCWl-Id@Td zA_Euz*tOR;B+x-b!jZj|bgzS(XedG@)e?_tO(kJnq}C!A%9M*r${0}6y#n1zx>ukm zsZOa$xzlHrG=gG8LJ>zvi{pp+Ld8EpR60%ggB-~R@y9)U?rp^jORI~kOK_FH3?DKm!QbGv z^<0*5wpe{0XU15?z79ZNIKtBZ_W)#_5y8~c+}+me<}*0o)c1I40&BdCZ?$1xCYatO z-ec%}L%fgE`#<7+g5EdjbuRk8MxgaATI0a*gpZx=iL^RaI{L{oGDiKe_|13uXX!m! zz1J+PYA-Y4Ra=yXT$o!F0*GjPzvZd~oR%5m{nHwlP&187R<1K)ibDwN+8w2#P4D`)!{Ok5sV~mxE_*l(!-p9HIB&@4|j2e1U~W@djp*hr!}r4 zofbSXxZGfH-2>edZkbv*=zj}w@xHH)8wzOAVj6@)!JurX#s`ILV~o%}6HS{Pbj!eI z=QV&WLl`vl9C`_O#Ew^R)O5WS-LXJX(L?l)o*4UvL)4}h^*Yf~AF2L%dT-iNm7WLw zp#5wIlTh-rs3+doF7PaZL(74zWV!2?3atsqrae#G*s`#)bG0l}jn5%K`sN&k$tS;m z74lN!y!wH6JNX@|vSy&Y6DN53q1M5rcJg_oO7zgbtv{gYCPyP0b`h)Xolr0xF*ySr zui#=fe0g?-eg)R=eiAmH+u05Og4(y8hz^McCV1EJiZl)@e6aG^W1qx<;RWOuLq8ek zqgiI)-%CT57M8LVs!biEAZ2iSrb+?4&Iww4Cbf;BXM|&2ahFxR!#DI1dO}^ zvV{L7kZX+&!SV7=_>#k!2J_TdFM2QquBi^?w)R4}^hsHC80a~j(f)N)AqHIdfpJFi z2T+J9a23vvgbQF%mT%!r=YpgMD5*a9E%)o zj=XuF3~R11PpoNZJrO)PlEL^Dlm(}JpaEpjIz(n#Ho}DD6JHbZuY+=V!relJQf(UQ z9tnryy+YlsP`6M>KH{O%yaIlzLLu-S!oO}w*p&rq-yq-JHNCPQ$t-g=ao(!2d%pkS z2fRehcZp}Bct1mFb?fs=<1@XCY&7M?OHHHC*L{+$2Q6Qq;O#Qg)N20Nx#Q?j&F|0Y z^=FA1*reMS_qLWIzjGu%=~LOY;QLU{CXaK(BU`07sb+t#yGTFJH?=iR{@eYXovmj& zZvgQV2P4t4bF1-zZJmF<+W(-A`NOyr<^3u7%it%@&S?aB!3x5 zb@_`;`K1pv*N}bDJP24HpVqw7xtx(|)Spwn%3->EJQHAj@*g%>->2}}a0-iWm(%Oa z0X_iWJh1Us^k@13js%n``@n`5k8^y?u-7Sdl-lMFE6F5(4~(HM<7hx#iJ8#(DAUG2 zGkg>J5G%#Zajzz#xrprs1uMmzW!%QD?FAqMMI%W-=vRaILXEwr=Lz6FWLIO9H$fOu zf;jcajYgtv8$r9eLx^`f`brDeG_m`OjZ!xSpPdu?2>D_@D;dif3b&&Zhxk+2xAMtT zmj2YkSueI}94w~C+Pm>RB*EaFrSU5u(8yuM6#E}A_umi;>_y0sz(m}~UQ?ds!RCk@ zC>({~hO6KddHtye5yM%FV}sBjIO!H%WF0b2ys}Hxu;nMEbESwM(K#E{IUD3FIndFY zVey&{i8^w%cXYh@r#A?5v%WyvpHK*Gb%f72yn@JQ)e`T(b#lZ*YJycT!?CaG<}K{y*jIh&Ee<;NRTF(xYqY;?Xh30l z&W}HZ#5mcjkHR;g+6sNzKo3)>V!VrzQ!+RjZ`#`;KNzp=fW*TzSUbTy$&fk~r8frX zc$`HCVx_M0$prFM4EAJs-Xtw0X(b{X9{ELHz4wJ$KwHzB6WY&uk+yAW(&z3w^kW2F zN5n_MWCtI{Cyr0Q@%pDsBlYJ>QnA&{)_RD2qA`EWVo_Co7?S$UZSD-sEOo!D`TKLT zDbak~8s(xAkd9mT&ThZ(i4U@Z52tT-2fO`#MAJPl=PBjXjRH^2DCZrO6`qoI?GHl- zU>>N@n_|w882}@}hE2elQ2`o?b6W0s;505X$QgStgSi56w0Ts4Uh%-pA-hTn=k&mA zo95pBh9C&T+}p30N|-rob8noGU?N_V8_MB#EiB&Km#i)aVN6!Ru=@I?!#Pfe9J*h9E{Wlt3uI?PRnYd`LxSD^PAIFZM1q8ivt0V@7L- zt-3!{a6L;Hq8SKOr|15k;k{TqvjZMk0em~@4}Q@uH{KZDT( zzN(8fSfc7Sfqj66}lb)(cV=Drrv2OQ`DAm76OC&qmrg3|`yngSABqBK}=H?LQ z{u+eqiB#4gg#2{~u@Dl@NfbE+DN>O%_LO|_D!ld&Y_af=!FJDLiX|TQ`)<_*C1;wU z5#@$6&1QX8O6{Fx(&8|~VMC{`?b#7Wx-Ic=N2HXSOG>#0Jhad))|za7-H{)@#%r?? zE4NI)1`LW6lorZ}X>Jlfv1aZDm8{@O9D!V+iMs?+g1oZzSC93+mTSByUPDJo2_-nv+A>u(U zI+Ez^du;O+U_`W*%H{Ib!qU}O0%KQ^gq&;suhJV8Y^H2Q8KB}BQ)rl|y+Li3x+EOznWJnbowFASw02aaLPQ^M#mVc7ok75Zzuz0qLu zT~g!5EvMKx%U9SIP#f^q@Tursk#fl&WC+3dNj61pa z{V#L>8@R`Q7Rs(`E7QF}0zZ~JYq4@#=dy1XY8}eXuA*|<-eo5~zFudo8}|Pq>uka6 z;+G;m(v?4r>=QCF;nETMzy*jcOG;a>CjW@x z31ZncZrlo86^sGi7~d!YMC(?7v0dlZq5l7KZkRBE;|>2Yx0fZJl+8W7P+b2-*|2Za zIX5lvY}urOmm4v%h8=1CcUjeA$EQQ7y2{7&3w5P-cA@BM%`&1E=rCPbF;)}q6(}^E zqcMR#oV%{mkA_8CXikUWUq?7V5kP!^Z z>@(6_>=9r+rMc!SQqeS*q1f+vn==~;F-$fC5&IB*_>t+S5T)VY&=fnxey^stDQTz7 z^&1-aczae3F1~eWI4`%R7s@wzd?*jM)edf)kK)R2v%KXI=Pdf(@nLtr2?GLU;V+E8 z{`kY%<{dB>%0E)pm)LC`Vh|2oA;ob;C^QHY!PN#yoNaJ2{y2&?+yTdFGP=55i}{wh z9kYflw5MSkRpu4(`9I&b~Wh;#Dzt6bHO2_RgtNH^Z zD@Qp(1+v!9=!i7>LXD%UnDc|jA+L*EbK7qE*;G8_{vOn?B@gfi@BscZ;e3pP{S07& z>Wc#Y{W7z#_n}}ICNU4ottmBB@be}T%l?3L3-MwHMR6E%5+Wm`Gyc?#%uSR-7+nv0 zbFrgr!gRH|hK0G50+Y!Qo12ItX6I2Bh9o^5v}*uro@>gb2?*08raC3j(ivK_cbpcW zq?Dv(($d>9A|sm*v~1W@V0Pw%e2lP7N*2SBkBgYe%XFyzwA7?u1`9|TQ-3pg3Go%K zG$$(^8Z5;i9Zh}2)y$31r8C2qTiqRn^k%qm#3crm1hiT&O^ zl>XM+0?7Abia5Kj#P$*=8nQwR+KK4~_Q_hK1zlXzxZ$IL%uMO=))?X=K#gl2(YIqr zCK3~F8#h9(k7ZWOdAN@L8q(<-YtD6a?`WQU=jM#o=3=x3(fbL;G|x`VfYBYh7$+}k z#s0GX@JXMed96Lc*yg!-9l8uSc2h1~{j~TrVA)x@3D%A@xoCL|t=>CjZ3MXYJ5n3! zd`8+owi3s{#!mahF668ybdH?ca-wxfGs){9>-j)Zz%GtO)-AQA2;m&6b4c@uDi_L` z_DIhnE5LnK#Y zFgbJQHM9gsmfVf3^+kBFY0lkF>3r^nkCZ#-ZvE9MH#p~tmbyJ#CX)|;>iH=RcX5t& z6=xZWv-rn~!&13Rk||#8Ag4H{%v7tPJ)Gj`O6XXUGrBB^b4J@+rLWAMAM8tC}Qj2|3v=9wlwxC+xZ|*+bQ(%G(yVY zax$;Ix4%c0_+CCwJ*#WIC4>3eqW~9LZJ1gG(;p$kYAXb-^k3<94rBkq6p#ha#&KMs zHbL&V;sP@|eu)8_5Z~?MfpC^x316MhE?N_H*igks(Zz(~Fj3qw;nIO#8g)NQZ zRpK6(J`Uc zX)!l-iM}9SjECqcdTqlSkeP#ip3SQT&%=Beb`3$Ln^!$dm1-uxcUWirW?0Yd#Cn%< zYtfI);bB;&O{^}`I%}JznB||TTlQwXqyy_XfVl+a=)gOlmg~&B*29eQ6~spyGFoTC zIh8!x;3G8HxTorPHQm2tgrqMOcF5?F&KdEXMr^hQc`Bzlc3SUws$lDfW}_^;|2DZz z`?>c&9Ao{Z&|9|GCZk|H&s_j*6J5xGKoch$z(W8RN+m=@Eeafam)aONikM_To-sMb ztwr>H_`ZbJZt9=BP_PRrbeKMF%9XP!w?77(i(n61PM=JUUJxG1G26gDPz4-zL}@iU zB%Wo50eHXwa+OX=GlY|w&MdJI5{Rw$7UYfhgXE_JVG4i;#kY71r> zvA=<_SOEJERe*Ua`DGT-8fiNV993FrRIIPkn?^Z(mA*7;99FN9w#_E7ag5GBO#=iq_`o?XL&SmU}V*f;zR_dP!!woDe#Yp<Cbp%5XzoWLVrj|4yj|G zKtNS*V}fp*&v}?W^b{4oL~Mf5uiL6O`q0az56y5byzF)k%&ip5&8HRqfnW2X>k{{QTz)`6e@{{ zLa!5r{sm$SU~Tx8X>+=JyvUN}Yr#$*^F;TE z@4TBsZyd2ZKCCnGS(neicnrOY+gKq-e-cD1p_q$+llHN-p^Y6cw#B=-5T9jky5-}% z4((MB0_@+qvmblKGd84c6xfel2Hm*=x|3DqUV}Z=Xem@Bqy3qsTulHv!vKCAoee`S z8OkNPGzAE($Po%@r>PE3wCzN&9*t~S6S^p{SCW(|hMGrmGr4U163FEFXxQ#{$osvh z0;=nto{cD$RyXr5qRF9?9_hifw$RiZLyyF*)U0kD>8f=TiQ3R99Z}hI0_p83GGmFF zWE~fESGFzsDdVeA-6n!dhsjrqX(mK#brzEQ;BPN#F8!1O7-~doYHjEif@x{;*=A~5 zEY)>Hg}o-v??O0jm6f(2Ki2iu!16c0fX`fG>hzTWY)`GO83(?Mq#D!@CxRO*^c>9gu{%WGYa1m>eG&HJ)T?9 z6wm3SJjlb{13LYo*m>D_!``;bqHUj}Vk)D_FZ2%vq+ptzrfttZ_b}*Mp8vd6`M6ow z!=D?$zcvg|!Rr|y*8&5zAL$(Y$-g7OaC8~c%e)!J(UZUhRxb_vdEU>F~m#E zF_j~jRKP%zvrj!6lnjk|H7ZY?mE{tCgNZm>wkHM~$> z?Ykj!buN@!`x3+my$X)HU4QM@*I~*lWRe)maT#M=J^MY>5oF&7zdXK_Nge#eKY+ja zz=Z%fc;0W?0z9lEP2czyiefr<-MPqsND)XEAjWWrkZBjLv1b8hc`{-S&}IjysGGEg1GrBE6x9MKc5CA>yb{G; z4=CzR{dnUsXzBRI4aW;0l|e0)Y&g|JhquH65RX4`NJA8CASp>9A_ueCnm*bBb`f5BZhZ`4Y`UA}{=G@&4`Nzi55n!t9AN2wnGA`9NVBkP4 z>&vvf)8HMA9T(PeNZ0a9gmM5$E#tPUuH^@ThF@wK)f@`PU^EmQc`eZPsOKRE%Mo^1 z>L8Yn5+w#(DXM6Z#wGtn{RQt>p5{~Mr5$LU7b_YU4c3dM5w}v*ZO|YtOT*raM*Kh$ zU@Q|^6BzoF3E-2FY;FEg&zS;ARfMHRG_4xl5<#Cq8D~kG`n2mW!A<^eKuZ}S1+7-uP30M z_9}G^^4*9*)0eyi<HA0N2^<4tE*cAGPu$158~tZ|<{F2hWT({=d4-5I}l#Y`(-G zc%WlYEXl`m-DO~B>b}PCpUdGFPMmuTu5w_Ga2Tp9dyfIxv4Zi#x;2n<4MC07vn$S* zU^A?B1V2;{19cfSANTk0=Y(~*&5&1w3w*MVi@Mo{+YEWK*Qo)x9d0xH=aLq%hP$}V z;3{)h^}g@x47s5KeVu{LFog+~xz2#)K;hd}9Y1xZKLgqnD`EX)?lDC06))}$$Q(K4 zDLl)uQ9r;c%-m(bd!-YdyA18#ifgo=Z;}5TgW@*!13~0%>3aniqLDf+K42x+A-{N0 zhieLAfoWpPn&x5XBc7yV^A1}25(2;A#}g^+i0U^;AUiY^{k((rQ<~$%ku9VmuRbBt zf%<@`>xh}Xm+US~=Sv7V0ZH2F5(2k^y1Ikl+Gxp=%=+{*-TDR!Iy9KknGdaIy{Ib} z5xs@#l^)LR*H;k0gz3rLVQ#<84$H)WMGxw?T=srcVvoEdps=6qDL%ltgOHuioK5n>MH3FXs1|ES|?_Tp;^`yAQL58CrT*On^36+358Ye zPq6p-Vmx*^z`5wof428=3aZDOpJMMrX&8Bly$^?0Y#P6f0ZemmYNDBgU=L``k!cRP zS$iLy08Rbg@e;!C8vp__)f%dfy-xhm)+6B8EF>=lsdG{o{|t<8EOme{ zci>n%Itopoxb?AN83I>05e$JVJHb~uuqIHX%*Tn%SBV|D;T^%<$RLs@@0@JJ>e(mE z`mbnPjLn54rf$LfjS&>Zj~;*IF$5~*=|thRw*GhIdR#$q0f_5`u?K*Cn45`3QsgK$47@b! zd=2}>o!FPW3M@3AG;`JDHTAJaqgiUwkzw;SH)HBWCNQ0&Ok$^^LadY&HpRTT-4%S> zAA_Aq@NE@?Ep1TPiE>LeBf^r7JjC!wM6eCpOc+zG4J=7)HX2UrQOHZmto2P7$uIPh zRS>#gKFk-xS^^zU@&Np3`C+HN09$Up+$-=lLRNY4gbk%A#9D6zZSetHK`bnRXAM2tUMOTS~t^!ujUo{$kE8r15Wti4ee{87aqAMhb%sVJ)4I)BG8DEr? z9?{V}Xy6c10dIEedZdfSP6GcM`vF;56Rq0FwzdZkm*CM9jAy~hc80`qaK0I{;p7L- zTU8*PPMF$^Zj(R57>9a*vyq0c!Ey+Os*)(ML29(aH>U34i}(Fu?V4pW+_UjATrDw#cNCX zIKRVZeL{Jtu-}A&iKRNzo%_lZ?=(?UaYsEMpIrzAvKFmDCtj`g6yh|=SM*@q#LaE>K&AT?p_nr$=a&_q{?JL-y#=Cmgg z)ZA;HemeIf9PX>!^*TlBHH^=^k+Q3CcJH!rcJH!rcBt+!{59ly-9 zN0uGOoDCdg>gb>AZJh$1qp?1mEy2z;h()f9!#*_|dOZiK?eo@QK!hQ&ejXo7Kz#7V zLj7C%P5k7akk&%a#9!MtbT?x(Ge%3-F=}_qxQl^9-tD)hpSMcr#mdm&tm(G*dNjW> z#PKQgEh@o&f^odj=Dc{snvMqs;P6@FGKr~&)!Gl3qtHMR$FhhcSj67Zc8tWBfNUHs zpw%wF%VX=INU$V39zQj?F<9~PgH(9Nak-!n!U&y07%Q8G5u7yWRa_x%YUoxN(gn2* z9YV;6rdAqD!{3pSM3*cIKe6gt&=f&>&I6k1*Vks0k6aIubRdGa)Xb8^;)- z%I`@yE#Dsq%_IEdX!qc)rSsNzDBi^6+-`2?QG*Fei2r;nG-& zKbbVJ+#vEQ{v2UGDiG@qjZIGiZEtKGXz{IjLK=YXaGr~au>5ng50qCWtNPfrC zJ5{`A(0eev$Z-k$iF|mDfG4&P4std~OCxb+!%ZcF^lIceKvth^rASn8jN$e8`tLJAiR*Eq+IwSHq6yG%9y>f~`krUDY z=hHW%{20z*^U3OkD$GJKpD16BHkm$@fUY-8ctkhmGWi4K*-A-piYa0%5WO;(o({h) z6`GTnjX@syQ?cgp$4c=hl7yxNld#(e_QV$545IJ=o(_ZwJp*BY9!y41KItrU5WiH1 zm-x`#i5>qx@rx6BtTf1&F0@<3}YW?e} zwo>E{pLb4?i9~S+{)7d5X%640=z$e$e1f0fpbc95fP7H7vWWZ(=ii_s+! zGJ6%}j%tO2%D!$X2IL_^D>W0@$ZLb`nKBB32RDo($s9XT5Umc_$x;ZQ2KQ@( zd9P;SvCP}KlTZizXSHG5BbYu6TxOO!3jp{MabN3Pj99IUIMfbDX5B4c>#4+?m&HKo z79zHO4;O0_>SV~FhZzXr0y3XkYD48rs>m>lf4j^-+foH z-tZ-l0Uh`&;IH`@HetAru|Kr}QVagU*bB_w0;5--q;9~ zM50*L*IBJ!0=HMh`u!NOJsXj2pLTe+iX5}Kd8#+A#)-3@UEu{LoRMMC$8bA23d!^Q z6$|Ui?2&(ggbW@}S~H|#Vbg0s`YVRijjL8@<6_k@(TLFJ|NBOJ;uA7pUS43GJHv zB*&ttWB&@X3QJukJ#Pt zMq@9*O)p_Q-J#DzSJf7QQ*tg_cV(oayX@&)R~e1X1^S$cz+P8b966^3d0iKS$(79= zGg}j^D6A+fEsZ@5gwE3BaKw+~5Y?nAqlRW>u`8#&Gbrud1^uP}75$Ca_4DbHX!?AX z&?!J^SNt#gujpgd*)&#+%Fnrr;*v}#7&qtXBmXO!8!_s;d5&}vbb2|-X;bvon8~K{ z5kG1w(Jj#1GIisstk_!_378tg@)|k;BduVuA=2-Y84ZnDN4_9s)FEo>FxHWH@7|&b zE`>|4Bv~uPABV0}?a_X9b!{EQMrtn3(yNfFdOo_PO{C&WpTeJ<^k$-0Te8;IK@lC) zLkFRK*a}AbrhQz3=(>H-XGFG=BKrtVL`o|KiG7?AO8SCMQ9tb%wG98-8X&CL9pw45 zY{D%}Xr=h$CjEIf#)Uctf7~&?%Eah}e_7(`ix__&t+n43m$$e@SQ#xj=gz%bY#FSl zb=73+J$*6gaxAoYpT)@PR^YU(=-XGW6}esZ5v4lo&P`bNLb`iEowYv}yB|eO-^>iO z{;pzW1UMRGE2D>QpXpnKOFd_QGsEX?Kj<}K_g z1Vs;9v3N%xfVnntuD$9HQJ^QVdiWduWDk(xXk|O`qwkA70_{n^mc@#VRQh!n;v7tw z)4$ImQfDKHe9$?)i&!CMrCx@gmdY50Ux7E#qg6Fv4i$le#&&t5-e%6`97!{4!wN}C zx8ykO6RGhN<@_kw7Xz~^qI`?m>X$6qJSrAsi+G7_MAIyr>{q%9ncPn9-(Unhq>Uet z-S&jz^cfFdpYi%@ViIWsU2`oCyq57161$sm+JCiG2)ngpxTZyAUY zR;B+y2!-V}P_ncj{YPS4IjzF-iuC8>wu@vh34tWp`7I?8xpb0#Tau;tlcZH%`W+%7 z>D~Bgz?y<@Zexl?)Srl|BnlsWfIt0b;_*od`ro5J#V9)4XiME76Hmw1fzf7MILJt2 zRZEK|l45q6HIq;ZD5Nb3%qEm_Afe8Yyd`h|rK z9DsQEtcNIs2#H~=(D{y3Nj{q(H;MB=9^jCkQ@c0@2>C=)G)61K*yr#zzf+Goimvc% zwU516qA>ReH>=T%*o!41rla_obS^}>`Wbxv1PIehNgqfl;xit^W_uZY@q-AdCEc0j znC<26=dtX4T)pxK1R?7%zFqz$elhV!zf7#_TxJ>qHsVkEWQO6EINT1M zCW7@58Ll!TOn1AOX?3XZ51BTaCJE{KG%Z*BP6{INi@S=S%yvLdA7Z+fRYp7W1Aa$8 z0!B52X-7DJ1rvd+T$mLE!F}f$C=35tsZW8_!ySD;HmCf3W?GkqmOE3bndow4*_Hl; z5rafNm;SdYEaSpNnW&noR@A0eir0>Uv*zcGIpFrJ%-^dloZP=P{z-ULXxFd+j z*L95S1`%1nJIszn$+@RN8kLc@Umy*ZjOMpk|E8I{)*(wxgxoM!4#j?lst;zZO7i@@ z2KV*%u8TX&+R5udOhd(2XsB9)Q3nJq?&1Cz&2UGWH?UAyDg?7xNFWX-e;~h{VTlI_ z>{x0<#*;&ga~EJ9%7aG(h{M@O%EGT0`&aZHhC5^gBgvSwY5Hw_B_nntSrL7D6y?Bd z9qlTU6m|wZElYa2%KX@NL=D8QWdcFv;W#&p!!1V7m3s%xd2&8$*Zzfx+Q<6sH47F< z3S1)V$PYn>ANs8r)j~7HWJrI~g!z&u?wfT?OVCM6zZJXANn8CZtD-k86oP58l>sCR zCq$=t0afqxDN|8){@cgG##zSfdl$mJtZ2spDl~2UtSRF?$|H31;jXV8Jaq8zq5IYD zM^uhF3huMF;JriiS@qbE@*NNVthKGHj#+QOP418UHM-wB}uNe>}H0fNwo@Dgp$&nCi&0hu})xgum}|aGeV{2uU4) z2+Q!tc&K|Qmi{ZlFV{ER2P?sEBmNkNf3|^{4de06Mx{oMVHiZJ-ibHNwbdC3x`7(H z3*t}C4y*g-GVSL0{o`#lI6=3YxSxyr3vnM8_cn<$RVXCmC7^JKxL*ps^~kl2wz~U3 zQn;vUZDXNY=bwdFJb&GM;;cf|dgQGBh3Xt1-I8&$`p;8k2jHrg8V74{S)`7wI&oH!`eGXCd~?*E zBZ|~NmYq1ORK3@GHny~99!mea;y(`lLbalvWjyH^ma)8MZDXn0)N3|s{3wx6Y9{4; znvZhc9Hu+J58Y1(iY`s1d#p(8(?jV0Omyt3I>t$%rfl^x;uonuts_@EP#0f&g3vBo zy%3`$pM<^@s=Tq}Aty#2X0O|fcc!l!PyeD3toL`IKSipgoD>vzE>bTGweS6m^Efo5 zP%Sv*p4CNa&LJ)H1#3|%qwdhY?Xi2TD_M5Od5L9nf*i&pZ8nP`?mn@E*zDd%rcxmy&jlC6%DXXZ(lHepsjv);4;Xnx`l53RO(N)xF_$&nCnH0?CFd@V#aLf z)xTq;e}5A>+^>ZkE=rQ;Wl6@l!cQ&QeiXInD|APN>KDS>6ZNFF-%xVZin=IOpD(z0 zfvwhwM%_Ax_`{n-KH#uO6^LvvuO$7J3c4RHr5r|x&VLvt4}GA+rD{du!1;yHI`Y$g z;EA(_cppFyU8ruaB+WY(vj>}mdM{Nw8>ma0p-bR@DMM#VUhf>lI%<%bsyduyc@q+5 zZ}>htOZ1u^7`Am+(-w}JH8BHy)W2S}d4oU^HBg}aBwbX+1ZqE& zF^kn8Nq5sYLZzx!!Ws`DREE2Oq_Rh-l&diU-7ipuIzXU7LbC#2pyS9=K8ESyYJuF8 zA5}GKR)J?QtS>#_?9bx~4F{A9npLYu%?f!&0+JktG2Ix2V>eJ~DIhcnk6knDytRa8 zs3s<;!s`x9_nh##7m{LbdX^+HN z8DpM#7{gYoTLk)6a#)Ey8>Ty|T8Hh#yJy|i!2*4#rlLUI)dZ3Jhw2c4x(W29I#eL9 zKtaz8fyxC6du9pruV&IL^~~`w_nApTWuAF}lzPoisJG`P2^%V$)p>#zV;*Xtus|mo zsE0sJ0@ZsW0$pjK8i6VdR4-70K*K$a0xdI8lLgk)*Gr|2JmV~u@AD(c%P0e_IQ03& z6V+(XLix=F0u*nEhYR4fH5wp=V)uPOf>@~QN&@{>6XXS$% z3p`^zGX$C_&;$d0C(v9%NO#I;rkf9lb$kD!!Hpr$8qWfOMivk{&a*^fUVaE;p5R$2 z(9R`<&hTs&D0(=dJ3aRcbdWW;ah2yO&jSM8Ch30Tc}U8zb@a@E6V-DbY#t)_X{Cf- z^jp+43CueWb^b%KQTwPKR)7@^YNiVIYW`PxL4u!gx})>->`PeBe1NrsKEMhi4( zt%k<9VvevHy%3tZ3t3^d0;&EOgqQG=M@0oHtpX-n8714RUyY%P?qMuDbSiv(&A z=n!kMKnDpl%{oG$!v#9jS|+?y%_lF-)=CMx=OA*uz(BJOAapohW~8hqwGdijB}Eb^ z31@4p;{^KtQ1aPkpaE5cPBhSCm4woO@*s)+$1uN5ChS)5Qs6n&Y7;6oy$GEPD4X8} zCahS(wp!~X=C3C(<`o87EMZpzqRdLxFzh-)8Ln@ZunvBykFE1vxqoJDapm{9b+JG?hi?I8%lDmiiKIJeAZhNg zE|svTw1*$8ZQji&x2`|idy_W|=;uCi?f2dc3y_($!=oYfcp=@zm2|Hcf1UV`>O)M^ z8oICSzugY0_2T|Q+zH~AR*ppIg#$)LhpCra_K%KGXV>rYj!@}Ry61|&9sXfzW#L4` zdE@XYi2wfZUC90C-KN2RWeMr`5X`mxXTg8$+Ifh{_~2^RLb!*mVa&<1h6BH9;VSrd z`03A`eOxBy2etR*gw!Diky@3wJr>bFC`9+lh0hm+R8;(T9(!WcRu8w`mxKA_e)FPz zRk9!a_KCsg3+A?$)^3c>ZGTSOT}AW{7)tkq5Z%ifHb$M8>nEMU(2;a6fNQI}`XN-E z*!p~dt=@n;Lj7TS-@uIa8<1B>om6l-I7xORCvO}{d0vM&AyrdLzdhz`gdSQ%|7o+% zgMZJl7e%X7QR8KBX9&%l0lD0;iaCZ+n;!LEk8OA%DJsdJzeB6^rd;9YHaz?1lsCc3W=qdOs2LMPJwUP6ZmCo_&C=H5YcZz`et)-iPN5jtlcNPn+7x{U$4&3?MO z#Xnfw2EptUe{XSPf_Ys0$A~*wFkgs2A)KrfOo_Nff|)I$=T9O1%cP7G>*-%4{#V-Q z_Z~twM{0SO;7{L=nB&BMsc`<8_*aY}ezW)o7SKOg{9{+q|7-C-DrH+)Lclqf~4bWA&bXyOkTUtc-p^F8Gs#Lt8kEw-K*P zae6KNBP;0ENr|)s#z`D4rH%dB!#pDWJT5CGD#oJA5=K3}4HUWjCblQIp4TG~vi@tLck4LS0dgQmbIE0dRi+9a}v(V*>nd z^kQh=JdQ!d;$G{aKOu2qbqrlT`ykNY-IMfBip+$6L1Z4>QIUmkOCw9*-qLe9-1Rb| zeG`4Yz@xTC@4}e42qS)-`cvtBIemp&(3wX%UyHkb<{G3LcFeJGdseK2WHyi6<(=Dp zp-o_*3EDHvTNQ=ZroN@&DcPBDjO297&rc-^Y-nM?Ky1zMLvG zvEVYq{Ce&Ui1W+HT^KiyuD_$WzdEG(2DpQJ-vjs4MUO&@T6;YY_bJ5et9s4a1^0wQ z{s8x|(s$u*AN>I+{ASX}@J~isVCud=?R?SvHT=)+_Z{4A`{k8*R2jxrkBZHrd-Wu` z$Cl7NSlsz-eM{C7fN0HYF<`$EicX0&f=dcI&rdnUYv#+{c6s}%fXM9yk@i)nm%ge`w_zoHmEC(3QfcW`Kn^2Rs$f#d zjP~)8i@!|riqXAq1l@~)XI=-F3{(AQQvd%Ha>~+IeNiw2rPy`A;h?N@pET_#&>zs7 znt4@_dUDz@@^-|q%iyjR|NLB`0GE`HLwqe6-JjfA&(I=BSeMSDUKct+v=ooJSKLj4 z8Hb+7qy8y6Ft7*Xe}Nv-qq<33sFJpGkhtA@+=t_ead2m}|4!P)fZ6N8bCI}p;vN8( z(nv!Zhl;fKmdX7hlS_8IaP#rRTs+9dSWPo#$7+t-!Yr zB3Da}x(u4OeGWOf#QP*_?d36s3HrvE(6TdrOoobU;;z<0w9Qt$Yi5PKSv!6g-H>lg; zz7Cg|r{N##nU`4+tG`Ig8jCr$t-`D6K3GckOXwu%}9i`(a7nKwtIZQFP}t(Jh9A`>L;7 z--M=JbKo?{?GdD^QfI7ZF58D(hJGeJ_e!{L3bm=|UHhui2D)3CL+EdV)w{g5`hF1I zj|XkH`>Q?}zxu2DC(u1>(L0dj(O8@GSBnnVg*E2+OBr*7jM~4E*}{F|ej)B|acf7* zC_kTWZ*dEN@u)a^6;s}_p)=9D`s?UkIiBvf^XTTyqPwMm?rCtH`1dWJ2aLat?v>-| zemjqD-mH0nDtmzdYa)16*%QHK6+gCC*R1~q?#I=xV4O~+s+W2-3*bPpGQ0Q0?$ z5_qNVVF?6TZqUSXD-m3=!6Yfs8X4$|De$t9hfmt_=?y!|~ z=TD}a7R(%B^LnPsGKk+}P$Cu(vi6#XI zyQu#`rQOuU20C@lp{3o`^#W~Ce{7j8XBUptj+S zo``zhKyTJJdZOwJ15IB#(o?K@)M%Q&=)0h_L@hSZ?MICCl&Q4_8r^S6X}NmAKr5Ft zdU~tf2I@7U(Nm%N4AxX;PF+#jN4;mDqt=h~^ikch|4f-RtlwkxRX;P()AdJ{_EVQ- zptjQf>LvqSbLdf}1Jr97sI3&$h3ogE@{h$Ql~$=m2KxQfQve-hphu^kT^dsx40KMn z-{uTbyA3qt$StLV)V5)oN=vvAmyCzjYUs+@mzKuWY=O3@%Vu9wnovtk*u(uUEv->! zn6L-?T~j((U1p#jQ%)EhHX(R)=syEt6B|-h74CrOjvLl!!8hLt2*MqM@omQPsHA2t9q{a$47RRn(4NxP~X3nPEwBcj zGYbckH~frRqBaO|Cq=>_~O-B!+EKg$Jzy)G%2?&(0ZdEmx0d zNNQ}k`b419i*KEIY}s1>aQm3z}n}_HmmP5(C)IcRJW;;yE?G;A7$sMJ{c&# z{1SDJm_u$=f!hA%SE@5-GUgVwU+u^KpQ{bCG}M0dbn9w$yMYc}PUsB-{cSX%FEu3c zyjm5{W;)8Vy8LQ2SD>wdyJyvxU#E^R(DSoK0Xoe<@2?ndZC6_iG2c7Nmn?B`E3mhmUM9gc_rOs1HHD2=?*v0ZzWyQK$lC{$p-qTK<69iF@bJ0 z&;ye0egmB)VNV%Qo2E%AkbE2&pEXG z26dBxrmnMmzfe1MOf_NMqVk*6CoQCMdf@o{7xQjb{}5FyG7;9 zXUt835W;Rzg#w)(cnM**s)z~uAnzMMeFWO7T8>&;ew&)EW2&J0-O*S5*NLnRgnFY35uE6eXx=NM=Kpu5$B2Kr~k>GnP9HGwv(RMWBL_o_{YG2LeM zGt4sXR~HGSC2_yHMj-0T3FY^zJ2TK#_Jitqfwl%(SDjM+ka{-*on8Jb^@)bmwzdn) zA6C;3XAWD{lF1jAKcZeU&@0f-9ctWShMgW*Qgn6B4z*B2>bYY)YKK~7phK4v+GL=e z5_Z0UmP}^YRR%h4(&gnl)GHbS*B_j_J9P*3EL>v_*W{|1!j`MZJYkVApTTA|DLD01lL2^pwz zKYy=~r_4YVt9F!!Jyiy}ab>7iPtQ;TJv}1SE9w~~(3Zfnhx$Avo+UagaPpe6UL~IO z2KuCm(9aCCyNJ*>13hdJy3at}6rtw~bXpFfcMSBrK>sk%K@u}}rIaCXygl40N7AcN^#yDbdpgdQPCX3>26AzA#Xk zKsl>4pWjK$QUkpu&=3Q4JD7YbICs+(0`etjR#%AI`8j1{y6?RvYM_ zM>FhX1Jy|RE;i6Fh04ta8q90s~DujxldA(A|Rw{mMW$ln{E!KyMsF z=sg47C47EkpwkXySm9Bc&(b<9zJ1v=h9!zJc92Kt?Z zU2C8+f$ld@rNn&RKszLCw}I9O^p$}oO3dKVn$J%qtinKpM1u7OI#OaDWT1#Ziwx9F zVzwD*hEO@vK<7+h`F?JoOGGDrX`q+d81{^T)FFiaV4(5!g#Kor1(ME&4Gw2Wmh?7d z26|1xh8k$|eoQyfK*vbfd;?u9HI_8c#}am`ftHP7y2}mJE@5{VXg~qOo;1)z346mp zV^%TjQv*FFVOCP}`LO6j)If_QX2L*gMd!yE=+~lya}AU$`K>X~%2MXgZlDvU61v1d z8)p-`#Xyyl2t8(?3#5&`W}x9B&%YRG*%6Gn$3V-a#f6X6T!*ALjTz`Pk=gzRiY;Ke znFg9J&BxYXpYpw`v%%5+Vib}?q5hM z-Hy|I=FcZIK%mX))K#Ub#1m^}*cNrez&;4OMj+0}Jh07Vh*D4IoVtq8+Y)xF3HwMO zQptun=^k9mbX|unK5^e+|2S#iVPB>89hTU@uq}ammksUJ+jELQTUB`CGydM5i!;#h zUVS}JW}pLmReIhu&<7J%^on~v&p>VXu%9nYnp@Qe6He(>>*=0>F8F^~dk^@is;zx^ zpO#DtA%#c?ErF0iO(2v=fOH515=dx@CX>vB3?!K_GYO!Ai6DX%6csE8iuZzI;aaiW z8?LdSSh#jY1;v7$YXe36KWptXB?NqZ-|x%sH_xoL*IsAuefC~wpEDf=iKH7O^3+=711%7v|7pN;)4QkMF-wtlV3{XXuderuF=ANRL@S1GY=-g1xk zTdxfDaWD0|Nm=dV4)wcD`Q7BorvBD%yApPpELS!)({i`c%g1T`|E>)5aS{D@Dy1e@ zIJHdOrOYw8*;D)U-=)<0xJj1#l@=d2sQ+$djgQOh|A=zEkIU)*xU$8^mG*y1dDY~` z###ICRlYYldt_7pXO(HIWSnouSo^=IEH=64id*}?qFm+U*7yI9a-Ye~iQCryZRLQ; zT^ILM{|}U(Oz!QeZ}sQ{e^i;` zxk2G!38$3bOm06c6}8Xh(x+0`Gr>@8J}xaGR9)}m&QFL@Up2WO>u*Tts~$JGYjAu6 z)VMX$%N^j7)o~`b8{A-Zp2_u$+?g<3Z8f=!$fpvY#7Z^Y z$4yOKsFpFeLA)PlO?0ZOP2JYGixZcr`Z`%|f6ThXi`8tCyS{Wo;tF-9kGmzYRb9%Q zyvAFtUMh8#wdwne)#@6lv)q$OYvM^6wqi#2K z*A{*iyhhz+a-vsy-z(HNP42&AcP3t;iYqBjS^E|0GRcYEsb%UF>I=+a4>$M$Se}2C zJfiHT#}n77btaeCRHk07US@Ki)DySK9Q;7y)v9*2^wP)rOyafbP?PI! zeKB!^y3FL}Hhq@3QEfH3F_XSdyixtm#t@Cl$4EU$&@o~2g__z9k$(0p8IN*8pi}liH_V_0U>{pj= zklcjAfg!J|SNpinE&oyPzh3GRpnFs8@Nu78-chfU%ye zZ=j)l?c-(+4ApXP^43s2u)8+T$9V?EY7hFjwF7%=<8PLh`(y4LI8bXcxv4St4NTTj zH%Z;pm?s7f)@GYrmixJZ!?i0+ZeXw12WDuyOz!dILjyCl{U*0N<;#I%w5rY0%Lj2M z2cE07`nZUs9Br$~-5-~bRHU{0xG_mHv_mF0D*WWYIU4_q` zK9aOXv)w7Vv2pv8HfS%HoIUcrq#L!X?~=N=WA-QAq7B_Hx#xH{9XGjJ#L}TH z*eNYvntH*Y7qkwO8x-C!=oKyX9;w?8%LCe4lT!+p4SG|1&Bv`9^qzLo$2~FV6RmZZ zEcavmu|eNx$4%}U9N&Mn1@}qa9pHY}+D&dZxL>uQ_e)*R$e`p?+9s3Bh>S}P(k%~2 z-L%M|$&vacCKpqkm)u7`XmUgI@{;@O=RPPcMYmbW1N1_ZJ03nOIZ3ZHxlK!quw=c? z$1O-s)t521L5vHrB@fmkcaxV5B6Y@+fSNP9)FP+f6P7 z+jALZ)x*G%rix<`{6_4iFKdhDagP5Ngh_t=c~WS1VhN7jB1yfo{>O>P{#EY+u& z-1$Y(Da-ZzC#2<9i+ZPAq|Y zmHMWqiQ9lXqLWfu^`Du$N#wOmPPt5v`=_*AHtANeTHj%E3ujJGS)&)UOWnhsiOLmv z!d}TWES{*W)z_PxK47AED~&&YFgl8}wT`WPNWAyf|f(zMVO`l3JazS+_k)x;5g0*^0PT ze~P&_kv{vHlw0+J=SbHkV!+*|%d0ba1$Mi>gLTh|Z-Y0c+^%2u0(;>rx2^gn=Gvgc zGg12FeWbfdd@|{?#I5@I%t~MY3FD*%0|y%H4Xa$=wU?Z~7z5wTTxZBgNnKmrUL6N%3Nb{<_pz zo|+U3?x57+i1w!J)YrevK1H{tcyW(D^mWNSSo}iDJ^BphR^j+!#V*~(oIIlY^sG17 z5?)?QxlecaxOY+>&^Pf=tP?9o%+^m++ReOjL_IZOA1c=2!j z0_Ij(`X16}^_ZHp`7^mEfGFt~{+a^;LbTsk5imgKIT)KhDK3bM@;@E;!kp`kH== zY1un@Ik>w_-7AAyQxE9(n!3Y-)_{B1)XnX8P3nL2rTuubb^R?vbl#XXGuZZ|kkhtrAPqwxzzKe_(RIme!}fr=K#p9|!GBeP54! zmwc`g*G`TXALs{7?w_f|wZ2C>IbJ@{uV!wI<;#8#rGB7ynB1@6KGaVzw@P&D|F6`K z^zQFdxiywONzbJo(t9%3W_c;;U*HlUJ(H4gN$gH+8Q5TZ|+6`OK}dT-v`a=!kAJxvd#Hj8FA? zv)rDH(%?_^WwIR3fc>eT>5m`esJT6l>iP$g`?f_9NA)C=tEe~;c2vL6LmN%&?hSseCz)Kgrms`K*55fSbt}g! z;#>V2lXEhsek^sB%q5uIe{uKmTm34N(;82uey49Txu5z*r2U{*eM03{i7gnPKj}wI z?#JNXX+P;@C#3FW%!q%*o_1W{ zML!*dZcO~}v|sgQy5t5r$ETgtH{mHP(nV(~;&)x39^xMDKRNAp{c)4Kx_^0^Fs9;( zV$v;|dqb*bRGHjz`wgkO@x95thhsMkONi;Eurkds3QX=)_l0S}#(IEliJ-l!d#o>g}yg{`^MBQ z?6WB?()fwFRhH#_wtzb&bz)oeEvZpPco^3p?!Ylb8@)~L)A8{l#>g?bP4>IfVvO}Z z?!L5GV<_H>O6%XwzI)Po8grOi#pAQ5QEzeuxMSPXxWwdQnL8xQ;fP3gin%t6z?|IE zh{N-J@@V&_^fXc>hqXfyamLr(WqrL%

qKeMLVUz+=`v^azQwKet1h`BGN#T)O$ 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 literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.meta new file mode 100644 index 0000000..aa20ddf --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 202f9ddaf2c1a8a429504f7f3cd7b84f +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.xml b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.xml new file mode 100644 index 0000000..8e0fc4b --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.xml @@ -0,0 +1,2405 @@ + + + + DemiEditor + + + + + Utils to use the correct method based on Unity's version + + + + + Encodes to PNG using reflection to use correct method depending if editor is version 2017 or earlier + + + + + Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account + + + + + Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account + + + + + Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account + + + + + Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account + + + + + Returns the prefab parent by using different code on Unity 2018 or later + + + + + Starts an editor coroutine. You can't use normal yield new WaitFor methods because + those are Unity runtime, but you can instead use . + Other than that, you can use normal yield null/etc. + Returns an (which you can use with to cancel the coroutine), + or NULL in case the coroutine completed immediately. + + + + + Stops the given coroutine generated by + + + + + To be used inside a coroutine as a yield instruction: waits for the given seconds + (replaces Unity's yield new WaitForSeconds because it's not available in-editor). + Example usage: + yield return DeEditorCoroutines.WaitForSeconds(1); + + + + + File utils + + + + Path slash for AssetDatabase format + + + Path slash to replace for AssetDatabase format + + + Current OS path slash + + + Path slash to replace on current OS + + + + Full path to project directory, without final slash. + + + + + Full path to project's Assets directory, without final slash. + + + + + Returns TRUE if the given path is an absolute path + + + + + Returns TRUE if the given path is an AssetDatabase path + + + + + Returns TRUE if the given GUID refers to a valid and existing project folder + + + + + Converts the given project-relative path to a full path + + + + + Converts the given full path to a project-relative path + + + + + Returns TRUE if the file/directory at the given path exists. + + Path, relative to Unity's project folder + + + + Validates the string as a valid fileName + (uses commonly accepted characters an all systems instead of system-specific ones). + BEWARE: doesn't check for reserved words + + string to replace + Minimum length for considering the string valid + + + + Returns TRUE if the given filepath is within this Unity project Assets folder + + Full file path + + + + Returns the given string stripped of any invalid filename characters. + BEWARE: doesn't check for reserved words + + string to replace + Character to use as replacement for invalid ones + + + + Returns the given path with all slashes converted to the correct ones used by the system + + + + + Returns the asset path of the given GUID (relative to Unity project's folder), + or an empty string if either the GUID is invalid or the related path doesn't exist. + + + + + Checks if the given directory (full path) is empty or not + + + + + Deletes all files and subdirectories from the given directory + + + + Returns the adb path to the given ScriptableObject + + + Returns the adb path to the given MonoBehaviour + + + Returns the adb directory that contains the given ScriptableObject without final slash + + + Returns the adb directory that contains the given MonoBehaviour without final slash + + + + Returns the adb paths to the selected folders in the Project panel, or NULL if there is none. + Contrary to Selection.activeObject, which only returns folders selected in the right side of the panel, + this method also works with folders selected in the left side. + + + + + Sets the script execution order of the given MonoBehaviour + + + + + Gets the script execution order of the given MonoBehaviour + + + + + Precisely returns the last controlId assigned to a GUI element + + + + + Framework used to fix missing monoScript reference in GameObjects when a script's meta guid changes + + + + + Retrieves the GUID in the given meta file and returns it, or NULL if it's not found + + Full filePath to the meta file + + + + Fixes all wrong Component GUIDs in scenes and prefabs + + objects to use for the operation + + + + Fixes all wrong Component GUIDs in the active scene and returns the total number of Components fixed + + objects to use for the operation + + + + Finds all MonoBehaviour/Behaviour/Component in the given scene/prefab file string + that contain the given + and replaces their GUID with the one passed (if different). + Returns the total number of Component GUIDs that were fixed + + + + + Dispatched when Unity has finished compiling code and updating the AssetDatabase + + + + + Utils to manage UnityPackages import/export and file mirroring + + + + + Stores all file paths (excluding metas) found in the given AssetDatabase directory and subdirectory + into the given AssetDatabase file (which will be created if missing), + writing them as relative to the given directory. + EXAMPLE: + adbReadFromDirPath = "Plugins/DOTween" + file "Assets/Plugins/DOTween/aScript.cs" stored as "aScript.cs" + file "Assets/Plugins/DOTween/Subdir/aScript.cs" stored as "Subdir/aScript.cs" + + + AssetDatabase path ("Assets/...") where the list should be written + AssetDatabase path ("Assets/...") from which the list of files should be retrieved, without final slash + If TRUE ignores ASMDEF files + + + + Parses a file list created via and removes any files not present in the list from the given directory + + Label to use when logging the result + AssetDatabase path ("Assets/...") to the file containing the list + AssetDatabase path ("Assets/...") to the directory to parse for extra files to remove + If TRUE ignores ASMDEF files + If TRUE only returns a report log and doesn't actually delete the files + + + + Utilities for Editor Panels. + + + + + Connects to a asset. + If the asset already exists at the given path, loads it and returns it. + Otherwise, depending on the given parameters, either returns NULL or automatically creates it before loading and returning it. + + Asset type + File path (relative to Unity's project folder) + If TRUE and the requested asset doesn't exist, forces its creation + If TRUE also creates the path folders if they don't exist + + + + Check if the at the given path exists and eventually if it's available + + File path (relative to Unity's project folder) + If TRUE also check if the file is available + (file can be unavailable if it was deleted outside Unity, or if Unity is just starting) + + + + + Returns TRUE if the given is dockable, FALSE if instead it's a utility window + + + + + + + Sets the icon and title of an editor window. Works with older versions of Unity, where the titleContent property wasn't available. + + Reference to the editor panel whose icon to set + Icon to apply + Title. If NULL doesn't change it + + + + Repaints the currently focues editor + + + + + Prefab utilities + + + + + Behaves as the Inspector's Apply button, applying any modification of this instance to the prefab parent + + + + + + Returns TRUe if a prefab instance has unapplied modifications, ignoring any modifications applied to the transform. + NOTE: this a somehow costly operation (since it generates GC) + + + + + Completely removes any prefab connection from the given prefab instances, by desotroing the original object and recreating it. + Returns a list with all the new elements created. + + Based on RodGreen's method (http://forum.unity3d.com/threads/82883-Breaking-connection-from-gameObject-to-prefab-for-good.?p=726602&viewfull=1#post726602) + + + + + + Completely removes any prefab connection from the given prefab instance, by desotroing the original object and recreating it. + + Based on RodGreen's method (http://forum.unity3d.com/threads/82883-Breaking-connection-from-gameObject-to-prefab-for-good.?p=726602&viewfull=1#post726602) + + + + + Returns TRUE if Unity editor is neither compiling code nor updating assets + + + Calls the given action after the given delay + + + + Return the size of the editor game view, eventual extra bars excluded (meaning the true size of the game area) + + + + + Returns a value from 1 to N (2 for 200% scaling) indicating the UI Scaling of Unity's editor. + The first time this is called it will store the scaling and keep it without refreshing, + since you need to restart Unity in order to apply a scaling change + + + + + Clears all logs from Unity's console + + + + + Adds the given global define (if it's not already present) to all the + or only to the given , depending on passed parameters, + and returns TRUE if it was added, FALSE otherwise. + NOTE: when adding to all of them some legacy warnings might appear, which you can ignore. + + + to use. Leave NULL to add to all of them. + + + + Adds the given list of global defines (if they're not already present) to all the + or only to the given , depending on passed parameters, + and returns TRUE if it was added, FALSE otherwise. + NOTE: when adding to all of them some legacy warnings might appear, which you can ignore. + + Defines to add + to use. Leave NULL to add to all of them. + + + + Removes the given global define (if present) from all the + or only from the given , depending on passed parameters, + and returns TRUE if it was removed, FALSE otherwise. + NOTE: when removing from all of them some legacy warnings might appear, which you can ignore. + + + to use. Leave NULL to remove from all of them. + + + + Removes the given global defines (if present) from all the + or only from the given , depending on passed parameters, + and returns TRUE if it was removed, FALSE otherwise. + NOTE: when removing from all of them some legacy warnings might appear, which you can ignore. + + Defines to remove + to use. Leave NULL to remove from all of them. + + + + Returns TRUE if the given global define is present in at least one of the + or only in the given , depending on passed parameters. + + + to use. Leave NULL to check in all of them for the first occurrence. + + + + Returns an array of all defines in the current . + + + + + Sets the gizmos icon visibility in the Scene and Game view for the given class names + + Visibility + Class names (no namespace), as many as you want separated by a comma + + + + Sets the gizmos icon visibility in the Scene and Game view for all custom icons + (for example icons created with HOTools) + + Visibility + + + + Returns all components of type T in the currently open scene, or NULL if none could be found. + If you're on Unity 5 or later, and have DeEditorTools, use DeEditorToolsUtils.FindAllComponentsOfType + instead, which is more efficient. + + + + + Shifts an item from an index to another, without modifying the list except than by moving elements around + + + + + Expands the given array and adds the given element as the last one + + + + + Removes the element at index from the given array, shifts everything after by -1 position and resizes the array + + + + Nothing is being dragged + + + Dragging + + + Dragging concluded and accepted + + + Dragging concluded but item position didn't change + + + Dragging canceled + + + Dragging concluced but not accepted because too short + + + Automatically determines if dragged elements are horizontal, vertical, or both + + + Forces vertical drag + + + Forces horizontal drag (useful to avoid initial wrong drag indicators + if the users starts dragging an horizontal system vertically) + + + + Manages the dragging of GUI elements + + + + + True if a GUI element is currently being dragged + + + + + Return the current item being dragged, or NULL if there is none + + + + + Type of current item being dragged, or NULL if there is none + + + + + Starting index of current item being dragged, or NULL if there is none + + + + + Retrieves the eventual optional data stored via the StartDrag method + + + + + Starts a drag operation on a GUI element. + + Reference to the current editor drawing the GUI (used when a Repaint is needed) + List containing the dragged item and all other relative draggable items + DraggableList index of the item being dragged + Optional data that can be retrieved via the static property + + + + Starts a drag operation on a GUI element. + + ID for this drag operation (must be the same for both StartDrag and Drag + Reference to the current editor drawing the GUI (used when a Repaint is needed) + List containing the dragged item and all other relative draggable items + DraggableList index of the item being dragged + Optional data that can be retrieved via the static property + + + + Starts a drag operation on a GUI element. + + Reference to the current editor drawing the GUI (used when a Repaint is needed) + List containing the dragged item and all other relative draggable items + DraggableList index of the item being dragged + Optional data that can be retrieved via the static property + + + + Starts a drag operation on a GUI element. + + ID for this drag operation (must be the same for both StartDrag and Drag + Reference to the current editor drawing the GUI (used when a Repaint is needed) + List containing the dragged item and all other relative draggable items + DraggableList index of the item being dragged + Optional data that can be retrieved via the static property + + + + Call this after each draggable GUI block, to calculate and draw the current drag state + (or complete it if the mouse was released). + + ID for this drag operation (must be the same for both StartDrag and Drag + List containing the draggable item and all other relative draggable items + Current index of the draggable item being drawn + If NULL will calculate this automatically using . + Pass this if you're creating a drag between elements that don't use GUILayout + Drag direction. You can leave it to + unless you want to skip eventual layout calculations + If TRUE (default) automatically reorders the given list + to reflect successful drag results. + Note that will be different if you apply the drag to the list or not + (in the former case it will reflect the current index after the change, in the latter it will reflect the desired position) + + + + Call this after each draggable GUI block, to calculate and draw the current drag state + (or complete it if the mouse was released). + + List containing the draggable item and all other relative draggable items + Current index of the draggable item being drawn + If NULL will calculate this automatically using . + Pass this if you're creating a drag between elements that don't use GUILayout + Drag direction. You can leave it to + unless you want to skip eventual layout calculations + If TRUE (default) automatically reorders the given list + to reflect successful drag results. + Note that will be different if you apply the drag to the list or not + (in the former case it will reflect the current index after the change, in the latter it will reflect the desired position) + + + + Call this after each draggable GUI block, to calculate and draw the current drag state + (or complete it if the mouse was released). + + ID for this drag operation (must be the same for both StartDrag and Drag + List containing the draggable item and all other relative draggable items + Current index of the draggable item being drawn + Color to use for drag divider and selection + If NULL will calculate this automatically using . + Pass this if you're creating a drag between elements that don't use GUILayout + Drag direction. You can leave it to + unless you want to skip eventual layout calculations + If TRUE (default) automatically reorders the given list + to reflect successful drag results. + Note that will be different if you apply the drag to the list or not + (in the former case it will reflect the current index after the change, in the latter it will reflect the desired position) + + + + Call this after each draggable GUI block, to calculate and draw the current drag state + (or complete it if the mouse was released). + + List containing the draggable item and all other relative draggable items + Current index of the draggable item being drawn + Color to use for drag divider and selection + If NULL will calculate this automatically using . + Pass this if you're creating a drag between elements that don't use GUILayout + Drag direction. You can leave it to + unless you want to skip eventual layout calculations + If TRUE (default) automatically reorders the given list + to reflect successful drag results. + Note that will be different if you apply the drag to the list or not + (in the former case it will reflect the current index after the change, in the latter it will reflect the desired position) + + + + Ends the drag operations, and eventually applies the drag outcome. + Returns TRUE if the position of the dragged item actually changed. + Called automatically by Drag method. Use it only if you want to force the end of a drag operation. + + If TRUE marks the drag as successful and applied it if set so, otherwise simply cancels the drag + If TRUE changes the list contents to reflect the drag result + + + + Abstract dynamic class used for every node of the same type + (meaning there is only a single recycled instance for all same-type nodes) + + + + Used to fill + + + Called when the node needs to be drawn + + + + The connectedNodesIds list will be automatically increased/decreased when adding/removing connections + (otherwise connectedNodesIds will have to be increased via custom code) + + + + + Requires only two connectedNodesIds (no more, no less), + uses regular CTRL+Drag to connect connection 0, CTRL+SPACE+Drag to connect connection 1 + + + + + Like , but with an extra connection as a last extra index, which is set when pressing CTRL+SPACE+Drag. + Must always have at least one element in connectedNodesIds + + + + Layout, Repaint, LayoutAndRepaint + + + + Stores cloned nodes for pasting + + + + + Returns a list of pasteable nodes, with their GUID recreated and their connections adapted + + + + + + Returns a deep clone of the given node but doesn't clone UnityEngine references. + A new ID will be automatically generated. + + + + + Always connects a node from BottomOrRight side to TopOrLeft side + + + + + Always connects from BottomOrRight side to TopOrLeft side. + If ALT is pressed shows the delete connection button. + Called during Repaint or MouseDown/Up. + Returns TRUE if the connection was deleted using the delete connection button. + + + + + Always connects a node from BottomOrRight side to TopOrLeft side + + + + + Always connects from BottomOrRight side to TopOrLeft side. + If ALT is pressed shows the delete connection button. + Called during Repaint or MouseDown/Up. + Returns TRUE if the connection was deleted using the delete connection button. + + + + + You can attach to this + + + + + Use this to add a content group to the Help Panel + + + + Regular note + + + Editable note (activated by setting to TRUE + (but you will have to save the result somewhere yourself) + + + If TRUE shows the textArea + + + + Add definition. Supports rich-text but also these special tags: + - [b][/b] + + + + + Add key, automatically formatting these special keys: + / + + + → + + If TRUE and there's other keys/targets, adds the new key on a new line preceded by a comma + + + + Recalculates all rects based on the given Y shift + + + + + One per . + Partially independent, mainly controlled by process. + + + + TRUE when read-to or dragging nodes + + + + Resets the interaction state + + + + Returns TRUE if the given node is currently being dragged + + + + Returns TRUE if a repaint is required + + + + + + Main class for DeGUI Node system. + Create it, then enclose your GUI node calls inside a . + CODING ORDER: + - Create a to use for your node system (create it once, obviously) + - Inside OnGUI, write all your nodes GUI code inside a + - To draw the nodes, loop through the list and call for each node + + + + Distance at which nodes will be placed when snapping next to each other + + + Full area without zeroed coordinates + + + Position with zeroed coordinates (used by all node GUI since it's inside a GUILayout(area)) + + + Contains the nodes passed to NodeProcessScope ordered by depth. + You should loop through this list when drawing nodes + + + + Creates a new NodeProcess. + + EditorWindow for this process + Callback called when one or more nodes are going to be deleted. + Return FALSE if you want the deletion to be canceled. + Can be NULL, in which case it will be ignored + Callback called when a node is cloned. + Return FALSE if you want the cloning to be canceled. + Can be NULL, in which case it will be ignored + + + + Needs to be called when loading a complete new series of nodes + + + + + Call this when the layout/size of one or more nodes changed because of external intervention + (if a whole new range of nodes has been loaded, just call instead) + + + + + Forces the refresh of the area calculations. Useful if you need them before the first GUI call has run + + + + + Shifts the visible are to the given coordinates and repaints on end + + + + + Shifts the visible are to the given coordinates and repaints on end + + + + + Resets the node process scale to 1 + + + + + Scales up the node process area (if not already at max scale) + + + + + Scales down the node process area (if not already at min scale) + + + + + Tells the process to repaint once the process has ended. + Calling this + + + + + Draws the given node using the given T editor GUINode type. + Returns the full area of the node + + + + + Opens the Help Panel + + + + + Closes the Help Panel + + + + + Opens or closes the Help panel based on its current state + + + + + Returns TRUE if the given area is visible (even if partially) inside the current nodeProcess area + + + + + Captures a screenshot of the node editor area and returns it when calling the onComplete method. + Sadly this requires a callback because if called immediately the capture will fail + with a "[d3d11] attempting to ReadPixels outside of RenderTexture bounds!" error in most cases + + Screenshot mode + A callback that accepts the generated Texture2D object + Screenshot scale factor (only used if screenshotMode is set to ) + If TRUE (default) displays a progress bar during the operation. + You'll want to set this to FALSE when you're already using a custom progressBar + and the screenshot is only part of a larger queue of operations + + + + Removes the node with the given ID from the list and removes all connections to it from other nodes. + Doesn't mark things dirty nor prepares them for undo + + + + + Use this to encapsulate node GUI operations. + Automatically manages various operations (press F1 to see them). + Sets GUI.changed to TRUE if the area is panned, a node is dragged, controlNodes change sorting or are deleted. + Wraps all content inside a GUILayout Area (nodeArea). + + The to use + Area within which the nodes will be drawn + Area shift (caused by dragging) + This list will be sorted based on current node draw order, + and changed in case one of its nodes is deleted. + IMPORTANT: this list should be part of your serialized class (MonoBehaviour or ScriptableObject), + so it will be stored as a reference and modifying one will modify the other. + Usually you want to pass all nodes to this except the eventual start node (or nodes that can't be sorted nor deleted). + + + + Set automatically when a selection ends up selecting a single node, + reset when deselecting all nodes, selecting multiple nodes, or resetting the + + + + + Returns TRUE if something was actually deselected, FALSE if there were no selected nodes + + + + + + Returns key modifiers currently pressed. + Requires to be updated at the beginning of every GUI call. + + + + Note: ALT isn't correctly interpreted as OPTION on OSX, contrary to what Unity manual states, + so using Command instead fixes that + + + + Call this method to update data required by softCtrl calculations. + Automatically called from within a . + Returns a object with the keys that were just pressed and just released + + Required to have the correct for the given target call + + + + Returns the given as an int, or -1 if it's not a number + + + + + Used code from Celtc on StackOverflow: https://stackoverflow.com/a/54044197/10151925 + + + + + Gets all fields from an object and its hierarchy inheritance + + + + + Perform a deep copy of the class + + + + + Does the copy + + + + + Returns by . + Contains properties and methods to manage non-layout scrollview better. + Remember to use or to increase or set the full content height + + + + Area used by ScrollView and its content + + + Full content area regardless if visible or not. Its height should be set manually based on the contents' height + + + Content area currently visible (scroll bars excluded) + + + Current scrollPosition + + + + Returns the current open, or an empty one if none is open. + + + + + Sets the width + + + + + Sets the height + + + + + Increase the height by the given amount + + + + + + Returns a Rect for a single line at the current scrollView yMax + + If less than 0 uses default line height, otherwise the value passed + if TRUE (default) automatically increases the height of the accordingly + + + + + Returns a Rect for a single line at the current scrollView yMax, as wide as the max visible rect width + + If less than 0 uses default line height, otherwise the value passed + if TRUE (default) automatically increases the height of the accordingly + + + + + Returns TRUE if the given rect is at least partially visible in the displayed scroll area + + + + + Contains both free and pro skins GUIStyle variations, + and automatically returns the correct one when converted to GUIStyle + + + + + Plays the given clip in the Editor + + + + + Stops playing the given clip. + + + + + Stops all clips playing. + + + + + A stopwatch whose time can be changed manually via + + + + + Start or resume playing + + + + + Stop the watch and reset the time + + + + + Restart measuring from zero + + + + + Pause the watch + + + + + Send the watch to the given time + + + + + Util to determine Unity editor version and store them as comparable numbers + + + + Full major version + first minor version (ex: 2018.1f) + + + Major version + + + First minor version (ex: in 2018.1 it would be 1) + + + + Assembly extensions + + + + + Full path to the assembly directory, without final slash + + + + + AssetDatabase path to the assembly directory, without final slash + + + + + GUI extension methods + + + + + Clones the style and adds the given formats to it. You can pass any of these types of values: + + Format:Rich-text, wordwrap + FontStyle:Font style + TextAnchor:Content anchor + int:Font size + Color/DeSkinColor:Font color + + + + + + Adds the given formats to the style. You can pass any of these types of values: + + Format:RichText, WordWrap + FontStyle:Font style + TextAnchor:Content anchor + int:Font size + Color/DeSkinColor:Font color + + + + + + Sets the border of the style + + + + + Sets the border of the style + + + + + Sets the border of the style + + + + + Sets the background of the style + + + + + Sets the background of the style + + + + + Sets the contentOffset of the style + + + + + Sets the contentOffset of the style + + + + + Sets the X contentOffset of the style + + + + + Sets the Y contentOffset of the style + + + + + Sets the margin of the style + + + + + Sets the margin of the style + + + + + Sets the margin of the style + + + + + Sets the left margin of the style + + + + + Sets the right margin of the style + + + + + Sets the top margin of the style + + + + + Sets the bottom margin of the style + + + + + Sets the overflow of the style + + + + + Sets the overflow of the style + + + + + Sets the overflow of the style + + + + + Sets the left overflow of the style + + + + + Sets the right overflow of the style + + + + + Sets the top overflow of the style + + + + + Sets the bottom overflow of the style + + + + + Sets the padding of the style + + + + + Sets the padding of the style + + + + + Sets the padding of the style + + + + + Sets the left padding of the style + + + + + Sets the right padding of the style + + + + + Sets the top padding of the style + + + + + Sets the bottom padding of the style + + + + + Sets the Y fixedWidth of the style + + + + + Sets the fixedHeight of the style + + + + + Sets the stretchHeight property of the style + + + + + Sets the stretchWidth property of the style + + + + + Stores a GUIStyle palette, which can be passed to default DeGUI layouts when calling DeGUI.BeginGUI, + and changed at any time by calling DeGUI.ChangePalette. + You can inherit from this class to create custom GUIStyle palettes with more options. + Each of the sub-options require a public Init method to initialize the styles, which will be called via Reflection. + + + + + Called automatically by DeGUI.BeginGUI. + Override when adding new style subclasses. + Returns TRUE if the styles were initialized or re-initialized + + + + + Extend any custom subpalettes from this, so they will be initialized correctly + + + + + GUILayout methods + + + + + A button that triggers an immediate repaint when hovered/pressed/unhovered + (which otherwise doesn't happen if you set a background to the button's GUIStyle). + Requires to be activated. + + + + + A button that triggers an immediate repaint when hovered/pressed/unhovered + (which otherwise doesn't happen if you set a background to the button's GUIStyle) + and also assigns different GUI colors based on the button's state and the given one. + Requires to be activated. + + Content + Default color + Style + GUILayout options + + + + A button that triggers an immediate repaint when hovered/pressed/unhovered + (which otherwise doesn't happen if you set a background to the button's GUIStyle) + and also assigns different GUI colors based on the button's state with options to eventually auto-generate them. + Requires to be activated. + + Content + Default color + Hover color (if NULL auto-generates it from the given one by making it brighter + Pressed color (if NULL auto-generates it from the given one by making it even brighter + Style + GUILayout options + + + Shaded button + + + Shaded button + + + Shaded button + + + Shaded button + + + Colored button + + + Colored button + + + Colored button + + + Colored button + + + + Draws a button that returns TRUE the first time it's pressed, instead than when its released. + + + + + Draws a button that returns TRUE the first time it's pressed, instead than when its released. + + + + + Draws a button that returns TRUE the first time the mouse moves over it while the mouse button is pressed, + even if it was pressed outside of the button first + + + + + Draws a button that returns TRUE the first time the mouse moves over it while the mouse button is pressed, + even if it was pressed outside of the button first + + + + Toolbar foldout button + + + Toolbar foldout button + + + Toolbar foldout button + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Begins an horizontal toolbar layout + + + Begins an horizontal toolbar layout + + + Begins an horizontal toolbar layout + + + Begins an horizontal toolbar layout + + + Ends an horizontal toolbar layout + + + A toolbar with a label + + + A toolbar with a label + + + A toolbar with a label + + + A toolbar with a label + + + A toolbar with a label + + + A toolbar with a label + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values. Auto-determines object type from the field's type + + + Returns TRUE if there's mixed values. Forces field to accept only objects of the given type + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Vertical box layout with style and color options + + + Vertical box layout with style and color options + + + End vertical box layout + + + Horizontal Divider + + + + A text field that becomes editable only on double-click + + EditorWindow reference + A unique ID to use in order to determine if the text is selected or not + Text + Style for default (non-editing mode) appearance + Style for editing mode + + + + A text field that becomes editable only on double-click + + Editor reference + A unique ID to use in order to determine if the text is selected or not + Text + Style for default (non-editing mode) appearance + Style for editing mode + + + + A text field that becomes editable only on double-click and can also be dragged + + EditorWindow reference + A unique ID to use in order to determine if the text is selected or not + Text + List containing the dragged item and all other relative draggable items + DraggableList index of the item being dragged + Style for default (non-editing mode) appearance + Style for editing mode + + + + + A text field that becomes editable only on double-click and can also be dragged + + Editor reference + A unique ID to use in order to determine if the text is selected or not + Text + List containing the dragged item and all other relative draggable items + DraggableList index of the item being dragged + Style for default (non-editing mode) appearance + Style for editing mode + + + + + Creates a Gradient field by using Unity 4.x hidden default one and Reflection. + + + + Scene field + + + + Draws a dropdown for choosing a SortingLayer ID + + + + + Draws a dropdown for choosing a SortingLayer ID + + + + + Global Demigiant GUI manager. Call to initialize it inside GUI calls. + + + + + Default color palette + + + + + Default style palette + + + + TRUE if we're using the PRO skin + + + + Call this at the beginning of GUI methods. + Returns TRUE if the styles were initialized or re-initialized + + Eventual to use + Eventual to use + + + + Better implementation of GUI.BeginScrollView. + Returns the modified scrollView struct. + Must be closed by a DeGUI.. +
EXAMPLE
+            Rect scrollViewArea = ...;
+            Rect drawArea = scrollViewArea;
+            // Decrease the full drawing area to exclude scrollbars if necessary
+            if (_scrollView.fullContentArea.height > scrollViewArea.height) drawArea = drawArea.Shift(0, 0, -11, 0);
+            // Begin scrollView
+            _scrollView = DeGUI.BeginScrollView(scrollViewArea, _scrollView);
+            // Increase scrollView area correctly (or directly set it with SetFullContentHeight
+            _scrollView.IncreaseContentHeightBy(...)
+            // End
+            DeGUI.EndScrollView();
+            
+
+ Visible area used by the scrollView + target. You'll need to set its size to the correct full content height + (either within the Begin/ENd ScrollView calls or before them) + If TRUE (default) resets .height to 0 + after beginning the ScrollView +
+ + + Closes a DeGUI. correctly + + + + + Exits the current event correctly, also taking care of eventual drag operations + + + + + Removes focus from any GUI button/text/element that has focus + + + + + Changes the active palettes to the given ones + (or resets them to the default ones if NULL). + Returns TRUE if the styles were initialized or re-initialized + + + + + Resets the GUI colors to the default ones (only available if BeginGUI was called first) + + + + + Sets the GUI colors to the given ones + + + + + Opens a panel that previews the given texture (if not NULL) + + + + + Gets either black or white, depending on the color that would be most visible on the given one + + + + + Gets either black or white, depending on the color that would be most visible on the given one + + + + + Sets the GUI cursor color to the given ones + + + + + Sets the GUI matrix to the given ones + + + + + Wrapper to set serialized fields with multiple sources selected: automatically sets GUI to show mixed values when necessary + and contains a fieldInfo which is set within the wrapper. + Note that you must set the property within the wrapper so that it's assigned correctly when closing the scope. + + + + Multi property scope + Name of the field so it can be found and set/get via Reflection + List of the sources containing the given field + If TRUE validates EditorGUI.EndChangeCheck before calling it + (fixes an issue which happens with advanced Undo usage in DOTween Timeline and ColorFields) + + + + A button that triggers an immediate repaint when hovered/pressed/unhovered + (which otherwise doesn't happen if you apply a background to the button's GUIStyle). + Requires to be activated. + + + + + A button that triggers an immediate repaint when hovered/pressed/unhovered + (which otherwise doesn't happen if you apply a background to the button's GUIStyle) + and also assigns different GUI colors based on the button's state and the given one. + Requires to be activated. + + Rect + Content + Default color + Style + + + + A button that triggers an immediate repaint when hovered/pressed/unhovered + (which otherwise doesn't happen if you apply a background to the button's GUIStyle) + and also assigns different GUI colors based on the button's state with options to eventually auto-generate them. + Requires to be activated. + + Rect + Content + Default color + Hover color (if NULL auto-generates it from the given one by making it brighter + Pressed color (if NULL auto-generates it from the given one by making it even brighter + Style + + + Shaded button + + + Shaded button + + + Shaded button + + + Shaded button + + + Colored button + + + Colored button + + + Colored button + + + Colored button + + + Toolbar foldout button which allows clicking even on its label + + + Foldout button + label (not intended to be used in toolbar) which allows click-to-foldout/foldin + + + + Draws a button that returns TRUE the first time it's pressed, instead than when its released. + + + + + Draws a button that returns TRUE the first time it's pressed, instead than when its released. + + + + + Draws a button that returns TRUE the first time the mouse moves over it while the mouse button is pressed, + even if it was pressed outside of the button first + + + + + Draws a button that returns TRUE the first time the mouse moves over it while the mouse button is pressed, + even if it was pressed outside of the button first + + + + Toolbar foldout button + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Button that can be toggled on and off + + + Scene field + + + + Draws a background grid using the given grid texture + + Area rect + Offset from 0, 0 position (used when area has been dragged) + Texture to use for the grid + Eventual scale to apply to the grid + + + + Draws a background grid using default grid textures + + Area rect + Offset from 0, 0 position (used when area has been dragged) + If TRUE forces a dark skin, otherwise uses a skin that fits with the current Unity's one + Eventual scale to apply to the grid + + + Box with style and color options + + + + Can be used instead of EditorGUI.PropertyField, to draw a serializedProperty without its attributes + (very useful in case you want to use this from within a PropertyDrawer for that same property, + since otherwise bad infinite loops might happen) + + + + Draws a colored square + + + Draws the given texture tiled within the given rect + Rect + Texture + Eventual scale to apply + If not NULL, colorizes the texture with this color + + + + A text field that becomes editable only on double-click + + Area + EditorWindow reference + A unique ID to use in order to determine if the text is selected or not + Text + Style for default (non-editing mode) appearance + Style for editing mode + + + + A text field that becomes editable only on double-click + + Area + Editor reference + A unique ID to use in order to determine if the text is selected or not + Text + Style for default (non-editing mode) appearance + Style for editing mode + + + + A text field that becomes editable only on double-click and can also be dragged + + Area + EditorWindow reference + A unique ID to use in order to determine if the text is selected or not + Text + List containing the dragged item and all other relative draggable items + DraggableList index of the item being dragged + Style for default (non-editing mode) appearance + Style for editing mode + + + + A text field that becomes editable only on double-click and can also be dragged + + Area + Editor reference + A unique ID to use in order to determine if the text is selected or not + Text + List containing the dragged item and all other relative draggable items + DraggableList index of the item being dragged + Style for default (non-editing mode) appearance + Style for editing mode + + + + A textArea that becomes editable only on double-click + + Area + EditorWindow reference + A unique ID to use in order to determine if the text is selected or not + Text + Style for default (non-editing mode) appearance + Style for editing mode + + + + A textArea that becomes editable only on double-click + + Area + Editor reference + A unique ID to use in order to determine if the text is selected or not + Text + Style for default (non-editing mode) appearance + Style for editing mode + + + Divider + + + + Draws a dropdown for choosing a SortingLayer ID + + + + + Draws a dropdown for choosing a SortingLayer ID + + + + Draws a Vector3Field that can have single axes disabled + + + Draws a Vector3Field that can have single axes disabled + + + Draws a Vector3Field that can have single axes disabled + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values. Supports using an int as an enum + + + Returns TRUE if there's mixed values. Supports using an int as an enum + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values. Supports also uint fields + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values. Auto-determines object type from the field's type + + + Returns TRUE if there's mixed values. Forces field to accept only objects of the given type + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values. Supports passing int values as bool (1 = true, 0 = false) + + + Returns TRUE if there's mixed values. Supports passing int values as bool (1 = true, 0 = false) + + + Returns TRUE if there's mixed values. Supports passing int values as bool (1 = true, 0 = false) + + + Returns TRUE if there's mixed values. Requires a SerializedProperty representation of each UnityEven field + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + Returns TRUE if there's mixed values + + + + Returns a new color equal to the given one with changed brightness + + Color to evaluate + Brightness factor (multiplied by current brightness) + If set applies this alpha value + + + + Returns a new color equal to the given one with changed saturation + + Color to evaluate + Saturation factor (multiplied by current brightness) + If set applies this alpha value + + + + Changes the alpha of this color and returns it + + + + + Returns a new color equal to the given one with changed alpha + + + + + Returns a HEX version of the given Unity Color, without the initial # + + If TRUE, also converts the alpha value and returns a hex of 8 characters, + otherwise doesn't and returns a hex of 6 characters + + + + Returns a HEX version of the given Unity Color, without the initial # + + If TRUE, also converts the alpha value and returns a hex of 8 characters, + otherwise doesn't and returns a hex of 6 characters + + + + Replicates parts of DeExtensions.ListExtensions for internal usage + + + + + Shifts an item from an index to another, without modifying the list except than by moving elements around + + + + + Shuffles the list + + + + + Replicates DeExtensions.RectExtensions for internal usage + + + + + Adds one rect into another, and returns the resulting a + + + + + Returns a copy or the Rect expanded around its center by the given amount + + Indicates how much to expand the rect on each size + + + + Returns a copy or the Rect expanded around its center by the given amount + + Indicates how much to expand the rect on each horizontal side + Indicates how much to expand the rect on each vertical side + + + + Returns a copy or the Rect contracted around its center by the given amount + + Indicates how much to contract the rect on each size + + + + Returns a copy or the Rect contracted around its center by the given amount + + Indicates how much to contract the rect on each horizontal side + Indicates how much to contract the rect on each vertical side + + + + Returns a copy of the Rect resized so it fits proportionally within the given size limits + + Width to fit + Height to fit + If TRUE (default) only shrinks the rect if needed, if FALSE also enlarges it to fit + + + + + Returns TRUE if the first rect includes the second one + + If TRUE, returns TRUE only if the second rect is fully included, + otherwise just if some part of it is included + + + + Returns TRUE if this rect intersects the given one, and also outputs the intersection area + + Intersection area + + + + Returns a copy of the Rect with its X/Y coordinates set to 0 + + + + + Sets this rect to the left of the given x position, with options for margin and width resize + + Distance between this rect and the given x position + If greater than zero resizes this rect to the given size + + + + Sets this rect to the right of the given x position and resizes it so that its xMax remains the same. + + Distance between this rect and the given x position + Extra offset to add to the resulting width + + + + Returns a copy of the Rect with its values shifted according the the given parameters + + + + + Returns a copy of the Rect with its X value shifted by the given value + + + + + Returns a copy of the Rect with its Y value shifted by the given value + + + + + Returns a copy of the Rect with its x shifted by the given value and its width shrinked/expanded accordingly + (so that the xMax value will stay the same as before) + + + + + Returns a copy of the Rect with its y shifted by the given value and its height shrinked/expanded accordingly + (so that the yMax value will stay the same as before) + + + + + Returns a copy of the Rect with its X property set to the given value + + + + + Returns a copy of the Rect with its Y property set to the given value + + + + + Returns a copy of the Rect with its height property set to the given value + + + + + Returns a copy of the Rect with its width property set to the given value + + + + + Returns a copy of the Rect with its X,Y properties set so the rect center corresponds to the given values + + + + + Returns a copy of the Rect with its X property set so the rect X center corresponds to the given value + + + + + Returns a copy of the Rect with its Y property set so the rect Y center corresponds to the given value + + + + + Returns the value of the given property (works like a cast to type). + Improved from HiddenMonk's functions (http://answers.unity3d.com/questions/627090/convert-serializedproperty-to-custom-class.html) + + + + + Returns TRUE if this property is inside an array + + + + + Returns -1 if the property is not inside an array, otherwise returns its index inside the array + + + + + Returns the height of a UnityEvent serializedProperty + + + + + Uses code from FlaShG's GitMerge: https://github.com/FlaShG/GitMerge-for-Unity/blob/master/Editor/SerializedPropertyExtensions.cs + + + + + Uses code from FlaShG's GitMerge: https://github.com/FlaShG/GitMerge-for-Unity/blob/master/Editor/SerializedPropertyExtensions.cs + + + + + String extensions + + + + + Returns TRUE if the string is null or empty + + If TRUE (default) and the string contains only spaces, considers it empty + + + + Compares a version string (in format #.#.###) with another of the same format, + and return TRUE if this one is minor. Boths trings must have the same number of dot separators. + + + + + Converts a HEX color to a Unity Color and returns it + + The HEX color, either with or without the initial # (accepts both regular and short format) + + + + Nicifies a string, replacing underscores with spaces, and adding a space before Uppercase letters (except the first character) + + + + + If the given string is a directory path, returns its parent + with or without final slash depending on the original directory format + + + + + If the string is a directory, returns the directory name, + if instead it's a file returns its name without extension. + Works better than Path.GetDirectoryName, which kind of sucks imho + + + + + Evaluates the string as a property or field and returns its value. + + If NULL considers the string as a static property, otherwise uses obj as the starting instance + + + + Texture extensions + + + + + Returns the full Rect of this texture, with options for position and scale + + + + + Checks that the texture uses the correct import settings, and applies them if they're incorrect. + + + + + Returns a clone of the event + + + + + Utility class. You can either use it as is via its constructor, which automatically retrieves all serializedProperties in the instance, + or you can extend it so you can add as many public SerializedProperties as the SerializedProperties you want to access + (their name must be the same as the serialized field they refer to) + + + + + Automatically retrieves all serializable properties on the given serializedObject, + or only specific ones if propNames is specified + + + + + Draws all property fields. Remember to wrap this within serializedObject.Update + and serializedObject.ApplyModifiedProperties + + +
+
diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.xml.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.xml.meta new file mode 100644 index 0000000..d199425 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.xml.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: d4a42b2e4e6f64d4ba01d35c5a3dafed +TextScriptImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs.meta new file mode 100644 index 0000000..24b1340 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 1efb03f507a60b949a70ed828ac18eb8 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquare.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquare.png new file mode 100644 index 0000000000000000000000000000000000000000..6fbcc5130cedc76f7566a958195e3703ada2eab4 GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMkesKB zV~9m>a!NwNkMjanMkesKB zV~9m>a!NwNgp>sg28IC~ZoCqv30E2pCNeNHGpw>anMkesKB zV~9m>a!Nu%K=J|x1H%9gH(m+TgewgP6B(G98SdR+aC^Gv{4tanMkesKB zV~9m>a!Nu%LBawC1H%9gH(m+TgewgP6B(G989d|}5-xj9E&?iL@O1TaS?83{1OVO4 B8T|kN literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha25.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha25.png.meta new file mode 100644 index 0000000..2d94303 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha25.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: f7ff421f40d548444864a01cd7f47112 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha50.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha50.png new file mode 100644 index 0000000000000000000000000000000000000000..700b9debeaead0d7b26b31ed60c7e84dbf788ae6 GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMkesKB zV~9m>a!NwNiu45x28IC~ZoCqv30E2pCNeNHGq@`;%)dF?xDTk5!PC{xWt~$(69Dad B8jt`0 literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha50.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha50.png.meta new file mode 100644 index 0000000..e3040e1 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha50.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: aa1d42dc6ff3e894da2208c6929d2165 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha80.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha80.png new file mode 100644 index 0000000000000000000000000000000000000000..f4a47c3701daa735d11da1c8e1e3c6f752d222c9 GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMkesKB zV~9m>a!Nvi#bF1=gro%mJyHf)2UajPA7)@anMprDMW zi(`n!#N-r@>Vpnk2}ufqJy{Z04MI!|3>X;nS1{&fnF;m*)iHRw`njxgN@xNAT}&7% literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blueSquare.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blueSquare.png.meta new file mode 100644 index 0000000..490a921 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blueSquare.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 05cfe010378336646ad6c721f66543d1 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle.png new file mode 100644 index 0000000000000000000000000000000000000000..3ed059a404fad33f34ed81321288c886dab0c6de GIT binary patch literal 455 zcmV;&0XY7NP)pGc}YY;R9J<@m%&QIKomt^ii;xRPP(g9TCLFFH;B-M`aR;lD{<2g zaNAFCQxLzQ1aTvR-H6szv2H3p?@gkK1x;I%c?T{t5IXl}I!xa4WKL9d4Z{(10PR7W z&_?`t1U*0l=nA^@JnvQV0LI(U1vJt5nZ&=T{l~Zrok3Gwo@u;Bc~SEQG|>FuTD5u2 zeQ2cl!!`XZ^Ljz%=@47Lne#snw0P+8eI`n&3>~N?#nXztLc)6hiRu_`p%rn%JG6tl z;{Iy~PQ;x#q1P!V9^QT(<0G^xZh3<$+<`-JZ%*iW%m8h%qs;)m*x@rkRqUwp5USYm zQ4(Vq;92Z=VSu67F=T*1>_&^{M@cpt!bMS9|8sBDvMf)9U}KVJh0L`YvIrWTiF37R&1Ql$b@}GBnYI2R x?Ky8uw&(kjwC9!h@slL&`L#st`8a!3kxvBIUpIp~UK{`b002ovPDHLkV1h6R(RTm< literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle.png.meta new file mode 100644 index 0000000..bc2ac36 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: af28470bd0e2e9543a6dfa9a1a4b348d +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle_dashedBorderEmpty.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle_dashedBorderEmpty.png new file mode 100644 index 0000000000000000000000000000000000000000..f8294610e43490599de063ef2cf1c11e2d17279c GIT binary patch literal 673 zcmV;S0$%-zP)pHQ%OWYR9J<@mraO`VHC&DohD7vZSoa0U0Gn^Yi6M)BV~b@WMOP< zgtBF0DaMouF|!fP#$6Ci$;LuaiX=*;Ff}zOMNN`4rknEko$mkEd#}d*d>{Y%%`?x} zIp=-mdCz;s>QM+`CtQYS@CAOssOILuN!SPTEe&CKCX{Oy&T4LJV%*nVftAfT>wt^! z3A#153l71C%BQ5?rn$RNP$1rRHR5~~OeCJByUzW~VFd0&wqEDGFfHd#Js4|JIytws zzS_do@Kw(9ezB|t!p;fV^asoRYvG_4j#&$(`*BOQ-}wESYvBUe;~T8S3dPs-xq=w3 zoXkR>r7Zo4f56Ski5rS+v!yJ5ealXmPN&{iPb!@jLCP_GrOp98{cVdRe4Uoh0Y8d< zjYkUreN?-{1Mv6qH$1X|MqVI6oD{9tjkAC5tXpTIp0_FFs+sD0qau@I)< zj71QBmL*bu)?y2%r<4P(dcQ3(;U{q%7N;A6OwB($g$t4k_MCKW_J z1^eeqk6w7g!SH!)wZd?Hy^?MGE z!jc98cr52{VU0B+HeQnvKap`bSQ$(xmRMeJ9)U5~r18Bl6q@;GRVQ#=0hBbEaQrI# ztqZl<&(smfBAVT>9p3Tz9@d4L0MBUe;UzqTJIw#AZq@7$@4LV9X(+GG00000NkvXX Hu0mjfCz(G_ literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle_dashedBorderEmpty.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle_dashedBorderEmpty.png.meta new file mode 100644 index 0000000..0055f30 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle_dashedBorderEmpty.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 522b0133a9838674ca9a12e0c6e5a59c +timeCreated: 1625322295 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + 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: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/greenSquare.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/greenSquare.png new file mode 100644 index 0000000000000000000000000000000000000000..63ef49a76b220d4de80807510b94f406c525e5cb GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9F5he4R}c>anMprDMW zi(`n!#N;V^PaSgLN=Q-=?8%b2Y7k;#V8Fnje2P&lc>$vzP#uG(tDnm{r-UW|fY%uC literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/greenSquare.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/greenSquare.png.meta new file mode 100644 index 0000000..774d702 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/greenSquare.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 789ef07ba2573f6448fa8b5dc5224c44 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/grid_bright.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/grid_bright.png new file mode 100644 index 0000000000000000000000000000000000000000..5c2feae19dcc914919ab80fb84485e00a07e4699 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGH$&H|6fVg?4j!ywFfJby(BP;i2$ zi(^Pe~gvJ1Rc= z?Ot!qiO>2DOF9@gq%oXjn8j$qoWXX1X90@9arT z#W5tK@$F4Rt^*1J3(_vMzVA+9hCAwRC4IicbTxXen@yoZH)$TLp zrW-e;F`Q+X#c0Bu!FGXXfusY9z&d`5^RH({?s9+MdcCA?-!-jS@BSaK$Ep;j_wA>K a4t9SLo(F6Gt~w8N6@#a%pUXO@geCx~6HWdA literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/grid_dark.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/grid_dark.png.meta new file mode 100644 index 0000000..9baf726 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/grid_dark.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: d542f997a51000946873268e3546b6ba +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alert.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alert.png new file mode 100644 index 0000000000000000000000000000000000000000..9242a22984b08edaeef4a97ca09251719599f746 GIT binary patch literal 540 zcmV+%0^|LOP)pG&PhZ;R5*>TmA^{@VHn4s_q;MC!-&SVNGQ<|XQe4zN*5>Bi0B8_ z(B#-6L6L|M{Rb{Vi#3V6gP0CRo1=x1WNCN4J&&ne`ihtMh3DS)?w;?*_nzm@7ewNm zNBRGBF5)l&co~PsW->XW`d^7=YV2ZK$Vt}(`*N5OAf<+A_H;Q-!fjD$0z5v=(< zNJ~q12;bJ;lls6LIQZ+Qr@Fvx59U!mYOCWHBylcbJT}v5{$er>gjS;ah<3I)od2#FpCA|3k6_{i&xm(Fx7bluOHSUk)dF{B0q6Z`^053cwF=zqZp!gO@D;0000anMprEOz zi(`mIZ*qzP(;s%G5<@oyhKoKtB29tJD-syEdm8mueQ3PsAj8w}ant&b^`}8BSioJ literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignB.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignB.png.meta new file mode 100644 index 0000000..dff6533 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignB.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 8b6b31f71cd528243b053cfc488e73f5 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBC.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBC.png new file mode 100644 index 0000000000000000000000000000000000000000..3118ab10593c1b69d6e1d48975d2ada785dd2902 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmC>Y@B z;uvDloBZYD$DijNTn`*^NIk%moO5$i>qMdE1iPiXxZQbWObf0!Br$N?c}}jZitt`! z>^Z&Q*>6FKwhHez;*R|ry1ds+KAfpAHTJ{-1_rYXzK^{pYK?$qGkCiCxvXqMdE1iPiXxZQbWObf0!Br%-sUf`b4<~c#m vYh|(8OQFchYLzxcJqMdE1iPiXxZQbWObf0!Br$OBl=6M{a^aL9 seF?e7mlI{$mQ1^|!N8e4q)d^SnPH0pZ@U)rX^^c9p00i_>zopr0Qs6O7ytkO literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBR.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBR.png.meta new file mode 100644 index 0000000..c3dd648 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBR.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: eeac3acbf7d1cd54fabfb1c4a12f9fc8 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCC.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCC.png new file mode 100644 index 0000000000000000000000000000000000000000..c5f85ccf8c0fca414c90e664cda7f5db110bf004 GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmDCp(s z;uvDloBZYD$DijNTn`*^NIk%moO5$i>qMdE1iPiXxZM{t>ikggefBcZHz<9Q-ou^) w7d<3f*dFz!)@FVdQ&MBb@035_LApigX literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCC.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCC.png.meta new file mode 100644 index 0000000..75090ea --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCC.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 8f0cb66458819764b94b93250bae94b6 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCL.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCL.png new file mode 100644 index 0000000000000000000000000000000000000000..39e15460bcb8572d222b8c9f81b7ea7042045945 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmC>Y@B z;uvDloBZYD$DijNTn`*^NIk%moO5$i>qMdE1iPiXxZM{t>gYGgHA<>ER%x7k?sG|X zlTxNh5Zl5=9ii7x4)AzwmgDJh<9eE~Vfqao9tO^d0!J#qMdE1iPiXxZM{t>O9FZnYp}u(w#U18>Y*P xCmM0^s#s4uuM+EYa@FF<{;Grx({J$bFz|=+F9@hFv;-Q<;OXk;vd$@?2>|{=G4B8X literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCR.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCR.png.meta new file mode 100644 index 0000000..6223c1c --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCR.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 6f504a3fa8848264bb4fb9bb7d582dd5 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignHC.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignHC.png new file mode 100644 index 0000000000000000000000000000000000000000..dc638a7f4794363ae5117c54dbd4656672539c99 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMprEU# zi(`mIZ*qzP(;s%G5<@oyhKoKtB2A6v4XnowJom3j5U6;#Y5m9gm`O)Y1ioRaPanMprDnf zi(`mIZ}N^e*?;6)Bu}vT@Q5&pl{Ef$XwW;x!LoyA!41~K2N-%Bj)*7RV5nUrC@;}_ ftg+vXjg8^anMprEs- zi(`mIZ*q!)aLhN;fBcJPN@%d?{80JN%(zQJSwP{lX4ydl1BQHsMeGu04m-IwxQf~t oNcGNWXq~a*5W7YRBQrCD=nbx>q?xC$0*zzvboFyt=akR{0RQPILI3~& literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignR.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignR.png.meta new file mode 100644 index 0000000..884fe5f --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignR.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 727ba41e4cc95fe4a98b07301e3ebfc8 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignT.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignT.png new file mode 100644 index 0000000000000000000000000000000000000000..b4397c60a97aaf24c2506005053933d6469f947d GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMprEm* zi(`mIZ}Ofu*?;CYG95T#@Ptvh=c7D_fl6b;1ev3W20T0ojfM%0PFfPYM;gr=8W|a! Xt+|SMR787$+8I1u{an^LB{Ts533wwe literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignT.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignT.png.meta new file mode 100644 index 0000000..30bc025 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignT.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: b4785ec6d937dab4fa59da70b69afc9d +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTC.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTC.png new file mode 100644 index 0000000000000000000000000000000000000000..de6a933ded8177badee0cc96a9aa1a2fbbf3f089 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmC>ZAH z;uvDloBZYD$DijLnD=m0wS>kb&6Uy9V!Z literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTC.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTC.png.meta new file mode 100644 index 0000000..0d20edc --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTC.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 0f79253104349f44cb73978f6c8e93de +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTL.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTL.png new file mode 100644 index 0000000000000000000000000000000000000000..627b907d345cf01adac7228639ef5ec9126558dc GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmDCq6! z;uvDln`|<3`S?L|7swrOvz3R3LGvN^CyAfE+CXC&JYD@<);T3K0RSeKFSq~z literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTL.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTL.png.meta new file mode 100644 index 0000000..cf3e9ab --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTL.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 6efe1c8569d975640ba0c9f2ac4a9d61 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTR.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTR.png new file mode 100644 index 0000000000000000000000000000000000000000..6a0d89d4ab8ee1f7bb014545e12b133563639a3e GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmDCq0y z;uvDloBZYD$DijN*eV3SaICfvW}eE(-LoanMprECv zi(`mIZ}I_lz28#**%NEBW=LqT^t@pD-^j3@O~K(=@SCQ@1co?=`57uAxh)4WOoSLp dI^5XU7;GfO7!~URp8*YF@O1TaS?83{1OU0VB-Q`` literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignVC.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignVC.png.meta new file mode 100644 index 0000000..52134bf --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignVC.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: d1d45eadab0e41c4a82cdffb6396b1d7 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera.png new file mode 100644 index 0000000000000000000000000000000000000000..f1465163efb49c68c56e9ba1105e270d1f95f79b GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^+(695!3HFgJ}hYlQk(@Ik;M!Qe1}1p@p%4<6rf;( zr;B5V#MER5_W%F?e`kFp9`L4HFOq-iiuO__%H znoN1md1U*78^W=L?2}%eU{JZn7^=*0q}!oq{{KSe33KdEyj9>+?nqD&GBBLL;Luh7 za3cH3ql_Qf4ftPlabCFKz^<^7Gr&{`XyJVZhG}PS7ZpG4M{{nR2Y?okUwsNPz=U-&>$pGlQm0E&;jvafB_CrG0+>(T%ot< z-i>x(?}B=UDB`~qiM=aBNQ4AMQD5yyVL+(;27Z3_XUm3g6H!X<6h--L+x8x~2R@`} z`gJL4n&w)Tbudk{!Ps$}A`HVbh#_s;&c{h$I%ZkM%Cck_!(`TV9YZ1Uef9GA5d>ju zmSuSt1i?>T*Bla7*1>) zsplTR{8j8PRaJE%`fj*?cSQN#q5%X~1DT<1wGmEJc=Z4P002ovPDHLkV1jVXlTZKv literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera_border.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera_border.png.meta new file mode 100644 index 0000000..234280c --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera_border.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 358cddede8023574191e0aae610a4645 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog.png new file mode 100644 index 0000000000000000000000000000000000000000..b7f481e9d866280ded3971b2fa8d5c7ffad6c8ec GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4aTa()7BevL9R^{>eBfcF0TApGDoI2^R2Y?GW`Kg2n3z^kQPFj>va*-t<>ggXR8&q|Sy}O4zI=Hv zNS+C%@csMuamB^O{My>un?Sg*u#g`p77deU3=R&?`19va4$vfxNs}fqzj^ZpEFmHy z!jPAj_xJJR$2VA5Sf((zxVU^+w{G2kpyL0vwYAsH&CL&jFo+Ej1IdBZFflSRX71d% z^Ec2M1|a?JC*4wvlPiF)MOUI{ApQ02L6r?6hn1I_eFyQ6o z^=QkME&tQg)Bk|*wr$(~dwY97hFc9|0IgZt-`}74`}glC5dY4dJIf>_B$hyA85jUh Wy^gC3zEAG}0000anMpkR`x zi(`ny)MSRn|NsB*{?p!YJmb%DA0B}Owx#?FKk^?Cv2c3%SfXZup^w8K$*d)EQ~nDc zOK;%%*Un|6_|b9J42Q5Aj=k1LPn`I{-&xOegk5t(3)h?WODk$7Twma}E8&x*1jEX* Wyo)>cM1}xuWAJqKb6Mw<&;$SlB|xwM literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment.png.meta new file mode 100644 index 0000000..1e64e47 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 622fdb780ae13e840938631c5ed708f2 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment_border.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment_border.png new file mode 100644 index 0000000000000000000000000000000000000000..d61a35d12f89898b1bb6a87f416d2a361fc9df45 GIT binary patch literal 426 zcmV;b0agBqP)pGTuDShR2Y>lkilxgKoEvE8+S1qdrBSz(Z+Tuo@I4L}>6}4;Jg8U@aoq#-#rS2Zo*5{bv7}5y;M})vAjl4Nt-E zf*@E@N*}^7WXS(0hbomyW)Ify_j9#cjRG?B`TR|*)k-&;O$EqH1S*PhUMiJ-dF;Aw z$QZLXn~hd3mr1wV{ls;T?v$?@jYe!Xn-N)-zvA)uK1@j_lf*Pl5em-{h+Yg`*N+^> zA(AA$ilV5a9WF`c^Lb`88aW({;o+oMEXtiuhb2%7r+wD6TpQ@^Q zipIZrwQbwX^Sqw#`xm@F%d$Qo`?gc1m#7Zb>or-eRvvy>0zNDh3Z&g``(U0T5Uv}B zksFW4B#}rAG0Yh@5bbv|nWRu;@mSC_jgK!0f*?cY777Q*@8Nu1KZC*Gm=Hq#0Ta-T U6;Ga>XaE2J07*qoM6N<$f-3^I)&Kwi literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment_border.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment_border.png.meta new file mode 100644 index 0000000..2f10151 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment_border.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: d98b8847646169c4fb5af28dd84c4179 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_delete.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_delete.png new file mode 100644 index 0000000000000000000000000000000000000000..85bb2483c4ab2d98a3c48823b1d38c1d34308331 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9F5he4R}c>anMprEs- zi(`ny)Z`!k|L^AzkY`BBWz%5TxG+hHCxDG(Pn%bU^G$_<21efpwjzg36{I;QH)yhW o8yN~Pv8+`%HnC#Q&v+Jwhi|t0e|4ql7|=KdPgg&ebxsLQ041|4GXMYp literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_delete.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_delete.png.meta new file mode 100644 index 0000000..31ad788 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_delete.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 6b1f9e1e1c2cf004b8e3bdd3033a8e75 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_demigiant.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_demigiant.png new file mode 100644 index 0000000000000000000000000000000000000000..3445065c4b6b03dfa8849bcbb2bcfa2d4b2e2c70 GIT binary patch literal 605 zcmV-j0;2tiP)pH4@pEpR5*>5Q_pJ?K@|RGH*N#jG^J~^0YM@X2)zi>o?1O92%fwY zPoj8`sE7Oo9zFGB6>L?g=s`Sq@gPMHD(Xo+`lA(;Dyb$d{#wU0-R@?5Z_*9BjTL;b z%=_NV_syHP?+I+OLZL7$gs6~vNGY|0V}zGzc|iC|y~kz`%wevX&1Rsod(n%aFjA?&3S3+)E7L)Tc8XI)`XLee}Vj{OV9vd1->_wQkH7?#9 z1Jm;ohvIl?wVv3kHNQmeeZ%+t8Sb#$(anMpkRWh zi(`mIZ}Ofu*?;CYG95VLz{^m?YBpU!*>5Aa#D8YSE(U>yjHIKQWd{um8d#^ZXk17L zT)O+GjanMpkTSD zi(`mIZ}N^e*?;6)Bo{oePZT)Vz#=ixw7KEjGGm?}2PVJMYU6J&Klsy!X9|emq_GlszP2N)P?_LrFKH{mS>I)TB{)z4*}Q$iB}C&NWd literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_distributeVAlignL.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_distributeVAlignL.png.meta new file mode 100644 index 0000000..50dfd23 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_distributeVAlignL.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 32eaa0efb2b38774ea9705b40fdcc00a +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_doing.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_doing.png new file mode 100644 index 0000000000000000000000000000000000000000..ed34625f97e77dab025300deffeb49f096398fbb GIT binary patch literal 838 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&f6fr06V zr;B5VMQ_gOgPaWpBCH21C#VH=ly*#QyE4%!$LUAh9*&!zb8=R#YU5Vt`_g|mVupn0 zy!(CP3=IGOA2Rsx|Nno5=3V9S|CjFh^~S%gd3&9q&Ho?#I_f9SA4yn$?3h5-nR5?T zoh+N)*tl@Y#EFHrF~-cy%s{vN|KBA2~wbpq5D!Cw`O%YJli)GTZR^#N7L-`-1HaYJRX43MwibIC^A*Wpu+qx7MxQ6DMw* z)7aR^2sWJwZ2Erd_5brsa;x39BpNUneJPnL(A=f5*MV$r1K%)ZrQvW z`~UOs2yXr;t)_b53{c4j9Zyd_MpG0}cksX&W90AO7|EM{L^S zL#KdB3;3W)ci3I(VRkh-HD_|7?=A-CZ=3vi6pihTbnF~0L|tYV8yOfFtN|su|NogJ zcbs!=emk$1OFAYfdQxlRv4#0O`u2a7Ul?_~zTx2cOpclPFf<|-Z9!F*3wKbLh*2~7aw$Y&P- literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_doing.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_doing.png.meta new file mode 100644 index 0000000..9d3c5d9 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_doing.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 4dd24a9f658e7a3438d4fa08fb85aba3 +timeCreated: 1648211899 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + 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: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_end.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_end.png new file mode 100644 index 0000000000000000000000000000000000000000..b71eefe4f8ca86bf8b5f34072ab4d52fa6be39da GIT binary patch literal 475 zcmV<10VMv3P)pGjY&j7R5*>TmCtIzKoG`fV--CJ^&m!XMGzlA=vh377bTbWF+}VIz)j$g_qya>y zop}kHp=;!G064)3@C^E9OaOch77Ct$IF4ZbmQ5x@=4$06Tv|4m;WJ;1!nK;)#0GOV zQ|b_g2v@6sjVzXJ_U-5$&d8VMa0qm_FI~T=ef_V&+Q&>wCjV@(KK}&}eF3^_XtWu^ R>+Apk002ovPDHLkV1l}g)4%`# literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_end.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_end.png.meta new file mode 100644 index 0000000..3580f68 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_end.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: a248c8288afb9184f953d9aa07a696b0 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_flipV.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_flipV.png new file mode 100644 index 0000000000000000000000000000000000000000..f4525da66a574728188a6a2a06bc798a8bfa3803 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^AT|#N8<337)>#0gI14-?iy0XB4ude`@%$AjK*2~) z7sn8ZsmTqE|Ns9#-ekaR#}KlB@kso_2n)x|NsB@I-K$EJNDOM4`avM4=a<8EEDXk=IHn>At`CUXmzsE1BMA}xi{YQ z^HBCX;N&2;Jh(8EMUy4d;)sKeg0&T!c0vLJ!+BG+jF~?Te*w*A@O1TaS?83{1ONcS BGUfmP literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_foldout_closed.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_foldout_closed.png.meta new file mode 100644 index 0000000..fab01a6 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_foldout_closed.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 301c130dbb4bbba4e87072804939c861 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 100 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_foldout_open.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_foldout_open.png new file mode 100644 index 0000000000000000000000000000000000000000..50a913a971a434d3144fd70243f25abeee47e062 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa&H|6fVxZVz5N14{zaj-F7~|>U z7@{#TS%R@aaOUU#|NmDhJZ*4(%jo8I%uS-5)3=C8p#I3Bm&zf1jH}%ibSkj^jWGG< z{8XagCdZ{30S{RRAu9$^WuAt*r|ge-1J0ax;9|(yz@FG9$SonkaDh*WN!Xr08fXuL Mr>mdKI;Vst05vx;wEzGB literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_foldout_open.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_foldout_open.png.meta new file mode 100644 index 0000000..cc34f91 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_foldout_open.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 18a5a7cde794cc04b9b446f0feedb3a0 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 100 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart.png new file mode 100644 index 0000000000000000000000000000000000000000..7ea0c06f4746fde06696146f5fc58c0bd2a4705c GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4aTa()7BevL9R^{>ytLPfU_N>xK}dN*#rXpV6b>{n zCna{u>aU14wYq1NoD~D zm^$_=Ycg%r-C)I{A;@#2exZfL`qhnGMGg|7QyLi=n7I$IoRxdH4Co#PPgg&ebxsLQ E0P#aag#Z8m literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart.png.meta new file mode 100644 index 0000000..072d281 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: d173388c1d9c32a418b5b777dd89d71a +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart_border.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart_border.png new file mode 100644 index 0000000000000000000000000000000000000000..a53308482c1c4eba9d0d1029a8ca2efecf1d5546 GIT binary patch literal 307 zcmV-30nGl1P)pFMl_cq?D9T1v)q7DC+rIA~x~?DU zx>nen+P2*h%d+-C5YVpcC=`Zai-AW5h7O9ivMecARaL`qf!Vfw6$z6p%Y;kQG%^+# z>k9(&Q5?tQpWZAY>@hRfbuW3I(_bM2LuWX}_FQLdk&vvS@a=_E)L!3HEN&baUbDb50q$YKTtzQZ8Qcszea3Q(}X z)5S4FVrnu&CR${#usG2zMNh8rRs{)bs+ lOi=mRxP!%unUR^9Vf*65*esbtbAfgpF)=5M`R2Y?GWB>vK0|Qq=H|Zl=FOYpbLYcKQg#~|NehVOUv6#K(>mq zvN8iQkd>8X0GcAg^!M-IeS7xo`GYLEWXY1BEG#U08ML*vh3xI^U!6L23Tz~Z2J&A3 z9Vq}-sjshZ7!nfl2P7FB9Q+697(EnwfDZc&l5})*{0$RhfiXUR{`}w6)RcjlnHg?B q6O6&m&VH1QjqN9p-VYIBU;qGV6Kn1Qa9Ml+0000_o}_+Lvyv%WI`uW@8dYxngml%7+dnComzjliO;w-JtD?B; zu{7`9V>>@xzdqA4{ol;}x4%BR6vcj_S@%w^>F)!RQ+SPc91xgwpL5)(?L0_geb8ifvwV9VGnOl3`K%X*ry85}Sb4q9e05qY0+W-In literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_lock.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_lock.png.meta new file mode 100644 index 0000000..b7bc6d4 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_lock.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: e3d0592dad579e141924133869455c53 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_lock_open.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_lock_open.png new file mode 100644 index 0000000000000000000000000000000000000000..be8544366616d44dfba55c5524d3f756ad308cbe GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp@K+MO%1|+}KPrC%9I14-?i-BT?L74G){)!Z!;B`+I z#}JK)$qsD)|Nl>Ceq^MukMD?m;}0=`>kUUFH!v<>;TFhee01L74)>8xhdVq+2ZPkyRh;F7Hb7t z;SN^Lj0fzGq8;Y&ZL0cL|K@=x-^ZT{&o?fZ`HR2fu7srI(S|L?0{FVdQ&MBb@03Tp9dH?_b literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_nodeArrow.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_nodeArrow.png.meta new file mode 100644 index 0000000..aabc040 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_nodeArrow.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 4aa34055b1d36ef479af3d7b5701b28a +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ok.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ok.png new file mode 100644 index 0000000000000000000000000000000000000000..b4d864a5b768bfbf4595d3b76ff9ff5d676a2b38 GIT binary patch literal 715 zcmV;+0yO=JP)pHeMv+?R5*>5mCsKTQ4q&xmn{jc7L8b-{%C16#;aP3L5PXoBs4{g zMB{-NjUGIZ22B3~V+rvOFvb&HM4C4EBS?allu&An9y}OB<%briURu~SX4|ea>vq$w zyQNMtncbQ9{p7v3@69rxW0E9s82soybPsx~Qd&n(qDRof48!ELT1E#(ppiL##yypr zfCV828F5{%*-Wj_Ztj9^Yaeu4E-Ybc2%%wJAc9y7_gBQ!@KE|DEbuX?X6=?P7_mPB zhshPf*C2w6THu4^ulVr5stn#7?L%mkRX)JO!1o*f1>4K*lOt(JOAKPszV*%vv#z8NuNijIdDDrT9<)R9Ww#~!1=e=jeCM@vRuoIn zPrpAvQ=JVO7&FB9*Kp@sKNO^b?#xc(-lM%IVAyBv|7So6x?S9YAGpW2*7`t{L@+Xc z<5dbz8RcMqzO;N!_bfJXHiU1Z3x+T{8PA+=Quug`Ra(&C=z+)bHPYJ8e5NXlG^8a4 zvE;8zcM$Jlh%UMwv>J>wq$LLB%8yNuy2f+YqTHHxG8#i;NkiIF-l)NjzU8OeUgRdL xHQ2A13K%w64Yd3h;6-m%N}K2jF#H7o`~gtZ6gst;c2NKT002ovPDHLkV1lxxN7euU literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ok.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ok.png.meta new file mode 100644 index 0000000..029aabf --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ok.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 34f39b5a760ddbb4d8b8749852868335 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_optionsDropdown.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_optionsDropdown.png new file mode 100644 index 0000000000000000000000000000000000000000..1d89e2aff67e6b03ae1ebb542f654799b30f9ba8 GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!3HGD9`RZNDb50q$YKTtzQZ8Qcszea3Q*9} z)5S4FV`B0G5rapQ|NQ^|-*(R|Ny(`RT%R4gCKlM8)N9CMdf4eOS$)zICKG25rYoGy ffexGr2@DK}AFAEl?xoNRG=#y^)z4*}Q$iB}Ky4`= literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_optionsDropdown.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_optionsDropdown.png.meta new file mode 100644 index 0000000..560af25 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_optionsDropdown.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 62a48d93e78c63b4ea9b46537c7c0091 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_play.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_play.png new file mode 100644 index 0000000000000000000000000000000000000000..0608dcb7ab4d0a1a5d2e56b3e7affa340ee4d695 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k&H|6fVg?4j!ywFfJby(BP;ir{ zi(`n!#Hm4!T+IdoF+Tj2&H5kaJ@PIRX3^it@z=+0!u<{pTkc<7_iR*NM~Q@a-?B1j zJYz8XjoJogLDi3rIi2f!-!AifprEK~XV`buyYgvWxf936fd6)#(`Ky>4Si_hyD?xd zo7Fmvr3UAVw_JNFW<$T%X&MBcEjH{|{-0xuic+ORkMZ}fy zn8bun1{WVLez{4fQ0Dl0-+1ZQPur8v{{3jmAeR59;KbVEH5EYDGkCiCxvXpGG)Y83R49>^k}+$8Kp2L<>f+`ggtSveOC}W@9EARWZf*^NOP7M; z?{IW04ia$@obne0hoTM{>X5;yTc~5j>gCRwgS11*3y0qOKHul@oi{LRwOVn4AUxyO zC%o=w`yH?Ncs#x~P4h*JsX&sXJBDF)x~|Kc%?3nKoanl)VY}TzmSyEQj*nGUeN3Gd zMJa@_iq5T}OSw z5SGD570+irYZwLy!w?L^fIQD9Z)QXW{t<3|v1fjUQD2xW%Ytc|kR%Ccnnou^9;6_Q zqKLxl^%~+h2HUoQ<2dTiOnCKJ*|u%Jm&@g@D2fOC+1tfp0X)w`-}kWJ@4@ptNYiw> gIGlf8`D*~20Kj|d@@JyvGXMYp07*qoM6N<$f*&fV3jhEB literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_play_border.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_play_border.png.meta new file mode 100644 index 0000000..e57aa67 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_play_border.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 45e128e1cf00555479ee7934ab11cadf +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull.png new file mode 100644 index 0000000000000000000000000000000000000000..7e5397545d7a45641ad23338850e6cb0b88f03dc GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4aTa()7BevL9R^{>pF{z*hZR2Y?Yk-ch#Koo?JKZT7=Dr<|Ru+S*cI!};iN$D#HVr47% z0zx1*7Pq-w2&A%zsAaIwG=d62H#-tT;F5ubVdmSzSymt}!!WKCMR^oO@j=tH8)RMA zy>Hw0v@Ax^2p$zK-1YJrzYkS(eeduKR&Uh7OF(FTb^IdmDx!sj5nnB%z=f4aTa()7BevL9R^{>$+Q-p%fJeONQYMtD+`qRv0zM#G2+ELR(T@C*1i yf7-ktN#oik#*bPGVQxafZCx7;4Gatz7;bn?UAF3X!Zn~n7(8A5T-G@yGywo>oJJ1- literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_star.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_star.png.meta new file mode 100644 index 0000000..59f2768 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_star.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 645aafe2260b2884a9df05b4bc01b1ec +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_star_border.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_star_border.png new file mode 100644 index 0000000000000000000000000000000000000000..4615829ffcca351f0e09b4b4287cdc14d2044f1c GIT binary patch literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4aTa()7BevL9R^{>)M{{R2qJVSfp(U}u0Sy@^6Vq#)0-MMq;l7iVL z8RZMJ0@Bjbj=#UZ|FuokmlHeIt?TRV?Ce~)Z{NSwd-nXX^z%EXUH|{z-SZP>&%T|L zo&CH1`nuTv^7eIq)X8ka=i3vN z|L1da37PP;Ic7OlIaD2NgB!)v{t#%^-@5yIcYj>CQuFZretAwdZli=}&(kN^*UoAT zjl4O3;>1E>u)RqwZU@dDFDvu9-zTSf(m>+Drfq2xY)f9qF*7$?fmJa5w0&{=-`^Bz zHYSC=3dRx=5`Q4>V3L&hk@+%c6K^x)21y>Cg)q^KPk%2ccJcnHd&0pCG(`|%O6&Y1 z^TqW8RIdL2r+R9_>@#NyzRgcR4>V0;2}I)|ANwf`Y;2%N0fqjp||mt zk50nGNl6I_2^An&uq4m&xw1#~9&gzQ43-27c8IX#j(Pe1l;XP%eV~E6A}d4z4oR69oM;; d3+P6O9%hDpu_`PY7uyel_@1tQF6*2UngG<66KDVc literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_todo.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_todo.png.meta new file mode 100644 index 0000000..6f04add --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_todo.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: c561c878c05ceb1448966fe706740008 +timeCreated: 1648211899 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + 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: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui.png new file mode 100644 index 0000000000000000000000000000000000000000..afdcff35bb27ff174e62435029f72e3767458eb4 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4aTa()7BevL9R^{>QNTh{iU<7c&ovDsNyG-pFXZWAl?kyu6|u-FzmI#H8}* z^_TBTj@Dn`_Sx{kQ}dxkU*eUhjk&ikyeTw$;QHP+GCMMeqjAeM=gr3@Hz!Q87o8fk zV;%S2@;T2rHJ`qJv}>J!(*cQQ3FSG(_a}dOwlDwI_qkEo^4&$}LcAoaK0Q1j9IKVF Uz+qRVG|+Jjp00i_>zopr0G3Bs*8l(j literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui.png.meta new file mode 100644 index 0000000..0d3bf2e --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: cb46e1d925af22d43a6f8bf0e1d459e6 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui_border.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui_border.png new file mode 100644 index 0000000000000000000000000000000000000000..6613a3d325a527ada017fedeaa3447d3728e9eba GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k&H|6fVg?4j!ywFfJby(BP;jfK zi(`n!#J!Ug`C1GFT>tAy=rt%l~V#R=!D_zopr E0AM_3LI3~& literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui_border.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui_border.png.meta new file mode 100644 index 0000000..2ee6aab --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui_border.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: c0c40ceac3c6df146a0fcd4e6b226540 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_visibility.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_visibility.png new file mode 100644 index 0000000000000000000000000000000000000000..56a1324846d22c617d1340eebbd88925cced18a0 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e!3HF=pW8M9Db50q$YKTtzQZ8Qcszea3Q+Kl zr;B5V#>8X?_W%F?e`k5*>QKYpvES*V?1~xc%z6w{uCP41{GXF~f|TzJJGT{S+6r5R zJMJ@mEK<0~e&l>Z1mmiAi~`<_8-)ejnKl{->^3$sl4H&kV|=vRVGi#RodD*$jX#tp ztyS1&9n#0TN^FTci^>JAQpPjdOc}E#@;-D9N@qTD*2m#n_=aGC11udsH?RnMoZ)#_ z?siPs;gz+pSgQ?>3d01(niFvhP0S8|IJ=`J+>n%Df5NJ8l#~0&?pGAxT6*R49>klD$d;K@^2&C2VORq!1K*fna4~2mvceC2Xs&;2TK5 z!Xn8_SOwohEKRVq5{*AtstJfTJATL9)n%Q%@a@msnR9369;fi$$8Z5(un#LRhB>^! z4V=NAaxN4kYVZyz>_Q!8{(nrNQC!@H4QRp#yhy-u+Rdg_AHf4Gppz|Dr8`LMUm~CI z3e~_)D{ut2KSg*9f7Sjbo!EAt%FfJq7f$ujFPU&|B3G^?$Q?^P4JD%}I^;EhZHbkM zNMN;igk0>vBOK^hh3Z|c&0nG}rV`j@)h<*Q+qAL7*3`2}9c#@!46J4AIT00kwidUn z N002ovPDHLkV1mOvm^uIe literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_visibility_off.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_visibility_off.png.meta new file mode 100644 index 0000000..a0db454 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_visibility_off.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 0c0132429106c8a4d89d9d0a6b723ec3 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/orangeSquare.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/orangeSquare.png new file mode 100644 index 0000000000000000000000000000000000000000..c272180edf95f9229ae13d1eb1c0362d92759ab5 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9F5he4R}c>anMprDke xi(`n!#N(E8hH(Gnn1k=)1;xK#l381?e NJYD@<);T3K0RYm0RxJPk literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_atlas.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_atlas.png.meta new file mode 100644 index 0000000..eddd2e8 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_atlas.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: e2279677842a8064fbae0bc889fb85ab +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_audio.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_audio.png new file mode 100644 index 0000000000000000000000000000000000000000..90c521249c6777aaef0ba7a53c81f9744892bc82 GIT binary patch literal 338 zcmV-Y0j>UtP)pG1W80eR49>SpcP=lCBcYGLS0>bnzOUB$=$nmpa1>)_YX*H&z?Q4 zKW_m;x3Y8lPUfcI`8W5fKq_?B&aspZ@*($BwK3mqu|_RaG7k zW7e!$CO}Of+ZY4|1^408XbHr2KwEx-I4f4Hc<}l2=igAdZCI^QP*9k#dGqFnPoF;h zdhz1Lw;+FMX=%*^O4$Ih3=Y>ZIPKfF?igP)pGyh%hsR5*=e7;wOdM@|`tO@R0(5O0Ul7=Rgzm=O@i@i>Hc%ZiId zO7L;|{Qv*o@B8=f-+ZI7zKTe>(l-zB+JC`?;nHEy`u~g=hrhZy}bMJ z<;$11U%!668K|xan+uE-6cjS~S^g`CzPiTqmz9Izhp-&OcVR__*II52KPA*SxPO1; z{Qu@L*RNl{E&in(*|TS{f`WoCj_uigll{hF7O8tjco`U(7`_QeGyMMX{qt94 zGY*Yc=M-MNc<~gd{t&v~YyLyQ&!0d4u3x|Yfr*L9F#!RAqk<9T?-*v>{mNy75FpRP!^4u5mBsLbjaBeH$hkkiF#P@d_cxIF8K#zrfds(v z<1+)ug+S(CY%X{Y1V4dcz>chmk&%&w_3JwZg#%L%#14U#J4L~u4HCn zV&d1*(h^{2XJ@{5@80JfJ9e<}eS5{t_Ui7>w{KqG28u2D_wU~_p!$!vT&gA}Cf3!~ z)^=&ts#W)tm6ab#OG{q@8r;eNNu4MFUs9F>VowG{Qhv!W2mu2F08Rp}xKNEjp#T5? M07*qoM6N<$g8J0>{r~^~ literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_bundle.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_bundle.png.meta new file mode 100644 index 0000000..66ef715 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_bundle.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 58676a985ae875646b7be748cf4499fd +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cog.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cog.png new file mode 100644 index 0000000000000000000000000000000000000000..fd589a0f316096bff8afdd0b9fbe51b3138d5466 GIT binary patch literal 406 zcmV;H0crk;P)pGNJ&INR49>S7%;$$Ma)P_N~-w(|NnNse*L<~!^2Y|A|m4T`Sa&D zK)L6H46J$i^5wVFr%%7Csj0aDqCtF+I6h5sK%5a47Pjy2-@pHn0f-M02g+vxu>yup zet!Pet5>hS`}60|Kahrt7cah@K7INP5Dnsk#IIeu_8z1TriTU200NLAW@cu_%a<>| zGd4D!2-L6*DC~9a+_`*RU0tDnKmbyQ&Do-bg@tE82F#v4`zDZY4iz^C@j>D_IXS0+ zd_fGIz))>Dd-m*WkfKYMF1-a>PzMw?0ns2nNc_r`D{qB`g*!2v&Bw>bAuTP<4Rjd; z$caFM@{b)m7G-5+B?{t$0*w&}fL{57&DlmkToVxyaR5(fXD~ow1t%ano*A*Z0GPs} zK7IQ1Hok0944~0%+A3JOBUy07*qoM6N<$f=el@ A5C8xG literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cog.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cog.png.meta new file mode 100644 index 0000000..fa51749 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cog.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: fb605a2688b31194887f2e7a6769235b +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cross.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cross.png new file mode 100644 index 0000000000000000000000000000000000000000..a34a3e8a0f23b3390c7b578fa3b0db5b4157e266 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^{2anMpkRxq zi(`n!#AFE*hqn3i_w%|4YxV^sBqVHj@bmNY`=?HwI>-34Euhd@KwgD!((x>Y6Dbp# z{yTj5{{H^|0A?RYlMa3+g~}D&2Dxrw9E+~6jsDIsliyTe`DNaTybX*hy=^=!4Nsq) zoh`4F&GympQH#l>T;rd0%Ph8>>`R})_+*(u6%!j9gI(_3o%sQ3VLpGHc3Q5R2Y?GWPkz*2?=i?RSLvLP@!``-2LLki>)9IGl&ou7jI@_ zVwxes&!o_m$;a+x!NGp&`fr8rzZjypxw%=se*L>OK3}WmXZ3a#~{He%CPhKL53fHe|}*B34XG$Wca433081#!+HkYAG{3B#t@4XxMdh7 z-kit41oGW~7G}5||5;cV*qPbkd{!n_a0oC1ef5t0<;zG0U_f!*yv4xz-~q$SA8#1m z{Cv;w_}g=a#Shjp{P^=Tj}a+&Y8bG9fB*iqynOkx7HlUdoPZ{S0$2)&g@O1N5TE$} i|9>7((F_I#1_l6)Drz~&RO5yK0000anMprD7R zi(`n!#N-r)Cg0g+f71^z{`vFAK}6ZiQjLv^LD??)BjbYZBM~1oKYaaqRQ+$4QTl&& urcEYBMnPf;i)VSVEHL>!-)1cj55t^we1F}Q<{1OcWbkzLb6Mw<&;$TUXf4VB literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_folder.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_folder.png.meta new file mode 100644 index 0000000..e0a5072 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_folder.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 4f2c4b43188596b47866d41e1dc13c8a +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_fonts.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_fonts.png new file mode 100644 index 0000000000000000000000000000000000000000..9ce1a4de4485e5d4ab57c8f94b8523f6b9c46436 GIT binary patch literal 465 zcmV;?0WSWDP)pGgGod|R49>S7&L&92sOfvj*io%q@*MsKYslD(4j-AK(S8*H32a{ z5C^QX-eF^7v(?hll3u=i`MJ4s=U({(1i)Ak z1j)U6_3FE*s3`l37caho_&_h304W8SUgRi_Yiw+sz{SPI0Wtt+C~JItJgb0!0F$h& zZ2$A;&tK{3>8W14crh8|MP+5>Y@nVcAdM_YhHP(cZdTIP*0%fb;luN9-@d&ADzpG07*naR49>S7%;$$#@AL2C2ox#U20gKydEdxi=gf9E~6v#0QCkDPZGFn|91TgZHnJV+geW=BWIHUH7T=g*&iqlDm zAoD@;Aa&UMY_M$Evb+EBfTc^9-T|q@rWs^Y%b7E0USZP+5(mjM-~r5%l9GKur+q@! z2;zgp88D+31BmMC>dt%f=FNAIMi33+gTxt#1PV@0PV3&id-ub|#bqOi&p;wj5*8Nj g0MQJC3@|VN0AR)IPx# literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_heart.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_heart.png.meta new file mode 100644 index 0000000..ead0de6 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_heart.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 20794834c0a413f408b80110d0fc73b8 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_materials.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_materials.png new file mode 100644 index 0000000000000000000000000000000000000000..5a4b7eb1bf282c87f82b1f2ce362cb37312ff6ff GIT binary patch literal 355 zcmV-p0i6DcP)pG6-h)vR49>Spc`OB<1+)Xr?9Ya0xvJG&Mv~hz(7<`P!KG5{rdISYuBz_@#V{xLYPKoBuze+mX_6~rlz8*s;Ugi z%E}Dl;^GWKLPFd?pmg!##p^&dw?GP6U^;+KikFd*0ox!cDaoLzsR=g?$QBh76N?8r zbu)<11d{+dO$MLmfwsZr;WmB${{0Ei-RAG#zh`*<{5f1Phz%0^^y$+R3{7v}zFi2E zw0rdEktm4&=FJGjL`r9002ovPDHLkV1i2c BpN;?k literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_materials.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_materials.png.meta new file mode 100644 index 0000000..8e57f77 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_materials.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: e02713e10d7aced44a7a651231f0adef +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_models.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_models.png new file mode 100644 index 0000000000000000000000000000000000000000..42f1f236a8149ffa2b1cc8a076f7e4449356632e GIT binary patch literal 380 zcmV-?0fYXDP)pGE=fc|R49>S7*HU^#KcsmqocD0L<9K}=n5E-IqdB0ozBkA?)LWf zssaK6T<_n%|9a@qp*wr`?%nzG=g)GOI%XJylaq5|WMrg2P?H9b%?1@?Q&(3P2O1#p z?AbHbZ{NOcN7f{zsi|23l$1Gm@Zjw~fBt+E6cpsTc=6)nU%!4m&d<-6`u+Pi&++5O zw*b|CW`Sz@2qO4_Ku=Fk_xtzn-xe)ebaLCaZ6*>D5{e)>ph5qE)H@KH30p`2oyBEr zY%B=Wz=cg7rs*rty`TR90bBwIU~FI@{C)oX`DY;W2TDKyL+b3EJ9qxGu&@XMUCGDH z%>35D!9j5D+_|@-qN0``J9exEsO&XJEh84&jetQPAucYi|MlzFb8p|iT@4gF$1nhZ afdK$^w{jgtX~#DJ0000pGpGibPR49>S7%;$0KwcDxzX7of5QhV?8W2AM;-BaWH8?mp8hChk znt^O1Cnu+!jg5^LfnpshDk?jkKY#x9=FOY$#l*zAFsx8eP?-4U&71G<-@pHo0^)gdwF?@ZQHi( z-S6MO|LN-LUVr=c?XP3Uj`d*kpHX07;Lga%$YVfuO;J(Nnb)shf8V-w>mz1n=8f6e z*{4Cy#}`0>7cX9X1JZc!-n~ySr&d>2UjWeu4<39DRO13u%!H;{{lbL{?;k&Y{A1Im zO;11qmoHy_w`|$6i(9sAc{FR*touNrYgjc01O#{hLs^2CmzM=-+Xe{A8CT{P{P)z1q>tt jCm=2cVgrUj02mkmkjv85ZQi$C00000NkvXXu0mjfR!rc{ literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_particles.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_particles.png.meta new file mode 100644 index 0000000..560f0dd --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_particles.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 8003873ab749935489bb11f23f830856 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_play.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_play.png new file mode 100644 index 0000000000000000000000000000000000000000..c441add0cc7487b51a19627c59917815d371bcb9 GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^JRmj)8<3o<+3y6TI14-?iy0XB4ude`@%$AjK*4TL z7sn8diOCD(A3S`RIc@6Hx9motA6F)~8H$LAIO)agnDFoQb^Y6qkN4ZNbKPZrRButb zYUN7bzx=G}=jK%A=H=~^&{*R=g-zhc&(F{AcM7Y=F?&t;ucLK6VN2Uk!4 literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_play.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_play.png.meta new file mode 100644 index 0000000..2bef6e5 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_play.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: d8306b1e159c72c4ebc9a4fc31debe60 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_prefab.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_prefab.png new file mode 100644 index 0000000000000000000000000000000000000000..abc435323589096e2a85aec7d8960643efc53863 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uAB#T}@sR2@)1s;*b3=DjSL74G){)!X^21ZU# z7sn8diOCWH3P%qe3VQzb?Os+F=AS|pp`Sm0F28o=N=(JCFE6kEclhw*<70gVI}e%F zY=wm%JG;g8_kDhTet!M`i3}b46Am`rcKGROu=R|A`qJgg!&z8ZPWa5X`}+-~%+uSu zIQPzuk00B3rRAzCD?R`I`r7>*Xk2tdmi=LqVsTN?xvew*{rUNMeO_K3yQ7JZj=uhT zo&Z^P4?|(I`PCvKSA87ZhSFd(4En4n3w<^}rF_9@CPI}n{!S1(iNl8h94r};L{@%I0 lJwKfJ=s80khJ*wLhVlgy_8;k}Y5;~5gQu&X%Q~loCIH(^ly?9C literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_prefab.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_prefab.png.meta new file mode 100644 index 0000000..47f7775 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_prefab.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: ed3789262161efa4fa33c85ca534590e +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_scripts.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_scripts.png new file mode 100644 index 0000000000000000000000000000000000000000..c79b66833bb38b3cfcaf1efcc4ec2e967c4e7067 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^f*>{r8<6y`Y?T61oCO|{#S9F5he4R}c>anMpkR}y zi(`n!#AJyt2RuSUOQpEEy=^;~7dh5Uu-M3ULQ+CPr{d?Qr`vOHZ?jEHPR?e!s9@(I zqvF4X@qc5&$45uY8iW`Q}D}Sb9lNz@<`{|2@AZZ>+NOL+*A7c8oPqMkguJP z3g0C5mCP%b&-8X^cw}(UpySSsM#iqoCmk5r*ci56nAf>4>xd7~H4L7velF{r5}E)W C9Y0fhdEP)pGElET{R49>Spc!C9;~Q!V80V|{QCX$%LAuB|9CqGD1H|t z$%3R%ug+-7G9TkijW2>s44(uT7+$h{u+6TJ{Q2k4j|LRQObjdm7OtskkAxT)X74FJ z%Pb_w${@hS0#tYmrUtI~AH$zd_hf(k`6J24Ce7+AwR2JJxu+M7Oae;nf~jFfa>n~t zY#*(7y`3cfnW^$=#rUdm@-rDfJaF_lQ0@h~V)B;3EGl1gf7-$R_ Z7y#{EYeavV3rhe1002ovPDHLkV1h5QtNj1~ literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_shaders.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_shaders.png.meta new file mode 100644 index 0000000..1d860ee --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_shaders.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: f252c69cd0163714eba038403f61b09e +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_skull.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_skull.png new file mode 100644 index 0000000000000000000000000000000000000000..22930f4dff4fb6b1a715519097b639c0214e6677 GIT binary patch literal 368 zcmV-$0gwKPP)pGB1uF+R49?nQay@;Ko}i^41#Q%Gz!~Ut&Ng9q{#qHiKe5>XW8pyLLIjyimz zo~Lmf|29p-ilVr9c3GATI_mI=!W7eVT{rCe{_i{t4*fW7N*=)UeSg6Rv^frN0}lP# zI1q&2_%nBDnr=aGgG0YIiZ+b!&6=yKI@B~x;l1v=u3Pg>`y?*{LjD0_ZSpkwGZC%; O0000anMpx|Xs z7sn8diOCXk8rs{Jx9arj=;)NP^UKxnE%MxEqN@7zNxcHYMFl&Kr4ssH!qr+B1sN5AfsnHN}ldU`@`+_*90 z-{0TI3!a^sd0j#32z#gSl{G6@t}J?WWo7ugckf>N`1($EFzHyoaN)uu4jdmof8Nfd knQxMqzv9ON1|A-Ulj|3ped&L9JJ5R!p00i_>zopr0A1^Qv;Y7A literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_star.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_star.png.meta new file mode 100644 index 0000000..f872413 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_star.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 21820ec6fc9dd0b4fbf42a3b93fdad4e +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_terrains.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_terrains.png new file mode 100644 index 0000000000000000000000000000000000000000..750996d613ae7009e2760d9c4d8789612e9702dc GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^0w6XA8<1SE`<)7q;w2AI7y-w-3hMR0zr8&_RXhA%S7+zf zrW^kkDyXSF;|SoCxBEM7wt0RX$K?sLW>pp4-BtQM@efd7AN#7#150O~K72U&@%{bv ziLd_KSATo+x?5a--(PnoPft(vhAh^Nk^)Rc-|Cqje0zIaej?M%M%H5t$F?4AV&#@& zn8`1}!2ncu@OZy`^Ua=&A{(9-Mh$`ah5_sb1`G_E#Y+NQ;_7vQUS{xg^>bP0l+XkK Dah`nL literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_terrains.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_terrains.png.meta new file mode 100644 index 0000000..946cabd --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_terrains.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 4a091a7609ef2d34bbdfaa1a886deb18 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_textures.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_textures.png new file mode 100644 index 0000000000000000000000000000000000000000..6aae96483f84bee1755eeed1b1ccb872539b13bb GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uAB#T}@sR2@)1s;*b3=DjSL74G){)!Z!;0aF` z#}JK)$qMWSi#}FfxDh|$N4$ZFq_nhtK}pG#){p1sSblzgYiqVofo%M~n1A2iMl*Gs zWfFb7VcWKAFWhD|01=Nzy8^W$Uv z!-o&^6NTQqd9z*M!7V>PNjU{YK6;Q{02{q_GJ)CB|uRqf8WsAOSp zZ~y<`!^7?Nli%8O{rU3v_4W1Pa`tsR{pM+D&-O1}x|Bch&tmufIL4LC8&7%(rZBLv ZG3=K0P3}1Foe1<3gQu&X%Q~loCIG7cdr<%Y literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_textures.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_textures.png.meta new file mode 100644 index 0000000..c18d4ea --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_textures.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 3e6b96a975eba1c43b2bad66fb7f8b4a +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/purpleSquare.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/purpleSquare.png new file mode 100644 index 0000000000000000000000000000000000000000..dd219ac3778c1e3f6361c363ad6d5f6856c76813 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9F5he4R}c>anMprDMW zi(`n!#N?Q@#q%3Q4jge%lDKNHDse?dLIMLro;2e%hOPfU0o5^hy85}Sb4q9e0KFI- A82|tP literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/purpleSquare.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/purpleSquare.png.meta new file mode 100644 index 0000000..96df50f --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/purpleSquare.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: dc0ca9b32ae9fd049911671cf1a480bf +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/redSquare.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/redSquare.png new file mode 100644 index 0000000000000000000000000000000000000000..798457f49eef9b7e8c27d20db55a3570fd2c4074 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9F5he4R}c>anMprDMW zi(`n!#N?X8Cr>(XB_t^b_GC$1H3%^=FkoP?Wnq;2uXyMdP#uG(tDnm{r-UW|hN&5< literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/redSquare.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/redSquare.png.meta new file mode 100644 index 0000000..299f17b --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/redSquare.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: fbdd7ecf39c13bf48a5bd02a1159c90b +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorder.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorder.png new file mode 100644 index 0000000000000000000000000000000000000000..51afe67326b5bbb4358d880a8eec9d5a10cc769d GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMprDSY zi(`mIZ}K0079J4>F@eHwZz4CDNJ~o_8yE&~xbaGuCR}0QSYTjnY{0;anMprD$k zi(`mIZ}K0079J4>F^#o;%l^&w;Sp&HWOn0~FlAuUICGANhk=EGQanMpkSG& zi(`mI@7u|STnz?149RRC*_Zz8viO-(Dzrc71^*i7zopr0L67hu>b%7 literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved.png.meta new file mode 100644 index 0000000..32d19bd --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 4896b5aa9d63dec498136c21ffce735b +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 100 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02.png new file mode 100644 index 0000000000000000000000000000000000000000..a1ed49d445d61396bf5e07beee7ae57f73a6d825 GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMpx|jw z7sn8b-nWwv@-{1ow8>X|RN!mid$4hKMA*vW8=3qE*yFR!<+w>I3vJGOX8UH&y4Nbu zoABe*hsE!II~Vwego>)TecE;KWO^b?^}&YL2T5y}-gvMwLGi@2)K0M<(&>}x&ctuv zj0-we9pIBc&3R@8%;d`;VQPAAyZRt1X8*cN}bWtEMVj*aM977LTh&(*zsT&!pJ bDn&8Aja;eBwVt^Y=q(0MS3j3^P6;G|$ literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02.png.meta new file mode 100644 index 0000000..180331a --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: ff88be84254fb1f4b9a81a27ae0b2e81 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02_darkBorders.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02_darkBorders.png new file mode 100644 index 0000000000000000000000000000000000000000..2b313e46258bbd042a3eb1048f101f8cc698c393 GIT binary patch literal 336 zcmV-W0k8gvP)pG0!c(cR5*?8lQD{eKoo}GM9?N1(8?32rR|;~30^_%LpmEfI}_Me zkD!DcL>$3lJ%RR{LTx7R5jRx=%C`H%@Md(rZ$|JjnBuzbmN9n3VdL@xUgt*$!EwZC znqHqzJLZ^JM)RaJdzng*(>f+R^VLHg9Xt|3VhXxsLL_3PQr*j;-p ihdJ$x^^EWZ0N@Uw6N6qYJeYg{0000anMpkTSD zi(`mI@7u{6xeh4sxCrmw^5{vJ#*hE=pFVk}vMu=Xl8_e}1z#U1G~StAanMpkSJ( zi(`mIZ}N}-|M!asyk~nf|9>aD{lcmxGbAJ=#27zjDm+V95o)-?^f7Wn+yc$}jWe1X zT^KGg7jbrcoZslfaOw0B2So|fgewd)80}B^o^p64exhNqLyUWuV!&2jhng9O-u#K@ aVpvkPqanMpkTMB zi(`mIZ!$yU|NsAu84Ilh=CePV|G%(#et@aMR-Y5IrZawIR_J3%a%7WXP+<@K%&@Ax zlQHX-vw~Qnf>6U1r>{$l9p;K0b5LS<)yeRZ)o>s4Mg~bXj)pHy68|Mnu>60h=*cKy z%8+z`zi6@G67iG+yb5K?hl|WN#AO8S^Y;u|reo}=dg9DE9v%k48O%2poxC~+=qv_L LS3j3^P6anMpx|sz z7sn8b-nYSyT!$3|?(lMcv2?VVHs{xiOExOYFQuy}Hon#ASvfsO^*Ucq*SVgqbrxrI z8p;c{-Jh|N_vD@C)mIPO?q%anMpkSA$ zi(`mIZ?cb<*QBJx#K<52|JPf)xw)CKDKP}R)n9PSx&GguPWD%+kxyQ}eEH__#{cyM_8UjPhKR+;*eEaTkEK|kyY}5V^>;=vqM~3(gJ}VDT6GA zGY#?ww)k#xn;;jkj7hSfgTe~DWM4fq-Ic^ literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBorders.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBorders.png.meta new file mode 100644 index 0000000..db7c113 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBorders.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 25da15ac84743244ab4c860cf8798ec8 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 100 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBordersAlpha.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBordersAlpha.png new file mode 100644 index 0000000000000000000000000000000000000000..4ddd37ad4450952bb5dd03637b99f6e8afcc5281 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMpkS4! zi(`mI@7u{6IS(iZxSm%IJ1LTB<8~)FIO3=*tJ&TQkWnE^Zu!b#Q u<*Gj&xY4SW`DFF~9+z8&8?7tP3D~RGm`MM&30nws1%s!npUXO@geCyThex9T literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBordersAlpha.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBordersAlpha.png.meta new file mode 100644 index 0000000..a248e7c --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBordersAlpha.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: f536c51d3da3f2e4ca93ac8773ec2ad8 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty.png new file mode 100644 index 0000000000000000000000000000000000000000..188ed94dc5c375d5925ddcd7fd22b51cb1dbc595 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMprDGU zi(`mIZ}K007M>{#UOWshQanMprDGU zi(`mIZ}K007M>{#UOWshQanMprE#= zi(`mIZ}K0079J4>H8w6r?w*4jEK4$4cFsu>?~yXdI`F_CVL`DnGc&_Jb{%V(} P+88`t{an^LB{Ts5H+UYQ literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty02.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty02.png.meta new file mode 100644 index 0000000..b2dcd93 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty02.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 29b0e8156f6fb774faf129c83bc9ee33 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 100 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty03.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty03.png new file mode 100644 index 0000000000000000000000000000000000000000..ca376a89c1bc8fe52bea75c4d9312d7d03e7d85d GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMprDSY zi(`mIZ}K0079J4>H8w8Bqih=#iX|EwBz#ZYldI70kuuQXk@z&TvyqYEi~^4&*Vda$ Qf%+IcUHx3vIVCg!08kDdzW@LL literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty03.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty03.png.meta new file mode 100644 index 0000000..e9f14fb --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty03.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: c0a56b88a1b449045b3fe5f561aa12fa +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 100 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickEmpty.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickEmpty.png new file mode 100644 index 0000000000000000000000000000000000000000..ec9ead73db0edfdbe31bc68ee6b8b2f164137618 GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMprE#= zi(`mIZ}K0079J4>H8w6r?w*4jEK4$4cFsu>?~yXdI`F_CVL`DnGc&_Jb{%V(} P+88`t{an^LB{Ts5H+UYQ literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickEmpty.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickEmpty.png.meta new file mode 100644 index 0000000..89331d1 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickEmpty.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: c456d5ac01d2aa843a63985497b04931 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickerEmpty.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickerEmpty.png new file mode 100644 index 0000000000000000000000000000000000000000..ca376a89c1bc8fe52bea75c4d9312d7d03e7d85d GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMprDSY zi(`mIZ}K0079J4>H8w8Bqih=#iX|EwBz#ZYldI70kuuQXk@z&TvyqYEi~^4&*Vda$ Qf%+IcUHx3vIVCg!08kDdzW@LL literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickerEmpty.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickerEmpty.png.meta new file mode 100644 index 0000000..7365c26 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickerEmpty.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 7acc6bd588627b046bc1c9b3cd78a6c7 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareCorners03.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareCorners03.png new file mode 100644 index 0000000000000000000000000000000000000000..38dc1bb8015f9a79cc3209cb6d4f0dc26efc98d9 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMprE;@ zi(`mIZ}K0079I-*Wr2o_nyeWT8Z08x4Ubr7Oy*=vv1NYG+QlnTVIakwk=USU$zmkT a%*anMprEOz zi(`mIZ}K0079I-*Wr2o_nyeWT8Y~6k2Xd6f4txoG)0CKS;6U@mj3sGt2edqY-#KxB Zfk8H0fpdrTc0r&444$rjF6*2UngB35CO-fG literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareCornersEmpty02.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareCornersEmpty02.png.meta new file mode 100644 index 0000000..7f51fb8 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareCornersEmpty02.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: ca2f91cc405eb144dad970eb23db2f72 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_empty.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..8e17561d53740055d922d1c24df9d17e43f6853d GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4j!ywFfJby(BP;j27 zi(^Pc>)UINTn!2$EEg=dZs|~naaq2Nho$>Va=f(C-B&-@1V!}h!%~jfT^e* zN!VYsf_J}mLhFYJ;r(I;OA~eF#1}kR=#X7=s`aA8^iRtk&p)gyY%c5nL|xI|`G!OD zYJWbcz6*~wPq4o$8FH-K-Z6^-W|B ZusuG#)AVYPb|TQF44$rjF6*2UngBkaQPThb literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_empty.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_empty.png.meta new file mode 100644 index 0000000..890be39 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_empty.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: d1278357b25e10442b6ca6c24edc9781 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted.png new file mode 100644 index 0000000000000000000000000000000000000000..c8cfc7fff7801ff59d70a57f7721f9e2828ae25b GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4j!ywFfJby(BQ1HB` zi(^Pc>(OZ^IS(5MFqmg5w*S`GKekfwVgk>x9~a^-9cZ#U-DBspJ>Kz6PpaDSe+A__ zyPu}YU271qWcPNMA+v>XVbKMameUK(6kPdC88eG^aCuBU9OgTe~DWM4f@ZM@O literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted.png.meta new file mode 100644 index 0000000..7edd20d --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: c99a391f381fe534c80a193fe9f307a0 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted_alpha.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted_alpha.png new file mode 100644 index 0000000000000000000000000000000000000000..776309196aee7c5b4c5d5fdc8b19fd8e71cb8f62 GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4j!ywFfJby(BP;if@ zi(^Pc>(ObJT!$Ta7^ZGf{Qv%w=i{o)!4f?mH?A&rSm1VMO4ZhDb&JwpZkBqtKmYK? z$a~Kh^A=3poWXSGiGlP3t@fD=<(55cEhiFH6nyyn85b7q;O3ZqIMks_<{ZanM1_nlZ zPZ!4!kItl;FE1|Evk5h{hi@w4jh2FfL{XUPI|fq*)C>=)gD|ICcK-k4RVvGtDnm{r-UW|@z8kW literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileCheckerboard.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileCheckerboard.png.meta new file mode 100644 index 0000000..acb7d17 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileCheckerboard.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 1954196ce2bc5c3478b215b39212c3cd +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/transparentSquare.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/transparentSquare.png new file mode 100644 index 0000000000000000000000000000000000000000..c745068069d056de1fea32d17179ce4c6f8ab2ab GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMprEj) pi(`mIZ?XjI;slW%CWC|o1_l-Z2F7h=jf_BP22WQ%mvv4FO#qDR6tn;U literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/transparentSquare.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/transparentSquare.png.meta new file mode 100644 index 0000000..cdc61f9 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/transparentSquare.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 4d338c631fa36f345b72a36f1c91ff9a +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 100 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot.png new file mode 100644 index 0000000000000000000000000000000000000000..768a2da31056ae9e904f3987d24054a50562d5d4 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9F5he4R}c>anMprD(l zi(`ny)MSRn|NsB5X8vfU@Q>xF!Zs_PAl{Dq|BtgM7>cs3$cjmjRi5yJ$E2g3(fY@s sBMuA=B5#f<@1H$E`6@@nY`kL{fF?3{y85}Sb4q9e0HxC}A^-pY literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot.png.meta new file mode 100644 index 0000000..afcc984 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: ed7cb8f9a27664e48896c904189f0e2c +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_darkBorder.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_darkBorder.png new file mode 100644 index 0000000000000000000000000000000000000000..705c72b68d0556f94b5f925f92a5b1705dd36d7e GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9F5he4R}c>anMpkS}3 zi(`ny)Z`QfCRCSvfE$zna!EegGc4~5eJ3_kvI3YUi>`1jZP@GR48iDiCse|`M^{{BOjJ(Vxj81DZrT*FzgM+xXK N22WQ%mvv4FO#pS3SUCUy literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_darkBorder.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_darkBorder.png.meta new file mode 100644 index 0000000..2758634 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_darkBorder.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 27df4ca974a8eaf40803907859421506 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_whiteBorderAlpha.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_whiteBorderAlpha.png new file mode 100644 index 0000000000000000000000000000000000000000..2a081f6b2ab16c16b320321417083ca3aee328c4 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9F5he4R}c>anMpkR`x zi(`ny)MSRn|NsB5X8vfU@Q>xF!Zs_9KF$*X%$M35en<$cb~5a!<Hq)$ literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_whiteBorderAlpha.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_whiteBorderAlpha.png.meta new file mode 100644 index 0000000..8bfeba8 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_whiteBorderAlpha.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 039dc89c76661c344b7776f8a47cc5a4 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare.png new file mode 100644 index 0000000000000000000000000000000000000000..afc2459caaa4d1c9fdb4366d6e09313f89bb081c GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9F5he4R}c>anMprE9u wi(^Q|oa8_M|JyTbHgu|7T`c8h%A?845Sq&@Ya68K3{=G6>FVdQ&MBb@08(HWlK=n! literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare.png.meta new file mode 100644 index 0000000..2a4aa36 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: dfe6e0ac3e5f24740a17e14b65e08406 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 100 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha10.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha10.png new file mode 100644 index 0000000000000000000000000000000000000000..6480ee22a955b1ab75ba087e81c747a94a62cdfc GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMprEX$ zi(^Q|oa8_M|J&;`vo>@Jon6eCIS^Qc)I$ztaD0e0stQU B9U}k$ literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha10.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha10.png.meta new file mode 100644 index 0000000..1134262 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha10.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 93b68213089b05943a651574eb7e2fb5 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 100 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha15.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha15.png new file mode 100644 index 0000000000000000000000000000000000000000..e6f3c427d4cf110df50530e7da40f311824d3a74 GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMkesKB zV~9m>@}K|z_e(LeHgq;R8Dt$;!MK=>hmTo8g5hrxv-7Tm-Nrzr44$rjF6*2UngB%K B9GCzA literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha15.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha15.png.meta new file mode 100644 index 0000000..8dfc149 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha15.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 5510cdd48a6aaaa439c95ef5b2fe9e28 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha25.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha25.png new file mode 100644 index 0000000000000000000000000000000000000000..5219f2a0fcdb4ad7dfefa5b057bc22afdc753bcd GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMprEX$ zi(^Q|oa8_M|JSQ9vo>@Jon6eanMprEX$ zi(^Q|oa8_M|JU0xvo>@Jon6eanMprC@M zi(`mIZ}Ol2|Nl#}aWM!pwanMprDhd zi(`mI@7tb(f(!~AhgT`@kg+z{y}_wfa7sUa(e-~q6QQk&T=WnM6{yLex}w&TewplJ-Au6{1-oD!M<#m_AD literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareCurved.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareCurved.png.meta new file mode 100644 index 0000000..8a6304e --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareCurved.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 070edb62059c27b408e16f28cb87f941 +timeCreated: 1604057757 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + 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: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareCurved02.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareCurved02.png new file mode 100644 index 0000000000000000000000000000000000000000..c7ed49b005c6aff08c0586d66c4bb87d4f88a749 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMpkRTg zi(`mI@7u{6c@HS?u*hn$ot)PZ8_}vdsl)fdV}6lLCDk2gJ^MBOsGEy19msAanMprEOz zi(`mIZ}Ol2|Lx70SsPe8Ts2J{dV-i;+V?RoPIO3=XqfaV+>7^ze35@zthVZO@Ib4c)I$ztaD0e0st)ZB(VSh literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare_fadeOut_bt.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare_fadeOut_bt.png.meta new file mode 100644 index 0000000..27a1460 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare_fadeOut_bt.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: a40dc0d6372a9084fb45976308087290 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/yellowSquare.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/yellowSquare.png new file mode 100644 index 0000000000000000000000000000000000000000..c41f635d6173527df46ed81874904da9d02e1052 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9F5he4R}c>anMprDMW zi(`n!#N?XdmdTAG2aY%>NnABpmAE1!A%TIRB8Kti3H`P6f$A7MUHx3vIVCg!0K2#w A?*IS* literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/yellowSquare.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/yellowSquare.png.meta new file mode 100644 index 0000000..54af05b --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/yellowSquare.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 517a5bfe18f2ee04d9925db10be034e2 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Plugins/Demigiant/readme_DOTweenPro.txt b/Assets/Plugins/Demigiant/readme_DOTweenPro.txt new file mode 100644 index 0000000..9837c95 --- /dev/null +++ b/Assets/Plugins/Demigiant/readme_DOTweenPro.txt @@ -0,0 +1,35 @@ +DOTween and DOTween Pro are copyright (c) 2014-2018 Daniele Giardini - Demigiant + +// IMPORTANT!!! ///////////////////////////////////////////// +// Upgrading DOTween from versions older than 1.2.000 /////// +// (or DOTween Pro older than 1.0.000) ////////////////////// +------------------------------------------------------------- +If you're upgrading your project from a version of DOTween older than 1.2.000 (or DOTween Pro older than 1.0.000) please follow these instructions carefully. +1) Import the new version in the same folder as the previous one, overwriting old files. A lot of errors will appear but don't worry +2) Close and reopen Unity (and your project). This is fundamental: skipping this step will cause a bloodbath +3) Open DOTween's Utility Panel (Tools > Demigiant > DOTween Utility Panel) if it doesn't open automatically, then press "Setup DOTween...": this will run the upgrade setup +4) From the Add/Remove Modules panel that opens, activate/deactivate Modules for Unity systems and for external assets (like TextMesh Pro) + +// GET STARTED ////////////////////////////////////////////// + +- After importing a new DOTween update, select DOTween's Utility Panel from the "Tools/Demigiant" menu (if it doesn't open automatically) and press the "Setup DOTween..." button to activate/deactivate Modules. You can also access a Preferences Tab from there to choose default settings for DOTween. + +// VISUAL SCRIPTING (PRO ONLY) +- To animate a gameObject, select it and choose "Add Component > DOTween > DOTween Animation" +- To animate a gameObject along a path, select it and choose "Add Component > DOTween > DOTween Path" + +// SCRIPTING +- In your code, add "using DG.Tweening" to each class where you want to use DOTween. +- You're ready to tween. Check out the links below for full documentation and license info. + + +// LINKS /////////////////////////////////////////////////////// + +DOTween website (documentation, examples, etc): http://dotween.demigiant.com +DOTween license: http://dotween.demigiant.com/license.php +DOTween repository (Google Code): https://code.google.com/p/dotween/ +Demigiant website (documentation, examples, etc): http://www.demigiant.com + +// NOTES ////////////////////////////////////////////////////// + +- DOTween's Utility Panel can be found under "Tools > Demigiant > DOTween Utility Panel" and also contains other useful options, plus a tab to set DOTween's preferences \ No newline at end of file diff --git a/Assets/Plugins/Demigiant/readme_DOTweenPro.txt.meta b/Assets/Plugins/Demigiant/readme_DOTweenPro.txt.meta new file mode 100644 index 0000000..ef7a8e9 --- /dev/null +++ b/Assets/Plugins/Demigiant/readme_DOTweenPro.txt.meta @@ -0,0 +1,19 @@ +fileFormatVersion: 2 +guid: 24123b2fcdc15c943bed44e0c6beeec7 +labels: +- Tween +- Tweening +- Animation +- HOTween +- Paths +- VisualScripting +- VisualEditor +- iTween +- LeanTween +- DFTween +- Ease +- Easing +- Shake +- Punch +TextScriptImporter: + userData: diff --git a/Assets/Plugins/Sirenix/Odin Inspector/Config/Resources.meta b/Assets/Plugins/Sirenix/Odin Inspector/Config/Resources.meta new file mode 100644 index 0000000..24a65dd --- /dev/null +++ b/Assets/Plugins/Sirenix/Odin Inspector/Config/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9cee568166f61554aaad2e0fbdbd38aa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Sirenix/Odin Inspector/Config/Resources/Sirenix.meta b/Assets/Plugins/Sirenix/Odin Inspector/Config/Resources/Sirenix.meta new file mode 100644 index 0000000..01c5632 --- /dev/null +++ b/Assets/Plugins/Sirenix/Odin Inspector/Config/Resources/Sirenix.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3bb59c383a022a9459351a18da7ec288 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Sirenix/Odin Inspector/Config/Resources/Sirenix/GlobalSerializationConfig.asset b/Assets/Plugins/Sirenix/Odin Inspector/Config/Resources/Sirenix/GlobalSerializationConfig.asset new file mode 100644 index 0000000..185befc --- /dev/null +++ b/Assets/Plugins/Sirenix/Odin Inspector/Config/Resources/Sirenix/GlobalSerializationConfig.asset @@ -0,0 +1,22 @@ +%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: 1549551891, guid: 74721b9f0af448f5ae2e91102a1a5edd, type: 3} + m_Name: GlobalSerializationConfig + m_EditorClassIdentifier: + HideSerializationCautionaryMessage: 1 + HidePrefabCautionaryMessage: 0 + HideOdinSerializeAttributeWarningMessages: 0 + HideNonSerializedShowInInspectorWarningMessages: 0 + buildSerializationFormat: 0 + editorSerializationFormat: 2 + loggingPolicy: 0 + errorHandlingPolicy: 0 diff --git a/Assets/Plugins/Sirenix/Odin Inspector/Config/Resources/Sirenix/GlobalSerializationConfig.asset.meta b/Assets/Plugins/Sirenix/Odin Inspector/Config/Resources/Sirenix/GlobalSerializationConfig.asset.meta new file mode 100644 index 0000000..df485e7 --- /dev/null +++ b/Assets/Plugins/Sirenix/Odin Inspector/Config/Resources/Sirenix/GlobalSerializationConfig.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07049c7b985229e40acc35ecdddf936d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/DOTweenSettings.asset b/Assets/Resources/DOTweenSettings.asset new file mode 100644 index 0000000..62ebbaf --- /dev/null +++ b/Assets/Resources/DOTweenSettings.asset @@ -0,0 +1,54 @@ +%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: 16995157, guid: a811bde74b26b53498b4f6d872b09b6d, type: 3} + m_Name: DOTweenSettings + m_EditorClassIdentifier: + useSafeMode: 1 + safeModeOptions: + logBehaviour: 2 + nestedTweenFailureBehaviour: 0 + timeScale: 1 + unscaledTimeScale: 1 + useSmoothDeltaTime: 0 + maxSmoothUnscaledTime: 0.15 + rewindCallbackMode: 0 + showUnityEditorReport: 0 + logBehaviour: 0 + drawGizmos: 1 + defaultRecyclable: 0 + defaultAutoPlay: 3 + defaultUpdateType: 0 + defaultTimeScaleIndependent: 0 + defaultEaseType: 6 + defaultEaseOvershootOrAmplitude: 1.70158 + defaultEasePeriod: 0 + defaultAutoKill: 1 + defaultLoopType: 0 + debugMode: 0 + debugStoreTargetId: 1 + showPreviewPanel: 1 + storeSettingsLocation: 0 + modules: + showPanel: 0 + audioEnabled: 1 + physicsEnabled: 1 + physics2DEnabled: 1 + spriteEnabled: 1 + uiEnabled: 1 + textMeshProEnabled: 0 + tk2DEnabled: 0 + deAudioEnabled: 0 + deUnityExtendedEnabled: 0 + epoOutlineEnabled: 0 + createASMDEF: 0 + showPlayingTweens: 0 + showPausedTweens: 0 diff --git a/Assets/Resources/DOTweenSettings.asset.meta b/Assets/Resources/DOTweenSettings.asset.meta new file mode 100644 index 0000000..a6f4c47 --- /dev/null +++ b/Assets/Resources/DOTweenSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5e18df891eac44c4ea561775189aa650 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: