From 12304c6bb4fc42c1e7c25996956413185c42305b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerard=20Gasc=C3=B3n?= <52170489+GerardGascon@users.noreply.github.com> Date: Fri, 12 Apr 2024 20:18:06 +0200 Subject: [PATCH] feat: ui transparency when not hovered --- Assets/Plugins.meta | 8 + Assets/Plugins/Demigiant.meta | 23 + Assets/Plugins/Demigiant/DOTween.meta | 21 + Assets/Plugins/Demigiant/DOTween/DOTween.XML | 3077 ++++++++++ .../Demigiant/DOTween/DOTween.XML.meta | 4 + Assets/Plugins/Demigiant/DOTween/DOTween.dll | Bin 0 -> 175104 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 -> 70144 bytes .../DOTween/Editor/DOTweenEditor.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 | 5308 +++++++++++++++++ .../DOTweenAnimation_Advanced.unity.meta | 4 + ...DOTweenAnimation_AdvancedSettings.lighting | 66 + ...enAnimation_AdvancedSettings.lighting.meta | 8 + .../DOTweenAnimation_Basics.unity | 1821 ++++++ .../DOTweenAnimation_Basics.unity.meta | 4 + .../DOTweenAnimation_BasicsSettings.lighting | 66 + ...weenAnimation_BasicsSettings.lighting.meta | 8 + .../DOTweenPro Examples/DOTweenPath.unity | 1612 +++++ .../DOTweenPath.unity.meta | 4 + .../DOTweenPathSettings.lighting | 66 + .../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 -> 194560 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 + Assets/Resources.meta | 8 + Assets/Resources/DOTweenSettings.asset | 54 + Assets/Resources/DOTweenSettings.asset.meta | 8 + Assets/Scenes/SampleScene.unity | 248 +- Assets/Scripts/View/CTrencadaInput.cs | 4 - Assets/Scripts/View/DisplaySetup.cs | 18 + Assets/Scripts/View/DisplaySetup.cs.meta | 3 + Assets/Scripts/View/SantJordi.View.asmdef | 3 +- Assets/Scripts/View/UIVisibility.cs | 28 + Assets/Scripts/View/UIVisibility.cs.meta | 11 + Assets/Scripts/View/UnfocusableEventSystem.cs | 8 + .../View/UnfocusableEventSystem.cs.meta | 11 + ProjectSettings/ProjectSettings.asset | 4 +- 366 files changed, 27618 insertions(+), 28 deletions(-) create mode 100644 Assets/Plugins.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/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/Resources.meta create mode 100644 Assets/Resources/DOTweenSettings.asset create mode 100644 Assets/Resources/DOTweenSettings.asset.meta create mode 100644 Assets/Scripts/View/DisplaySetup.cs create mode 100644 Assets/Scripts/View/DisplaySetup.cs.meta create mode 100644 Assets/Scripts/View/UIVisibility.cs create mode 100644 Assets/Scripts/View/UIVisibility.cs.meta create mode 100644 Assets/Scripts/View/UnfocusableEventSystem.cs create mode 100644 Assets/Scripts/View/UnfocusableEventSystem.cs.meta diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta new file mode 100644 index 0000000..f3b9125 --- /dev/null +++ b/Assets/Plugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9e2b6f8050d34ef4abe57d68cfe04cb4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: 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..ceb16e4 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/DOTween.XML @@ -0,0 +1,3077 @@ + + + + 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 + + + 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 intervale 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 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..728752131941a8b5e085c63988d26c629f2bcfa2 GIT binary patch literal 175104 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 Y + + + 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 utiity 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..37ae7b72ce49ff17c43a436393e7a3e05d589d79 GIT binary patch literal 70144 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 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..7e84130 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTween.Modules.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 58f2f98b0cec4e74998cb65ad59190b4 +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..7151567 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity @@ -0,0 +1,5308 @@ +%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_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + 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: fd4baa6738deef846b8491b2407d7c46, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + 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 + buildHeightMesh: 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_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} + serializedVersion: 2 + 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_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_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} + serializedVersion: 2 + 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_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_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_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_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_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_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_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} + serializedVersion: 2 + 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_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_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_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_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_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_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_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_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_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_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_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_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 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} + serializedVersion: 2 + 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_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_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_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_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} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &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_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_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} + serializedVersion: 2 + 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_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} + serializedVersion: 2 + 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_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_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_UpdateRectTransformForStandalone: 0 + 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_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_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_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_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_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_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_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} + serializedVersion: 2 + 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_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_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_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_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} + serializedVersion: 2 + 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_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_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} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 848136772} + - {fileID: 1242857380} + - {fileID: 118309271} + - {fileID: 1844382606} + - {fileID: 76224668} + - {fileID: 1260203941} + - {fileID: 1053889442} 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..eea44e7 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting @@ -0,0 +1,66 @@ +%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: 6 + 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_PVREnvironmentImportanceSampling: 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 + m_NumRaysToShootPerTexel: -1 + m_RespectSceneVisibilityWhenBakingGI: 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..2c81005 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fd4baa6738deef846b8491b2407d7c46 +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..375fcb7 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity @@ -0,0 +1,1821 @@ +%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_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + 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: c56d4c2151418904dacdd8ed2f022bf2, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + 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 + buildHeightMesh: 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} + serializedVersion: 2 + 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_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_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 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} + serializedVersion: 2 + 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_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_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_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} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &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_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} + serializedVersion: 2 + 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_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_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_UpdateRectTransformForStandalone: 0 + 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_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_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_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} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 848136772} + - {fileID: 1242857380} + - {fileID: 118309271} + - {fileID: 1260203941} + - {fileID: 1053889442} 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..bb8e22e --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting @@ -0,0 +1,66 @@ +%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: 6 + 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_PVREnvironmentImportanceSampling: 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 + m_NumRaysToShootPerTexel: -1 + m_RespectSceneVisibilityWhenBakingGI: 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..7640ffc --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c56d4c2151418904dacdd8ed2f022bf2 +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..7a1f99a --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPath.unity @@ -0,0 +1,1612 @@ +%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_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + 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: 3c1f6dfb3e05b5d419f0482e6674fea1, type: 2} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + 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 + buildHeightMesh: 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} + serializedVersion: 2 + 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_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_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 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} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -30} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 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_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} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &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} + serializedVersion: 2 + 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_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_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} + serializedVersion: 2 + 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_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_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_UpdateRectTransformForStandalone: 0 + 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_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 +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 848136772} + - {fileID: 1242857380} + - {fileID: 118309271} + - {fileID: 1087750408} + - {fileID: 1260203941} + - {fileID: 1053889442} 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..b3a3e83 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting @@ -0,0 +1,66 @@ +%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: 6 + 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_PVREnvironmentImportanceSampling: 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 + m_NumRaysToShootPerTexel: -1 + m_RespectSceneVisibilityWhenBakingGI: 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..0860fe7 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3c1f6dfb3e05b5d419f0482e6674fea1 +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 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�v zQv+8zMyyCcU*Bz;192={KgmH&^A%~{oR6cgnzemrS>K#*6q#C^1id-d6L$g$+x#~R zW&zN)#)UpbJoM=PYP=CZY-77TOb^B$)P{YL=&smyPhP@j{0A(lSwo$zV)(_3khv*b zYcYKH-X359)b6|ezwF@1d*I9aw$WsIM9$t{guuxC6E}-~L*3vY(8FhT(l_Og(4Iv!#{5#HBMF^_?&i$hlKr|0e;MN$hYlL)&H)-Ipk-HPQD!;drs|CrJ%X|)|2Xre zC7LtfgqK3!yJAo@Pgobdib+Uv!-&Gzm}x%$WqeE(Cwy0*ytc2CdHtj5NVV;}aGi9l z9Ex;GN6C$h;lg|5nbBzS-&};Bq9;JWo|3eEv`$XM@v_51f8|fzqcfe#bAeF8PooU@6AckEyk3(c~jT*=;6c!FB79&mg6c2Tgc#b855$l3rkPZ8x{nh0brGu2C6v*djb0hal;IiJU+$k4Dd8=kpMeoQ zBTev29Azqm`o9MhUxY}K2arwio5rcw`N$Dd@G$eQjod_gGfc9GWh3J0`eZJ{$t+I$ zsYo(CSut0I3xKm;x^|lsM$w%nNmQoO)wBZ7Qyx^G_FT^T&<)ky#jEDaH0Zm!pzu%$ zrkVi7L22H=)$H0{b}_S2vN<6N(8#vQGFk&+K2~j+UEY^P7&adt5?F>k+gJ z?u;c~A~oX{A&QO89x;bJxZ4g|Fl@Q!BF^P&2%gjk$y{4VNwb1WC z#BQ#>d5VKHF1M({loF4!gKJ?hvl!d1h`!BXa!DFcSvUiG*dIt5oQ(-t7Vd=kNKvt( zhFkNK0>^#3E^ODhH$V*(TK&jFI4`yea@4S}%&i>wvt4IqR~)#vYUegGIh4;6S+pf} zg^_hG@)2wj9czjv)JiKZd|sZUWa3CK3jFv?xx1+*gY*_aPKT>y78+n5lev{SUMTQQ zd_pK7=q#FB9|n7(nDp?t08wE8OD>Bv9-6#908+QN=xKCsGc)bw|hkQsaVfges1hkXxML_X&4&PKweIzBK|5*{ve z%I*{{T$7NN*_rJtO;|^j764vXrT%v|UebD?WRwB+<@E}h4`@HBA1PG7dD{%Eb++&RwJ^!NvX#!uwHp5g^gcFs9bil z+AWscAh4Dg@0aH}RS|vsq0e^S6PipyPUHeREqa`3ZP+!zoh3|`71(DWgb&Z8FT9e= zs@}Kb2T>ZhI-Fqq4ZhyhLUOt=tYMKmvD`PUib)v5FL_HvUDndOu=}tPfo>7b8%+O+ z$@^A|VQXdo(^2{W%bV~o>rgo?D((tzRq2bSzkavU^j$Pi!-fnn1|ajK6RlPtL^8=l z5zT8?BzRxAjuYDfo1+u~jz4)aV7$<(^A)9z>!tI_ix}!zo|m+tC1JcPX7C$IBOC<5b_lx8-2U8!^{1(8eB`+(92Kt?AUY&7Ip`QyW4wBLm1V54gwj8?& z9u9{rdz!&B$X{MG@sA9#7Z319#4zPQ0{;EGWi>|e;o;(gV%5NB?6wAnQrp^3=2SnM z;5aCf8K#rSb;)lp7c$#t#^W33E?H}izwjOz3n!D+ zAw2dSnePE04gN2hQyUATk(T5*-(5KSuXb*2WJ~==d4kNd{qq30DkuqahIbF`d}!&3#LzJSOr|^6do-`t zuP5USeu3Q%O)V7PHILVDF@L7UWaJ zi|)@ZQpm%eNF}E29nBP_m#Cp*_lUBE;L$fZtO$8fKkd#j9XgTvGn0He}}%epvA?ZTS62!b@`s?UM<;fV~Y9rrB2#azQ-fI~N|omOl*a?@S|l zik4}}p83fwB{ZGPQ_UtM!O8H?215uHMV?0te=y>Lo-}u^E3lL6QwH9)@4FOaZt=!R z`aP$YC!(<|_RZX!4SXJh{=T@eo9PT#<@$?M zD`3d$*Wuragbnf|6&v55mv7LYrCIj<}=r;zrnBu?14N}^|{2eDE-wy&gK(iBB6LNIHmJdu?JGQsfLNE z-}4t+ymOIpfJ#9#cT!q{X{yAGv0>(8P-!#?#wC)1!|MzjTMT_@kx~r6)&lUTkdTF?KEW4?F8Y=+9zb z+m~k#><>~kgX)yzF*;k@>EYpmV{DdvbFG!wVoA_>^oW;dax%vWpeFKJ+ib`w`SjND zzA@enz0Jo~ogVujLz#oGk4~&0s&$;qv4O2RQc(ZPhNhq(k#J6Ut5pdmWvV^U*T*Ga zVIXQfQ(x=BB3hG}_-&StijxkqTrjm^b?LtjM#;+{@TnJz!>m(kuixF=Fn?`tz5JB= zodx~gel++(ZX`Qrk**p7VmmX0M;%F%lnwPq_qg`C8pXArI5ySG zDJsB57GI&P{fAr)B_#%DpaL;`iw4hnkM|U-?A|k7ZC5Ccgt`z7)ZWFvJ)_j2 zVSS+EbI2)Gf6&aSd4f%-B?y>mNfPXD1pp=nqU9LC&`KPHj*z?Rb+m?bOO{j6oVQk` z^?hYGdWZ+ir@El=?Lezos_tc_qc-5=_aP+cbfdy~)#xLM8Yi(fceLGH)*)n^XTI;= zRJ#3mU2FA)n)HNu^xfmq<(pL+QSjt1?6JwGVodpIrM4yUBup`2bu=wMTImPx?DNJ- zw|?)9`j&Mz*~o>Mb=82hJZ_dsO)4V_^v}y;MdM?NU(-@7x>oXW-dxK%Kqap8aDVGo zRcz^~0Ou2H;a$}wK{C2pe^;%Yfzm#*Jlc)gL1q$|8A_~CwUYYP1mMsxGot(-$356Z z`4GfPV9F0xS(uI_jZ4wYQYoT6j2bky|DK=S3(zwEZ4%ERNxj2we)zG-ZM$k=xG((H%^TNA*L8APml@? z+=)*$6xpjB0Ap03CImdQGXilb$+w(KI4odWgB<~hDFgaKZp)>H9=(|yoH_`69Ugo2 z;6pFT%~(w$NWaF65gP+zr1)gZe{2i7so%YM7)Chy2_x|NO%Iq);~gmwWpObwD8F)h zsQs>^8y3R$V7sg0T9Y`M6Nk^G+V*;Sm^yiz+^x0ma6MX3m7l+|hpIRKGMkfk2AZbw z2hzT##9kqFbe5}U^FD26;<0^7&mZTd2f8QwwG5xj(ofFcE)lIW66kr}8qd!P<>bQ@ ztN_N*W15xJZ%0+4 z3X?`74yY8R%rSHS0)H;L;Xw{=g2YV^oyM{Ikw~c49Juk8P-$31U+yhk$cbYoEx(RU zS(b)DUpLmZmu{_9ajBfWTP$K#uvp2iz?x;}89!_|N3riTo*-Mmp_c|-%|9A8%Ajz& z1&~U4x81lU_gAUjrcupKcQ8yf@jRdbU>|yY$Wtd?wH!#{C%+bQ&?BhZ!KG7n^8+h1 zOkJPK<(oa)hLM`TB||SrQ43R}$|8X>MUF?@uLJS?AWtPA&%bj8FvOwrv)!x7_@f>Q zX8s|-f?zzTAcdao2Gsdh8_A8N7H9ps3qxSBqtpa5iKF@+9TfUyni&oy+@*8{22?F> zXqoj!lEyrv95W$8zZm)Imbp+mL@fGu-BTGLbe!BB^M6z{}v+Sh*r&3|p+5kd-NO4!w%lypN(J3P5@Q3ByDFEpA1;tn zh5eR*;RH`{Q8{qyGwrBi_%Q$+njrM6miI0v)no70_-h3)zW{GlzXZ#bR zYBod{9JM^pq10!wG-EQq(rau=h%Y!w!2#?bY#Y_3CzwZ);1%zIl+qw>!$7&=C;^O2 zw&F@N<6m|Kgns7#z2;F`GD7`}pV$J7L`chKu0iNCa3>tzn%$ZMl0SVG=i=4e`u0v@ z%z_H@94S)T^Q;`bbIVQxnTIaY@`B$`5}?LG9fUp z*wJd*BEj5>>HZrjm&JPOcc?P_kDHAk6P945u4H+5sxPtLd}%ooh_g{GcWd zeaVC;1(omV|60%JmBuP+-L8+q6cHy+JzM?$HgC8xWD1Fvw6%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..58f9956 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.Scripts.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2e3288c5c3ad72943a41efcdcfc8572f +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..03b1cf2edb2b4a44cd7936a9963a45c7728a1732 GIT binary patch literal 16384 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 aNBke~-<1bO_-h^H8OSgGTweens 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..fbe5670 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPro.EditorScripts.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 792c8ab642d3d0e41b37eeea1e5fa3ee +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..c23c23bca9d29747519b9e9287eae945ff8a35b1 GIT binary patch literal 35840 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 ubJy#9*{2J$ 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..8e14121510c0737ed76352b2186abb177c3dba60 GIT binary patch literal 14848 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 Y)stZSUxNW`&#>v^iT$VRk1hiL3D+R`lmGw# 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..6b3bcd00447413dfb25b3aa92d7ee3d1c17f345e GIT binary patch literal 194560 zcmeFad3+qjnLpg>?&+TCkz}=IG^4||WPwC8hkVEw$p%~I3J}5-0+vm{9EKPJ4I@K< zVT8!JA%>8PBu+?(S#saWCfNW9AsceR#z{7JLLld6Lyk?dxt5ss`+cf=x~C-@v-`g9 z=l91?A5C}FQ%^nh)KgVYJ$3eTHs7upnx>ifJ@u5PeG+f}P091Xk2wT)4t}ar`&j0Y zWuI(2<&kA)y#j;zls}=3n^M zwjvyG{u$cTONq+==pA?o!r$$ndm0^}dvTKp0m0vtp|!)gsol^Php>Zr4>egA>@@r* z#^R0b+;-hg`k66>$p1HCEepxerA0s)1*b z!Jp>g9mC-G-@j0<_#Ym zvSSxFWo_%W?W^_{B9hItQ^=XfZjV2LXe!R-vnXb>x^!=U$eBONRBlBo{$WI8c*Iog zk@>k25mPW9@7j0fF`i%T^WVNKr^VU3(*UvErVbWron+ z2w$+h?X;x5Nw{inaY(a-L`0_}|#=o}e~72FB4%qQ9@;rnl= z=zpLr1t-}~V?llKX5Lbgy)7jvQP|&|7nUO`hq?A^6x24jhP4NtJZ|-6dwW9lSZhSp zbs)@YF${%L+1nd=diT~NPv71cTK`^j-+{sn%83b=w=A4e|AHySi1)^c_bp63mZ7Ox zrj{QFrL>EziAE&%dq#TAT_nC|q%Rc&^>>;Ae8-&?&ikwXIa3m9tEU*nX8LDOy+5@IAhHyr$;wHz65?%Fh zaRwCjY%LB4C)i?xkXOW;;J;qzbP`U+Bkmu|o`2BH&_^VrjC14g7ndu+V5>PtZ zLmW$jYJW#v^VT3-@v3XjM|%9LWp(YUITEieq6vZHZS-sYpy6AQAvbC_*%5X_a2|*CNW`S_o;CE?oHQ0AP8xX@?KzRiBt}5B-SQv>%UjPFh0<+$BClOqltW$R?iO7@{su%TZt|z_nq`)h_$VLouE@2SRNR$g6vCuJ_Yn)*SWJ4b-_Ot9OyoUP2wY#{n~a3iBlgl(&aY8N9%S* zn*)e%3YvdBfJkeWqK_&>kYCiCxU8+(yHHpqJudG`0JJ=)N7Qhuq>#X?seJt^04Kd48M>OE3VRI6|BKA|Ji^_J%-?$MO@9+ z-oxq!u{fo@Xh>=RB>BqPi1i!kZWP8Bcs~pl1x-^ zDAlSpvjwP*mGRHTyP5efTBS8A7lsFw<23Vh9zBvLLxb$)Zx+(yyumA){pZaP@Sx|P z59B!pDvW`>w=^-{z7R&<--;ObaG0smu(S^&1t@NJ7IoXKo?W}2MYjZ4SsV3k(1h;- z_)2!|eQ*!1Rx=SqRx!Hm+SeBh$kv{0Mpl;KPoOiFcho+d0?i9SbF`eTeWU5|E&|9A zqE^#R_b&!e4U0#L#n_N;l>85%@2laB4g{ zVb!OicXB-#Adb_mdE4=xgZ4JP%iyY}ycM8QES)UxSq2om9S9jMt@19%JFoZ|Sdr3h zfL1_OP{;N9QY3NP_H4er&|#cDa|IA{W>3y4$tAl?Yh&bcC=S=IX9=*mq6%BUoLlZ()FmG ze_6_e0zDLk@8;U6ORh!~$8xhis=bpbZt9Ri2};B@Ro%^{)?U2tsiz)ocg>0opwwV} zq&|pLGMgHFrK?cxVfp4~X2?lTPp)YBJL&8#AMF;ArJ`GOd&fPu$1S84mtsr#*8s`# zuf?;lGS`fgA)bV}`GAu`^%I8MBZ~cuM|<5K@YAFCar1EJl{;0BKWe^XWo=!V??<2twckWw+V)^H zmmSLapdJ+2h7r^XaGQMcqm(|6pkR)z_ZW@B0$H;VLqlL z+#G8tdIRXYjz)gFkuO86D5&TNtZDq%$(d5D(Tw z*+bV`&f2$upDPei@najbi>(4wi7x5oOxG;TAX82*RmfT8F|$&zU2Avk`-r1hwOFak zi`Y-PDTb-~q|}T>v*9bK*D2JUR8WshWn0_?s z3@55vpt~Q?j(Sp6C+fj}glu7QB32Lhj-+!zR=diKNk>T!!>f%T2I>7f!UO4{7CR;B z^4o3ccaY6=+O?(kcZ1F)XIGyB_k2m~5*j({Flfk+)nX4aM?OvcK9j(b7$Zi6nE5P^`VU9cA(|V7QLF zMmx=F+I5r>=c0geX*Zogf!y(EhnNVDTHecn{)0|V&W)_X~)4j$01UfE`&yKU382ej)Z+E6Ez zZ3t$xJjxa0<1XFOt=)zQVUG-ib!6c`N@wbldDW@{lK|t&)8{Z4s$hA9*p}tvlW^M)I9NhxY{oCNLoD_IoCA2GJmX99WF+B2E zu`R=YH5_K8$MRo8hwAcd%k*ChZz+iUI=Dx5?-*%Y>@8h7uE?TzKuB{vCK{WjNPf>?p6c zGrMzUT2P=qpzs}4N6^kp?+x&dwgk3Q&1Im@iqot9MO6)54aiuI)K4%L-MxpSGOG!* z^T_z2-Wx#)g@#!x3k!R1g6|qs(YDfhUDTUZ^ma3?pgv$Ur=jwqzP_39FnFHA5?uW) z@L(No1701OB`fpk!V>8gYA*?kyqeDpX2(0ywbwNvsD;gO^`{DIEI0=Gr~>ZHodNki z-S*!Kx54qR)o!Kzx4|dzbpI|mS3PP4ygeUrQ5!KQ^mazp{XKY%_;=%(9r6DWulBru z4_>;LK?57H{C5&T_uqw=|8BY^iY-XWo%Y`YxKXwBf`|I*!1#S1Ue%2Ee!Ms#RgiX! zHmsraUEQFjww&2PR0Yfb0FcNY#uaVa(Rc&wN|^sa1Ucn)nAsnKi^|-B`@?WofAwf* zx3;ga2+>rJq+)yoVWg$T2wAP~P!3Zx?G{~P3zF`C6j(juP~zl3_df>jXsO@(Cl#4> z;bg>NU6?%t7{jEndSWjsR8TM8rz*6n7nQt)y3AT}PaPO@j8b+GX>NnKg$9@+UFL6y zbn!5&UhT^)X%q;mSEbvkVYUbhH)^m)421?p>1j3?jkHo4DilUR)US)$ypMxMrMr0R z6gU_u0PqO_-dfJ@B|vG#PXe+N#@PTz(C69d*J1Fy2_mhWn(_V_VYCy%RyVj#wKZMY z+T-P-<04pUZ()U@V+^?(yy|L_<1~q#L7V#&T+Pw;TdWfM_n(1JNCS25UWC#F{-1C> z0qJWI)060Qwf*y*OX>c7+KTVeJ zM`g426<`1cmCdT8leyin^{JW%UHOMZNeRmDR+ZtvSD?ne$|6 zu>^w>8@m)!;E;M?qZD!}3@%JJwOd!?#gYX2pF#EtD?7w9xK2&viAQji1%g4`rd$fb zn?=7kDtZ)gFl@Ao zBQS&??F$R{`^mzEox3fT5t?;J!<>SprcAek5FJoy!;OXp+tY|{SyFU?{<=mx{H;+P z!mNNc0$D!8*3J%SrDeaaJ*`^%vb41JWZentO}xkX5_%k^YmUQv6ltqzHSYnIK6OTt z3RO!{rXDxo#+O> zEh`}CLTN3H)F!Aa^I~9i)J}{%Fsdhi0(M<<@(1!t`&$uV=k=f_10WV?uYux(QHwT- zNt+_nL`PUw25R}^t~L2KM9!$VGIf`;XJP!B{o_Z>f^#z;uGG19I8)}Pu*_!#zP^@u zvvNsA3KvlqjwE|mMrUDvnE8Xjv}MU>?N2!EkhiZv=h~LbxETy^GOAN7ZCtFz@!(iH z6f%4^ez3{qkL9oqe&p()%i-6E`3%Yd+LPsgzNl4{&?bYmskVcJupZ6ey=b6SB0aAZermFg*WBo{GFh0!f9 zUG164`wyZns`jR9uYhO}-Hor?9oTSG-M3Z7ZOmgm1e`2p+&HgT?sF~IzB>hixwP%3{VyPp3#I5MF+fHm_>ox4 zX}I2OE50lZ_BZWhth=HcpM_>Ot7~d^Aa`op+>^|wr|cI7?uCUEm`ulYF-VO8pv6py z94#2{ngV99YRs1E%o1t;;aRmPS8;4nG_*3YR3bLkb>MLbJc=%_jQA~IRK z7_7+tG)fY~ui9P0n_`;^$f|uh24QQL)?0Dq<$no8ZreUbZD7?NjbWn1%wp+NGhYV6 z+#ozde?2C{B6%0SZ1Muji$5x^Q%IAy|0 z-)B7^T64jvtxpREW&$7!rv-620I^l{ypV=n9_%|s>XM9JXFAh*oeUhg_F&1?$!I03 z%Uey#ZALC80Yxs>@|9|=!>cqpyB@FnKBIJ|xHzg3NBvn0zGMNQDEuaRPk??R(UUaJ zAaGTWo;S=C=jgfKW8}?Lr>T6adh&WKh-hID>W-;h7LTh~@t)B-&|qrZ|sl%`sQr)o=~(epBE2*(1Z*q&0Btv#=G`n)xasjLb2FYgg9X zv4~PS*)V61B1w|+E(aWoriOroH-W4dK08yLmckHT&$rOJS_eQ$CZzBP;Z%tcskwA+LrX$W6)^~u_ zZFqcn-^BwOtZ_O?jU^)$6ugjx7X=O)-$V4Asq*lBx>Et46zI_?Qmxy7tpjVwnM5z5 z386X@t8}@k`VRqjO?j;xj>6VLcVhvk{-_G(>zJ1^_Hm4;vQ}r#D(6Izs>^~r;q@cL zz$*~PT~jlU0Z<-nMS!60ngZx?gb9K<^J6%@C)%)Agq6!^uzHHKC?!1cCB0b?l0l>s z%OJBG@srHpig*U!0o2wE9?L>j8T1tq$zYIKO00TV#Q#sgsPI2MKbs=}{WKmOeXLl$lPo(}cB)D=_kU#i;4*#ln_Ww^U-(Mn2u?oBa ztz)4q232-NEQ>6VmJ)s|q9#iCm82H0!vEiws;Wt%-R2dq3ZpVM#*a61R<|`gKK{}5 zjb9)uip}M*ig?I=^qFf#t;YLzL@h3_s@OfT*qI`Fm@C*56pHd59SFMyrH1R|Lq%Yt zQz~9;s^36rm9Vd=#<~8?mC2ay9`6)S&~cRyje^j1rB&Be?kvt70|I5MAYED2=qtDNTDHop^!NRt zkM^XgL7p0nBGu1wtUCGCCaYw{S%|*_WYxCT-39_ydwD8doDRgm9uyO2ij;W7zVOi) z0{Q|};k1+_ByF#_k5o3bP?>(lR94+58TWivjt6IH?&Q_-K~_Bee}IkBEDfLl?uf_# z72)s6i}lkZrcq&T3RpeTV;4lyg*i4iv5jEf9Sb+t&-mtcEGw_43 zvwrx44;{B*_>xOTH_SW%`g1go6v5J;^d3==`Va}`Up^dr%*_A9?B)&3z6e$mv=2+8Sgs0)C74=fpTJm&psECr-vVT_>}eg zOi-?=XhGmv$v{%627%9O4csg-D;+`|3* z|J2=RMaut2pbQR;_jI@2xDn=caipU$g?Gj~26lGFK~>AWBkdYSAh z_po{PmikKlrGe7o(vs5B(qN|4Q#xVhPm}@~Wq2UoG}4)Xvr{|(p;3dBWdOPx9c8{9MZcf6OQq%n7b?Qt@w z#de-25vAH;?Y+L4tgd547|2fLWXs=&w|)%_zqYLHKLwA6{5zcaDW>g=-v*DQl<{>q z)%vF3t$Hl2((nufl%j2vmTv-3kyKD&oyr9Po&`_Nv<6p8PJNr+RQa&(l$WN{axJxd z%?Tpd)fT42ZAshDARK58Ue&#rPEYMC^flK?Tod}sg>bS6z5y~&>m%>iRzEH!r7hL# z(mHl6dH@LFJ%nL?pgVimfy(jaB(+`DmpP`N)*9 zDNYi6S)vtIA#dH#kjz}RyDgSE`k;A&tkNfp4TBMFm0@5|+zE+!j{yaf2Ra19WW3jb zkmTFYhKNbo8K(DoB|P1GRge(JIo={ru%vCX=}GKh4^5p65E2#v&7bVYt9UCy`qA-B1W z(-8&59=Tvb^u;NVVw?i~ih|0-?FTOhMvYiGcvj6Saun8i;U^_!A4yT#jea%Ti;uMy zY}{8ZDF^qcmnURwrU$P%Ha2X0FdFAk-e%)``maR4T|nFrY|IpZtHREnEy9i60d>YG z>2-;*RG)bZGG0Pm;aRcgwW&EdkmC`-wT>bg~oO{k6X1X z5jccEt@Z5msiAh=llO-p#W_-!CFNw4=3%=i3QnLwZ>f1~EI-5#l19XY-|C50ZLWob z|1r5sz~GSV-7X60XewOIl8=@YI9w;van>w2hc|))dDnvB5D_w@jIY6aoNc%%-w1B)aS2$j)=#(ZXl2SfIft_BbDQofKWAC*iwYu7%4w8JeC zM4A;$?0EHwf4q>w;AC9dp~@ELnw&Y#qX0$YwaVaQaiI+U@D!L<=a4WzqpE zR(}QcQpC4we}wGPvR`V5se4069c3L(M%ErIp-6uVHoJt&Z$qUi;g#fhlBn58^B55v@leAWp}Wrt&*|4Q6iMvb^kD;i!bP7z}o+d zH09Wuu(4RNkvw>{Mi(VzaF6EA{CU7mox3Y)g}R-xi#FU|N_ z>3is*0e`#+zG4u*(2D^E-|c;TuQmrE8P3G;TkM)>!nfM@Q)-PTq42W%mh3E z!IFH70SaRzH zyQQ2IC|;NfvKAZXfo=Fx5~u0i*y=?i1JljWW5vs)juTf)QVJALN1# z%G*pzd84FGn4gpa#gkGHB=xM;q?EUrl=3!{Qr;-36D29s>K*<`;$&7&Zo06y1Jc+% z>qC!M`@B=&<$g@7_FC%S(@-3943hBDnKxYpckS&6!pWYZ2Z9!WR}=X81h7Wn4->!{ z0^4$}(RUJfcmfE!!>pZ_0Kz^oYuL`vlKKk?d~*VL9f6-s05MuNYrg=n7-Jqf&#d+2 zTWQt_tR{dr68PK%utDJU3E(V&Z%Y7gBJlGG;2eR!N&s&r@TmmwMFjTswDS340>=}; zmk{{u1n{Krw(0KS62pCy2p!7ytbg;qW>%rR?6B!K82 z&Dxd(@Kyp}ngHHL;6EjRuOjfb2_VKrX6=w-YwE8i@VN=#YY2RG0{B`2zncKQj=+K5 zR+_IT@c0Dq4g$|f0N+61O$p!|3H&I4@v8VH0zaDo?k4aL0_)zMO5{5=* zZCL_%CxJ&NfNv#mO9J>d0&h+L?;`N^3EJw zJp>*pz(}#YgTQAcfbS%5O9J>V0=FlC?1+Fo8!VfUrQI029EE5_o9>_%Q+-3E)2w`1%C! z;{?7p0sI7kpG^Q^|Dhoyfd5S3Zxg^z5je28HJkSm_^br*J_4r`z|RnPeFFFZfv-#e z?-EP>xm03RgqKNG;u5m;Q(%KX0&IFbN;6nsHF9G}lfiFw| zzewOK6TmMK`2Ga&%LINd0sIPqzeoTdCh)%#z()vNvXnWRDuf;MzY@4I0sJa~Ckb$< ziMf}+OA|m?yk_kc3E7z@HI#a{~Bt0^i#LvlSU3Fl>Wo*~X1bUs&{m(z&}Jxrd!E^x3%`>%L$XZQ+rS;gr{X73UVJY_6R z0#3!nbtYSZwv%ulrmWRGM)Kttk6GbSjXczT&yDJN`LP-li#~HE zofL~ca~7Qxi#~HUofJzj@w2o!0mO0XgKYu-o|FwpI5IP_7=Ir0lEuv+rmoldk`NCq z*2?oBl-2n6WEh%b81~C#7#d(0_8%&YFQGZO&x2OSrU)o!6fL99htI%TvAjF+X#8s7 z_)GQ^U%_MXpJ4o1%t@J2x$4YEK`y`I=`oADSVC5Rt&-v^hB1IY8SQ)Mvn>w{hxor) z5Pu2&V))2-i2qxK&uB6F9{eH3?-s^D#1P{@fl=Z-tF67+Y$;E+HIZcF_oN~fSo~~h zpW(qRtMLbfNE@wSsf!-^!o#-D{^Q>6&{NT19~jrg2(kSP|K z>`;C+{~+@hBcQW&qt8L@h|EB7p;FDSD1RK+Lu+!VRMd3O$Y5uoP*8I{99xeR`a&-! z5Jm>~74WaZIm{m^$~c)xYE#00q}&k3S-QqwRJQpFZ^4ryshWeCvObtqM-ZfPl8h#@ zP_k)2!BJ#<#cEJd1lRamL|6$(EHE1^Z-~f@t~TWUB}ZS^S~a|QqZIa`is4ye*5tkDUP0=LcxQn8*c`d z;)SnRRtEZkN&PJqPBlTBm`dxh!;nT6vL7&|)L*3G3p{8Az09_WN?+hvSa=_hCzXQK zMpY#-ey|#8#SLFEZt_8YkpY-%*_QUw)_&(4NJ45`$WL+C2byweI3%j1IS+9_NmB&a zz$*WK5sSO3=-rj18(6Ss3G)@ESO~(|0W>-eKxm| z@fD^QGA`*Yio!(keR-iWs56jkt4+ zE;LHVaH|6@(sgvh`wUdIYBPr*jkUD5alAwYa+^s3WNVaZVr z0iUTGasl1UX3)-?-g(4r0fMvuG0_`_qi(2sa@HYjZwq2#AHcbInH7h}S)LDP*)}91 zE>K}e>1<>mmQu>QP;nK9!l+f?F)oz^DAWzdA)m>#QdJzwhkRrNP^U4|g|x%AWCU82 zZ3$G#QNYNldc+1~dNJ9EOZO215=fUMk-ka*+enJ{VW={gJs*h_a4b6zytkc5FG7JG zg^@%xZOm+?TvCE3B_If-F$vuVBwW>Wtxg|kt{N3(oJs@CZ2Qp!v>tUBtBQ{RS%#|6j0kGc~2FJ<@( z5`GlA3TJJ_Oc?F-Y6g4{C$E@TA|YH@LSQR(P(w7Khov5=YLbT;5@H@sLLSy5 z4=VCy;G$^yJMfaMTn);T+&DO@ZI;_oqGa@{*=d$_B|fLqYN`4(hq^4I)9SPrs6ujJK^{~+z%Saws6tZ2$wN!8VFs6o(kH{PBKwv zLbJMut7~bg-M*3K=19dsJutoBGaRzEn)mLes(ndxRdJp2;U0`HE4s;BsH(j_BgN*u z(5QHAAf595@HA=vabEZfTX@UjfMMxnab_4EFe54ai4<;&V_Zj!X7*Tj|9lWQe<9Ad z4w$=?+Rk)Om^)DZD`VASsRMRB(ihhL#=slmfvIL7@cx^@QMq&-hQ)cbVE8W?>ryx5Vn<*T-T$7L}RcL;YOxuVcOf*$`k4egCm}vVmRuG!#O`~ z3hk18-(p%H$a1q89l*izc#TkD`*vi{%Ekm8QEY6ro#__baiqyVqcdGGJJT)w3)^~U zCT8sLtg2AZQSVE8R57FqKAMB$VN(Il5Wod)pg>i58AOZ<1etFw5c6rmQ%@6aG5oEu z`XKb7n?eq#`*6V4CLU!|R@ucgWz=@1c4rb%B%f(UgG}4G$6Nm9#mg=buQSu>c$pxs zF5A{=Up8$TTq4Ed;vNh3C$z~HX{sB~z`@=d+jq~#%LtV(CnaUBu&Yg(ilPIJKq)nV z8W?8%-Yh(_H|BW(&*l#ACctELV(chN|38A$VsilQq4IO)rJj%Vm@fi?bj{vRz;#Ly zQ+-rM_C_%op1{ucNGHyL;STRF zkw0Z~&@@C9O-r3EP-8Ts{7Ny!esyOMXLd0vc=hDixZ*7wS9rLl1Icn+!6vPS5*SxZ zN1opKgACFVg3U`lxOvmyHv*K7yN2;gk7A?JE1@kaJ%+j)?vqGT-7{(AyP)BtJ^h8C za9@l}VK5=8#lQgZx#Z&=%+4LUSwX)Yw?t{dH^(R5Z-}+DXKnz@mHKB7j`Lv`+B10{nTeru~l{>~F%m zbar?~RA>fADoacA-YrNKa%$7gp^)&WSJL_%4dn8`tcMq_DSRbx=I9oH1R9mJF~{K} zunt#PCxf3kx&DA|BZ39QDqM{C0)BObI7A?;q&K_CPm^ z>cfRe7XY!+4#$OX(AIYr=^;>8K%uo1*JCODZ)g_SwFq|A$KZxESx$1_wkTB190r`eF)$uU(812)sCP_FnZ#q(Ha)jrhFvZDv2G`80lv!p6PPrpf9J4aLW0mrmI0(%$ ztrkt3mwxSrZgXGH5bPjaLFb_S$~MAT)Y-BZjCzTA$tCYt08@>Dv$l*#aL=2JMO>W3 z4qY?n;oKUo6*FMhGT%& zj>-x7%%Ar$q)MkM4yT~VP1#0seghn_d7o4?uFiX3VpG}{8rq8?C&(RhQC+6o&>G%ogtmrjAxByhFq0xk5pYN=(t=!Mb*pO2#7?=* zw56bu{9uM5syR3~%9?{ZXlezN;R);`-o#w2RP7X-N$|y`kF$?H&5q)gZ6Y~X~0xL-qsk#1xN^cSu3Rm#E&r{EUOjAH zmMVGM8tV`oToenOvdQlr;@(n8Dv10x1dQ^!+2u}*8PVw}ZQ}p7;YBHBFvMn0Wx~8= z_H=&@9W^AT|GlrXhEVrnRqk7KC%b}wYa-ynBD$%+qoxVvtHANO(o}q|)coI0mLi28 zGGWY>wkC{D@H-5^Txl>bdNFEFG%K50XtI=JD@6};rKTA3%)|FcXg_nM&G}1Y<#MKQ z1s+d3SsJoUfrrT;=^rp5>5mqgD+MdzWa%?YEXWi4X;Zri^b>QXM%74Rdel@Sa7>oc zXNmpUX}9!$oIvS9PmU2SJN3#Ur7G@%TisRAs;c)pduo)v9A44UV=gdk)FGGHxY2t% z5|B1-YwrgC&!VmpBaF&@$yi&-^!ET|M{4tS$Mo+GoLOs!As0qjJDxwiy**u6Zd&P0 z?KYr~BA!iXM+Q(kv#F!oghs-qHYdGf8m^zfg%`FW0k8?K$KlHC*tE@i3=Y>+*Db^L z#Q}bGnU=L<3tU9AcWjvb@_xkf zf2e74L{lWXjKP$lqt>ZR?;a3W7R+nB4C{DL?K!*d(cz8@jdG&keGi3ro&oDEIc!*xS)EssD#)|Nm(c0A*fU|`{@WDhcCj3-B~ zM*v$mg2rp`@;%ZCqt&4X_WYlka$ z8Q~z9Rp|-=hX7!muR6@ERoNbgSGFkX??O7g?J#Z1^*QBgO0LT( zk91mHu$FXNF^e z6%6_@bi>qO4r?@N=$|z75AJ0Ltn9XcP|uyNlwG|(UBxh`6s1?i9qY>191tpn)RC#4 zqyj#OxRs-gs=9s2|06^;*fAE+_zfl68q%er3EluNVkvfHDu*am^CH1eI-%$+B|0$n zAJSgujp#W=pqj55LP!JucbN6D#*D*l(j#Ep^c$)J>g)$l2cJ!y_aP9#BoS&sr5%@_ zitD!RV@JS!>yc>ma}2_*8;d0*V`W}-9%s8So#Y77J#zI1uT6clT*1dc%D93PFwRbsr%=bpd^J9jVR#=ySeK>;%7lt#YFeIKyu&d}b_SgtGyen}-n%n| z;d6TCTnu%yg^r1Pfh+bou2ZhyZ1LE}a>F%K=X)OqI_I%4fnwE`VrEX=9O!)#AUPMv zMLetkonLv*B3*?w*e8_NyJ%pE_`?#P!79GEB))ZirGxPa5waNBGiiPRfL({=Vw0%K z=;1A6rlcf#H>~HCy$+|r)J46rS454=kI}x;(dHnBxR)iRVFpHf&eOXQS0IJSk0Ht;ouVKZ=VKf9;_apy_u(~hhY;M4 zT#2D5ic2Wk=U28Va)iamk$U-Llu@#bN2QFIsG=nbMc~gzgh^z4cUK8y?d_QGL3?+YY1@fQ# z4mb;`GhjjLOm+gh(!lzDN|$UX>f#dWne!`+kTjvKq?s5>nxxBTgRYfm*(Iqp%&4L( zE}`q3Ul|GM5=y#C40OflKEoQ+zhP>A4T{$vOmb;i)E8;^kOuERhuw&;8L>?B#hHtt z`y8yKTJ_U#qZJk_{}ssoRy^cfJ7+G{V6Sl|!max0cxL0@E3`{Wzc|{eqf|0X;~hxj zw3amRt)|WUNd%YkEX2U|m>_E7qMlls8|EPm??Lb*7e!jO%)kj-<-?z04%*{6h`z7r zXt(bU^I*#yRUoIr0pzq3-A0@DIr0^Ws4^jUY)pB5(9Rwvqh&+v`r#+exNgJn;pd*V zVc7Zh-A5ryn!4{#U1j-G;4LWPU~bjXu6SX@-wUI14Ed8n^iKyb(d{k!+7=cL8v1}- zEX*YwX(^2jiUFHwW6zURdTqi!((X4VZ zcH=y-lLgQAHJG7qJ6P`K6=}dP-G2a3fza7fDD*U)hBD z^)CQkIW!O#F#-D`U^`YX!d}2#Ly)ejn`KO*2=Z_oIi---bXc9K2zkN658KxrcSZTY zynuFwYF`V8`93l}fQGXVH>g$nl%!R)kUXg%&iaM9x2tQ?A!3UXxB;Z_DUJEsfrPe~ ziwlHE>QFptdvGMS$#+8dkkXeaxkF+V4Y02Owp;|atSPt>1Sh!5;&!%5z7J7T6_u%MPk5uKsd5THUpF$pR zFJ7?O3ezPA*kjcULJiZ=<*}`h&Jw&gCh3IJCfJA);tpUh%eiPvX9D->`wsLD7!7|7 z*}^6FZJb$l$`f|AUrD*8OS$J-NT58hPzY695xt|>G~D2snjOXPHJtO#z;Pid$2a?I z13)(WEV9(hcm|GnSeG=h>=4Ut!MYR((VpE!=@2VD9}DKUN)dAyKZJcCJ0GRu+t}0` zXgy|9eN8CYX(zhHP=8^Uqjo&x4O2lCI{f_R>onfV=7AIgqetZ9eFJ<1qwH?X?y6mF z_|gEtqvb_Si1$qbI8l#z>jjKO&{u6Hs~z*4XWstTBf9r(5Z^`DGi(0`t7D2x1JnJ^ zF1nss8W>a0Z&*_w)j6dF1P&!x%_(`;gE zz>e5Zj5V<((+e;gQd2T(fG70yZl`6O-D#aFk;cw5Q){rs)MjEciois0%cA#`rTrn5^?6cttVWhre~*VqnR z*~H|i)ravV-J028j`?P0`KAmf{tK#At?P^*-mM9#08zOWvT{oV48yQK@brirSw1ke zd4vl*&i1UmW4fK`%xy5HH+KZC^ycZ!IayW$SOU}21f}dAb=~$?AXrZIV6LAXw1(!Q zp+nSOkKc#zoA?nPQQk1^q4>?H%zaiu-DK8-(7PoxlaLE&NIqZM5(*k|v6V0Dh6NDB z%(Mob7V#5?AU0{1S4Tk!R?B@+P$E{UdRDh)NqZ5gi=4d2Krcw&lIoibQ|wyOQj%e0 zhAZ2+m7--^3oeQm9Y8&bea9}oe9=}iuukVcju_c87TBk8yIgS-ZkQv)|1lmqrg8bU z%oUFjV-qo^7sgoin9S{C&V}cQ+*!=Ya#P|@5Pgnr-N)ntE}>k(gd`O7{GS1q#g}xM zB(}A+l1{6{iz^-`@48eEkk?>wVG54xnS8D8TogjQpMwlSf2u&7ts%D3wHy$ipwfQ`cVaOJT(dwJs_S5?iw}Dm<3S>Sgc;A}6sm{LrRQRmAWm z27brb(!L6wU>myFa>#)f`Ww05nxB$Gx<5lyMC5A~cj(iB?T8A(!j>AL7+*mI`UQcG zEC4^p8~A()1v&(Q4hlJzHK9PiAkfi)m3Z5l&ZMVj9)tI0vKV}minrjd>QF1`awYES zOppiOk1uVq7kOiSLOoX6cf{d>E%p{ZAtiH%>O$6J^pvb1bpbCd>S=R2z+!);zNam9 z6D(5-)5txXtSlCAQ=5XqH_S~zyblDJ2Db$;wggRgZ*%2qDrz@zc+yZ5_*Gr#@ zgvXY)VY3q8A`HA#${|z{xo}~0y%YqH*VY))&VLKiTTrID|7)b`W9^e4{{Agq&9AqP z1z%Rjr_u3gfr*bIhJ0GxHEUy-$d_gD$=dL z3-~zZ27;#Ln&O;o?Zm`M8$K5R6WEbCPFbZZpJY|D-RXTjDU7(>bV>J?!+6T2tewcl z0KYgOnz}gcrdB!l;6O^0b14=Bi>O{ZPN}Iyzx0L^u;>?jb>Re+N6CN>GdTFRruqhV zh4S#mkXlvmDJjgsEk1@U$VVWZ!RLz~MwJRj540NLa*wjIgDmYB$mCp+?eCF7&zL&m z2Z9u}URzJ$`~l8Fu~?k>BOJIv7RHcMwEREe#j|nFVE^VFn?#@M+EHzq_WUM2$AX2D zQ^luUhc}xiyR{GEcO-r+l9%9jEPfxy??L=9gRI?+AH<@qzz?$JCz!QM@p}V)6W_!G z-?Tu=;PbC|$v7GAztPR%Gu;18_h*#*Nrn1%f{s_9eROlu0H{yV&55E?t;Wi73WSs| z)xHnawP``toNUAZR&P$Mm z5vG1kfu7EQ5=H7S3OtmlkI@_xY-NQ5VIPARVTH2wF_IGxh3n%C99j_dI>(0Rp^h5r z{{8Y%R(Qq{hfX?d!{3SupuT(}A#a2iTWUMgM&5^@!yx&p3ckSl*=|EAfDDeB^4m;C z)xq_@KxD72`X6sk%VNiZvr}PEL%J7(C`Z+xQA@QO79j`)L{pX zoS6n{aeCasciqv`<2lxe$8zw4*Gly5avvG@VLTWk#tiXg4e-A#xuD2 zdkRi$y%5eFYw}c^os~6k_VR`{6OIKHdQ#mM0 zv^m+!9#79Z3Kbb=oX4cA1c9+m+gj;_@wzlilEasS*r3tAih98kl4u($vclkaPufgL z){ZdK%kx(**Nh#%9}j0v7hP3@L18?=Xer=S3e)2klO zcNFlM_dJY>-D&yyGd8ewxJZ_E2HW+|GSx!uEa-`JZ7ZHaWM%+K-;l9|#%_Nxe7y6& zvcxs>xK$=EUrz9s04xeGXaA5B22K2>2*^kJ5WzTOr`fr5A(ts1b#1AW=mR(2(f)RcDZYI9+N@mudMzt8<~BS`(xBXS*PWw`c5@b7l` zgNRW3lX4Hi%>kU_p*=X=oq^HSnX@0&T=~8?=flIlm5@Jw?D)!1|0lyBWz!f!FRXdP zaH(-H4U#QS~oinlR7Zu^J9ks2@Az6XanzRdOy zhXWr5m-pb`#~0at36M^6Uz_Y)EaLNncCTLs%r5v9z6`(0SIUP)=-8$YGt{vM|L%h; z$HwOHm3Uj;O<)UWV!aN?Bp83Q0&XMEGpm5oSj*W3`GmJwxzW6>a-E6qNR)T*BN9g1 z9|ubH#DQC{N0vqkwI@+9+)FGLxzvG?syUi3r=*SJG_cg?JtKYTJtO_KO(VeeR)d5T zV7XhbGqr%Me*^-;uO+N{6)b7isl8+9ab)p(ER7k@lc5SF4wvyNgH-at< zPS^+>Zb;^E55iwrt`Nw1>Z=-SL9mib?|lgJ5H1To`b7bKp%sKJqBsYY_Mz<^5o4v; z%zhKrDucI({yztNyg=#{{y?A;V5HhyS44Qxuyr}d0{-AtvHX-(oj zwti;{K+O zfuF9n?o=>e5KIH$^=+`v7#lXj^Ef=-V|a91`0UzGRnXMbCU|~MXeva<#gXtd(M^8} z>3AFYI0g?8d~74DgHx-4FWJb7@mtEZEya;+iAYy+0+O);j|xHsmhs_eV2SN7+d?|j zZjhtY$+mQ5v1{5AVP#sq@nt#J6a%$f%-~aYAhX6+?+z;?mM$x(C@_Yq_?a z;Dn$ACjuhD19P%GZArwOX(u^Z9b}~gpVXtxEu4s8#KlH`Jiw~FIk@7VUdLz+JC&aW zkymWpJAoLuo9$>ogQoK=fEx6pr@%g4Yg7td9xArdhk;uT1c*XhAW#%%95L?pPDDbZ z3W5uu;qgu;H>VbBFM=?O9tJUGy+MANms1$_AQ|V!JmIrSI2zBle52ljp7B^;WvJ^dp+xtd1DX!H(X3rq{}N#B{ZiPf__4yPE%bEgIQ>(BmP=vYaEqHt7gc*d zU7V*e1YPlM+jDjymoBfyfIq!^=M^A>jt&>4LCkJuC&_X#)yX-oGll@y@i1a`T-fKi zG`duK)kCra*k1KYmX{&lu*J-2V39oNH-Ln7byKhH zVY$gyZoTIMg|_KgczYP4I*k_y$|r%6_co!}MrvPVo7s*Hj5U1}5&g^I9382p;ZflJ zICw=9d|@2?k|y{=5xDk16Z*Rds@MJkPndf9VPP_3a5YmustLZh39j8B&MOpucQi4+ zydR7wniwT7BwbrCPN7jd6>gQq`xZpdYmWgQa%vqOVy}Wraax;dIw7*Nnix06!M8NQ zABuxN-2{It4*qEqJX{Ks0qqs=C|<9MgKueqe;fzvGjOIb!F-2F8~}M>&T2(GQNdE5Mtf zjdA@ruS_$my$Z$?WlK3WZV+0=$a?lXID8*f!FwL-xXx3ArvDG9(H;0={n>!+A9NeA zymQzj&;lH9nvczVY~kZvKAw*U_R}h=w**vw1~w8PcA5zg``ZA-gmBq|uoeTkIF(8F6psHI0QrO_SXnpLl`%QhZU9Re80UXBuI#uX9AT(SpU{=^axk%v$=uI#Z zYUxerubqo>65-V^#Jv)PI0Jl<{2{1|bIxNh@KbUFHsTL7veDW)3tDA1&h4C9iXzK+%F(A z=b@xvdEkJ$tSFcB*b{saHwFifne%}l`HDmvxdJgp(Nl7*#>`gKtXx`g>*52HEW-LN zcqlf5Y>>Z*tr%0kg!mc^eYDq2qfpYSP~ruotR8$)R!N!2RM+_Cv@*e1+?&zgfACmu zD{`_`-m zD-?=~qOx^yE4kLnR>);19z|P6B4{|KoAr^plWTXgz0a@Mvlk;VYzw>SAktKcA&(*N zwRtt$ZLdQhDkqht@S%W%Ja3EQu}Wi{oD2=`rAqJckRx17MZAEbO8b&l8gl)gn}vlS zqio5ak93?3i!iZ*5&*ulw#M@Vo!yyzh0*5lM(ij{Gzq^qu<>*K6_6tqlEKTj%=W z+b(_C`r+5#@vZf-xU8w-9sa`Yr!tzR#X>J+C=LM}9eaHH?yG`yS>q6J$okkL3T3ra zlMI)^g%5ZejU8~{%d}VURcKt!mj^B5G_IsG-|$tyRd~hm1u>pj#fzmAMEFP)AxJ>D4kHBl36MV?At$J-NKNj97g(Y%WS(h>ii340rTHj~ zm9&rd^-Q9+BJgSo2r*znPGO#g|nMdnTXRg zw3|WmO3Lm=%4{T98I~n;{YK_C0ixhqL3IkFvZ3IVtGc)?AHAc4b3hB=VF~gwwrH$T z;u{@|>F+7adQ7^zzx|bqUy^T;Nz-@59m-745>oocr_@XFgmST3JRAo6~tjydcnA9 z^^JGwb@C;4ha3Qx8>)qd2~$TNoB=4?uA2IP}UqX-Vc8Gr>yC_(Bkl| z_8VV@h+Yla8|Jon>NlhB6AioOEZ*7f#K6%fn!IlV9Xq4OXGgpJX1{uZ9FC|;732IkUwsjT* zgwLWzxlYTOSskJ5^*B3OK1Ltxkisf&2qbwcqWJeBLVFq&A>BLHUOp5b=uk-g`e3_q zb?Hl$gJr^GRAQBaBIDDRS0Fh!ubh@l5|_pxz@d$EHzStJdmIi%{5P2_pp1eirN-BIp~% zi8|{v-Xu=6DW|bpoM?Sc1LHzO6AEvMoO{H%1#)TJO=sAi#Z)&N_Yjt9yn`=&<_0pg zOJY1kCu@U_;=+N*SFuF(nI900u@AAIp!==L{dKzErrcko8*PX<7-w3I+u)v^0gw7V z>m2~h?1bBsvU(VO-W-GGhgVpZ&2aWj_%>SV{DMkMp zCR%?xoRzG4`+r6#?!v9dQ0IsL99rTPB!kS0IVIZ>W#H;@%(^9*Db|%wCKkO{k}|Gl zZ@drb=|%6QB;dW7&>Gax2M9G9@1GZl6sUuk)C}5z2PKN}x`h5!+=lG*+X!C`gO!#KJ; zB4<1G#(D&Z6Y>@$%fB92<&H28>K10&uoD%9=Ewy%iisRX^s+~66Bbs$u>@_}z9T@y zs0k{JQV>K=CxnO$0-|>m)HQa{bN-Wa8+t~1YVR(1IsCJ%jNzY#H>N!AAl+RO;f{$A6sH+Ea3RH|hSX%<>cp=wb9#nyD zdlXtpF|@~R$Ji0evauvqecg2?Gr}lUnacmfUr^!odXVLpA=#inCx0XXBGr!py|N=- znw974O5h(ykecRLpj=x@4&{5-6t@tlJq@$}h?w=)u&0K)&cWL;a; z)_q(XJ8`(5&_}xsai1xdrebLfGbL8ok^^9&1$d>x^v?n!S6AMOH*AeN`BF9n_akuJ z0yRf=RRg5{`3`(*P5_vW2u!5a%K>ISA}|WZSDq7f#t(9QjswU$a-t2ONlx|VBWtK(C`i!1(iC#>Wd%(#qU%{iGUjdz0 zxJawc_&i%X^G-Ewz zF~}lQsPuZT1#nR?>_XN5(8f(NkW1liB`G)2!-bVw10VbC@^fQBDcP+$h8`%^uZxok zyy{^cETELiM3qJKrmR@0_^W;(ZP}jz(_s%^XTMzOL7v$&-wd&|!KNj!yjribE0+%0 zdmYlL44dZFf}sLl515J}II81U7xQf2p)T0j9(*SY6)P0weM}Idq}hRaV}0fi2y4)X zAx>T#u?8w9B9)y1!NC&yE?N(CaOF_%4kRDV%PSo34FqB)Q%%u7V*`dKUO9~)yaEGf z8eVq2!7GHSPk^EDtyc6_G}Z8PW^mQD;=teT?Wz>G;LaY z1@?K6A>FhstSYRlcj6tzTRMJZ(Daqz#}3oS{2=Nf+mydsob3C2m}P)cZ;O#w`#OgB z-b+#6vvz$WRDFE|9@P%JeoW|rrc~xpzyf+#YR?cR-Oquj|_Xr#lRfOtwj#KkR$OO; z!h|Nsta=Isww>c&hiE}%z);f4q1(o_@NP%%*y$5rbwKS{=$Q)YGHuJEf1jY!?SCH5 za$W`apMfW;NZyA9jY;)Njh}c4NgYR0HD$O3X<`6qDHE>K?X2%Wgh~mH%bD2Nk~mV+ zb}R0K&Do~r8YY*BfyIRSRnwBBRsLYYI}=YrmWszXF`CFZd<~fqeGE6P;?#Quk$}E9 zrBlfBguAGU9YxG`j7rgefZ2>eybltfTGPafKu}3_C)M#PTV?IdNWU1(jNW z;{oSTJ&<#PuNKVIWCpcH_uhxJC-$W&49Rq&uvbj{Si(pu8dMZkM!G@DoW(pk@rfpC zEblVxSo;Z-R#ZC!*S4+nup~OYZ8_kGA*j@LkOAt2K}jmmxFCKN=F`!NzR@H z#Uz>3>zs8E^9!3ti=o=dDI7Pa3O{J))yL*Ha!w@Fk%{>?P^HUer8t$sR2@ptf&99OynkV;5E#>H_1yoB#F56K3Zs1F z{v)@R#E}7;{VJl0293p)L(xvX>oBU(CN6|N3-U^%EZ5`q#Hz)~K*1cSHnC37Vl|5u zK*rk1e7g%u7q7IEr|DlGuF5OsM)Z!ri}Iu(*z zXsuEA&a0JyYWkB&S+l;V%(I|X8TWb^078Y0~_iZ&8`FH)K~N&=)YLmilt75JrJndFjal(dwR z^yB-?T(9m1drVk>ruTkiapLzzi2p|b2M5MsiLu-A-UeY5j{ZhVaIVko8*)+qru)_m z!pS+%>Ef|mo`r7`zIA)xp16~-PGy%dt#~2rT)*2dk;gnZ@<5(ihKK66!}67hoUf3v zR5L8-a+E%nuwOQ{RHURQJtm4x!&cRi{${dB0B7KG0}F65eLN(EQMV>vld9mo6u=FZ#! zsT=;=fgbA6N9Wbnr>Tr9kcXhOM(7mNTLg~M8oX%5Vz+PU*cotMuIp8m$os8 zIy&Qq3$Eja&bZ*{jQg(RI_kKO`0BWh>$uM1xQycWJg4e*--O^e@B97teeg?lol{k( zPMtcnpQ_6}C@aZb=^98vcBge4mMB*-$_7U9$FRDMck2U+_s~p=b@RgprHW1Gpw^hq zSoa&cM{$~FBpokD;$;RunGQLFU(;tOu%`DeeC|Q=CBpuw43c9gz5fNbXQ!#3(w%zE zu_WCOg|A6;D}Hj%gJ!Ae;!3-Bak~$^C3_HIiHJ}u$(K-EbiUjssEN4-othHviyVOE zvwj-gt~1uyHC7adNiD~t<+!4AjGD?x3;!w+c82+V2)|9`5;@bS^#!ckr=20A=bm4p z!RqoE>M||94;nY-)pSsjBZoVjTXkdZPKUdL?nhEb87@r6h`6Wkk1&epH4m(I9o?%eL zrXn^|Sp@`Q6QRcX9j1bTE*hNXhX=~eR(L>y6Q0;$)Yh1(NV;1z6GL{qtWv3XGhUVI z2GfUZW|BD+e}{sN{RcRT6qH8_D&kW!QS{bYg=>d*&~Ab5Y@-F`@qytAZ2wk-D|*D# z+iu&#<+UX}LL3TEwNS5&F9LH~Qpby=YBuzsAhe_H1-o%KXm{CVfmn~^;Xw`yXF$Zg zvcP$Ak5op*urXopp3C+hjsKsri?8}G@~RoT=g9vlBS*zIgWWxAaJ25gJ!g?o4lG3X z98K@U*7WO5x`qoQ&@KqHroRTz!KDBq0w+Ax8i|P=k=33yFs;`5#$N3+d*^=NUHALM z)XP#Q1ozq=H2#N!dwt;ezXsj%h-#A z26wga3cz+KUo9*k40tubs`zpGV3Qa6bp>Tf&ytmR10vx0Qu0>xHZ`qL%+XSZ)b2&-|vgp2s_wOm7c{;T!TE~QN+59v7Bvl+iaWT$roNS=)d9nIL)jOWaAwNV#c`9MO3z{>+dn6K2Mg! z`XiPDDa(#ney-Uy%gy-o8B=-LM?zv{1GjWLd}6KK7UT7S}Cn zTF>6O=fT#VGc~+(w32(e`b-Pke>%_CISIs)(v>aG$8`hJ6~XDhBQjx0##wG4YE3fD zQLsE$G|b&i*`Qup+7fS41+mmo~ z#(C5YSZi>1)-69>ebmRI1{}w5A)NReklC7bUr69_&6N!QQo?0A_XqJxOO_)g9FfV9 zk{t0Tu=)Za+KcGJ$!h)Hf4``FpumLe4-yzW!uq@vrm7x9PK7OTFo>4?E-3{l3DN zwSSau$FgNyC1A1}qfN&J20c z5sQP`PIEra@LIG#OYAh|#Hf2&xF{r(S&0lUILjp;@q9Vx(*(5X=I>0Vy4%u)p%sZ( zkM>}=){F0NYG$i-vS=^zq7CI7G_2z&Z+*zj!3}Sn#hWy2%NPRXp!@>TQRF~GM*-@Q zV~rK4<|}D-|KX4HLtXNl3txeDQfPNy7xMuuv#W{;B>Gk^_7X2jePm*CyC4+bgk$>C z;ls^tE&+0^pjXb)`!}HP<;HA)^C5g%KvM}MB3Mky**bO`X$V$>)e3)cVe~ZSM zKRD;uK7|t^b-c(#3jI9t(Bcpfmi+OMY}jP`##{pN*^$H!kd^|;eo0O=H@*zlVAEK+ zESa`K3QDiqSdec)kl8K8SzAkDDy{6QHVGMH%TbZ*c}Yj25kQpKV$b!pU%~%O(CM@8x2pY zC(rYkxv^J$jl!m+{&4Q+OJMy7?s_UM-dxm5ix)wtwOVC!g8l18T1lqU=mZyixJZ7g z5Fu~c0)!FKO%V|k3lO7)wbx=}tcMD63NB|8_$G_VRZK(bbVg>fs|`dFCnLY~L>Ij# zSA4zMhdk_Lcw^5Djm=J}I^YeOmZnXor>>{$Yho%*#*FNtdJI6td5YC3D(_RLS}C1=(RX$VfI;| z6e~m{Yq|hgn%lqkHvJp`La^ID)WwEQg15vZYYfMsT3<9L-bXJZ!hSrS7i}N@jBtXh z;#@Dpn|DvI`_Kf_^YoN#g!z(67_Z=w6;lDudSm!~R#AH6Dxen?0llawlC2Edj{4*q zeAqV&duuR=$OPo~ARM{S*iF!^qQ-+4l2D*@sLRWjPI|<}#e$ix7UflM@u%m?cHZ^KVj`7qR3U<3jEQx1fe$q7|*dAPx69~%obGF|v_AR;t(xxru zL~?)@s|be|YX>m7akqj;HcDEc|>i>?DLz zY>3)2y?Ub+!xjY8I(3Jr0bSY%CW_GT@ipKi5!{HttrLmD+cS?My%_L|2Z+ZUgm^G( z=JA17^bB`e40IDk^z%U4;E=&^qi|y4V&eRNgg@XI+47^?t%bn(1q|R)v%`6J(gvbJl*DVsfXxd%^zFvtZ6VF{&z>G|wB&#Rrzx zcxA_5ZaeU?^5+oXnskUrc3H0bO^l%J-l1D+i)pA#&;k=5HnCNAi@YSO91<+T$4@R#9BJu)7`zJ5~&=`Zqei-o|1D}se=aLQMg5ZOb+UQOcx24UMfVs68_-#a%%>&K6 z-0_x;82!az)P5+5wqWjw*&3vGT@S{(Q=ZX!qJ;t zA%6N$Z*ke3IO`Af$Vf6zlWUnM^6j_{+Y`N3raYJ#!_q7ywUxvYT<>1sje_pt=qZA( z7D}c?RQhAo19x57p8c0{RSHNPH)vkAD!~TI2mSYCa z_NCizqbGil{_f(5_&xyAN?)dn-hB;Sy_D9~k~zMi9Ep31e3BVy@eStfXxt~G+KG4habw4}X$nYT%DKNO9GApc zy36G7Y-$u&#n=F^?VoSKIMfIj%0C_jjSny=vp|E{wL!?*OfS0Xui+OyN8)8dp~~%N z9X%kcx^^s^WJ$-hni#9fsktLVyZ*7JE5Uc9AP`^T<`KK=J($GXH^ODmc@iqarAFy& zN0Cd7&?`v18^+b0U4I3ir8~d}BS%u^13NlJw`^UqDag*x*1HBf!F#(?o=~slfiQTD z!>+%)>3PT<_br-kLtS*Eozt^OFm9|Z2D`a(w@Bm#?RU!6;l`W7RbeCJb#PNTXZJvM zXt>aTZy_}89@w~7I;AG%j$%@_FLEw|*b^p0wIc<2@k4y!JS{Km*Y+YW9VnYD-Q}g3 zNlUFyuTsl{)L=Pj*I(3h3A8p+(6@&c^zA9KaJVnEK*R)#Irh4au4>5a5>N{?LN*A( zeUTG3??nsp?ap893C~Kvl30!2+d;wa>CxT@Yp}Tzc1XscOJVbm5$S+0yvgH^lWqPqVz`wIP|yc zuWqVA2N5ZV?5?D{9o9s{5h|&ccvNdD3F{(tm>J_c~-ebBSS{cxh$P3)h!>K1M>8I(y8J7s;@#JQmq z)UAarU4|TUN6DZ?`kZKBmPRGElgzJnFIOt}r6!aPW2N7br#wzwt0Q4mzEd5^wAnS|>rk>`$wq7^?jPp%>cb8_b#>@CtC-!ARsh#3Ig5Foe z`yjplBi@JTeU)D4a_>t7I$om%4vbCsz}c=yhhv$epE)CA)E|rAd6$2d-j~(;%fhPm zG80~}MQO-|xj8{D%zX-GoxlnJPt)=%DSA!nOMk~hm)p6+NNV~Hqfa*aXbNvAd;Mld zlC-^6lBJMsbg#4;v#-hAK;bba!^<770o0uPWLw*a95Wy;KKQLM+NzvN`DWx_YxS${ zd<^x8oXPPRY*t{jr08YYVkKRL&J<4*;EE+XzTUa7h0O_WpkwMwR&eknzrifM0eu4^ z*T5j1L^LX>S(hAwA_6?pt+##;L*&F0a5O811lN+7D#MU0eFtpI8?(CK0W-X7)*^;A zc@|REY~2#SjpbCg3uHzxlDO$=NWw`E69U#aCRaSr#kCRm$YbmkbUvKcxQ=n!@vPvX z27@ae=$>%1)WYHZYlw?CeRbS$P>UARARGjSWIHuJG;A9Kgudx$+SH&=8a6wxL2Mbq zh@t=R^T8u_yh3B=>V4?$1&WFuqJQ+n*f-2po1f9^L`!|B250NNX-idl?)bCzvmM}= zLY+oE@y2$7XAvB)JhBDJCQrHrnd*8H0n!Ki6(*VdwpG|m&GPEU+wH`6sIuB2_H#I$ z(~q#$72AoYkgBGi{_XeyO*AnM(Xd-sZ9fM^(h(E$(7_5WX2X|lm+2Q?1McTubGU8Y z^flDG^H_8|G#}GG{8mj34RNH+`MVy{Tq{{ekV4JVL}1xtxyxqLck;rjzVLu+atr8E6fLLn>vmKPmW|T zPK9J)DIZ?|S+oL?nU;+(A^F7Dg##O=ll4B~JgGJf^^FvS;{(Edt#F@kSU%99)4TwF zs={IL9mc;t3D}H<>R%z>eKoz3AIU6z265(^3A?`k;Rn1j%{PbVqj}{}N+UD9 ziEJok$BUhQOZPpt9-Mr^+&4;0ld65aX9v-*n%|bw>&zlGq(!$S?qMxQey2-*(s!~8 z!MC5B%^c?_N47+93eA39cZC6-U2034oHqtLJ6MnR-00!w3&x-YXI10l**gCmwf8>V z^M~Om%KKCDmqApzVv|3+wf~fV)1LFUhc$w@=IT7t{D5G*$}Wk8m)b^ zXE`I)s6VHCl_PZd_+AL>lmD=h`W}VXi4#_Qmz-W_tbZSX^LWNz(QoO;HEN(tna4A{ zczEMuhW&|BN2zV@q>@bHWnc_-883tC63lqcLYX%Gh2fjghgeBwjyp3E%|+}jP_UBB zS;lAV&Ylf2P&ASRg#I&xug}=K`X2+{!*(@Ba}$K2BZSk9tY{?Kxe2tZyM=hSqp!4Z z1rxix*bsG7@Y(*@hsYQ6R>@e-O1SM@GdqyP{*+IisSG6V$#}6H<6toj*4|C;A_)fR z42`>iKqH5RQtW@g+A?GB8xu)`#=2qS`YB$oRSy10^ z9lQfUA%@Df$FyRY3?!*}fh3hq`{n#!3LzXwwgpDjw8|Q_YXhO4@nj^#Q_Lo;tJzH> zANGWf9$nGW4#4OT01zstM&NGATd0#v!7{$?Ma*H=+MF%+%^oVQmnwH{-D0+<_lS)G zgmd&3F#D1urXs%Bg{aS(oM<#6&A-5YV;Bs~T$&L!Ocb$t{EozFt0sL(ZZ*0S1bI@s{1K?L+bUZb&>jgEbONj|{1kPGxaTNjK6! zmLwHB%uKC^*(Vy)#tar!6@Zawz}(bM)67s0xSD?;E0Yq<$E{H=DnaSEb?@x<3!nJd zD)?~vW_PgLA3!wS^Kzb2O5Moy)Q)xDNLl46>eBuK=m1Rr6naz48PWq_B-FGSSTia> zLvbF09nA=4(0?+fo_z0}-^66{gyhUFd)HLI{Ix@Il z!_3Xti_Zjvb2?8zyTM0NbhZLzg|lOCQ=?(@jI(64cG#f@!ns$ogkhR{Ky~`>{TbeZ z#S=QS2lGb#IS?ApA4xEhoriB?<*T9;N82Wt zs;WGH659zr?M{IOa|VMA0pCPyr7L{17oXwv$NmCFYw*Qfq`^{Dw;`9e-W!d3BAWCp zO&VJcAdU68Z&b1VMOq@+(Y8$7<>l3SPoyT|Pck=$F!#|QTu-F379r%XTZn~_0)I`u zQ;>WWNn!8E7q7xg{=gOr4{2=Q45m=xVPEeCT~KnS85&h;IMZx4W~9{BQzq>WGaNQ_ z>iYiOairTGFX)bxa&t*3SA2)(xy4$W$*(W+!I%Kt)+6gy!EhR z^%cR8RU{$jm;bBuMg`j_TT#Y2Xls*@scv2rRbxY@?PxBD9p)_(O>qg4M~s@Ec+e>{ zzlY3X7uIEKPZ66=H1!~G3}c=WMvn=@Hm5HyQ0pCt29x8G8aHS;#m1Sv!nS}q9)C@r zir(cbmu!OT+H`HoMl-LU+zE=|tP~dy`RaK7n3Dt6SW7#;1TM3J!WLMXq8=m$ewfUh zgL&}|Y1wyiPw~38%7W0Ma7a%5ni6}+ol^OUx#JV!PVN=|W$u3i_xQFv%C2iG-Mv8q zKbAXdv2sq&vTqk^-OA3cqH@meWhXwqQD?0i_WvU5Ou-xCJ!Jl4`D&fv&Xioyrb5sl z?QQ(+3;8wOXsX2BaNuX3kd_ITj?f1#Kx|o3+IltlI)*2R<%)?DSLv!?4DiPIMiC%d zw*pM)J-2T4|DSWigo$eRA9H(N;z@IK4=)tge^EB<8}-ah3p`Ucso+Cd!4Ms5*pcRc zmsKNne7cpYw|q>$&`@k=7K*OcEF)^J4%3wtV>RK;&Nes$e;mb{egns8GP=55i~06N-LrLDlMD$wQSf^ zV0Pw%e2lP7N*2SBkBgYe%XFxLl+^LSNJS~?&`8?O;?j8Z7!ap`wI>A(!zYT zeRLbm(w$j6*Cf!OtNrQDyf)L}NV;w{(WA?b7eacN*zev$>F>BLfqc)Sh%@U-Y%g)5 zAuGg?T{G9fK3QwDql;^qIC312=_x(l5kq_gsEKW(D!PZHBQfC>6GzF_u=I*K8&}O= zLOOjL&ADps9mf;yEdMxd7Dk&7y`NxA@a&p-Fs@@4K7cGzB)w`#xj{x^xcWT3(PecbMRN}bT*kd2ti=6d@ z&XIGcKiZHmle})SUTmf>E{;Xk?e)b7;T)=GNZY6?7s{FTNY5fGz&%yPv%OTs9juBx z-?*D3te3i==%g-marQn15rLvK4HK-L`VJ#0H#fr%1d^3u%F#FrS1?RPXlnK20F%0l z)bJshRB839&j*qgxcLGk0FYi-2Uw-N<@hga@1E z-0j4k=Wh4_xpVF|Se)`)H{+Z4c_A0yh*iPq(^zk%8%HVR+FS&QUOP2T+K2JTX>%B#F ze92LObF5BGtwN~}5n^@bfmZ6T^g4&JA29`F!LxB3SE$X9JFc?8T#jE^z@~(cHcOxJ z*O&U7KatcI`sZ)_Ns@2^GZdVqGT7V#!4xZYI*{0pW(0htH3=wzWdsdWXa^&Q_T4Tz zn!A{j)Q~lfUI)~PmSSCD?^{ZcBx8vWkv;_TbYV-QxYaDpF$J4*pLIN4{ZgQnWEm6S z#=O*TE+gm|?3dgz2$mNJ*XSh5FAyJ&_IR>NJUe1FqQ{l|WhX ztAnJJ2uK7e0>xp}wFi6cvLh2e%1SbA&6<46DM$B&TBpUV)Ft}dcp)B{r|7kV7CaC0VZb#Em2O__FjcCV{N7=m^_ylrs|V}7%B@{LAcsd^nYLzazSddWG{p@6 zOx?aa>qXsI#{tawC`UKm`D|QI-nAa4l`l6w&XCbMQ{b=U(FPxw!NxsR$E)dnlopb{ zJlHLxdwXWYa~iSD8tSQ>#2fGADWG_@V48GPVML3|45AW7eH^>UR#WU@jQ14 zv`uuu4}sR4U;qyRTpX1U5w$3A>}_ge+$ds#0olg17`GGA`{COWTDz%#^7_C|q|jmd zxG77{s@(nKDwj6d$v)YW!HBg{v)?X~g~p#$rM2KU4wcspQ`?h>l3- z7I0K)rC>MZtMsN|uH>uqrJlo2^_h{*({vyVN*MTx4umm@uhO4_`3FD$6is~zy-oLx z{{Z0hjaNWA7qTCU{R>%I$$udXH?6EBBk3!$55mV!b$o^2hbo97mVtx$Vz*KJ+5#L(^OfFK;;q=2nvB=CcX^#IN~?brE`c5r>t;mJfRR@8HJ1meMo1 zj;ud0%`03&l9LYO>2HQT$6x6e@{{La!5r{v~1yU>*N0)94Jo zcD#*`AXl8a`A^@iM+K3f=d?bi%W)tE{Bky zxA6cMUUJOMa_7kDp2?A3lOxye`V(%h@*+!?uN^ym%oE)szTs{Ty>Z0u_^{5zCtE%P z<1zFqZes<%{@jOFLNONsCtVZj!<)KaV2k&0AwEmrXv@KQ9onlN1lYgzWk2?UXF^!p zD6k*95V~_QbSIG82 zwCzN&9*t~S6S^p{SCW)ThMEU()46Q=JCKR9(6HU@koR~|1yt8v{hLuNt#0PcLz6=f zJ<@||eV(Z~hOWfz(~NGdbk(|vL~ZDij;KsJf%NtinXyDoGLDP7E8BMcOz~x?ZWFoG!vq=It$4?@V6T^mwrkC3^k%PwN7*kp_DZFOfxktmg+jH%wCrra3P$w%1T?3 z6CYr&%fV-M(=FTymZpq^S}|lS%!YBbsEI&1_;9YM2TK;9WLsKLSV57!pg{$KnniXv zGV5h8rTb|cqp(tVR0Z?JOvijb!eK_x6NPUDm3N_Ak7t#&#Qo*UgFM_lpwl0UotKUG z>213t+W9#urZSrNLjPbu3Z>X-+VZ`}6_WJU0=69ZJ}Y6i&lzhM1` zI)^~w9|$lUU5NBDZ-#O7bZ~)HEGKXU{s@gMGUa#x@oE+t%*6nVox6MtsdhY|laMTd zjgt`e!V7R^?LK(LdV^msvfn5I>VBYV-^J`EcUL4oGX>PyaA^xNoJ`a5LGQJ|636Us zaGBR;uUm{2nN;=~b8}Gd6Lt$J$U+zuOxr1#FwucEFbN5oy#Y=HyN6|qjY&Y3S#f{t zpJXKmH|yfzP(hzKCMA?M?!blnw8LEbO9Y4ez#nlxo}qfvk)WnDm3;+ z{Uu*tw<)iXNnk9;rHhG;?DtSdkbOCRd3-68I{1md1AmKw3j=WQyvMW^cvwf8zVS5_ z#dPkvbCCg&B9JaXjNuR=-7Z{X&l1e=*hAO>*({W(Y(t{@rZ0pwp+US2l7o=-gvFXL zC&{pLp`HX2+t8EZUeDR+6T8?u^09&M`OELTiU){Y4njOY{NNzO0|d&glZXchkAn~o z5SD`w4-j4lAs!%n4njO&n0IyO_?7x4MTvhA96-i=;4~b<;dacXFRQX37~6$H!0hNd z{79_qn8mQ{7`~W{7GZ;M;wzNeN(M6CV8)x}c=3)UwihG3b^wzVG$%cbeE|v9_Q~_> zYdXmdC_UaM@rwaZL4cQ0pGI~2pG&piHQ zAuW|mIMqXkx5t7IPoQRYQxt3WtxWja>G1Yg2&J%VrpFf`ol8!mMs|k{ zxw3BLn2#xfkg4tC+|dmOCdAPZV5%G#`!pIdF3&b$;6N?wOS8Pw;2nn@7uIrE*YdN3 z{D7pEajR9=@|{4#FSU$n4j05=G!z${D!`_WXd>RQbmWiwh4FAal@Ht4fw!qjY zO@X8;3ZzCftyj)N~kiv>JyqBrkgaLY}46U7JJxZD3%~M)H~j3+*B?$BT!i zIAw(HzttkA378P^j@W1v?=qCoi=dX$Y3L2(n%FYF66`oq5LtdP8d z>q~r#@cNy0^)pr{wz5JgcDcsOtc{oYY`iS5UO4k!Pf$JPRqAr&y9tA)FL6G~sdt() zH!nEX$kTI;Y`qIB_EQ^y?zhWJlc`{B(3VyfhZO+vUNP#-wY+)0tUOrGvjzHtu`s9? z_`JMt(Vt$FB>4rh)!PidB<5ggKc-!2Kjs$NzbPNSevlnLqWC{3?thy;>}TSZbYjd( ze6_EQJna##)oj^{q9KVSO+iFCAutm~HbeLfG@|CNwKeJDO z>uh$nyA19RRt1m&rmmVd_gSffXT}=;U)^R1B0V}bU(HZ>pkq)h$;WctWngFOzQ*vM z%MlPxoO=wea$t^dAgU{Kj{(`Sg7L$;HIQ=+K~2!JE6$f-Gpuz4KU5C`^%^w?_xJGU zgmt^kke!bUe6o*=y14?k8M0-sQv-0j-DddDCCz0G_i~-VRp#F6eb3h!vckFgIs==4f5uFI;wukEmw6s4Eu{y@l$P9?tF8R}jF2>B-z- zZokbA%fx|259+s6_I^~&E_p9NVL#hbIN7;_;8(Qwxf1nATlUSI;rt)%eezM0{}+27 z_N+baeTduL%vIa_NEmyyZf2lj@57)J#|v%mLtn+WRoT)}!lBviF&!FBxciAFSDsm~M^O`%tDScG$F|aiZMVG-%U~+QJxnbU zdmjnZRnjfcPO_l1PD~d=v#cvXCQ7tUlu)KOp;8SJ3ai|oVDIzABmXee$bkgDGs_Bdmo(uP5stM62fm5|Nr(6 zkQU83{=aJfujt54h30&+% zFa$2?0blCCnn1oXA09Se9CqY}_X6KS29a!e&twx;&pu%`aB=4{Y%U})bqnQeil8U~ z^Z?v=K}w850JvNf02eUXh3RXUvP`%d4;gq6h0D|QO-=0Y;8k$thGVcn2n8Y|fUcA? zDYAv@~_?!3D;Ki0xK*2XK z(ZW3Gukv;ba`07=?07vYKgZiKEseAF_0Jq{*`UM}BnV0}15`=<+xm-FkFrH#_bQZP zF-(iB>l_LWx+*A)BfK5^k}j$=REta&I{;py8k?5lU@bSkf3z5L&1=V+sN)FmB-*8ONeJ@n43eZZ z@_GlE8VX$49~m*4k1p1L>pcCLE{cX{LD3kDu|ha(l!$#2Rj9)B*^s~fnHZk7022(A zkN?H6rb+8cVRv28(ISb-=_Hza&C^fk{$7XsDtEoklzJ_|XR*jkrnQFqCfTuwU^nqA%J$fdzwhz483V7hNrvk-2?OXzggca>Dy@0{0uSAqWgKzQ zESW@_B|Vn3%Tz7Bn+j>D&>#G!>IhrO8vLBOCN+#uB!!NjNQOy^NsZ9>di*qd?k?P2x2v*vh4qRs?Npsy2-D6lulE(2H2?`fhk{n5kYt#AmO9}ghJ=mAL zaxDyJDdwulYw8mYM^n(GBO?}TZmt41kO@p#+47~&&;_!R%v)Myx=~3p5_Yt5qh}Ky zin{Y4nk{XNhx9B-Yyk$cju()Zlv(%xx<~<`C#@rpX$JvE*C}wEoaJH*+?RDR-YRja zr@vSA^!KWsGQ5XTclCE@-E{GlGfEw4@*af-wr5>k;VC#et*b0Kjyan+$TZNu$lEa! zl%lb6&X!>38p0x1#$lgY0A*MR{q=bpFd)K^SU-c0B_KX#W1(}l^xOA|caYY?$j4vX zH~cNeXk(1_-ec6iCF3p>Ro>^f=AOAm=*3DfI9PLS@6{M8N)X24+Lj%U zSab2f031GFTp}^`uv-5Kyl+J{>h;ABhget$s;k0~jATY0M=8r!$ zfj=;XZeg@h`ptiD>}bBeiAl`uXkvJy`WS-E4(N{^N4Pka@~2|$&mSwv zpGX3l5=y{sBh(*Tbn}S919&z_iTjEv|Ty9;D%v#Ry4r`k%AJAAr1NhWFvyYVM1 z;45!t3OB9LF*iKgh&krM+Dm)~?(v4QXLBK2CHd2%Fx`T#WjSwl%GoXGIR?Gj zJxI>5Qp-TJ`h6?OUv1Tvg>ISA6_jh~(65iM-ltiLf)mK>^e+O>2h>fEe zu`3giZJ%~{H;5cFx#7baYjNVNXGeH}31?)OWHQ`Nj79S7K-mEeCH9z)AR&Xt)71x+^1PePvJQs>*0=5zwbk1@@}S!pP~h$m^;YOs;J1nAw_OSzcLQadGT1Aas@{ zheLiOho~l188tL33tc(woZgOyK5PY}efftE$RWCJ zAM_cKt)|F6gcFg{NBUi*k*opsM9ta~BdJ#c~kK(jKU1Vgzz}lgwVU^kjAxXYCY1p z^63%cqQ*0X-Z|(ILTZufrQQTYgxScAD4=-dg=QT2^h@1BNzn3GJZu)X0)u988-M&M z%&Vn7y{gTT6BZBXt3#K5AzQ>9NcO=h$D8G_J5zxq4)MjwE=HgT@K z>NyD5gg@CAV;H^(0k@`KhibwECjy7Pf!_MDlFuV7`E%%#e9GAxl*r#QHWs4NJpB66`ICm2ApOH^Pu4vKNS zVcKu@OJ4vJ!Neer);td(Yc8q0NDyUW`|QA`1_oZpg;>{~;RlHD5LQ)x!=K28;plz- zgdcs6?p{bC^*U)=N_FxM+!XV%bUhi*XA`vX_KFlI-GkqqC{MNU|h<60}xKy-NgM{>D!e z)>?dv{C$o3fT&8MtR%TfeMr2OBrmCt=ua|=&NkZKFx14;v2|dy4Hq%e(pb~pu8Aa> zoo3A>lmZHAJV%beOhPFK66zeuTMZ5-HIr6S*iSO75OE0QI}&Ekh!-fxIySAT-}nj` zIbH`DB`H5gR8$7UBoCRGkN6{6oU25cn z^CSv$k0fxuh-SoItR`YQieE_QLX@kY!Pf%*+ote`m zzXH52a;9IV%+V2Z-+3N|jDJ@0Qy}$lN8gXlDPK-c>rx*xs-DQrN7IsJSLzdz=kWfS z_IS02LoDpZImG^(0T^Px$FI(lz8@cAzhfGF>U0-=BNr#Gz}AEVM!SQB-9bdYs(WNN zh{yu|#_U)WopCaxQ5os{HPT?oXnqUzZ;H9=G0aj^AvesG!?8c2F@-W#CE0-ibrpeu z4RMEAJ8?CLX{hjG4OMF}>VTldJ=`CoS*`j42XYeK+Yw`7T=z$LQo z{19~bq2G#8Ei_Y1hV;ixSuATd}L0wAFW8WdmuU5K57)G$2_xAv(>| zsCumrel-ha=f6EHY@B7xo_8VK%Ze@=IajMmturTilt<|1z};A1H@t4-@X__7iSnz% z;68CZ-aEuxvJo3nzN6u9UEi_hh*f+oR5cCqsNqe(Eo@b*aY>QKx`U@L+=u&s#{m9k z9pFiaB@SU^{Ijsq+W+#~<5>d%eCugY5g_2jcq`8yf-7|`{=WC)Iu~#dlA4SNEAYp7 zsCy`u{wu*R*Eie;E5dIx{uqaUwt<-q8X}830pJc1L8oGVN{aoB%i~FFsJ0#95p^%6dfx>KY|1S8BmFt^r_1kHraBkK5 z<~+3_(27?)f8Ta&Yo6*@**Z8+o$jMsG_iH?{;Fg$u6n7Fz}xCN>$E)ZHh=G>wki=m z-!CJzUreBTHbNt6W8=dMZ1p&JwpHn@s}gx?prj2<-x9RdBh$77^VIpRq;@`d$X9{guR-JBOhkdQZy>skgoBoAZ??er#(< z9Xp9>4@795I_@y?|H=^N^7vwwwEuMGb?!u#@gL2tgA;1oe3t7wFXIfiNaxIb7&>Yl zG1p3tF)3HyN^&w`KBcs&mE8Vt1SN2BocPaIFt40arW(3_eRD*uK-xT2RYCkerxX9d z`r9YvsUr_1=0(KJQ`d<*WlHPdVs&%%g1ll?dobNN+$Ek*C-Q~Ovp15TE7vm4KL#&A zc`p;ni>pXsDLBtl=j=y!xu5PjxVGwQW?2dnOUC4@Bdd;W%~xN{A)Rjy+jU63`sa#c zTZ`4Z0~cURd;Wg(zb*cw;LlU58d=8Uj$j!}Yu7gytIY!zpvDgq`6TC4&L{gQ=Pde!j&VXf#-cKG0WTaBKwB^Xk#mDw|GH4d`PSLZLK9CmIX54#qV z{`+uk^=jGPOY_tzi^$lNe_g(&nj;Mi6tR=<}yXFyAZZ z)4dv)JQWSHPH$W?X^5@EGT$ z4oA0>!=(xGyduFk7YC?C+Yh4_eTnWUPyJeWd#I7rMh_=f9jJ?9_4$(Xme^{8Xw(f0 zi9e`C`+p===u-ts_5O(~fN&=DhA$%TYpMzLm8V{XgxMRu$IcSH zrU!;Jebt-;#LsjsHlY&S4J4IaLZwuV7wC3@%G6|mh6>Fxd<~r=OX+x~i>oDaQ+{mK*w$Q6 z9jq@s;OsAx2#o}k1)5cB$F_z&V*p7GBbaWy!m%5uwC56oPUcIJ9Q^VNER!jfM* zzJ5q5!;U1Cc6=X<(A)|_OYyn`(>*DCF2fx|a<;yaRF-P4gbAlpna^m<~5#2Ja-7RL()C!xl78hZQT4JQ`M86#|4^GOz1@qcG18~K`Wux zJy>%AT0NW4hn`QYE^zjmK!5jqAz}ATXV~98{}AXj3H#pjZ;AQse1?UrKIo77sskGL z1!o0T)JrO_1_<@Ha25;^eunlwRYk1bhx!%B{V; z-ip5J7zwMeVv?>NGqkB{uoV~R2%%YRjc~}|CQ)UcM&L~DVR zD883cYdn(;w9r6p;99Agq0DcxwOC@>5;omH5rJk{2S`}6Kr^kS0yPOV+gc{jJ_60L z4iV@ef%daj2rpHO$xEBHTEcGGhg>f)Q0rtu2jOK#%6fV`p@Xf2Na8r*Y@KzKK;Q32 zK06JxR~4aS4fH@Ip%kEONMi62%x|*^y8*o9dQP%Bg-Y!JLT3QV+2+}uUd-mscMIHwCIF}ZnTb-bRC$6=X!pFHI^Ug zj*_~)1yC-yo+>qVtF=kW@D;+sXhkOoG@*>pqXv3L!k)CcT)97OZI=9U&?=^?XRIv( zJ&1OIHfEjXiutj1mMizqtgWv6KDW*jNaye^piKF`v(A@v#|7M1q!gLQ>> z3(BqQ&-PyHEdcaOAGr>AuY(21{Q42muzE0$?y^d{SBt+v{D+kj)3T243wv+3!)l|r zzZQ3jxW$zt5qi#EBcmhK^X+4zqtwqEcX~&uR59H%#NP$~2(>zIBI3Mq&@{wwfy;lHGa^!o|s%E9}=f8_dB#AJMM)!GL4z;%o{qjd!EYYtcm|9t`avlbklj`@E5 zZT_&Dy$`8XiQ8`}{X@faFFD|;+^~v@|E421L~V6X=WTw>Cr7tND^y|-{PwY-r*ao{ z71tjZUDWlYxI6Rd-)lJCW5RSVY&tIL#N0T26GO+)JsYmAZXSeCb!^8|xwd)*?kM%= zxfQ{AUDqJ5usSaHL~xSmLrz{6ol@VPyflSKZk$Uk!MA#RDSb$ zaOVk4f8qkrx5fX2xOa(r8>rdp;}w@8^da#-cL*^L<(?Ov*LAbxJ~T!i3dC)JJ3{^J z;46{KHEWn-0cz8u-tBiOUPyUZ+{@wGDsRdTNch<0zlHzofp^1QH2rR*`ei4jx^xEJ zXUC0z43{1C0Mg!g=xzQ{YRg2rvnEmkZE&m9#Lh=hio>Tq0k?hJ({K--`8?d$@?MVm zR87Hl+ox_joSfXXA9drzb+3W)=T&t7l27-3i*CN6d#a!AGve+mnB&CttROyb2;HHA zxm@DBC+>2=Y!&xLq5Ma2>m>d_aeolZ8{+2gOFA!l=vH~@hJAEz7i!-KS1$`!WgCfK z)kHTaF;CB-zj7Jf7sao{-z=fu98Uajp?{l%PADg)Rp=bQmi{Y++Q$><|FVVdpGMG~ zk|m*2>3%Pv!-SK0M-g-DP`cL^(S7X*y0-|OQ>W2Cpn-04kZxOm?pxxo6Sqk)&xwDa zxG}*zDE=eFogtVn#9t$vtQJg>xcP!vAfac?B>fAej8hxwUn>3=I_dY$rt6nl-YNJ~ zMiXR5vlN^b^u9z{Cv*>PK zKsPp>?ztlKCgE+>A;hc^$@g1M|Ea=5dj2{WEPf5`<(v_0HCHdEySJkIji2s4>*+3-LH98a-G5tjeLlK(2<8*PXbK(UiN85O zcUF+D%A(sbjc##1-Mhxnoi>*4D--B`CzziJCLnRH5X@eJd0gVWCzw@&d0zba;xFHq z6pB{ReQGG(E$iqu7ty^VO!s5-2H4+7&^>r2-R*)uPB^rM!+0n0x)i6>(?6z+ZiAFa zOJJhJ(Nfwpm_5wB(og=fkUh*5D@H^kYX5`ZggdAGU5qkMw`{i~suI0xL^X^1*u08h zSZ$54M}0NA-5#Z$8~auO+5$iNsOmRC=NHxQ!abq=L%9FUV?V=OMyO8~dS~@<^c*dh(nS;GY-wA#n$a`}1YQ zpD*r};vO&V=vBnuC~?YH(;pJdxq|sz{1xI}A($ZIIC(8vU5@y60o|*PC@=J==lfO` z+Nx!7E&Q)Uw%hZ%&aJ1EzG$n51g?OzN2rC6_6QXg|Bd3`;UVT`s{*zkAEKlc>Vbns zgTl!599iCiv^{FZc#b9<*=;p1H_hrrz^Bic97r*b`NTXYA; z#HASV8`L|+xA`lCThQ5`biNXIBI5&z%)&w^VQj(z~HW9RnVR`v_uIr~$1n!aZj8D{v1iejV=iaqob_ zqticte+JS5)9?vu=Zm&~!2iVPui;)XI#A?MB^X;hD%MK(vgve>ETX%wxQjc<+bOH) zCRS0Z4U_5aT}^iy(%S0M682;Fqs5_jf_!XsQa0Ulq%Q8>zkd<-`esowZO{kQ)PD%RPMa44(Q~(uH(ghY&HESAeVVv-xRZ!Nr%#iK>}NHE=7HL7E|V0 zGoSCX(_5i}BDbeS+LxkUDpYx&+M)_&4;+P5T6$%W!zh)^om@1pYm(#=D3QEkbZ;9) z_dMX4*NmbOYVdsO|2tu)EEVdD+}S9_&dEzaS?4}|&T7!#YaliA(h&9J zT`&H{SwaCWDIbpbS~9vnxuKDv`H-+Kok#si=!DQxJnB|)Hw$JWdLEDZm*~KdevJPG zdPtAzBWd@o!9k8X%~Af=m5|8;x>po87`%9ETplYNPBmg+%7UX z-^gTBQCKxXCROUB+$|`@h9O%Zr303q3O9Mk=|v5myM5;X-!+t69emh%(6sFf$;tWN z2T*H2FWBj=QftLMblIuUliY%*ax2t9?H7QPm+Y&HBFgKzt_OuP7W@vF&0f-M^U=-r z)AidEAq{t4I_8z$I}yLd$3E)c62Gr4X>DSzfS-BYhrF&)*TMZ0Tw;C?{{&BKdPR`E z_VJ=cT|bO}9Hs69sfN|Jkh!fsl9n|Ab8K4`tfhNrG2IjLpGJvxh2fgjN5h!sL7{Fx zx<}_f5BWb?yWOr(?~YiR8{I{ z8=1@YVdtTrNiDhn?yEv=7JAnTRop~(Yg;b*+femRudTixO84WT+wH-s9OKtub^8>$ zr!9RA@;Mx9lfi1~o-x9ZeoQ(2|=?)Y(7Z{I?j@7xe!D;2>{hy4o9Lbl*NK1Ip{>9K8t7g!iSD=i)6H&eO~-j+a2qh6 z6wy6$V4DknATZa3=>7_>t#07DPnA_6j>n?#O2KPs*J`?HwW*GX? zv?de-Q#+pSoO<+}20w7^U|LXw_%%MACHQmKC=%xhocJoKz$|E&$ z9A=D$2Nl>r4SBd=W?F|A&-e_f-fpHleHGmit3N~96#6UZMqkF?0Zjl#{4dCQ^ZMWp zl<^F4Zx#0faeuLv_zT2cQ$jkM#XYrz6wVcQ^lJL2PNI8%IcsFHtj%|Aq(5~O-Lu5~ zXb!1;Dr?^3mU2wF7V}bFmhSC3edY4ZH-e3I=a!5tV?Mk@wx=tFxzVxzo_VcF?qI*1CkNPFr zMMMpSw#+TZ#x}k)a&^Ee#vI8&%PX^rEp_%F9k#r(FRuKQV@HoMM^zRU`xQET1CN)IAF)UF&v^c27V+WDY>bkpGG;yhJDlLCaDJ9uhwA9aO+PFgstxG&C0 z8Malu-agj~tBSaWwhW$E99DA;bWvhnF+O;vp~8R6pKBGUQw7=<{BoqvQ=tB0pnC=S zu3OBNHKe&sojh_3Vs;qllg2TgeyYnrlV*+a^jEhSsB>hqC!%&5=+(w%PgH$ppt;M( zcnVc{t)}_wiv5d=)L{m?@sKf|64hm(af1#lE>*7>X!XI(o`LEU0}U9}>?u<ox0jU{U%MahNIw|Ly+YXh|cYEBpH({YU47*gIZR(I|cNULSUyHrTHuYrN1I111xiOl`H&dS|-dlZTpm(O8=b4~# z#!8sboTv%~+NSO~^x5Kx>SP1WT>eV&6m_S8E<5tg;%TbiIHudC!WHiqPghSFXjbc7 zYo_{6psnh;L;qGhQ+45HBFk{{VP6;Tt8N!)n|k%YGm2-cCk%Awfu52%Dz>+#*|sQ9 zvY%REpu&=9$vpK(4Fyx{Ct0oPEfZEczO1BG`Dm&FUXDIsuC-7tGf;GVtYo3uVxTvM zPw_2MryJ)dFo*dHbvcG-C$CwyGx`?WcK&KSmF#oWUL)8qN zh$wZ6S~JswGty%O+N|!65qeRFA?Es$)#|STZ3{k9Kgn9B{%N4R=HpA&sjQi#vMqRg zWf!2q25Rj1gMXcBGSJFg#+7C8w#fH1tKunQC|%3YMO)E){dgZ7Nt_R(grLa6Z#* zRio=a4*XJ`-m0Ol!{=I;srwAH-=Ty)G|=D15waFYOp)hhDkc!+Syg%&R_hGg7W{4N z@Y1VPhk>4I9R=uo1HHFulC@o3X`pd?6MDozeby5Cz(8*gCgfSDY3`JC0}WIs>Bbqz zE9u${^wJupOBm=6lI{cpT_j;=8R%aEU2dQU1iIZocSyR&40M`=y=ej}+ zOSh{}_7^_Yvb9r6uT~r7O2<}_(lzQ-fwn1o;jGeY)SU*JwZZcJTD_%Xswo>5mtL#B zYbTXcf=A~(lYJdbcL{9{cIA8nC|96Ug5PI9lYPDFZ^FU|yB>3Io$gtL-Jp2x$8_&! ze*I~oGl z9`%6wS|DAb2h@&(75;659n&SH4=8nrhHlvJlF|oNr-A-7_^Q%})JX;^=zCS^!>Ve9 zj@i8LjiryO;c4iu(#O@LH1u%kAJjqveNyyX=`(6s8hX9-d6inJsU#2mr1VefXKCo` z(w*u;1KpkF9q_8U*FZBu-T{ABZyD&KmK#goP=8HB50}2BzE4AUmAc-N~)xtFNaOvOF>NIp$>A%!* z2AY5zzE-ChXee^{R$XYI8OY%~^=kwD4|3S0Za2_H^*5F(&x2{`;Zn=d+Jmgk=a`Zu6#k9UUW(cS@JPuxIdYwjv7@QgChuU6*{ z=XVn3g!$a9nq3!bnpI-tmNih(|~=sSs7ZJ^f#nqZ(l`;yNE z271mzXpMmedkJkaP@a#_xdysLxW3jv{}SomXP_5Fx-S^0bR*M!V4xLEguXKnKE4Jh zyjF94S`MKq0}Wb6Xqtu)X$p>mvo{&hIR&N5J~l<#T-{Z6RdWuWop zjQNa#<_e#GG0?GV8TPe-E)%YE*J(aKoWQU_2D*O(q0t6GwU$T=gHF;Hqb!D z4TKsDG%iSJhJh9a2pwpk*CnjOKyiV7W}uN0^HKx-QNn&}pb~)|Gf<_(e9b`jN!S+# zS|^bIaLwmbiCJu*PbF-afrg3%rx<9Z#B4WEM4%%K)JI}&G0;4ra-o4vpULvwXrS{& zCw_0BXFD0T(?DuAp-&7nsgaNeRyUk=Es=B)16k7B#0~V4gtZuG%V?%sXrLn`Y^{OL zlNvk0Kp#ukc?McBp6RYLP?v<=Z=k($8TO)qrb^g{1{%MHVc#3*0SU`bXs+)Oofu-E zr4n#e^CK+M-TcQ>=M{RGYY2TNVJDfeuLUBNOqi4IiSm$0qDTUXQ!80a}iplzyP>f?cdo~zT)hyfLz7t_$B0hOM=8tDBg%Ll|g zKct}qKJ3>o#r(FZ_or+cQ12;EL#GcI>1j34Kc@V0z!=Y(G_+&D-k$%5wKsu_vfBU0 z&$BVZDvK!M0w}V$g5tuJlwDC26kM}lfI&uq!C^otEl4wMQ_Cz{49o7-HnZ%OH|uKA z;=QdmE4x`~SvRxIo0Ycy-k;BTW*9{K_Wl0gAs4pRHW) zV-sYH6Y7cHeqlF1e1ecgYqGR@1K?mthd z^>X@vOO)MLN-utSy#`b$FM7Gy0e0n0FE?yJjdH@vr4Oi8zVmWZ1~e!^tsXD)1~e)4 zUT*P#%am)p+{yv1$}?W>rU7e|*S*|51FlmBw+Z}VpOd#|zy>A5%e^>Yv$Dy{9T{+^ z5`2}kES~zqfbB|OFPCP$Pf7N2zYX|{GTO@p#OzecOfGL~vHGA=ZE~}xM#Vg+G<&&8 z)`yifUM?yzEYN%Ts6vaTDjHa{yFvgm@~>NCO0_968ozXc(wHTGAtE!n8_)5 z5wV8q_Hu(`1JrgeH#asy{m|r2*RGH4uUgkgFE^lm1JxvxyBl1BI>qF6gBzmOm|XAB z`(j6^8%!=W^vT$<>Psd!E%cSxOjW-|`iyHl9$To!dbyLa)72)E>(f}Q7O5*t?$fD1 z#ulkZP44|D|F{wr55?nevv@zMU)+2(*5n?J8W~rnW_r2&xJ7C?b9e$Q>XJC8y2;eF zM=gt6uJ&9fy}TT8b=>7@p~>A;bVJ-q)#l|k$F-{0FemqTtJU>VXI-0e&{(Z*mOAU5 zDHHrxt6M#~x@`4o^*&Q~d)-OP)#^j0?uxu@b&a~m)ZLhO(y~U~XL6#?u>RMmpP1Z# z$K4lqjT(9_l~d+^jk;EHVs}!pdX0LRxy|CVw#X*TeQg+(vb+$<1x}C~lLw!Q{qH z`Yi4i^*56%0=HRBx`9hAqLWX>-Kx$ox#Z*@<8D)zGe+MqTaYwhVk$J#2Etc@GYJQ9ZLk=8!SriGeSx*KCyBMR|k#UsLb&a{saZOMT`h zsf&f~E%lI>`;YaodgskjSCIGY!1vUnnS-_c#6bMK{T7ezgMt51BfZ?` z15c`PUhd4muhsEh&NAq9bKCcZ*)%Ka(lLub2sDapAui8CEqD^XQo!f*J@QJcT>^Q z_ox!6)%swb#Ae>G*rJhWn&$PLw|QFWUG&OKyGCfWZ%G zum8pLGIjjm$F%V~B-a%6cKlv#yO*0X_!-T*Q|hWwmJY4fa$JmOwf#kc-?7ow=FdS6ZGX?ZeBu?zLvR-V!VHO z!Vo=nH+k78l4jH;jL;u6xnRrX31jqsKPGed(0O%2y8exaTXcQGpY-BAQr8}Pd%{Kf zgC-Xd`saj+dfMYsx3$ls37PtAFSjotTW>JA{HjM2^7M^fZePM={Xvtfcf6P|RS*5E z^ineK&4d~H4wJjR;)8^l`syd7?x_D438nfDlPgI5E@8I*y2&Mio3G>O6n~q=hl`ZN zOY~7D_lEzY2^IQWlPe2&G@(jgVRDw#M-!^`drhu4xElQ*CighfE!N*Mxg4ac)sLFo z2Q`l-)axfrE_~dh2@U%9CildQeF-jo@LpM#`{AWYpJ;O9;boaV&*U!74@qp%Oa3M; zPcH7Ac$r>fa=$eWNW5I%V{&I}1}Co2^{1p|*~npuEA_&ClB*dxI`Im9$J4}Z6xWTM zkl3pGJtKA5%{hrz>Ga=zsa=*&x)MThjVv(k}xvwpwHy)|fA;%)jK=4dC?nz%)GKTnox#3i#8afkjgb8RAJ_PWG7 z^wJkd*Crys-KopnncRWhr9a8K7sOYV4T*Q@cfZ75c<0ux?_jPCIy~v5&pk-G&En%p zAH}unOPG^hw&{(`$;e}yzFl%6VR*5+txJB}bn+p@^F~wYU5TCCSC*ZL_nMY+-*}%s z?;m8j#=0@|vBdlI4JP*hxIgR9GuI|w3Jn#1(cd$5yC+499s0*oXWcg`65JP3hZ;Sd zxKnR`g?)eVF*D{;rq%Jn?Zo;4M$OGl_fkabC_Z>1o|AIctyDXz{FG$J{Dw|JX=y%e|Jp zlb+L0d$|!wFX-iOdwgal9n|+oPUPX<%PV@;JEVI-+&=nN@v2_W+#2h3$+MGQ)ti}X zv)+EPIZJ{w>2>{n)3R?u6S&7r-K&FF zB)y?OW$KO%z6xB2shc}sUDChwmzi5-tsbx*+*_uu5ci$l)ZaICHMsBerv9m^+q(1> zaY+Bl)ct*_0qzG=H>_fZ@s|FZshd(!WO+-s9_Dtjej6Gs-qtfD$Nm1cK236h?%=$m zFE_cpqc$hKqikCZX z&P7F*kM&AZ=Ze{C9M_jHx5|2DOq<_v-EDI1sXL5M^c7~hy{Sc(PxQ4i9oqAyq)+vi zj!+%eaC@H6d%iEZubLHcLQgZf($cemC-i!go6%Tg`CMOZauq1cNqxJ?-GY}mexV;S zxiyoC6CX&Q?mXg#m|P|94Su1gnOtzgXGve^pBdESNbm|=VUJYBdIH6F2&^j zi@T3s>35i%R{vwt*ZK~V`>uaL^0#`!$CPfB*oyJ_oqpQnPFs2>f2Wt9mAY3jE1uC` z{*Aac@%T96j+mSU*yth2Kk6%V$qjOj zOa58E6Hj50E<8;Uzvw#hA?~j+Imy51`%Lcon4)B1%)k@Hq+2|9eUfHWnOuu~eUfgR zHo1SJ?uHTMZ+gkQIN30!nB1>DDw8e7CX@TBhb!6N_!o0>BnKKtnUnK;pz&}3c_Hq~ z4>DxlblUiwGmv=GS+m|s9$<{Z6Mo#& zOWsS4F&xavmX9@>m|J6gv^HAA8uYB8Z26}XV~u`M%<&T_afaLEB0@h(jx&BXxgJA) zN*-*)_m!3>`x`?B8|BQkiA;N6HNp6-ztk=35i%svn8(MsYs8oykwcPlW3Z70JYV?YgUTAI|W(+gA9ri&(h8fnuQkOp}bx4X4lt^5g zcpoh}#^^{QZlkzoPVSH~M*C>VZJ2ZEkc*7kagsYVe)*6**vCOq$t;BC| zj7cW)b|Rj`T_6%x$cNjN0r!1;h=T zB6WA$h#Svbn|L;{*HE{yeX6wFjr7e%)->YeSZX$=Gq=XN!ao|i+03L!nzs+xj(P8T11GX9~jh9W`h=4Y~ zmBwMI6XQq64!yz{HB+|4GXwI6t~REa+-rG-L)RGBF-I-0;J2dtncFOO*yjvgYrKTm znffn(RL#&EjSX|T1%+vxrIc=sxB_e3gT?^KaXB9}(wN(fbeo1gXei~J z1N(f~=))Y<$Pf=3Nz5HnF2>ch%NS;ITb$A0HcQU`^pYXqwwk&WT(_ONv9+YTk9Fj8 z>(E_BhvdZPaeFL}8oe;~sGLWN{ycP#k!Er+`MZWbZagA6F7*?}bIi#x_=MrR?|8y^ zjdiO;kdmT2VVv})GsKf!>af@NnRUk$s>5ExZKvFiaUJ${sY9oZ>af>X!IrXJ_IC04 zH{*Kgg?;|bh^^`L`L`}UJ9XsqZ$=VZ${PKxOO5_!q_J)l-hP*&baEend&($e9qqNR zPuOQXXmSCePYnIL@w&;4t$I50fD!2E?AzzM&lw|39X&PIVN5YOdTOr2s4zKtYOcdrVRH1GT!*pQyyk@-Z)!pg$nsMAm_quV?tBVw`8~PHekxci7(UUnEStp0SVK{tr zZyKw;x}S!=Y5d@$d)tVvB`=gN+VZwBnK|k69ph53uJ^EajAcH$!^Uc_Zosg^Mn+v{ zS&kURh+=5{yD5Lfup>r|$vr%L{ICy<{miXGetRrOjh;@Nq5qS#V&$!KcCKb4moMO#FndsTUjuytCug0hnJC;RbstT zHS9~{1?J>_!8$pgeQ*4^g?!5S?E5ZrPp6LNp6`u^*;3AD-*@r(gRx(F z;rZ+bW8#&aK7Z)qvr|Vte=w%7rEKdTy42wZ<33YIaorEb!zM><*46Ti@r2Z&&0NFI z7%%$x{IQGAAB~@+&br3A)%ei}Xyx{_Ce;zw$K)<$F3IHT*>ar8^sGRiNNxi;(dWo>>x8hHZ>pp+%pOPb9F|K-8B1i^wVd{F5!pz*k+t`hki?fJi7G;-lU!;C zqRfgI!k%v^CAvG71XHT3MpI1>$5KuA<+F#8omdPHs@ORu6#w$;6V7-31d>!ju8A#> z>yU?r;@$E|lq&jS(mu*%rh0kkaj;ay-qGaeAaYcMlsp?l^cwa|h%h*oEJ(tkug6fL8Qo99zn zqGf4S@g|piKl}8}@sWY#zr{thIPB`QH=NXBGa=XU4j7U*^dQevFHMjZ?>~mtFtxum zkoH2UNPE6izCOuDXAcHE(>on~^Oc?}xI9Hwl<&9Mp`m`_(+VmZX;nd5O^{Y+tzl|q zE*=k*%dTSbK$d=NX*tIam6mLDw&|Kz)+lPRPb=tp^vykdqHHnpFH3&!NGjX45rjw5-UMk+Q zL-HGWWCo&b@e5|gUs*2kULIYyU-J1_R}m5@D2bn&E*{Nd_On}hyjGdG~C#N*RfzALlS=J!i-uBFEt zmE1#9`8~96E%KIj%6~tXb1gmI{zxvnNBz-U&b9pC_<7$Zj7Tb)|w`B@1#Fz zrtvTxbA={O^`q;e0qc<={?U&t->W6d42&5K@3fE-vQJGX3CZq$NFL>&e$w(%tgEGs%)Xd&(p2edUzO=u#4?rCiRJO3Hmx zk^l3x2HAMZ`A2Nlg;7fqQfp9)rN&T;{rOMSV&4^aYHvgPUs&tglG2-Ri+TK?+f%-l zzAfo%e|iX&$G7gjsV=0IPp<9v%5WjAO#3Grm4R%!jzHfs z{1KZ2=nJe|sF5LF295V>qh1zn8LK&#4Ne)e;KHk zPi0b1ZCctnS9C4UAF-iaPGP0^JwIF$#1-c+32EIZvmw^P#xrYmEeYB9*3q{myXQ_? zJc5Y2dwT7Uc{_LHcTaVI;~WE{5pT!_ZQ+rL-_IjQf3t);IAWxf>>+?X1d1Y*A;@eQT1oLXnpw0m`qC7|X<{=*vM$zf#3CbSiV{6* zlLKiDF%o^`8C`O(@%uL2{ZPc~iKWS>g?)Njsk_fVVlN|kDv8c3slltfx%Xs+jSbbD+`4CD~#?fzK z1No6L@Nvjhy#0ZC;T=StsyM)_VNPfQLRaK&ls|i)HC7HC3 z*kvlpg|47Z3HhODN3MqF%Bim@+A%oV@#~V7A`sc{o>ZNZuHK}a%G}kmGXm)87rOiQti!ST<9%kW2RDE`4bfbmAF49%_-|HxIwQ!2T>$g6%eU#+yu)A*zd zCpmmN;gQpbdWL66DVM!TbE#*Rkf&a>E79;S*v`>qo7G9v8JY&qG%|hVU1u=rL7KJv zc-HciR-STrX1Vj*boIk6fcchYLYiqiXTtOQ{GaW+`agde{zy3|qqQ|Yx6uXpH26dU z?*ImE;n~~DW%lPX2YB0o=1kvqBYTZ!X5E~tWxvpjeLlJDahkVv;k$-*uGgNHxsc`g zSL#2O>i5>@t{yrg&kM;7K~e67w0}%aQLfHWF5*T+dgo6?y-ZQAA4j?WcN^+uiZg%D z57|%zd;VNVOHr=h@7i2AZTH+eW8e#=I=`IS#CLU&qouRga02-|k*de%j#$rJ;oA#1 zV?xxVr0h5UE5r)#HsjQYPxOIMIT zN4WtU~FL@$lNslR3;qxhriuoki zAOCz!Oh-hm2wEvrF&{Z<;&a@~(8cAGan{V1c$*_EEvDsD7P1URDh(2v`L|3Z4|2u7 z2=g=cSuWCk0#pP^6cHan@@AksO;yF$b)EEK_EsIxDfxYE#ZvOWavbHJ$n%EBKdnc_ ze8TUMP)&cy_IUQ>p3_K{yLbf*%lBwiywk2zPH(*Ew5J?@#cGIX8Ry0Z&WgKgJ(gtS zp>rBLXxB%AB9 z$mUz_JCb-U+vW@Sv+{IV-3EaQHlgW%L2at`yC(;y`Dk1~zsp3tL zRO{WC<#fFFk>q`Pko-2j(?Nc4pA;T6F@e{J3G>KLHqSF8!CsQ@JWBi3lSy*7mFy{% z!eg?lq%XIFL~0Y&yrV?XsVWx0gS^M&p{ey$K_!tsb+aVCts&dC6IGFLDfyYsC6u)6 z1q-eMocwcLhAru&edS;B^(e8k@36ndT#dVaXhVz#ZfBX}EbNp$_r(^W^>Fu@aTlZX za1(s0Vi8KEiTi=NkS)-P*%E!1Lvp&ZaPA8Kh<13)$huQnjqPf$l9m?C0%rIV$lQLSNAlXmwkDv2D`QcH5}Jd)>O z=^6hrud8_E%WKDXr2P@Ph|8Ia-tm<42+C}5Y5l}U@Z5EcmaFFuzKbf$DSMnoi_W9P z;NHi7=YwYjZ&*LynDO+*|8}(a_OEa6$dX)0`$zijIkW&)7G4+XaSu)vQqsy2dA%>j zRj-NaaHEw5wOHM5>58<{I>hu4c|K&@)Xn}cei6M#XK;cJV^O{6-2*_7zyzt)AS^UXASi&Ih`5ee}G{|lK0c`j0Bhb z0knyV_cv3Gf_VP%#AakUz7HX-1$h1}lsr5bP9<3xN^;u&;>?g|D!LN8wziz>e6_yi zp?np*J$fqUrKw^mJ}qJf=oz4AfGz@E1iA?HO3*7ouLOMs=qo^90oq^CvrJ(?1OFqI z=r~}2NCk$9bjB>k0>+t)^BHZ74#uUxNcf{vZHy;?iZ~_e@zmcjK~K~MiP^P-LDN%S z$3PFke}Ezz2je!zER{TDX%EaAA-0GsVy6LzMVA1d7`#wy(+XlLK(C$F#PZ95pU=Kg z9MCq!-6{@hw>8}Xo2ck$Jf-Lty&c+T-4BWu^@+icid+#9`Xcbv*r?fIlP#3|(R zwm7Rr4LSn(&li0O+*D~ml9ED_l$5hTDxsqPmZmEQwK=I);I7fZ!0VzTfOp|%LVdX8 z2esbrSVhtMP8tmPt7Suh?r|x=Y`h;gOdo?c==RZP<88bLwMpY%L1}l5&QWX%N#?5y zQfI)=)N$wqWp|%SWgY*nE>17BFI9Gn>zkV4A#dyzNP9i%n5<9Cnh1J9>S|@a)?@TK z&~rc^)PAVE5qMYSCfFOuF;1D#_jb^qR^zQDC}*fhR{k^ZQP7L$?Nw6sl&o9v|AhWq zovzrlX#2l_8%y3(;`Fz}PAP?4_d;&BEd9Z0s+y(WJ}p4qg6B%Z)GVcJWM6f@RyS*% zazYz0F#8yg-w5NV1~L>sT_N&aOi3I*{VbT zd|G5LLA0(dL7Vr{|1<9ybs^HeEwFqWFNy~-^ERs!!HunKtAd8^o~s12de(zvQZt6r-e)UI&c z32$SjZBn*~cbj)=Z=h8x@E?T}LY~x)X+K@^s`jojXY4y#E&H$KQCiDAQp{x&ia+IW{Cc8j-?dgv## zAMnQ56WY7ufX!`a@G(z}Kd<=!IOuLiV2K&a&pNHYq122FFy7Vw zHetB2TkKtsZoDCSWKJ@+bFH^?san+I?pek*?dkFbhTCinnzhz3eM~gIs33R}^LTH$JSo%_vZZj@t@M%-m{(8E4)1 zfc|904y1ZMX9wt)7Cvm8Qs`~)rxbb{e1Vz{%L2?)PXZGhTa7&^!;7Loy=p1R8yKq? z*EMc6lGXT-$Bn)EiHw6Np)v8Wk*c=h$?5`yFq!?F)jwGjjWSyjZP)Fla$ANphiADuk~@;j=FET>TNIiS~7?=Vo`%s9~PnH8`vTx5tgwbVga zJ%#YIiByuTrDT(~v;z3hD5AHGBD!{L8_Mj&dvK9s4b|e!u~>7}*W5LhbmMsD3d=^r zk$074i!n5BttCrY&Ep{>b*kS+KsvKM9E1E0%_ZvCRFU{!GgKtC^Jhb?Ir=oyN-aVs)ocG+~l;i!nKBt!10Bs%jeOw+hyx{E4Py0VMwg z{RPjKTTr{T@DRfuJ{eCQHb<|Ax1D1*S*gBvSa%!xG?df0Eb1@T(>yYNW-QR(&dgTR zjl5YmqQxFbc?E6$VBPB|+mVc4)oti;#H~irto@b~>aLQvttV7h8ewzD+txRXAM4+> zCaa%~yV3G9U&TN3Rs1tw#Xk#U;k*J8% ze0`nf8Td4>N~huHEanGC9@bg?vZze|1Ikcb(Fc?S$15n$ceCfgPkQ5G;Gx7O;OlX} zs%Q1LG5gKbpFqjejb$0SQlKBKy3T*EelPNxsecxA3$P&Q7Ua7XbHyq3MENfNQ!1@5 zr_}Kgl=iiPzmm;_xBYdDkQb3xZP-c6Og$Z~I#a(m>LX}}j7RzTe`o9!Vj1Q=oGLzU zoKk;2@JPfE;6Dq}1Nx{fNyVTqj+z^wE40e! z3eDIv^-WPr0)ki)WJ-=qT?xy}qOJuliMl;ti!m!`ElTxS)Xsq8JU)-}_?)S)nL?!< z(q|tmhx9oJY??wPzbWEP(Ay(E0{%7P>wskR=Ho^(dXumjv-b&u-r|D(bp!{78H;Ac z0i&iQ1ol)YZtSTT6DI`vBc4=5KZRBqf9)>k%)kOQC6i{tY{u(&Rvd%3S{JCP4#M?# zlR|;I81e(EVZS^uRjaYL1s+gmAx4TbTC@(ogW5|AQI__3wQ|E za+vlB@(MFHEPVjl{1Hz8myX0pP&cE+;B(~DkTj3D74*MHJO}zH-gIz49XxWYaX{@k zg7SKF#6e)r$X9_Ahwp&AeE1>IR}Fs`ch)7`M$WI|zGa?l9i4oD3 z1M0VUU%~-3Z6wuV_=qo|ePP76z?mb@0*i(h!Di`j5p+PkdAMItn@(?xIH--AajR(4 zC(RfG$z4;&1W^P#DM;~iWL5(g&Z`ab_mk__yUmS36c=3E?p#8Ouu;IZ6)VrK>fkjOVfwv{xiZQ&exdQaM1<|0D5hpDL`suM) zH+5~?dh1O6-e!zR9!mwvZ0w$PVhvpyOf%IL!E{Bh4c^IXXn_*6^p@ZPUKz9W*vfsu zHtj`QnRY;1xZt_q0>6;y{|xRa3SwRq!`Nn~-|+zt1iqnB`==XPuMoeL zaxSG@hJ~yxWOVZ!;^sM|iX~NMs<%tadKB{7QHXM0tCcFW7wD# z0PR`iRgrf|*mm?F_1bs!d%_Czp3`;ZLGIH%j2pGqhr0MNnk>2xfqN?0K8sdvRuXmf}pODEB!&4XAH^2l22gK3b%!5uq1{@8Pr^ zoMS&+(Qk_m&Z~plt%J2Y#c$I;3E!*N)c+8U-)e=$Sv$B4r<5Lj?GdMxsg7Lzlu|#1 z@Rt-Cfxp$+Bf^X&WpRPY>h(=qBMz!}C+~=OnR9uW{lCl}US|I|d%A*)k49#2Niw)z89dK?!6Wkv9+QZrQT}bB>EhsCr!kVT|5E6E zHDN}{;t{>JiPnop1FyY!B5-0;BwB;6UuqKrr*-}!thb7DFTzO1{y-~U|GuP`CYnS9 z=zYT0%PRJZYG4QCR`HT(0KP1mfUo1feOkp~wmAYDRlF~HA=Ob>s^Uw~Do($`dIuqb zyAl$Ah4Kn!j8uB{4i|$J8{}D#1c@oiYS0Cs!^I_#hYLGn9b*&YN}yHTr$ix_oxpIM zD3IkVjPEm^V(g=mWq+V5;#A6OI7?DlGKM7uESb)dnJlrf#Lf~2B&t}-*aQp`PpkbQ zIl%PuOdn+JS(VD1rBPnU6@X@P?^VDsDv4igbRm-Jk$ZLV!4HCx5Dx*u+?$~@-~*Qwk!dCHPdS? zkD@$1t-nALXQfobtkkM0Ru%n~W~H>_trpZVowXU(9k9HJ=}haRptC@Si#$dfqn**g zSO-KuGJa;Iz6bn9Ut_9XMG2X&9k1+0mWw>~p z=_lb0SF1mjf4@JqRR?=`$)8&6b+$Rgo)2@r@3Q0w+aG27&sg#W+kC^`&amWX&gB=T zMF5rAKY(k&7!^Qu>BsW^EQt+hfK43J@c}#z19%(;?7#>a9zfScN&t<<@vu=vI!iL( zM->-=#%#cnh3ui6{a3-iRn)Si0TPTlrrj)G!E`HIu4c*gEZM-88=2n3CA@{{+qi^V zn7)%s*v=)~$CCZ*r-S{x#Fm2tshr7yH0Fl`(O-~+izb%0uzV%U+gSbz<1xmwKwP;& zK}Z!AM5zWdrZdiDbTF<12H|O*MC7tNh~~q`L5GV2EI-EdCv16^@fXIhVDcHsn94YY zaVFzzMh9aZV;keuj5`@0VtkzOdB(S-JcK;&W_+IUAfvqp$yYMAF<#BMj`2Rmos17L z?q+NWrBqh~aZf#zTJk=|W1-aJW5T%KfkEPuFlq-|SbxxUOfLmu)d=S~Je=s%aB80{ z&_N=Pu^>DV<7y^otC$^5^X>d_8kv`b4?`P1#PYr2G>V=FhKo~>gbO2rFpM#hF^(}6 zs0w=ojn$0vogd zNDe$1#DBpJk*!&u2! zWjqD>DyFwHt@*tvvPTf!HX_rHJ^N8!svVX=i#r<55P@hto1+P#*suH&vM3X@#`tuSZ)c4E z6VV-vt0xehn?a~w#5Rmo6Nx^~xNQ>o**=LR2bey_sAO`{!1#-oh6*<@LsO_r^U?Tq^wk1~oJ9+QljjOC22jH`3VLp#&^8ILjw zJhFloW{l6}@-SV_*vi<>xSh58nLf%W@;EJHd>*G|x}33pS5?fK+wKhsAU#bmZ;%w)7prgm;+x{c}mOdn-DKAAj-DU__#GFyj50LWpbd97nDAOnfVT6JwMq%0gu^&Y$)x z$CX%hggRC&Rc}&vtNpbpTA_BaR;Asf-K#yOb!h+AzSMf@1NEtTk=~|n)gRJ3^w;!b z`dK~Pm~JdKUNQbqTv-`RHmis;6x7+V&zaxGrmW7sj%TCMRET34uu^83_Yqj+X z>p|-W*3;Gz{$u=S_}l%j^k41Y?*F|1N&jE`BLb!bR0Qk^_&K0g;PAlgz&U{n0?Pv* zHx>n68@M|#I4C+OK4?VHpMvs&wgr73qy-NQP7BTs-X8pF@af=9A-9L@40$x<$&ika z_#VT1Eb6hU$EF@bLMua?Lt8_4guWK~QRug!df4!=31OLG{|sInwl(bUVIPKR;ep}h z;jZvC;kSoB7XDj!Y(znXGom%(`iQ3@jz)YJ5!f@fXF|`$o-2F)x#z<@KkWH)&)~?o z$n40%$jyk#Go0+S%q)#wwQF#JHb5zsfk0?PC}P6V!v(w{h%lj?@DS4q)00^HV;#v;+5cZzn;A=zQuecQG12$1 zw=X6U{cIEA+o^5+`-EO~?J7{+9l9AMhXSiq7~Ob_RhI9L+R7{QX+tlcn`{BPkpzS&5$KAkW>jj)X6 ze%#B4nZ9Nm$z4p}#wGun>6#3ZuVy+anCJqgGaW=f$MoO1juk9f&TaStw@EPD*G7}& zifM#bl@caTCfvkrp3dc|sUXQ>Zu!VcqStX5hFwf_DdS`Fh<={yGCqXpZ^{TSV*B}A z&a1fAe_KfM&;^7~R^0<^PoXPoYaLx9H{}t=_91z|_`d-6PkIO#7fZM$c{k9J`~>jK zT$02jJPrJ0@N>Y$0}cXf`FeS7>1&`1E8YbD5K5M>#lH(2kxN%oAlp2&h_tI>=*oIJ zmFSoIlZTc4J_N>cj(@GCv^V$@_6;DsGKW0h%lMDJBss&l-Jkr73Lsp+;FTf~*ea5NZDJ_! zDlr_mN{j@q#$)Y1k#jrLH*cUa|A@jW6MRs4Ya zB&s-rwo%1daRcy2w1+Bw!qcy+_*vWx`~~Z)Dt;BW0)NAuF%^#t-vLyVyMU^4H&9cy z0d?hGprPCc^i%!yc;#c@VC55Fg7P0=qH+S5q?`mMD_;VKC|?7I zDyM+Mly8BVgZg*{DI?@ zKw!EO4E&SQ12{nm1LD3F@FFD=I8o^hoP;NQRgtOm1!gJzf!PZF6`sh!Q@X0iRR#g` zl)=D!B@sATNe0eUh5~me!xcOU093{O%1F=;0P!rjk_!4Epei0#Mgw;#V}PaVILK!M zam}jfpeul?s8J_?b^uke7_TW;#1fz?YSl@=Iy}{jUjP7A;Z$=#Hvs8AP#$O(5N~l) zCxdnaRner<`+=K*xa!qupqB%2)vMEiYt$l0t^wi~lj=;+>wx&}ky--!I-n}9S7(F1 z0f={;sB=ND2dZL&Iv?~#Al{*V^(y#(|=pekNe%YbjFHsDWcCFDN?G3He} z=wE>t^XekdLR$n{(Hx*vAjZ751hfvsnAhq+`vEcLH795*5My3j3OWFYQKvNm2Wm~g z5!y0fiq-;5(=G>&)m8$tv@2ns4Md-6ZNOY@6);b`8knzL1Dvd_15VMd0~TmE0H3SghRvoT=Rf|FeK-TkUS(T5TKfdhK4|joN*{TeZIc zZ_{=Hw`dOlZ`U3I-l6RR-l^>dwrh{U&o-bc?$I6xeJ^mT$nYD4ID4YsU|^QPqn`KSbd>hr{AiNG4hS|#(v`~<5y#j-(tT_mSxs!tbesWZ4LKt4j3I+5Ev5t zMevG{t3$Shd>-2X<)exWyoz8Km!?18Z7!(Is+8~*3;T@md)$40&x z`F&*XUY`YPqPMEI(yuIh|1K(_-+Ofa&FfW$-^^f;Vg2;{&Fkez^w6E(CHU>gxqmJ2 zcCJ77M3QyQbuQ;I6}e2qs$59FSH@=sK1KKxV~w7PUDhmoO0X`MVm+RX&m4T_;xiAQ z`S>irx_dD`3$g3E1fNUsDZ{569~(Xu_*7ywt-{BSPc=S^uq&&<$AQmce3sx-i(aY2 zryd`t$Pf+qEXA(Pg%!6EA2&Wt*u6Dl?Ole?a(r6wxeTAn@mYb-O039N;BzH*=dB_i zt6V--{(P)+`B?QQW2KvncQa4HT30~Lfz}=CPv8FL_XP91g}-~kx71&5ey=jWcbVT2 ziqr>c^82LuovcfKsQG=d`Mt>eZsKqJ8pe=zdHjthtN1%ql$iW%Q$N@I#{XsD@;c1# ztNA-rJYar5WXhNMNxK&F`*M6=E#_f8Zdb0xQ^8-02h_9p{s|vL3D>TIe7X{#U#GMy zpKI+(wZ0}WT=^#GR()&m*WzP*J`6dfw<|S9yD|%(Qhes%^B_L=+$EehB#wlI!adtVy+8i%Xie;3muK_Qs=}9Q$C{7?Q}6Wipl&Q(_Ih{Y~FE|;x-k-fxTYp-WND}fwaB`tVlfotB}Le&yjd>0Ek%^gaxTkp);e7& z!sTqLuPSPC*E;I$DXGHgrKkfNx$m-_t}44Ludcz}0*j1Fm$PAxt+uGTy3y|D-iFY( z*}&%58r)4Tdr76sZm(~wak|UqI2s)lwRXyXVinq2%xJ2uwLwyzDhl%Io9gT?lcP!$ zyPTEw#>SFLX9F3`Y_d1eH`=9g3BI!`-416xr9>^L>XM`Owz(XQQe`?tcfxRrt+A%W z?xrNv;rRBpLF&0dPkkD!4!1wGYnTbqR?TZM1E6!W%($P>)__Lxmv(*u||nG=mMv!vmr)z zYdTq@(ITUTa!Uo_bfK^%m9|GJtp&oSqYWI3fu@wsznsucT_X4qZ?gpLF=yp|5SwMCh zj*vNBc~uS!m11Y3gDzUrw33TIR%BG8>v_oWJOMwDHPVbp^K1!fUB8G-A-z!BVQ@BM z-a!%?5infFzQ>6S2NC$Lbk=e|f#e~UIv(T1xr}8X8=ERhfOSX6&5o6}XD za}Gb{9KQ4%eol@k#iWjTc2usIY0mG%PWa-8*Um$Md3uAMK_?8zdpz7msb zsk3;-WZ`x?(bPOwOc7<3wRW2eNgAEC_UQ#MteQN#04WK5CgfauMbjdZ71a}F+ZQ>Q zkiANxI%iX(eQu52j+GAAb|cAXDd}v4!mfPIIecj$7p+rTh56d$sAzKA=VVbUc51j$ zrFn(TRVYeY8r}A~5e3+ixSVx`Ska2%OMcVrGM&m+%*yFD*Ah}k( z)Vt+^K2JD#VTX>UmU+U49<9gsEIS;}n}7b&%5) zQLMp&?yH_pq$0|iJHr;yAcK-wb_A=KWH>psugh0}M(Qf4LUwFQ#ghaEClh@6Fhv6q z<*jzQ_?x^U1jH9zd+48fUSL^A8C*zbZ+2AKF#~jo2RT(9wG!qlT3fvntZcGQ)~ukn z2xjHY@!`$=JYp&^)$d%>b7j+;YTXW+wAfj$vkBdhQ|qW);*~iXy(G7S$F>n+XKn2q zhkY3*ZT1jkWTUpDc42}fzN?yy+IVdfj{3^lCJY7Ijqo_-WiA)-DHAf%?bLR6Q&xqE zLz*>8JC3sv&tvd*CUj%D%EpeNtg+UHi>nIrzb8kU2rF$A?utB$$a#9jEJ^W$pmAF2 z^l+6dBMxJTX{wvEftDIutyfq^LyXl8w)%Q3kzQAbu$V4$x*V9PZQS+nZ;H*_OwQ|< z3Sy2qTGNP~Wv_PG8*8%aD{GvtM(IeJJP`3j9Gn zN2O;Kz?x_73>rsFMmXSts;thD@4$A4cSVgw)f5GuSJzcl=V(M)J0cgFHaz3Aph}cg zbsfR^4ts4C9KCeja*V?&ToPGTRf4a0bAQ0ilU3DBK}r|R z=nHDn&ZFUIrmNi6*Xe`8{4gc7W*_;S@tStvE7ArrH(buS_CJv9E)l&S0R*w z41=bVDQL{KS0iky;w#F9Zwyd`-lz`fGUVjB{LKkrmVIfHgLGH}?X>K27*v?=ti_e# z#)$Tax=N@nG!IrwJ4BysNaDO&TLUGMlNwgm7LSA*z@x=JpRAnqJZ3>*25BS-Svl+T zos|gnBv)$546s|u&-zDl4Ke754EY*CYg zHk}THe3v1kGVHs(47UZYFKUu1fvJ31HV!!!@e#vh7euq{2!An`PRHf~lSP%lMCd|1 zz%)*RcnYZ!GwjP)g1ow1Tch|&@x2b^)#fXaSD9#ZRZ3&I4X4RWT5)Af6(&-yhGa85 zk>)l2-V%Nd(_h1=A3Y)y8#6l z-KCgdx(hLjRNBuYu5m7#W5-;I-4XTI1x%)3wYUt^_l1r4$Pd#ucBJR=VGeqlle?Fp zv(38eFnr{pOt=1YG|rL1@Ocx-xs?{w?rK^AiaN1h|XFl@_okdHY^f;mMupB<**E(%jhP>0!EX;mBtPJO*U^1;& zUPBaGa#)2YyKGes1f){nv-O}jn)ibg*!d*xWOJQ9=AB|Hs@t1}IAntblm;CRup4ld zx0u;iJDnHORdaDGuoB8c73^6Bc959XxydOqbJin{fq0g^!REk5of+8pa7FcWsUuf9 zHYZ!zj&*g2#3%-lF&Rr~;k84Wg@Xiq;ZBCDbH$PCs1MI2@!=^{Z}#D7-Ky{|SU8$o z;)$rSUe!2dK?)kpDBF~wmrSY{VJc!X+_uQat{7Xvh6<<6h1HBioh%{*kA_`AFNi{RQmbX}rk`$2lns^qmkS3b?&l7kN9bW2Q{R~1^U1Wl(LVK9fdrIYEL zK-}nz8a9woo4L}-qWG?TvJhP)rWa3=O7B*O{h19h*JW#9o(9x14@2X_%gD&rYgEmF zFtcRl!+ML&N;5wv&KptNJo8Kj7bOpB7IxkklkU9t$(Sv3AXGKOEZirQGYM<5vP<|( zmOP0vH&$CdEnv35dk8Dp#?EHIhSS-A`zNfx#b<`c%u@Azq6KbFU%nopr;CnDvuIx7 zB)n5)N`}r%Iv6RGuScOgn^6|hkd)dw%wN(Pn_wo~@(YFHRgZ?JOyiW_RJ_gwhD+ze zVsO!kHt(@{Xw=yjA-2X54^DaQasc8M*CJdy@FOYmI32SjNwHI$Mc1pq4b3LpmUY?Z zI@~pmdU?X*nE|8;rejISjU|p{WX#jKo$M6h>gP=)ACsGA^6n&V8_VsZa5NUuwo%kF z(wdfoA#ca-vDvxAF5rwW8DWlB+-blT9IaDaR4Nrz5l;xi_46_%cDFQ{Me9hXb$x@= zk%L3LI$?qSeYRmd%-@9kMpKs9qVvKp;rEARw`-1-=}W{k*eC&#Vt z)tRBV$gj08r<=lTT|xGBBeJr{>f&SjEyvygh#-2yG0CLsgKP{*+p z?T#BKOy=54u$huH-K(Ly3al{0TFG#5%VKKcY6^8F$4G5JYnD-heHnk_vacWwT5WQzvjXR~ ze8hqz^bkoG(G*)_7k)OTG8_cq#Otd%%;aR29;I z=8Ji*qY42U+n1WdStf3B;cSu5^rTka-Iny6Z0B-QN_P%CYoQd;K=MYGboFx)IWy+4 zLVM48OE7oR3d#!aJnc<{;nBH)^~|L{63U7~eFRXPhK8;$PkOrTv@9v26;`Gcu6f2ot zMu?3>xOT3Ldlkrl2uO$>#DR=BNSH)O9LPWfNPrSVfec(C6hH&kg`LDm0z^Q3eLvrG zs(!y;_slF;k#KMR@IHQBb?SBM)TvXaPM!Mw)|gJ&X~z*JW)^p~?ntKh#Zzv}GOc56 z9Um~&DWPqPjzts}(x?*nLvaFi3ev*6;rz->+6Y+3rx4f~Alh^%W>zE1cot`Sw9Oc} z(q=1UdpmKwwIgNUB4aW~3ZGdeO-s;@t)E(7TVzMTxv5OV32L^6t>Cf6^#af&OFGdh z=pIL04QYj`wL9jS$D-T4?;5{G=W(UdT8%T>*^Px{1esbfo@KY~lx1aaw_S9G4U?b< zw#C+UL@5D$4_5AsFJV4k5WqKS7;g!;7nU|S3U*aZ>n%G&V(id4+_P=F1J1VA{ZPfD zOqybJ+9T5cG<2$got*t@2+^@})0gpZH-y?e^GBaQKCMNO@+#*c@w|u90dSaIcctBO z$rdnAXDPI@ERkbDdGx$2-%ZP7jE-_B`mzQAoe}Gbc_rsQbs#Q_Q!J*ZXi}e2oGzIW#wtlb z*5j^t^omKzS^;EsO7T=j7mzx-;&a6kxrHAy8}n>zJ-V&1QD0hRqOF+`gaIlfvD)T> zEH44O7BZRFjk_!q>x`;)UP`lXX?F3BDV#a@!mPY{)|rV3p)4advDT9Ic3G0Q)ml5Z zz#-al4nK1nACWd&>Kv46k=FMTQ*GNsbh~Q{*EiP8KWb}PCfMBCf*o?^iDvlXv^s4V zrdIMa=^QF>=5}iiEeF$>oKy33r?s_)z?r#ip?030kVci5-E;~M_%Y}rvfe{|GJ-e`o4wn~mw8i0X$fp$#75~+gy=hwWQ>H!HOz#5ZIiBv# z5dnFQXL@r)fO2>es%EaL1SC$A&Y;MUz>1SQpZ-$(o&4RfwvzwoZ9s9y{BLU<7{N7HdtOIg60jv|#O8 zT@&(5H)Z4qQdDGQm}#@4!3PD87z;`9O!+l+wBZTzB-^q~`ew)$2jqe6i~?vCz*_z& z9o=n`(o3r?+zC9*_dj8*Yp}zqnZ-FB)^LTI9gKxUl_m5VS3e9Svi5*vh0U@@`EQ$J zRi^yCFjZ^&<&+_dK)#6?{2JMJ%HPOp1=bZ`;s_VlX_<*t{zVSh?Nl^+&EfojKC2Y> zTg&5EC$3|mwo~^k6K2|t**UrOU$};=x^kRvUBe?U$c+GnGsg;J)TqzdW4%ZRgWf+!>f!OS%#$ENWOl=txsug*uAZRj=R z8JjAp@$$K|UvqA=(2FbfQ@GX;rf=cA%_K##udXiMv2?8MF*JKUoLsnW#}>(9b@_VI z0;g_B0itY}K6epQoP}OWA^Q9x8b<_=<2c8P?lE;|HHO6yDU8#DwoaDlN(pF16A!Os_Akq7GUZhKnI=&&a^>YZD9Y zwyN>C95z_fbFkCK^kn6dZ9!|PQOE%p6uKa;Q``FNrsuYH;mSL`#sdl&!P%{S3i%qT z51ka2evj|RX?zWciKP)uI@>b+1jd&mvgwH{t9HjB%&V6z9Ct$TFsL|z#+L8c0Z~yG zHMh2Kaie|1_&Q9iEOVU#m6@d~*2AR&zmEX3`Y}@&Z>Nx`qLU}<$vhh$i(nqKU)!FU zg^2tb5rZz_$dN_JnuXB<2bOp%vZIRZ!!X;z`5Ba)n-F+~74L9Hv&z z+y;BbzZYJJ(~_DiR&HDQ93ZsFfl&oZlNptQDJ;2>$;RTE49K4BxwEJrg~pPif^Whd z5P2vs$RrU{#q3xlZ<+FHAL@%)nM85n~r=5XWHoS-sHRFag$1wQTY#v;wPzS-H{vvw%m&|(#R_>Tx_*+$chJb zL~72x;YRB=>JqZWwt8-m4cE1$L0UilfUQ?w92y+Ib8A#^+D zy=}a5gwiM%mg!E$eSv;z%gzC9IGfmV+94sHaNry*P7o6nQbz3VX#el5tW|g zwom8OoZRdfWyleiU@nUPMQ{OdpHv?(Yy0pYjG6~gIa7@@~DWM$8O}=BzI(GQ5ja&LJX;7 zR|(DHjFdozM_cpQB6;y!)e=we3YP|Pr&N&bI@Th#&4lgDOR5v%0H#gl?A7j$jI#{KR>+Dw^IqFCaGE)Yli{_EZ` zr#h{J2V0meAjrJbYCn-+n<;Y*KCH_dmL6^0aol@s+sP8XeX1G9kC-0lrf`hF3rm5s z`T3P4sb;9L*UeE{5;~sFTkx9VJ!1Rh3hwSpsO`2%h%ww9ki0RXLqs;|w_;S|J?n+= z6o)Jo+7xEmphM2dRRYG0cLDEnk<{Z^~BjHWDUVTtbBXu}qRMGgv1b4C#0s&dI%;oiDVhSs(+~L=D8nCL!jH=>; zJTfu!sg<=juJSs|Bd1#hT_EL9O&dBYPJo-v5`j*b^6aPeb7oURg!{B&O~QX60v)8i zc!H=>t}}QU@V>IljqewADk9{KOBr8IwjF>1!Y0+WI&Ij-&AqOOYy&q%6q|@^eUmes zO?fr$hLKJRqB{ofDBxH_&BmiI*U1(>?Le8GNHbY0iv(ftWq-?r^eBteEw&w*P6_YD zt3jzo%q0m@c%^{tJDHcdeWz;upwhh=6rVRohph2-%$9U!U6{9W+%e3;?Ci5JYv9T) zQ??`0V+bKD!AP{Qqhu4bkWck~tt}d2-0lZ!E3Gv#_it zm9vxD3?gORH<()LGq5sZG|J+dQeAOd#Is~&UyUBmhDsKhLD;k^*! z@aW{ms`)+5W2odJh6trMM=)S+PtL*E6Y|K|+I3zjvAnLlTcJ4wyIDGa&`gs}55wKc zq8%-Sr7aM1#GLmdJD&xu6!W`{=2aBa#hEu-F(QBN7!)-mR&nWx5Icj6;VDmvGB=gh zy%4*ZW#d2VK{Mv5VgoL;?O@a58joUJO-gg}OMaNRR#x#$f|d*~MuU~LTX@|@R_8=` z#gxJq85<5j&3Ft*zP-uzkPO5``` zXdH26HM1%jM-b=E8qR$dJKuupjCe}&V;p0BY5g9M@PIj9=G8B9l(ji~D@7ELlPs;% z3(#2&)*lO*)`zqe8?TeX+iI3p!^M?VwlIZ_@f3ilbSdbIv_eVUQW$H|-0OD~irW#x zW1YD8d4p~uB;B4me^y&LUvauY0i($GXc!ug5UMUsUzp;9-c`MiE3TCTWKqcP-qQUt?GBqTM;c zY%OBS{@Genq&2e?BRXG-K_kK>UXtXoFtaa4bE}FJIc0bOftSMb5jM_1aD++EJdd|( zV?qf`bt&kc{}T1UP3zP)JjOlI`7~PcNJN)*6XRQ zav3ChAms6edf?eK=z*s<4KQF@LKxt5XVG1!Z3v2{x-ff^tMKvayrr67iLTz~SL(BY z^9%CqvvjzhLszc%f;JX$TJ^NSwb&b5fOG8KnJB$^vG}ZQ0kYA% zQ_R@5my*b4of^$*FD_is8vb|=mVkcXlUI1wsmD!DGGTku~FEGwt za9HCsE_>gJtW`v(R<5AyiuwK5)K&p}&e#!1nyE3OnHq!V{6!|=rTD8O9%f~XP2j`A zMIlCx`h5EyBP=N~1cT?W3u`)d?J97=uS-XmCfA(T7tf=UTfUzhMIZfOhZtEB?g6&g zYH2fOURgf3lEODEg!SUOq$NFH*Kz1Aa-P~~W18pzq904sV2|08kT?j}JWiKxi-LtK z`@IKSs3~${*N;s0WAn4)OV_!@-PB8iX&-aW38~L;;TF^+qrIi z@~rI`wT+Qrk^`<>r^4Fx+1`X)l6cC_lE%|DB>6=thuOT&B$C6X(?uMQN=@m8%wFf1 z+!NWhYhlddQJ!j+d4}2edrg-K%v77;7ce8LXI@2jjGKF&C_9FSn0VL|JPehi2F@aW8G9<#%_7&M;_F0sY85ArS{X;7 ze9Xl;;j*1nP^*~pEw!VrpDX%yk z&`s?4)#^wbS-Zd0S9k@hO%Y(;+^m%{0&EjD6#xM#2oB_U6uQ5_1<& zKZl7~s4RxGB2aG<`4Os4PhlHdjPF1U-LFKn@j2sf%$NX;1q@VrRU%8FJko5;jN#{V zncHUF)d(-+#B1g?xfMmzm^*!2A5&0x#f4A@(gaU2J*gWtdkGUX9vg|O(I|ez)DhUA zwRUr1n`9Y{*=nz4>D%0&ZTDQDWkA~Sw`#kL@y0_M34dS7^i$Fad~6&7DIMhAu2Pny z#4>&Cy>})SWU+`t&Z|@HwNb9>>Kz?A*YI4Xp{B^T5;w?mRF?_N=$NvO>HRC+pv)?Y zuGpQ@?kehOVzVBzjbr4e_Ypnm0IA8iw@<5HQr$zsIs+JPm}ev6UM+IVR{1IO=5m-A z5OEg8UCft`tv$N+{c0fYNi!(`SK1vj9|JilEn6_2c=^cT7J_f{f{!DL3R@vsA}Xu( zour<`86r4`X_|#&Tkp~;Rj8Z5SY_Q>U?jTIn>TqIt6_UC z22Bx&VV4Ur61TB2=3CJii5kA#-8C_9M{wH#V7MwHfjAt!v-cjNj6m&_UeNX;%sdKX zGIlw=S4T%fkgWSInx;+fWi(nuVfTw!cVIH7X&Zl6h6}LdvS`*x%MwExS&mC>}Jfizb=r$ zMkKIxzwXH1$YR}^#U>$NddQU

u?32 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¥ho{2Rd^-Kv@H2eC`?>HDKJtAyd^kKF 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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..7b24e9a --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileCheckerboard.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 9371f432d5c714b4eadd3477be06f0f3 +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/Resources.meta b/Assets/Resources.meta new file mode 100644 index 0000000..9ccce15 --- /dev/null +++ b/Assets/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 003b1352051cef149946ddf7ccb8ba9d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/DOTweenSettings.asset b/Assets/Resources/DOTweenSettings.asset new file mode 100644 index 0000000..e75d697 --- /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: 1 + showPlayingTweens: 0 + showPausedTweens: 0 diff --git a/Assets/Resources/DOTweenSettings.asset.meta b/Assets/Resources/DOTweenSettings.asset.meta new file mode 100644 index 0000000..57f2c58 --- /dev/null +++ b/Assets/Resources/DOTweenSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6cd007a3355d1db4895e0a8189a3d3d0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 9a2bd05..45a70b4 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -270,6 +270,8 @@ GameObject: - component: {fileID: 311490070} - component: {fileID: 311490069} - component: {fileID: 311490073} + - component: {fileID: 311490075} + - component: {fileID: 311490074} m_Layer: 5 m_Name: Canvas m_TagString: Untagged @@ -374,6 +376,32 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: text: {fileID: 379057222} +--- !u!225 &311490074 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 311490068} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!114 &311490075 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 311490068} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 20b23959801b4fd40967d39ed926e9f6, type: 3} + m_Name: + m_EditorClassIdentifier: + ui: {fileID: 311490074} + fadeDuration: 0.5 --- !u!1 &379057220 GameObject: m_ObjectHideFlags: 0 @@ -582,7 +610,7 @@ MonoBehaviour: 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_HighlightedColor: {r: 1, g: 0, b: 0, 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} @@ -734,6 +762,108 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1050150008 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1050150012} + - component: {fileID: 1050150011} + - component: {fileID: 1050150010} + - component: {fileID: 1050150009} + m_Layer: 5 + m_Name: MouseDetectionCanvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1050150009 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1050150008} + 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 &1050150010 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1050150008} + 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 &1050150011 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1050150008} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: -32768 + m_TargetDisplay: 0 +--- !u!224 &1050150012 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1050150008} + 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: 1685871617} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} --- !u!1 &1333164885 GameObject: m_ObjectHideFlags: 0 @@ -743,8 +873,8 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1333164888} - - component: {fileID: 1333164887} - - component: {fileID: 1333164886} + - component: {fileID: 1333164890} + - component: {fileID: 1333164889} m_Layer: 0 m_Name: EventSystem m_TagString: Untagged @@ -752,7 +882,22 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &1333164886 +--- !u!4 &1333164888 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1333164885} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1333164889 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -772,7 +917,7 @@ MonoBehaviour: m_InputActionsPerSecond: 10 m_RepeatDelay: 0.5 m_ForceModuleActive: 0 ---- !u!114 &1333164887 +--- !u!114 &1333164890 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -781,27 +926,12 @@ MonoBehaviour: m_GameObject: {fileID: 1333164885} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Script: {fileID: 11500000, guid: f88b65679ed919a4196a1cbeb4a47809, type: 3} m_Name: m_EditorClassIdentifier: m_FirstSelected: {fileID: 0} m_sendNavigationEvents: 1 m_DragThreshold: 10 ---- !u!4 &1333164888 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1333164885} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1652443526 GameObject: m_ObjectHideFlags: 0 @@ -846,6 +976,81 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1685871616 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1685871617} + - component: {fileID: 1685871619} + - component: {fileID: 1685871618} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1685871617 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1685871616} + 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: 1050150012} + 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 &1685871618 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1685871616} + 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: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1685871619 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1685871616} + m_CullTransparentMesh: 1 --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 @@ -854,3 +1059,4 @@ SceneRoots: - {fileID: 311490072} - {fileID: 1333164888} - {fileID: 1652443528} + - {fileID: 1050150012} diff --git a/Assets/Scripts/View/CTrencadaInput.cs b/Assets/Scripts/View/CTrencadaInput.cs index 5991e9d..16395d4 100644 --- a/Assets/Scripts/View/CTrencadaInput.cs +++ b/Assets/Scripts/View/CTrencadaInput.cs @@ -1,6 +1,5 @@ using Domain; using Presenter; -using SatorImaging.AppWindowUtility; using TMPro; using UnityEngine; @@ -10,9 +9,6 @@ namespace View { private CTrencadaClick _click; private void Start() { - AppWindowUtility.AlwaysOnTop = true; - AppWindowUtility.FrameVisibility = false; - _click = FindObjectOfType().CTrencadaClick; } diff --git a/Assets/Scripts/View/DisplaySetup.cs b/Assets/Scripts/View/DisplaySetup.cs new file mode 100644 index 0000000..4aa7311 --- /dev/null +++ b/Assets/Scripts/View/DisplaySetup.cs @@ -0,0 +1,18 @@ +#if !UNITY_EDITOR +using SatorImaging.AppWindowUtility; +using UnityEngine; + +namespace View { + internal static class DisplaySetup { + [RuntimeInitializeOnLoadMethod] + private static void Setup() { + AppWindowUtility.AlwaysOnTop = true; + AppWindowUtility.FrameVisibility = false; + + Vector2Int resolution = new(Screen.currentResolution.width, Screen.currentResolution.height); + Vector2Int newPosition = new(resolution.x - Screen.width, 0); + Screen.MoveMainWindowTo(Screen.mainWindowDisplayInfo, newPosition); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Scripts/View/DisplaySetup.cs.meta b/Assets/Scripts/View/DisplaySetup.cs.meta new file mode 100644 index 0000000..c95dcc2 --- /dev/null +++ b/Assets/Scripts/View/DisplaySetup.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: bf60e69915aa4e2c9bd0cdbdccee8fc7 +timeCreated: 1712944769 \ No newline at end of file diff --git a/Assets/Scripts/View/SantJordi.View.asmdef b/Assets/Scripts/View/SantJordi.View.asmdef index 3393713..8789c95 100644 --- a/Assets/Scripts/View/SantJordi.View.asmdef +++ b/Assets/Scripts/View/SantJordi.View.asmdef @@ -5,7 +5,8 @@ "GUID:23c7c01f8c5436c429399011615ce636", "GUID:d9011953b32919841a6c357880a50fb3", "GUID:6055be8ebefd69e48b49212b09b47b2f", - "GUID:1220ccfff01d26041a9bb8cd7ae584af" + "GUID:1220ccfff01d26041a9bb8cd7ae584af", + "GUID:58f2f98b0cec4e74998cb65ad59190b4" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Assets/Scripts/View/UIVisibility.cs b/Assets/Scripts/View/UIVisibility.cs new file mode 100644 index 0000000..e61e629 --- /dev/null +++ b/Assets/Scripts/View/UIVisibility.cs @@ -0,0 +1,28 @@ +using System; +using DG.Tweening; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace View { + public class UIVisibility : MonoBehaviour { + [SerializeField] private CanvasGroup ui; + [SerializeField] private float fadeDuration = .5f; + + private bool _wasVisible = true; + + private void Update() { + bool isPointerOver = EventSystem.current.IsPointerOverGameObject(); + if (_wasVisible && !isPointerOver) { + ui.DOFade(0, fadeDuration); + _wasVisible = false; + return; + } + if (!_wasVisible && isPointerOver) { + ui.DOFade(1, fadeDuration); + _wasVisible = true; + return; + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/View/UIVisibility.cs.meta b/Assets/Scripts/View/UIVisibility.cs.meta new file mode 100644 index 0000000..37a3513 --- /dev/null +++ b/Assets/Scripts/View/UIVisibility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 20b23959801b4fd40967d39ed926e9f6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/View/UnfocusableEventSystem.cs b/Assets/Scripts/View/UnfocusableEventSystem.cs new file mode 100644 index 0000000..17d4d1d --- /dev/null +++ b/Assets/Scripts/View/UnfocusableEventSystem.cs @@ -0,0 +1,8 @@ +using UnityEngine.EventSystems; + +namespace View { + public class UnfocusableEventSystem : EventSystem { + //Dummy method to prevent calling base method + protected override void OnApplicationFocus(bool hasFocus) { } + } +} \ No newline at end of file diff --git a/Assets/Scripts/View/UnfocusableEventSystem.cs.meta b/Assets/Scripts/View/UnfocusableEventSystem.cs.meta new file mode 100644 index 0000000..65c6325 --- /dev/null +++ b/Assets/Scripts/View/UnfocusableEventSystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f88b65679ed919a4196a1cbeb4a47809 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index f983d09..c04c316 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -42,8 +42,8 @@ PlayerSettings: m_SplashScreenLogos: [] m_VirtualRealitySplashScreen: {fileID: 0} m_HolographicTrackingLossScreen: {fileID: 0} - defaultScreenWidth: 480 - defaultScreenHeight: 850 + defaultScreenWidth: 360 + defaultScreenHeight: 640 defaultScreenWidthWeb: 960 defaultScreenHeightWeb: 600 m_StereoRenderingPath: 0