From 405344bdf0b11acdfb8023e4ffc03d90d04bbada Mon Sep 17 00:00:00 2001 From: Roman <1325980292@qq.com> Date: Sun, 28 Nov 2021 01:33:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=EF=BC=9A=E6=90=AD=E5=BB=BA?= =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E7=9A=84=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.编写玩家受击逻辑BeHit(atk,dir) (1.受击时得知受到的攻击力和受击方向 (2.受击时向受击方向被击飞一小段 (3.减去相应的生命值 2.编写基本小怪逻辑 (1.wander状态,在两点间巡逻 (2.当触发OnTouchThePlayer,通知玩家BeHit 3.编写了更多摘要和参数解释 4.更新的Dotween插件的版本 --- .../Resources.meta} | 2 +- .../BehaviorDesignerGlobalVariables.asset | 26 + ...ehaviorDesignerGlobalVariables.asset.meta} | 6 +- Assets/Demigiant/DOTween/DOTween.dll | Bin 144384 -> 0 bytes Assets/Demigiant/DOTween/DOTween.dll.mdb | Bin 55507 -> 0 bytes .../DOTween/Editor/DOTweenEditor.dll | Bin 44032 -> 0 bytes .../DOTween/Editor/DOTweenEditor.dll.mdb | Bin 7862 -> 0 bytes Assets/Demigiant/DOTween/Editor/Imgs.meta | 8 - .../DOTween/Editor/Imgs/DOTweenIcon.png.meta | 96 -- .../DOTween/Editor/Imgs/Footer.png.meta | 96 -- .../DOTween/Editor/Imgs/Header.jpg.meta | 96 -- Assets/Demigiant/DOTween/Modules.meta | 8 - .../DOTween/Modules/DOTweenModulePhysics2D.cs | 101 -- Assets/Demigiant/DOTweenPro Examples.meta | 8 - .../DOTweenPro Examples/Examples Assets.meta | 8 - Assets/Demigiant/DOTweenPro.meta | 8 - Assets/Demigiant/DOTweenPro/DOTweenPro.dll | Bin 15872 -> 0 bytes .../Demigiant/DOTweenPro/DOTweenPro.dll.mdb | Bin 2469 -> 0 bytes .../DOTweenPro/DOTweenTextMeshPro.cs | 355 ------ Assets/Demigiant/DOTweenPro/Editor.meta | 8 - .../DOTweenPro/Editor/DOTweenProEditor.dll | Bin 28672 -> 0 bytes .../Editor/DOTweenProEditor.dll.mdb | Bin 4053 -> 0 bytes Assets/Demigiant/DemiLib.meta | 8 - Assets/Demigiant/DemiLib/Core.meta | 8 - Assets/Demigiant/DemiLib/Core/DemiLib.dll | Bin 9728 -> 0 bytes Assets/Demigiant/DemiLib/Core/DemiLib.dll.mdb | Bin 2517 -> 0 bytes Assets/Demigiant/DemiLib/Core/Editor.meta | 8 - .../DemiLib/Core/Editor/DemiEditor.dll | Bin 132096 -> 0 bytes .../DemiLib/Core/Editor/DemiEditor.dll.mdb | Bin 43430 -> 0 bytes .../Demigiant/DemiLib/Core/Editor/Imgs.meta | 8 - .../Editor/Imgs/blackSquareAlpha25.png.meta | 96 -- .../Editor/Imgs/blackSquareAlpha50.png.meta | 96 -- .../Editor/Imgs/blackSquareAlpha80.png.meta | 96 -- .../Core/Editor/Imgs/blueSquare.png.meta | 96 -- .../DemiLib/Core/Editor/Imgs/circle.png.meta | 96 -- .../Core/Editor/Imgs/greenSquare.png.meta | 96 -- .../Core/Editor/Imgs/grid_bright.png.meta | 96 -- .../Core/Editor/Imgs/grid_dark.png.meta | 96 -- .../Core/Editor/Imgs/ico_alert.png.meta | 96 -- .../Core/Editor/Imgs/ico_alignB.png.meta | 96 -- .../Core/Editor/Imgs/ico_alignBC.png.meta | 96 -- .../Core/Editor/Imgs/ico_alignBL.png.meta | 96 -- .../Core/Editor/Imgs/ico_alignBR.png.meta | 96 -- .../Core/Editor/Imgs/ico_alignCC.png.meta | 96 -- .../Core/Editor/Imgs/ico_alignCL.png.meta | 96 -- .../Core/Editor/Imgs/ico_alignCR.png.meta | 96 -- .../Core/Editor/Imgs/ico_alignHC.png.meta | 96 -- .../Core/Editor/Imgs/ico_alignL.png.meta | 96 -- .../Core/Editor/Imgs/ico_alignR.png.meta | 96 -- .../Core/Editor/Imgs/ico_alignT.png.meta | 96 -- .../Core/Editor/Imgs/ico_alignTC.png.meta | 96 -- .../Core/Editor/Imgs/ico_alignTL.png.meta | 96 -- .../Core/Editor/Imgs/ico_alignTR.png.meta | 96 -- .../Core/Editor/Imgs/ico_alignVC.png.meta | 96 -- .../Core/Editor/Imgs/ico_camera.png.meta | 96 -- .../Editor/Imgs/ico_camera_border.png.meta | 96 -- .../DemiLib/Core/Editor/Imgs/ico_cog.png.meta | 96 -- .../Core/Editor/Imgs/ico_cog_border.png.meta | 96 -- .../Core/Editor/Imgs/ico_comment.png.meta | 96 -- .../Editor/Imgs/ico_comment_border.png.meta | 96 -- .../Core/Editor/Imgs/ico_delete.png.meta | 96 -- .../Core/Editor/Imgs/ico_demigiant.png.meta | 96 -- .../DemiLib/Core/Editor/Imgs/ico_end.png.meta | 96 -- .../Core/Editor/Imgs/ico_heart.png.meta | 96 -- .../Editor/Imgs/ico_heart_border.png.meta | 96 -- .../Core/Editor/Imgs/ico_nodeArrow.png.meta | 96 -- .../Core/Editor/Imgs/ico_play.png.meta | 96 -- .../Core/Editor/Imgs/ico_play_border.png.meta | 96 -- .../Core/Editor/Imgs/ico_skull.png.meta | 96 -- .../Editor/Imgs/ico_skull_border.png.meta | 96 -- .../Core/Editor/Imgs/ico_star.png.meta | 96 -- .../Core/Editor/Imgs/ico_star_border.png.meta | 96 -- .../DemiLib/Core/Editor/Imgs/ico_ui.png.meta | 96 -- .../Core/Editor/Imgs/ico_ui_border.png.meta | 96 -- .../Core/Editor/Imgs/orangeSquare.png.meta | 96 -- .../DemiLib/Core/Editor/Imgs/project.meta | 8 - .../Editor/Imgs/project/ico_atlas.png.meta | 96 -- .../Editor/Imgs/project/ico_audio.png.meta | 96 -- .../Editor/Imgs/project/ico_bundle.png.meta | 96 -- .../Core/Editor/Imgs/project/ico_cog.png.meta | 96 -- .../Editor/Imgs/project/ico_cross.png.meta | 96 -- .../Imgs/project/ico_demigiant.png.meta | 96 -- .../Editor/Imgs/project/ico_folder.png.meta | 96 -- .../Editor/Imgs/project/ico_fonts.png.meta | 96 -- .../Editor/Imgs/project/ico_heart.png.meta | 96 -- .../Editor/Imgs/project/ico_play.png.meta | 96 -- .../Editor/Imgs/project/ico_prefab.png.meta | 96 -- .../Editor/Imgs/project/ico_scripts.png.meta | 96 -- .../Editor/Imgs/project/ico_skull.png.meta | 96 -- .../Editor/Imgs/project/ico_star.png.meta | 96 -- .../Editor/Imgs/project/ico_textures.png.meta | 96 -- .../Core/Editor/Imgs/purpleSquare.png.meta | 96 -- .../Core/Editor/Imgs/redSquare.png.meta | 96 -- .../Core/Editor/Imgs/squareBorder.png.meta | 96 -- .../Editor/Imgs/squareBorderAlpha15.png.meta | 96 -- .../Editor/Imgs/squareBorderCurved.png.meta | 96 -- .../Editor/Imgs/squareBorderCurved02.png.meta | 96 -- .../squareBorderCurved02_darkBorders.png.meta | 96 -- .../Imgs/squareBorderCurvedAlpha.png.meta | 96 -- .../Imgs/squareBorderCurvedEmpty.png.meta | 96 -- .../Imgs/squareBorderCurvedEmpty02.png.meta | 96 -- .../squareBorderCurvedEmptyThick.png.meta | 96 -- .../squareBorderCurved_darkBorders.png.meta | 96 -- ...uareBorderCurved_darkBordersAlpha.png.meta | 96 -- .../Editor/Imgs/squareBorderEmpty.png.meta | 96 -- .../Editor/Imgs/squareBorderEmpty01.png.meta | 96 -- .../Editor/Imgs/squareBorderEmpty02.png.meta | 96 -- .../Editor/Imgs/squareBorderEmpty03.png.meta | 96 -- .../Imgs/squareBorderThickEmpty.png.meta | 96 -- .../Imgs/squareBorderThickerEmpty.png.meta | 96 -- .../Core/Editor/Imgs/squareCorners03.png.meta | 96 -- .../Editor/Imgs/squareCornersEmpty02.png.meta | 96 -- .../Core/Editor/Imgs/tileBars_empty.png.meta | 96 -- .../Editor/Imgs/tileBars_slanted.png.meta | 96 -- .../Imgs/tileBars_slanted_alpha.png.meta | 96 -- .../Core/Editor/Imgs/whiteDot.png.meta | 96 -- .../Editor/Imgs/whiteDot_darkBorder.png.meta | 96 -- .../Imgs/whiteDot_whiteBorderAlpha.png.meta | 96 -- .../Core/Editor/Imgs/whiteSquare.png.meta | 96 -- .../Editor/Imgs/whiteSquareAlpha10.png.meta | 96 -- .../Editor/Imgs/whiteSquareAlpha15.png.meta | 96 -- .../Editor/Imgs/whiteSquareAlpha25.png.meta | 96 -- .../Editor/Imgs/whiteSquareAlpha50.png.meta | 96 -- .../Editor/Imgs/whiteSquareAlpha80.png.meta | 96 -- .../Imgs/whiteSquare_fadeOut_bt.png.meta | 96 -- .../Core/Editor/Imgs/yellowSquare.png.meta | 96 -- Assets/New Terrain.asset | Bin 0 -> 557504 bytes Assets/New Terrain.asset.meta | 8 + Assets/{ => Plugins}/Demigiant.meta | 2 +- Assets/Plugins/Demigiant/DOTween.meta | 21 + .../Demigiant/DOTween/DOTween.XML | 451 ++++++- .../Demigiant/DOTween/DOTween.XML.meta | 3 - Assets/Plugins/Demigiant/DOTween/DOTween.dll | Bin 0 -> 172032 bytes .../Plugins/Demigiant/DOTween/DOTween.dll.mdb | Bin 0 -> 66532 bytes .../Demigiant/DOTween/DOTween.dll.mdb.meta | 3 - .../Demigiant/DOTween/DOTween.dll.meta | 19 +- Assets/Plugins/Demigiant/DOTween/Editor.meta | 5 + .../DOTween/Editor/DOTweenEditor.XML | 17 +- .../DOTween/Editor/DOTweenEditor.XML.meta | 3 - .../DOTween/Editor/DOTweenEditor.dll | Bin 0 -> 66048 bytes .../DOTween/Editor/DOTweenEditor.dll.mdb | Bin 0 -> 11774 bytes .../DOTween/Editor/DOTweenEditor.dll.mdb.meta | 3 - .../DOTween/Editor/DOTweenEditor.dll.meta | 21 +- .../Demigiant/DOTween/Editor/Imgs.meta | 5 + .../DOTween/Editor/Imgs/DOTweenIcon.png | Bin .../DOTween/Editor/Imgs/DOTweenIcon.png.meta | 47 + .../DOTween/Editor/Imgs/DOTweenMiniIcon.png | Bin 0 -> 319 bytes .../Editor/Imgs/DOTweenMiniIcon.png.meta} | 56 +- .../Demigiant/DOTween/Editor/Imgs/Footer.png | Bin .../DOTween/Editor/Imgs/Footer.png.meta | 47 + .../DOTween/Editor/Imgs/Footer_dark.png | Bin .../DOTween/Editor/Imgs/Footer_dark.png.meta | 47 + .../Demigiant/DOTween/Editor/Imgs/Header.jpg | Bin .../DOTween/Editor/Imgs/Header.jpg.meta | 47 + Assets/Plugins/Demigiant/DOTween/Modules.meta | 5 + .../DOTween/Modules/DOTweenModuleAudio.cs | 23 +- .../Modules/DOTweenModuleAudio.cs.meta | 8 + .../Modules/DOTweenModuleEPOOutline.cs | 142 +++ .../Modules/DOTweenModuleEPOOutline.cs.meta | 12 + .../DOTween/Modules/DOTweenModulePhysics.cs | 36 +- .../Modules/DOTweenModulePhysics.cs.meta | 3 - .../DOTween/Modules/DOTweenModulePhysics2D.cs | 193 +++ .../Modules/DOTweenModulePhysics2D.cs.meta | 3 - .../DOTween/Modules/DOTweenModuleSprite.cs | 15 +- .../Modules/DOTweenModuleSprite.cs.meta | 3 - .../DOTween/Modules/DOTweenModuleUI.cs | 262 +++-- .../DOTween/Modules/DOTweenModuleUI.cs.meta | 3 - .../Modules/DOTweenModuleUnityVersion.cs | 155 ++- .../Modules/DOTweenModuleUnityVersion.cs.meta | 3 - .../DOTween/Modules/DOTweenModuleUtils.cs | 67 +- .../Modules/DOTweenModuleUtils.cs.meta | 3 - .../Demigiant/DOTween/readme.txt | 0 .../Demigiant/DOTween/readme.txt.meta | 3 - .../Demigiant/DOTweenPro Examples.meta | 23 + .../DOTweenAnimation_Advanced.unity | 26 +- .../DOTweenAnimation_Advanced.unity.meta | 3 - ...DOTweenAnimation_AdvancedSettings.lighting | 0 ...enAnimation_AdvancedSettings.lighting.meta | 2 +- .../DOTweenAnimation_Basics.unity | 18 +- .../DOTweenAnimation_Basics.unity.meta | 3 - .../DOTweenAnimation_BasicsSettings.lighting | 0 ...weenAnimation_BasicsSettings.lighting.meta | 2 +- .../DOTweenPro Examples/DOTweenPath.unity | 16 +- .../DOTweenPath.unity.meta | 3 - .../DOTweenPathSettings.lighting | 0 .../DOTweenPathSettings.lighting.meta | 2 +- .../DOTweenPro Examples/Examples Assets.meta | 5 + .../Examples Assets/dotweenpro_logo.png | Bin .../Examples Assets/dotweenpro_logo.png.meta | 0 Assets/Plugins/Demigiant/DOTweenPro.meta | 23 + .../Demigiant/DOTweenPro/DOTweenAnimation.cs | 388 ++++-- .../DOTweenPro/DOTweenAnimation.cs.meta | 3 - .../Demigiant/DOTweenPro/DOTweenDeAudio.cs | 9 + .../DOTweenPro/DOTweenDeAudio.cs.meta | 12 + .../DOTweenPro/DOTweenDeUnityExtended.cs | 9 + .../DOTweenPro/DOTweenDeUnityExtended.cs.meta | 12 + .../Demigiant/DOTweenPro/DOTweenPro.XML | 18 + .../Demigiant/DOTweenPro/DOTweenPro.XML.meta | 3 - .../Demigiant/DOTweenPro/DOTweenPro.dll | Bin 0 -> 15872 bytes .../Demigiant/DOTweenPro/DOTweenPro.dll.mdb | Bin 0 -> 2910 bytes .../DOTweenPro/DOTweenPro.dll.mdb.meta | 3 - .../Demigiant/DOTweenPro/DOTweenPro.dll.meta | 19 +- .../DOTweenPro/DOTweenProShortcuts.cs | 0 .../DOTweenPro/DOTweenProShortcuts.cs.meta | 3 - .../DOTweenPro/DOTweenTextMeshPro.cs | 1037 +++++++++++++++++ .../DOTweenPro/DOTweenTextMeshPro.cs.meta | 3 - .../Demigiant/DOTweenPro/DOTweenTk2d.cs | 116 +- .../Demigiant/DOTweenPro/DOTweenTk2d.cs.meta | 3 - .../Plugins/Demigiant/DOTweenPro/Editor.meta | 5 + .../Editor/DOTweenAnimationInspector.cs | 249 ++-- .../Editor/DOTweenAnimationInspector.cs.meta | 3 - .../Editor/DOTweenPreviewManager.cs | 18 +- .../Editor/DOTweenPreviewManager.cs.meta | 3 - .../DOTweenPro/Editor/DOTweenProEditor.XML | 0 .../Editor/DOTweenProEditor.XML.meta | 3 - .../DOTweenPro/Editor/DOTweenProEditor.dll | Bin 0 -> 35840 bytes .../Editor/DOTweenProEditor.dll.mdb | Bin 0 -> 5678 bytes .../Editor/DOTweenProEditor.dll.mdb.meta | 3 - .../Editor/DOTweenProEditor.dll.meta | 21 +- .../Demigiant/DOTweenPro/readme.txt | 0 .../Demigiant/DOTweenPro/readme.txt.meta | 3 - Assets/Plugins/Demigiant/DemiLib.meta | 21 + Assets/Plugins/Demigiant/DemiLib/Core.meta | 5 + .../Demigiant/DemiLib/Core/DemiLib.dll | Bin 0 -> 13312 bytes .../Demigiant/DemiLib/Core/DemiLib.dll.mdb | Bin 0 -> 3576 bytes .../DemiLib/Core/DemiLib.dll.mdb.meta | 3 - .../Demigiant/DemiLib/Core/DemiLib.dll.meta | 19 +- .../Demigiant/DemiLib/Core/DemiLib.xml | 49 + .../Demigiant/DemiLib/Core/DemiLib.xml.meta | 3 - .../Demigiant/DemiLib/Core/Editor.meta | 5 + .../DemiLib/Core/Editor/DemiEditor.dll | Bin 0 -> 187392 bytes .../DemiLib/Core/Editor/DemiEditor.dll.mdb | Bin 0 -> 63264 bytes .../Core/Editor/DemiEditor.dll.mdb.meta | 3 - .../DemiLib/Core/Editor/DemiEditor.dll.meta | 21 +- .../DemiLib/Core/Editor/DemiEditor.xml | 910 ++++++++++++++- .../DemiLib/Core/Editor/DemiEditor.xml.meta | 3 - .../Demigiant/DemiLib/Core/Editor/Imgs.meta | 5 + .../DemiLib/Core/Editor/Imgs/blackSquare.png | Bin .../Core/Editor/Imgs/blackSquare.png.meta | 47 + .../Core/Editor/Imgs/blackSquareAlpha10.png | Bin .../Editor/Imgs/blackSquareAlpha10.png.meta | 47 + .../Core/Editor/Imgs/blackSquareAlpha15.png | Bin .../Editor/Imgs/blackSquareAlpha15.png.meta | 47 + .../Core/Editor/Imgs/blackSquareAlpha25.png | Bin .../Editor/Imgs/blackSquareAlpha25.png.meta | 47 + .../Core/Editor/Imgs/blackSquareAlpha50.png | Bin .../Editor/Imgs/blackSquareAlpha50.png.meta | 47 + .../Core/Editor/Imgs/blackSquareAlpha80.png | Bin .../Editor/Imgs/blackSquareAlpha80.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/blueSquare.png | Bin .../Core/Editor/Imgs/blueSquare.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/circle.png | Bin .../DemiLib/Core/Editor/Imgs/circle.png.meta | 47 + .../Editor/Imgs/circle_dashedBorderEmpty.png | Bin 0 -> 673 bytes .../Imgs/circle_dashedBorderEmpty.png.meta} | 56 +- .../DemiLib/Core/Editor/Imgs/greenSquare.png | Bin .../Core/Editor/Imgs/greenSquare.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/grid_bright.png | Bin .../Core/Editor/Imgs/grid_bright.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/grid_dark.png | Bin .../Core/Editor/Imgs/grid_dark.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alert.png | Bin .../Core/Editor/Imgs/ico_alert.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignB.png | Bin .../Core/Editor/Imgs/ico_alignB.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignBC.png | Bin .../Core/Editor/Imgs/ico_alignBC.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignBL.png | Bin .../Core/Editor/Imgs/ico_alignBL.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignBR.png | Bin .../Core/Editor/Imgs/ico_alignBR.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignCC.png | Bin .../Core/Editor/Imgs/ico_alignCC.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignCL.png | Bin .../Core/Editor/Imgs/ico_alignCL.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignCR.png | Bin .../Core/Editor/Imgs/ico_alignCR.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignHC.png | Bin .../Core/Editor/Imgs/ico_alignHC.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignL.png | Bin .../Core/Editor/Imgs/ico_alignL.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignR.png | Bin .../Core/Editor/Imgs/ico_alignR.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignT.png | Bin .../Core/Editor/Imgs/ico_alignT.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignTC.png | Bin .../Core/Editor/Imgs/ico_alignTC.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignTL.png | Bin .../Core/Editor/Imgs/ico_alignTL.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignTR.png | Bin .../Core/Editor/Imgs/ico_alignTR.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_alignVC.png | Bin .../Core/Editor/Imgs/ico_alignVC.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_camera.png | Bin .../Core/Editor/Imgs/ico_camera.png.meta | 47 + .../Core/Editor/Imgs/ico_camera_border.png | Bin .../Editor/Imgs/ico_camera_border.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_cog.png | Bin .../DemiLib/Core/Editor/Imgs/ico_cog.png.meta | 47 + .../Core/Editor/Imgs/ico_cog_border.png | Bin .../Core/Editor/Imgs/ico_cog_border.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_comment.png | Bin .../Core/Editor/Imgs/ico_comment.png.meta | 47 + .../Core/Editor/Imgs/ico_comment_border.png | Bin .../Editor/Imgs/ico_comment_border.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_delete.png | Bin .../Core/Editor/Imgs/ico_delete.png.meta | 47 + .../Core/Editor/Imgs/ico_demigiant.png | Bin .../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_end.png | Bin .../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 .../Core/Editor/Imgs/ico_heart.png.meta | 47 + .../Core/Editor/Imgs/ico_heart_border.png | Bin .../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 .../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 .../Core/Editor/Imgs/ico_play.png.meta | 47 + .../Core/Editor/Imgs/ico_play_border.png | Bin .../Core/Editor/Imgs/ico_play_border.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_skull.png | Bin .../Core/Editor/Imgs/ico_skull.png.meta | 47 + .../Core/Editor/Imgs/ico_skull_border.png | Bin .../Editor/Imgs/ico_skull_border.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_star.png | Bin .../Core/Editor/Imgs/ico_star.png.meta | 47 + .../Core/Editor/Imgs/ico_star_border.png | Bin .../Core/Editor/Imgs/ico_star_border.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/ico_ui.png | Bin .../DemiLib/Core/Editor/Imgs/ico_ui.png.meta | 47 + .../Core/Editor/Imgs/ico_ui_border.png | Bin .../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 .../Core/Editor/Imgs/orangeSquare.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/project.meta | 5 + .../Core/Editor/Imgs/project/ico_atlas.png | Bin .../Editor/Imgs/project/ico_atlas.png.meta | 47 + .../Core/Editor/Imgs/project/ico_audio.png | Bin .../Editor/Imgs/project/ico_audio.png.meta | 47 + .../Core/Editor/Imgs/project/ico_bundle.png | Bin .../Editor/Imgs/project/ico_bundle.png.meta | 47 + .../Core/Editor/Imgs/project/ico_cog.png | Bin .../Core/Editor/Imgs/project/ico_cog.png.meta | 47 + .../Core/Editor/Imgs/project/ico_cross.png | Bin .../Editor/Imgs/project/ico_cross.png.meta | 47 + .../Editor/Imgs/project/ico_demigiant.png | Bin .../Imgs/project/ico_demigiant.png.meta | 47 + .../Core/Editor/Imgs/project/ico_folder.png | Bin .../Editor/Imgs/project/ico_folder.png.meta | 47 + .../Core/Editor/Imgs/project/ico_fonts.png | Bin .../Editor/Imgs/project/ico_fonts.png.meta | 47 + .../Core/Editor/Imgs/project/ico_heart.png | Bin .../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 .../Editor/Imgs/project/ico_play.png.meta | 47 + .../Core/Editor/Imgs/project/ico_prefab.png | Bin .../Editor/Imgs/project/ico_prefab.png.meta | 47 + .../Core/Editor/Imgs/project/ico_scripts.png | Bin .../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 .../Editor/Imgs/project/ico_skull.png.meta | 47 + .../Core/Editor/Imgs/project/ico_star.png | Bin .../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 .../Editor/Imgs/project/ico_textures.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/purpleSquare.png | Bin .../Core/Editor/Imgs/purpleSquare.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/redSquare.png | Bin .../Core/Editor/Imgs/redSquare.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/squareBorder.png | Bin .../Core/Editor/Imgs/squareBorder.png.meta | 47 + .../Core/Editor/Imgs/squareBorderAlpha15.png | Bin .../Editor/Imgs/squareBorderAlpha15.png.meta | 47 + .../Core/Editor/Imgs/squareBorderCurved.png | Bin .../Editor/Imgs/squareBorderCurved.png.meta | 47 + .../Core/Editor/Imgs/squareBorderCurved02.png | Bin .../Editor/Imgs/squareBorderCurved02.png.meta | 47 + .../Imgs/squareBorderCurved02_darkBorders.png | Bin .../squareBorderCurved02_darkBorders.png.meta | 47 + .../Editor/Imgs/squareBorderCurvedAlpha.png | Bin .../Imgs/squareBorderCurvedAlpha.png.meta | 47 + .../Editor/Imgs/squareBorderCurvedEmpty.png | Bin .../Imgs/squareBorderCurvedEmpty.png.meta | 47 + .../Editor/Imgs/squareBorderCurvedEmpty02.png | Bin .../Imgs/squareBorderCurvedEmpty02.png.meta | 47 + .../Imgs/squareBorderCurvedEmptyThick.png | Bin .../squareBorderCurvedEmptyThick.png.meta | 47 + .../Imgs/squareBorderCurved_darkBorders.png | Bin .../squareBorderCurved_darkBorders.png.meta | 47 + .../squareBorderCurved_darkBordersAlpha.png | Bin ...uareBorderCurved_darkBordersAlpha.png.meta | 47 + .../Core/Editor/Imgs/squareBorderEmpty.png | Bin .../Editor/Imgs/squareBorderEmpty.png.meta | 47 + .../Core/Editor/Imgs/squareBorderEmpty01.png | Bin .../Editor/Imgs/squareBorderEmpty01.png.meta | 47 + .../Core/Editor/Imgs/squareBorderEmpty02.png | Bin .../Editor/Imgs/squareBorderEmpty02.png.meta | 47 + .../Core/Editor/Imgs/squareBorderEmpty03.png | Bin .../Editor/Imgs/squareBorderEmpty03.png.meta | 47 + .../Editor/Imgs/squareBorderThickEmpty.png | Bin .../Imgs/squareBorderThickEmpty.png.meta | 47 + .../Editor/Imgs/squareBorderThickerEmpty.png | Bin .../Imgs/squareBorderThickerEmpty.png.meta | 47 + .../Core/Editor/Imgs/squareCorners03.png | Bin .../Core/Editor/Imgs/squareCorners03.png.meta | 47 + .../Core/Editor/Imgs/squareCornersEmpty02.png | Bin .../Editor/Imgs/squareCornersEmpty02.png.meta | 47 + .../Core/Editor/Imgs/tileBars_empty.png | Bin .../Core/Editor/Imgs/tileBars_empty.png.meta | 47 + .../Core/Editor/Imgs/tileBars_slanted.png | Bin .../Editor/Imgs/tileBars_slanted.png.meta | 47 + .../Editor/Imgs/tileBars_slanted_alpha.png | Bin .../Imgs/tileBars_slanted_alpha.png.meta | 47 + .../Core/Editor/Imgs/transparentSquare.png | Bin 0 -> 97 bytes .../Editor/Imgs/transparentSquare.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/whiteDot.png | Bin .../Core/Editor/Imgs/whiteDot.png.meta | 47 + .../Core/Editor/Imgs/whiteDot_darkBorder.png | Bin .../Editor/Imgs/whiteDot_darkBorder.png.meta | 47 + .../Editor/Imgs/whiteDot_whiteBorderAlpha.png | Bin .../Imgs/whiteDot_whiteBorderAlpha.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/whiteSquare.png | Bin .../Core/Editor/Imgs/whiteSquare.png.meta | 47 + .../Core/Editor/Imgs/whiteSquareAlpha10.png | Bin .../Editor/Imgs/whiteSquareAlpha10.png.meta | 47 + .../Core/Editor/Imgs/whiteSquareAlpha15.png | Bin .../Editor/Imgs/whiteSquareAlpha15.png.meta | 47 + .../Core/Editor/Imgs/whiteSquareAlpha25.png | Bin .../Editor/Imgs/whiteSquareAlpha25.png.meta | 47 + .../Core/Editor/Imgs/whiteSquareAlpha50.png | Bin .../Editor/Imgs/whiteSquareAlpha50.png.meta | 47 + .../Core/Editor/Imgs/whiteSquareAlpha80.png | Bin .../Editor/Imgs/whiteSquareAlpha80.png.meta | 47 + .../Core/Editor/Imgs/whiteSquareCurved.png | Bin 0 -> 144 bytes .../Editor/Imgs/whiteSquareCurved.png.meta} | 56 +- .../Core/Editor/Imgs/whiteSquareCurved02.png | Bin 0 -> 190 bytes .../Editor/Imgs/whiteSquareCurved02.png.meta} | 56 +- .../Editor/Imgs/whiteSquare_fadeOut_bt.png | Bin .../Imgs/whiteSquare_fadeOut_bt.png.meta | 47 + .../DemiLib/Core/Editor/Imgs/yellowSquare.png | Bin .../Core/Editor/Imgs/yellowSquare.png.meta | 47 + .../Demigiant/readme_DOTweenPro.txt | 0 .../Demigiant/readme_DOTweenPro.txt.meta | 3 - .../NoEditor/Sirenix.Serialization.dll.meta | 4 +- .../NoEditor/Sirenix.Utilities.dll.meta | 4 +- .../Sirenix.Serialization.dll.meta | 4 +- .../Sirenix.Utilities.dll.meta | 4 +- .../Sirenix.Serialization.Config.dll.meta | 4 +- .../Config/Editor/AOTGenerationConfig.asset | 20 + .../Editor/AOTGenerationConfig.asset.meta | 8 + .../Config/Editor/ColorPaletteManager.asset | 136 +++ .../Editor/ColorPaletteManager.asset.meta | 8 + .../Config/Editor/ImportSettingsConfig.asset | 15 + .../Editor/ImportSettingsConfig.asset.meta | 8 + Assets/Resources/DOTweenSettings.asset | 12 +- Assets/Scenes/test.unity | 239 +++- Assets/Scripts/Enemy.cs | 25 +- Assets/Scripts/MyPlayer.cs | 99 +- Assets/Scripts/NormalEnemy.cs | 14 + .../NormalEnemy.cs.meta} | 2 +- Logs/ApiUpdaterCheck.txt | 57 + ProjectSettings/EditorBuildSettings.asset | 5 +- ProjectSettings/NavMeshAreas.asset | 23 +- ProjectSettings/ProjectSettings.asset | 3 +- ProjectSettings/UnityConnectSettings.asset | 2 +- UserSettings/EditorUserSettings.asset | 42 +- 503 files changed, 10418 insertions(+), 10844 deletions(-) rename Assets/{Demigiant/DOTween.meta => Behavior Designer/Resources.meta} (77%) create mode 100644 Assets/Behavior Designer/Resources/BehaviorDesignerGlobalVariables.asset rename Assets/{Demigiant/DOTween/Editor.meta => Behavior Designer/Resources/BehaviorDesignerGlobalVariables.asset.meta} (52%) delete mode 100644 Assets/Demigiant/DOTween/DOTween.dll delete mode 100644 Assets/Demigiant/DOTween/DOTween.dll.mdb delete mode 100644 Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll delete mode 100644 Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll.mdb delete mode 100644 Assets/Demigiant/DOTween/Editor/Imgs.meta delete mode 100644 Assets/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png.meta delete mode 100644 Assets/Demigiant/DOTween/Editor/Imgs/Footer.png.meta delete mode 100644 Assets/Demigiant/DOTween/Editor/Imgs/Header.jpg.meta delete mode 100644 Assets/Demigiant/DOTween/Modules.meta delete mode 100644 Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs delete mode 100644 Assets/Demigiant/DOTweenPro Examples.meta delete mode 100644 Assets/Demigiant/DOTweenPro Examples/Examples Assets.meta delete mode 100644 Assets/Demigiant/DOTweenPro.meta delete mode 100644 Assets/Demigiant/DOTweenPro/DOTweenPro.dll delete mode 100644 Assets/Demigiant/DOTweenPro/DOTweenPro.dll.mdb delete mode 100644 Assets/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs delete mode 100644 Assets/Demigiant/DOTweenPro/Editor.meta delete mode 100644 Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll delete mode 100644 Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.mdb delete mode 100644 Assets/Demigiant/DemiLib.meta delete mode 100644 Assets/Demigiant/DemiLib/Core.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/DemiLib.dll delete mode 100644 Assets/Demigiant/DemiLib/Core/DemiLib.dll.mdb delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.mdb delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha25.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha50.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha80.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/blueSquare.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/circle.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/greenSquare.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/grid_bright.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/grid_dark.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alert.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignB.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBC.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBL.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBR.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCC.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCL.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCR.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignHC.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignL.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignR.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignT.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTC.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTL.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTR.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignVC.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera_border.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog_border.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment_border.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_delete.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_demigiant.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_end.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart_border.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_nodeArrow.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_play.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_play_border.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull_border.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_star.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_star_border.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui_border.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/orangeSquare.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/project.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_atlas.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_audio.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_bundle.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cog.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cross.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_demigiant.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_folder.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_fonts.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_heart.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_play.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_prefab.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_scripts.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_skull.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_star.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_textures.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/purpleSquare.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/redSquare.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorder.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderAlpha15.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02_darkBorders.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedAlpha.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty02.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmptyThick.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBorders.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBordersAlpha.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty01.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty02.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty03.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickEmpty.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickerEmpty.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareCorners03.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareCornersEmpty02.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_empty.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted_alpha.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_darkBorder.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_whiteBorderAlpha.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha10.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha15.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha25.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha50.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha80.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare_fadeOut_bt.png.meta delete mode 100644 Assets/Demigiant/DemiLib/Core/Editor/Imgs/yellowSquare.png.meta create mode 100644 Assets/New Terrain.asset create mode 100644 Assets/New Terrain.asset.meta rename Assets/{ => Plugins}/Demigiant.meta (77%) create mode 100644 Assets/Plugins/Demigiant/DOTween.meta rename Assets/{ => Plugins}/Demigiant/DOTween/DOTween.XML (84%) rename Assets/{ => Plugins}/Demigiant/DOTween/DOTween.XML.meta (58%) create mode 100644 Assets/Plugins/Demigiant/DOTween/DOTween.dll create mode 100644 Assets/Plugins/Demigiant/DOTween/DOTween.dll.mdb rename Assets/{ => Plugins}/Demigiant/DOTween/DOTween.dll.mdb.meta (58%) rename Assets/{ => Plugins}/Demigiant/DOTween/DOTween.dll.meta (55%) create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor.meta rename Assets/{ => Plugins}/Demigiant/DOTween/Editor/DOTweenEditor.XML (83%) rename Assets/{ => Plugins}/Demigiant/DOTween/Editor/DOTweenEditor.XML.meta (58%) create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll.mdb rename Assets/{ => Plugins}/Demigiant/DOTween/Editor/DOTweenEditor.dll.mdb.meta (58%) rename Assets/{ => Plugins}/Demigiant/DOTween/Editor/DOTweenEditor.dll.meta (55%) create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/Imgs.meta rename Assets/{ => Plugins}/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png (100%) create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenMiniIcon.png rename Assets/{Demigiant/DemiLib/Core/Editor/Imgs/blackSquare.png.meta => Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta} (55%) rename Assets/{ => Plugins}/Demigiant/DOTween/Editor/Imgs/Footer.png (100%) create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer.png.meta rename Assets/{ => Plugins}/Demigiant/DOTween/Editor/Imgs/Footer_dark.png (100%) create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer_dark.png.meta rename Assets/{ => Plugins}/Demigiant/DOTween/Editor/Imgs/Header.jpg (100%) create mode 100644 Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Header.jpg.meta create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules.meta rename Assets/{ => Plugins}/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs (89%) 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 rename Assets/{ => Plugins}/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs (84%) rename Assets/{ => Plugins}/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs.meta (73%) create mode 100644 Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs rename Assets/{ => Plugins}/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs.meta (73%) rename Assets/{ => Plugins}/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs (83%) rename Assets/{ => Plugins}/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs.meta (73%) rename Assets/{ => Plugins}/Demigiant/DOTween/Modules/DOTweenModuleUI.cs (66%) rename Assets/{ => Plugins}/Demigiant/DOTween/Modules/DOTweenModuleUI.cs.meta (73%) rename Assets/{ => Plugins}/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs (60%) rename Assets/{ => Plugins}/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta (73%) rename Assets/{ => Plugins}/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs (70%) rename Assets/{ => Plugins}/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs.meta (73%) rename Assets/{ => Plugins}/Demigiant/DOTween/readme.txt (100%) rename Assets/{ => Plugins}/Demigiant/DOTween/readme.txt.meta (58%) create mode 100644 Assets/Plugins/Demigiant/DOTweenPro Examples.meta rename Assets/{ => Plugins}/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity (99%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity.meta (58%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting (100%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting.meta (80%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity (99%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity.meta (58%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting (100%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting.meta (80%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro Examples/DOTweenPath.unity (99%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro Examples/DOTweenPath.unity.meta (58%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting (100%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting.meta (80%) create mode 100644 Assets/Plugins/Demigiant/DOTweenPro Examples/Examples Assets.meta rename Assets/{ => Plugins}/Demigiant/DOTweenPro Examples/Examples Assets/dotweenpro_logo.png (100%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro Examples/Examples Assets/dotweenpro_logo.png.meta (100%) create mode 100644 Assets/Plugins/Demigiant/DOTweenPro.meta rename Assets/{ => Plugins}/Demigiant/DOTweenPro/DOTweenAnimation.cs (61%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro/DOTweenAnimation.cs.meta (73%) 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 rename Assets/{ => Plugins}/Demigiant/DOTweenPro/DOTweenPro.XML (75%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro/DOTweenPro.XML.meta (58%) create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.dll create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.dll.mdb rename Assets/{ => Plugins}/Demigiant/DOTweenPro/DOTweenPro.dll.mdb.meta (58%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro/DOTweenPro.dll.meta (55%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro/DOTweenProShortcuts.cs (100%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro/DOTweenProShortcuts.cs.meta (73%) create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs rename Assets/{ => Plugins}/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs.meta (73%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro/DOTweenTk2d.cs (62%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro/DOTweenTk2d.cs.meta (73%) create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/Editor.meta rename Assets/{ => Plugins}/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs (70%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs.meta (73%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs (94%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs.meta (73%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML (100%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML.meta (58%) create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll create mode 100644 Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.mdb rename Assets/{ => Plugins}/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.mdb.meta (58%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.meta (55%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro/readme.txt (100%) rename Assets/{ => Plugins}/Demigiant/DOTweenPro/readme.txt.meta (58%) 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.mdb rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/DemiLib.dll.mdb.meta (58%) rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/DemiLib.dll.meta (55%) rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/DemiLib.xml (73%) rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/DemiLib.xml.meta (58%) 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.mdb rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.mdb.meta (58%) rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.meta (55%) rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/DemiEditor.xml (58%) rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/DemiEditor.xml.meta (58%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/blackSquare.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquare.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha10.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha10.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha15.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha15.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha25.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha25.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha50.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha50.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha80.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha80.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/blueSquare.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blueSquare.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/circle.png (100%) 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 rename Assets/{Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha10.png.meta => Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle_dashedBorderEmpty.png.meta} (55%) rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/greenSquare.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/greenSquare.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/grid_bright.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/grid_bright.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/grid_dark.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/grid_dark.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_alert.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alert.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignB.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignB.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBC.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBC.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBL.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBL.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBR.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBR.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCC.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCC.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCL.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCL.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCR.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCR.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignHC.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignHC.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignL.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignL.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignR.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignR.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignT.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignT.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTC.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTC.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTL.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTL.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTR.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTR.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignVC.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignVC.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera_border.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera_border.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog_border.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog_border.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment_border.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment_border.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_delete.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_delete.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_demigiant.png (100%) 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 rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_end.png (100%) 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 rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart_border.png (100%) 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 rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_nodeArrow.png (100%) 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 rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_play.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_play.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_play_border.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_play_border.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull_border.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull_border.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_star.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_star.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_star_border.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_star_border.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui_border.png (100%) 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 rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/orangeSquare.png (100%) 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 rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_atlas.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_atlas.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_audio.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_audio.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_bundle.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_bundle.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cog.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cog.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cross.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cross.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_demigiant.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_demigiant.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_folder.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_folder.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_fonts.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_fonts.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_heart.png (100%) 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 rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_play.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_play.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_prefab.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_prefab.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_scripts.png (100%) 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 rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_skull.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_skull.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_star.png (100%) 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 rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_textures.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_textures.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/purpleSquare.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/purpleSquare.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/redSquare.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/redSquare.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareBorder.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorder.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderAlpha15.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderAlpha15.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02_darkBorders.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02_darkBorders.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedAlpha.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedAlpha.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty02.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty02.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmptyThick.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmptyThick.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBorders.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBorders.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBordersAlpha.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBordersAlpha.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty01.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty01.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty02.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty02.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty03.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty03.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickEmpty.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickEmpty.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickerEmpty.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickerEmpty.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareCorners03.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareCorners03.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/squareCornersEmpty02.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareCornersEmpty02.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_empty.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_empty.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted_alpha.png (100%) 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/transparentSquare.png create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/transparentSquare.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_darkBorder.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_darkBorder.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_whiteBorderAlpha.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_whiteBorderAlpha.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha10.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha10.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha15.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha15.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha25.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha25.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha50.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha50.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha80.png (100%) 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 rename Assets/{Demigiant/DOTween/Editor/Imgs/Footer_dark.png.meta => Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareCurved.png.meta} (55%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareCurved02.png rename Assets/{Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha15.png.meta => Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareCurved02.png.meta} (55%) rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare_fadeOut_bt.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare_fadeOut_bt.png.meta rename Assets/{ => Plugins}/Demigiant/DemiLib/Core/Editor/Imgs/yellowSquare.png (100%) create mode 100644 Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/yellowSquare.png.meta rename Assets/{ => Plugins}/Demigiant/readme_DOTweenPro.txt (100%) rename Assets/{ => Plugins}/Demigiant/readme_DOTweenPro.txt.meta (79%) create mode 100644 Assets/Plugins/Sirenix/Odin Inspector/Config/Editor/AOTGenerationConfig.asset create mode 100644 Assets/Plugins/Sirenix/Odin Inspector/Config/Editor/AOTGenerationConfig.asset.meta create mode 100644 Assets/Plugins/Sirenix/Odin Inspector/Config/Editor/ColorPaletteManager.asset create mode 100644 Assets/Plugins/Sirenix/Odin Inspector/Config/Editor/ColorPaletteManager.asset.meta create mode 100644 Assets/Plugins/Sirenix/Odin Inspector/Config/Editor/ImportSettingsConfig.asset create mode 100644 Assets/Plugins/Sirenix/Odin Inspector/Config/Editor/ImportSettingsConfig.asset.meta create mode 100644 Assets/Scripts/NormalEnemy.cs rename Assets/{Demigiant/DOTween/Modules/DOTweenModuleAudio.cs.meta => Scripts/NormalEnemy.cs.meta} (83%) diff --git a/Assets/Demigiant/DOTween.meta b/Assets/Behavior Designer/Resources.meta similarity index 77% rename from Assets/Demigiant/DOTween.meta rename to Assets/Behavior Designer/Resources.meta index 12f704b..c5f69ac 100644 --- a/Assets/Demigiant/DOTween.meta +++ b/Assets/Behavior Designer/Resources.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c07b12ece143f854f9344f036f5450dc +guid: 337e117eb0d8e62418b33a654ac7f725 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Behavior Designer/Resources/BehaviorDesignerGlobalVariables.asset b/Assets/Behavior Designer/Resources/BehaviorDesignerGlobalVariables.asset new file mode 100644 index 0000000..bb30103 --- /dev/null +++ b/Assets/Behavior Designer/Resources/BehaviorDesignerGlobalVariables.asset @@ -0,0 +1,26 @@ +%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: -819100962, guid: da41a8dd3b5ec434a802d9b5a2a0a777, type: 3} + m_Name: BehaviorDesignerGlobalVariables + m_EditorClassIdentifier: + mVariableData: + variableStartIndex: + JSONSerialization: '{"Variables":[]}' + fieldSerializationData: + typeName: [] + fieldNameHash: + startIndex: + dataPosition: + unityObjects: [] + byteData: + byteDataArray: + mVersion: 1.7 diff --git a/Assets/Demigiant/DOTween/Editor.meta b/Assets/Behavior Designer/Resources/BehaviorDesignerGlobalVariables.asset.meta similarity index 52% rename from Assets/Demigiant/DOTween/Editor.meta rename to Assets/Behavior Designer/Resources/BehaviorDesignerGlobalVariables.asset.meta index 1ac7445..722cfdf 100644 --- a/Assets/Demigiant/DOTween/Editor.meta +++ b/Assets/Behavior Designer/Resources/BehaviorDesignerGlobalVariables.asset.meta @@ -1,8 +1,8 @@ fileFormatVersion: 2 -guid: 05f8a23aa702c8a47b2947a3e1f64d03 -folderAsset: yes -DefaultImporter: +guid: bb248943c4a0ffd45a415479b4af2976 +NativeFormatImporter: externalObjects: {} + mainObjectFileID: 11400000 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/Demigiant/DOTween/DOTween.dll b/Assets/Demigiant/DOTween/DOTween.dll deleted file mode 100644 index 644440225e318ff1bb7428b9f2ff1eccf1afc48e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144384 zcmce9349z!m3OPVr+cPnG*(;EjC{m)oXBbBkZs9!Wap3*CngDyKnOu2=Yp&O$4Mqg z2}i~=5#bJr!x<8D8FMVlePp>ITnj9_gmAM9gm53r0=vuZe#^4X_y50FJ<}t}w#@Q< z`f0kWU%h(o)vH&pj;^YH%+yOQ$FeLJzlR^TtPkVPzwL58`ehc;`PCoITlZ$ZeBy_D z9{uGLFL~OYnKd^|*PlB5r0dpP{iN%!uiv=l$-CD~-*o+&J=d=}=c322xvu^fyGMF^ zgOd&E$DV6hkM41-^OwJISIq4pYwenB&j!n?*p}rf^vnwoUW4#exLa1Agb}3N{EP3_ zK>!8CLcX>?pQ!xr+|46F`1|$wwsjE$p!-@XV(#CpZRG&F_dMHLIXCWT&uc6zorq84 z`MkvQ$c?+7bt9h7DMMJqNnVZIF&e;EjZDu>Uk!lB1{o!zBi)GGEo=M8^zLixK%}e| zWVVPhIuGw`MkoK)P_Ou-Y_^rM)|}8|y|Ub6^$7I%FK60L6Ee8A+w8@ybjWV-(UEJk z!mtlc=d$8u*ADG4h9CJ7B+!YafgTe~sLU?{#UEvSEkZQX9^ zUvvu~(OQ;8wWm~&k}Zht3!;UhC;-JbJ0a>Vh-QbRBvwj>*IxDIf0&T`0tjy%i+GMbSV(%B(Oviv;d0^6W;}Q?BI^Dm-t`+^ykHv+x7rS;5@C4dHr!8y;quz>Od=d4!r4R^zM+i|x6lsf z86Jh0dDo6ms^wA(Lc8wFDJUDrPTIr!B0S{X=C6^%(p|PAdhA@>nMWuxnG~b*dXROg zk6WQ`WH_Ap1hf%&cJo!xmFF~H$=hM?lYq{k?gj|o$8Z^8H$`9NMX>O)*6WmYA~XnP zh4~bi&Q5H}$gM9`?h}Y*ZSqB$z7*8 z7W)12Nughy+>5yWbSg|w^=Cpi%uM#Xna~e22N~J#hrU1homA-V>Q5E=gL0S&1N`3| zrlt;t0T6;P@JD~;-vQI_>Gul#+47UZtY56H-x+4BxzG!AdcSLQou#g`_*Y%GGyW?n zKwR$K!Q2P^o>9JE=+BKWhrnSD`ak`T$XJ*wY#a`KSxChGydc6j5~9X*2aMr>S;BB~P;d^KnRxK< z!wsULRoU?*%37673YXDS=zaL zVWF4L!7S}uu`uF_xrk4(D~?0;t{8GO-{>ES)_0z;Fo_e6NaBQfBvvj=V&xG@tei{Y zg4ID`!0sxL3q?_@gCcxkTn1BdHdY5i@R031teTrx?PC?vcG0|Gb!M)pS16mzTv;zz zojn3-b}s6rt8;T06%O0zYrKM1z0Oh7=5hG7OZ^@pc6f8IE2>%nQ0e zcM&u#UG!?ct8?B{icrzCZSX8~dpRTwwbr5gT}A^g{e-B1hib+vMlH~SPbjUjBQ*5^ z`fWYdEl9_|>8pCI8)nhHaEpoF8uV!TX=@MMv+PXi`WB?uJ0!yh?aj^aoyGk!c1n-j ztDD&dDQ3}wceVdM$JCJGfE9dx(`bnMFoH$tx;y)Lx*#)sS1F!GHKVu%66X~d?ij_R?ZI%o_a zYs<4(fnCxEwS~DDG>8~O&0;PFZ6n5rZe#v!*7g7YykC;w{pYjA+e!7$Y~ObnnvQir zTt3N4_$Sm&HZA*wDs9iU&i}K~jqWsLh3=nEuP^<7px2ifnyz&^h8@A5!ROgGp+#8{ zbos~{xRmV1J5T|uK3pvwi&I#iD)jY~PjbA*8DQN=!&mO#Q><+a=K%V8r00@lPrc}y zNEg`Xp-*PxF1k~k9Q{!o8z6R9&ThO09E)R-UEhV8Za411<7ltlcn|JFmlqEAl=Gbj zr`%Jhq@{^S*O2yols2vLWpgjq_9~Sr07z|Wve(YEz1T-h^Ux0wONq=n{y|u771=t0P1ET?Trvu%( zlcERCYl*{piWw03I~uxES*7lNaAb*=lRoa9DzSWT0X-I;(7R+&^hS~F6jJG`Pky277EzI^wkN8d@M`E;OV%+drz)6JJ7@vVXK5TI zo^|nP@$@W5i+}Gi;@LHTve@_g6m*3-z>s~F&NN+5dCA<)OI0nk-8Yn(inxQAh@%HE zaoQb7#IYw};$pX%h^5=qSg$cb7nx;ua>(>Zg6SJDI*A@X2gxbcHv=TL_Y#vAyQ(^G z%Q_ItnSiUOvQ@?eoH7DGmM;-Q`7m@!$QBEqkS#{QEC9ulHu3dsx#9$-e@&g=7t5B2 zqiiN_K^>a7SjI$3%BZnPITz4j7ZTf#(%bEs?a+F2H;lucIg3FIHZaA!n~h1aIRqrT zemN^T^22`eEbbWkgpTwz2giJ;*raJW;=UYlIvTfkYBI2g1>j9K>5S|KiPz5tn`|Lh zF6(o;z5{^a;l?sB114|74NMX8fj7)L<}l~@RWrPg?&K(jvV0V>VB{J)(LSiah%nh_ z<6YZRDUwqh&NknUkl*Ck#j%@z$=f{1DO)Ua;1rtdO*>i_hI7sL<0;*wb4FG_z+0h- zc`es*MN}si(-E1~mu<<}`k2VKQ-@!NZ=tT8`ne33rftO+d5y9hqbwa8Pa%&>=+{tq zmbDOGN2x&}8!OdMDistvO2q?}ifQw#??I{J6I=`Z6TTJ>jqY4$=9$oG;CU`|C<%my z7MW+VLdCh8e58@$#XHN0wxW5|*$tI$Cv)4$f$+4g^>N-rC-p}HiCI{t>HRwTl|lUq z5ae8z5%|YNPGg{iywWzE=fE%>+~aZWB-MmJyR{s`Nm1JJ#;bW3p6%8$T$hamaxbEH z)KhHIbJ{IVSv1+1g4v_;0)oMj+dL>i^!ME68*zc%Io5YUU&^E-clDx#aaYf_8!rQL zb(`IIIq#!(;||`@3}8Ont**5j`*~k(H&&o5Ft6BnDW72-Fm9LGg%tGoun*R*!3}(K zGJ6XT$Z26d&gC&-gZ+`;u@&|KWCm1 zmP2uDS=^sZo33m|?(D_(BiGLdQU%l6=;Zdhslu6GLa}J0-k(x|`@K{@UO1$^Tt2n! zHbj?eVY;x<&E(31p<4-+Mm3}Ipi3M|cbM{)`3?)N&Q53WMh5-xVuXV5Dt57?uR&rV zV*$c+=#RcJOsNE8c%h*()FKSKg0)bkwWX}x0|*RD&^!*N@V=?fWJ2ZeYC)mTNfpPS zI`#@GFo#rOBaDhq)opo@Ja+UM z>tO_tCd7{+KHk1CtBSAw=WTeQhxbpR>l}8s?nf>Xc3!LnUUvLC0=3%%>o1XI6i<`p5W1N{O6FTCCo&(L`HUsH0L6e;PFW9PkKc<#d2j2xByEGz z6t^G5gO-^nZgWA4vYHQ7ll99WTDhsv$|=SGSL(CY(@|6rsju)XzD|f0@&3e(ZI$`$ zhmK*k8Z<%g32!DVgZi9z zudMiZQ3*A0Qn0uc-h~VkC44p@u92aJm%65q)w1zyia8(-B|CLE40L#nSCK^-U-LDu zj43w70i+8GY6(HuHidNnCQJe9pe^9daSd;dVGjLXmpuf>w1+^HwxB&!k8KZGNNs#q zmiCYpd(hxKdr)u~;5{`nnQ%?QK7RcjdJ`UOqJZ`(WnBtG#)~?Ph0aDkgJQP4)6dyz z1ij?}J8h?nHR&MK9|Z(FQWPO83oVPDa|BW>8#v+{gTSMbDO5;mR_h_U8y}x7lF-l_{ z9I)3QQnWHj11~zlnZGwQUaK^|%yf{IH121(OAaD+%YkCI*$gC zx@o{Kg)?6>G+wVXzMi1*jd?VP)JR#N|F`&M4B(K4`+U2c)fWcUgz7%eEl@R z>t|iO3hjK6j4(5=`Qv<{=NZoY-0*tKv3dO>!Rwb@yxRF9l_V<}*Rd|HA+KKuJGu%}diPT*ePb7_hHZ=ZHY5a!iOkMmf!(DZeNZs}e?;6hh&d_+9()gDI zjeng-gGe136UYnRE`~GzCN!MpUy+90MAODB{hrAmuV(h|3}b$b>zPKS)QQA(k9bSR zF(&nbcdX&ee+VtR`3@!WpG;`<@_!ia(hHF~dU+~n43oxx85%Hq*K?ci;;kVM4TkGa zfFR~|Okrcz6JRujL{dHekYM@WZI&r6&x5s+jIwOYjfimOkA~;F$?UNAKM5j-+eF+5 zMFJv3ieLun2PilELpbxWq46HlaGUSttsxH$hUdvmU`KAO32UngE1Qj~QidhTC`*x> zJR|b7fyuRK?;|s}`F`FS^3Y&-9!~;0JRR~eCg(CNCZ}uGl#H57TUU=D&y?Z$0Wv%6 zc}$4Llx>L5@DmY6TL$}tu8737sU2N`UpSLCH0~u0xB1t+HRPee@I1K*?8u!-ungKP zQ-&qUD9g6o$X7U%H9S8^W{168f=F+hNGvyzy5+8rM&8iC;#|u8Vcr_@&|r9;+yr*y zUXozh*Jc^ZO)?3&S;kfJ3=PkZkeS>3C~pmUXfQmFCxIQFOUY+ai>IIA8jB~zmB1(- zlA+p6Jw6jW(Sn3C1BU0v$n3B;$b_bh3k+)+&rE?tChgF6E$Vj@X|FT1KdrP+NzjgB z+Nje>{Svi9OZB^%v>st-eMV`O612)~T1VF}lg_2Rg|sV%_GguLH9>nMrhN?kGU;5} zr;_%1L;G_|8&gW542b z(mK=7`dgK6f=NyN-_CHN{(B7~vAx$e=WNh8gEY=EG`@uBr9F=0L}<3zYMq^+wj-wI ztF?O#qANAkKm7>mO*nIoq4#$x)42&MJ7X$Z&Bb66^>L_R{0NhF>_zJk$~T;Oq@n%y zO8dM7?ek;WN3iplHj~b!y`8i#Ftop{v>%nA{pc>*^X)vQ&7>XLu5~SRau#Vn#?ZcB zX!b1}neI~YH4`7#;~(vY4%#sZImyO(Ccsj?|-A`Rii`lvk4A&*N9kFPGoW4W8;@x%m=$%S~3 zMw>_4V!z^C@~9aeUqigw=@G}AQwbisx_A_@$X>^sB$F60wUx&)+Ec(2z9yWx%<%mB zv3Xve;CV$CPq5UnC#fvN61vne=p)JVO2hLT3-LU^%Qmh`@O)Ai&(0W>WD-nahdQ># zdzf(M$%fZAkIn1q1h2p7;?*95l1h@5I zVERK{Ci9d8>!)_H?qrix=kV5iUO?VYGrYgu;oYfk-OTnRm|fGwtesC%naArzJ(l$- z^4e>7eFs?BZ}WZJQpNR7vCq-D?&d!*0?umozUFrsEHwX-H(6fV{2qgF^4BKBxGok$ zJe>LqanE@-H8iz%7oC!~9OALJw=%*=s~kN77ep2#xPvn2T~8V*;BkajZazph4PkcJ zt0#Ef5cBf(QF7UHA#CMhxC+A|!?36fH?XI9*n4_{)^tp(L%>i)=O{?hTGdT!RC=wH zG14G)$*nJCT|*1US6=5eBol|d8M2YAp=J}#Y>A!MQ6?D9hch<afW8C60 z@frlyp9G0?AIVRM1Bp>QKV-1be26zKo*yyTkn3UZrbJ$!5$Dz0N9xC|w`V43Ju9Y_ z)SFOUjNT4=&rZ;~xr^4HU^}J+sH8b1fYNS|x~Lu=j;g0-*f#jG78%ng;mkhZQ1?GY zR9>~7ie9hQ(o9I&iX}}s+%7ePeZ8K`9Z_Yk!L-~zghuztC@5@)yI-+CJS3;H5QCc}{hy2BnjPbhm5ZO?%zZ_M+BGy4tie^%bS)&F8qynn5{?@aK1 z>B788G{O7L&>`j(! zqAjq_6&hucve*l95nR*0MvQ?{0mc^ezBIxe<|-blAkG)LkxF!`6EnQAbX@Ky$~H6qd&*}4<3 z49`E3n9}`krTgXt-M4h;cFNjoFp-WPxgi{kupANr4Dw{B5eDC0X&slKW0)%t45Q?Z zp@!ViZI(N_d|qjbtnQkcbaitgj+JDBsYw z2Zn>@HE_LNa}Ta|tB7lJuLOq}yp}=z8^F4z89e&9Pn-MG&HV;*M~776ujjpa9j^93 z^G4ouNzqLV7Mjlx$Z}kp&t$OJe3n2~5b|sW#hW#6X0Xs~=xrZw1I;FHy4I*A!PU4n zZ()$?Q;HIjEJ=u2v`Zg#2G^$svA*2n?wdaBH4(npTaAHGfJLhap~(wW1kshvK92kW zSp)zM=mu3^L@1~64C=w&rU-*w#3q(fA=WXmBA*ey^a6YJuu_}1MM<-VeQ|9J17X%g zeWi<&#pGxamCi=Al$$9t$+i@LgjgV|9u|>?SZEqzF=~hft05M(hNS$2ij;?hq(~$r zWmy`T`ES_QEVSpAzN9;0D$5f)VxU~vE7N#8Fe-Mu)1|2E&5kFDW0KruxER7_Jxxs5 zX}&<@KNi*t7lrkrMPa>Iu(;k0CaN|gc|N)#=Gvqrab$_8QP~juMs>Y2xN(I74EP?f zbIgjia-RZGZDw!LHEu9p)OE*#RDV8M%z{5H%KwdAwgoShl

v_dY=lyHYI_ZpyGmOsUd?RuX1CFDL5 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%0D1%43bKLiA^ec6M+v_mJVSV%@CxB|Le&f7 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 BNZ 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 Y<})(~^O=o<`OLw=eCFa{KJ)Vb0X(%mBme*a diff --git a/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll b/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll deleted file mode 100644 index abad050d891371b86b3dd1572cc8d50e02661dd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44032 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 hS;!Jd{ETweens 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 Tweener DOMove(this Rigidbody2D target, Vector2 endValue, float duration, bool snapping = false) - { - return DOTween.To(() => target.position, target.MovePosition, endValue, duration) - .SetOptions(snapping).SetTarget(target); - } - - ///

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 Tweener DOMoveX(this Rigidbody2D target, float endValue, float duration, bool snapping = false) - { - return DOTween.To(() => target.position, target.MovePosition, new Vector2(endValue, 0), duration) - .SetOptions(AxisConstraint.X, snapping).SetTarget(target); - } - - /// 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 Tweener DOMoveY(this Rigidbody2D target, float endValue, float duration, bool snapping = false) - { - return DOTween.To(() => target.position, target.MovePosition, new Vector2(0, endValue), duration) - .SetOptions(AxisConstraint.Y, snapping).SetTarget(target); - } - - /// 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 Tweener DORotate(this Rigidbody2D target, float endValue, float duration) - { - return DOTween.To(() => target.rotation, target.MoveRotation, endValue, duration) - .SetTarget(target); - } - - #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; - } - - #endregion - - #endregion - - #endregion - } -} -#endif diff --git a/Assets/Demigiant/DOTweenPro Examples.meta b/Assets/Demigiant/DOTweenPro Examples.meta deleted file mode 100644 index c153fba..0000000 --- a/Assets/Demigiant/DOTweenPro Examples.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b6bdab3c01557584180159a3469b6048 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DOTweenPro Examples/Examples Assets.meta b/Assets/Demigiant/DOTweenPro Examples/Examples Assets.meta deleted file mode 100644 index cb155cb..0000000 --- a/Assets/Demigiant/DOTweenPro Examples/Examples Assets.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: bc383323f6b27ea4ab42a5fe7d7dbf06 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DOTweenPro.meta b/Assets/Demigiant/DOTweenPro.meta deleted file mode 100644 index cf975b1..0000000 --- a/Assets/Demigiant/DOTweenPro.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 27ff63655232ee540882ae60c8f71218 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DOTweenPro/DOTweenPro.dll b/Assets/Demigiant/DOTweenPro/DOTweenPro.dll deleted file mode 100644 index bfd1a806e7a4e8e8f6bf0de0cd04248098749176..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15872 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 VDGv-G$H0Jwkth7?_5Ys-{x_BF7Ht3k diff --git a/Assets/Demigiant/DOTweenPro/DOTweenPro.dll.mdb b/Assets/Demigiant/DOTweenPro/DOTweenPro.dll.mdb deleted file mode 100644 index 4c20587f8884b68f5a22b3655b8eb1c733a5caf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2469 zcmcImYj6`)7`=BlyWONoQy~?hEsuiENTDbX#TG_zlPOI=YKu5PG=_9bV`EyAw!9T6 zj6gxKE!3eX2uRUFXDo_Xc@5Z7sq$tN1$B59$;u5CeDto_m6sRy5rU z`Xu5@D1>&g_t`x4XI8_BB=ER{@eQ64f#s;WM6X4Zx=Z#(7= zm^k$2d!^UT-{v!>zOt|(V`i*pUp?_WxC}xCNT6wSmizY6?B}XRDod-aagO}V*1W4P zzckSJLj1Q|*4OuX5UY_HD4yaEhTYkP{*X5ic|t0UYoS?+h$?A&lTZB`zgX4+Xd zciF8+E|{aaQo+-epmtCne5A4{Wp!gE7Q%O-`GiusLLe)JH3BLKjS^^sO;+ts1yV0; z)$Bg>$_$@vM!wC#-e?xcH^KoeG>FR5uyO>|-%MW)l)_q_705Z^JX%E&T12T(6!Hec z9A_-_hLm7YW!>D8MeVkN!JMO2-x4$%3USI%`rtGMeN z_6f$yVWb8k5YfQ#9x8RR$rpFXXIJFN6|y{&&=E;MyyQq;NKx%1fL; zox}IqIX53iH%t90oYEwz&tRt{OT81={ZYb}`Tb395FcsV) zk$f)xE~-h!=bR9z~rQ6f#!e%(Gt zsrs2y5;-mXtlO6~yG!Mp9;65;;WBX`9yiLnB#dT(8@IYOS{$$(P0k z-JZu$mvgdhU0MZ8^N^7oHXhM~Wn3hmD@JnFculvLbCK*zO=P}lfvID(RUF;wa)xsf z*_T$CNVRFT9;@Z(Pm>aytPr_vCh~=8J3?61g3xFsNGYou%JCs3OnK_(v}z!QkxCgd zo*kiTC189z(0j5oS+2&qcVnpUo9rxOA3kCtmrd>Xut+4eI8l?7nnOy!TjVcM?Ec(b zbi%q~ouEv40VQfMXeHXJZKbDPix|^>)r{FEC|hd16p_St98F7`VGFaGV@bqI6Z-c5 z?*bgE7QiRbtgnqR zq$XyQ?vGI$?}{P2WA?x_kZ3GUVOYt@R6;&Vt;Ioqk>g(u7n>VW-Y8arzUi7xc`>Y> zmpG9kCtoG^Pk9*lEV@rh&iXBXwe)?htG0Hti)C>vhAg+PvUX(GU(MocD`~Vg!Nhqg z*5E{43*aa2!tFBvC#-l9+ybBr@jmzhfMO6$Fy^2E&L}Ynx(k4vDW-u30N5;I7I+lE zD$)=30H^?Q4!8usT8dTRr2wW=tOIWVFfn2y_$vVEiD$q^fmrCjz}JC?pkr|si$Et( zKX4+@89E*O3}Ay^3!V?eK@UUXM&M!SJa7ik1^P{JG0+vd0$c`kgWd|>1jIu(gZBUl z(5JyCfJEpU;LAXF=qOCaedr$03D7p6C-h+O<3KOy4Dd)G3AzEi9_Ryo2)rM_TBv`b hFwLYLz!a0&Ffn9u56t3=5M=QsxUu*$FpHOi{|0|SLzDmj diff --git a/Assets/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs b/Assets/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs deleted file mode 100644 index e4fb686..0000000 --- a/Assets/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs +++ /dev/null @@ -1,355 +0,0 @@ -// 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 UnityEngine; -using TMPro; - -namespace DG.Tweening -{ - /// - /// 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 Tweener DOColor(this TMP_Text target, Color endValue, float duration) - { - return DOTween.To(() => target.color, x => target.color = x, endValue, duration) - .SetTarget(target); - } - - /// 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 Tweener DOFaceColor(this TMP_Text target, Color32 endValue, float duration) - { - return DOTween.To(() => target.faceColor, x => target.faceColor = x, endValue, duration) - .SetTarget(target); - } - - /// 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 Tweener DOOutlineColor(this TMP_Text target, Color32 endValue, float duration) - { - return DOTween.To(() => target.outlineColor, x => target.outlineColor = x, endValue, duration) - .SetTarget(target); - } - - /// 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 Tweener DOGlowColor(this TMP_Text target, Color endValue, float duration, bool useSharedMaterial = false) - { - return useSharedMaterial - ? target.fontSharedMaterial.DOColor(endValue, "_GlowColor", duration).SetTarget(target) - : target.fontMaterial.DOColor(endValue, "_GlowColor", duration).SetTarget(target); - } - - /// 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 Tweener DOFade(this TMP_Text target, float endValue, float duration) - { - return DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration) - .SetTarget(target); - } - - /// 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 Tweener DOFaceFade(this TMP_Text target, float endValue, float duration) - { - return DOTween.ToAlpha(() => target.faceColor, x => target.faceColor = x, endValue, duration) - .SetTarget(target); - } - - #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 Tweener DOScale(this TMP_Text target, float endValue, float duration) - { - Transform t = target.transform; - Vector3 endValueV3 = new Vector3(endValue, endValue, endValue); - return DOTween.To(() => t.localScale, x => t.localScale = x, endValueV3, duration).SetTarget(target); - } - - /// 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 Tweener DOFontSize(this TMP_Text target, float endValue, float duration) - { - return DOTween.To(() => target.fontSize, x => target.fontSize = x, endValue, duration) - .SetTarget(target); - } - - /// 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 Tweener DOMaxVisibleCharacters(this TMP_Text target, int endValue, float duration) - { - return DOTween.To(() => target.maxVisibleCharacters, x => target.maxVisibleCharacters = x, endValue, duration) - .SetTarget(target); - } - - /// 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 Tweener DOText(this TMP_Text target, string endValue, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null) - { - return DOTween.To(() => target.text, x => target.text = x, endValue, duration) - .SetOptions(richTextEnabled, scrambleMode, scrambleChars) - .SetTarget(target); - } - - #endregion - } - -// /// -// /// Methods that extend TextMeshPro objects and allow to directly create and control tweens from their instances. -// /// -// public static class ShortcutExtensionsTextMeshPro -// { -// #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 Tweener DOColor(this TextMeshPro target, Color endValue, float duration) -// { -// return DOTween.To(() => target.color, x => target.color = x, endValue, duration) -// .SetTarget(target); -// } -// -// /// 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 Tweener DOFaceColor(this TextMeshPro target, Color32 endValue, float duration) -// { -// return DOTween.To(() => target.faceColor, x => target.faceColor = x, endValue, duration) -// .SetTarget(target); -// } -// -// /// 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 Tweener DOOutlineColor(this TextMeshPro target, Color32 endValue, float duration) -// { -// return DOTween.To(() => target.outlineColor, x => target.outlineColor = x, endValue, duration) -// .SetTarget(target); -// } -// -// /// 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 Tweener DOGlowColor(this TextMeshPro target, Color endValue, float duration, bool useSharedMaterial = false) -// { -// return useSharedMaterial -// ? target.fontSharedMaterial.DOColor(endValue, "_GlowColor", duration).SetTarget(target) -// : target.fontMaterial.DOColor(endValue, "_GlowColor", duration).SetTarget(target); -// } -// -// /// 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 Tweener DOFade(this TextMeshPro target, float endValue, float duration) -// { -// return DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration) -// .SetTarget(target); -// } -// -// /// 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 Tweener DOFaceFade(this TextMeshPro target, float endValue, float duration) -// { -// return DOTween.ToAlpha(() => target.faceColor, x => target.faceColor = x, endValue, duration) -// .SetTarget(target); -// } -// -// #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 Tweener DOScale(this TextMeshPro target, float endValue, float duration) -// { -// Transform t = target.transform; -// Vector3 endValueV3 = new Vector3(endValue, endValue, endValue); -// return DOTween.To(() => t.localScale, x => t.localScale = x, endValueV3, duration).SetTarget(target); -// } -// -// /// 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 Tweener DOFontSize(this TextMeshPro target, float endValue, float duration) -// { -// return DOTween.To(() => target.fontSize, x => target.fontSize = x, endValue, duration) -// .SetTarget(target); -// } -// -// /// 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 Tweener DOMaxVisibleCharacters(this TextMeshPro target, int endValue, float duration) -// { -// return DOTween.To(() => target.maxVisibleCharacters, x => target.maxVisibleCharacters = x, endValue, duration) -// .SetTarget(target); -// } -// -// /// 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 Tweener DOText(this TextMeshPro target, string endValue, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null) -// { -// return DOTween.To(() => target.text, x => target.text = x, endValue, duration) -// .SetOptions(richTextEnabled, scrambleMode, scrambleChars) -// .SetTarget(target); -// } -// -// #endregion -// } -// -// /// -// /// Methods that extend TextMeshProUGUI objects and allow to directly create and control tweens from their instances. -// /// -// public static class ShortcutExtensionsTextMeshProUGUI -// { -// #region Colors -// -// /// Tweens a TextMeshProUGUI's color to the given value. -// /// Also stores the TextMeshProUGUI as the tween's target so it can be used for filtered operations -// /// The end value to reachThe duration of the tween -// public static Tweener DOColor(this TextMeshProUGUI target, Color endValue, float duration) -// { -// return DOTween.To(() => target.color, x => target.color = x, endValue, duration) -// .SetTarget(target); -// } -// -// /// Tweens a TextMeshProUGUI's faceColor to the given value. -// /// Also stores the TextMeshProUGUI as the tween's target so it can be used for filtered operations -// /// The end value to reachThe duration of the tween -// public static Tweener DOFaceColor(this TextMeshProUGUI target, Color32 endValue, float duration) -// { -// return DOTween.To(() => target.faceColor, x => target.faceColor = x, endValue, duration) -// .SetTarget(target); -// } -// -// /// Tweens a TextMeshProUGUI's outlineColor to the given value. -// /// Also stores the TextMeshProUGUI as the tween's target so it can be used for filtered operations -// /// The end value to reachThe duration of the tween -// public static Tweener DOOutlineColor(this TextMeshProUGUI target, Color32 endValue, float duration) -// { -// return DOTween.To(() => target.outlineColor, x => target.outlineColor = x, endValue, duration) -// .SetTarget(target); -// } -// -// /// Tweens a TextMeshProUGUI's glow color to the given value. -// /// Also stores the TextMeshProUGUI 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 Tweener DOGlowColor(this TextMeshProUGUI target, Color endValue, float duration, bool useSharedMaterial = false) -// { -// return useSharedMaterial -// ? target.fontSharedMaterial.DOColor(endValue, "_GlowColor", duration).SetTarget(target) -// : target.fontMaterial.DOColor(endValue, "_GlowColor", duration).SetTarget(target); -// } -// -// /// Tweens a TextMeshProUGUI's alpha color to the given value. -// /// Also stores the TextMeshProUGUI as the tween's target so it can be used for filtered operations -// /// The end value to reachThe duration of the tween -// public static Tweener DOFade(this TextMeshProUGUI target, float endValue, float duration) -// { -// return DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration) -// .SetTarget(target); -// } -// -// /// Tweens a TextMeshProUGUI faceColor's alpha to the given value. -// /// Also stores the TextMeshProUGUI as the tween's target so it can be used for filtered operations -// /// The end value to reachThe duration of the tween -// public static Tweener DOFaceFade(this TextMeshProUGUI target, float endValue, float duration) -// { -// return DOTween.ToAlpha(() => target.faceColor, x => target.faceColor = x, endValue, duration) -// .SetTarget(target); -// } -// -// #endregion -// -// #region Other -// -// /// Tweens a TextMeshProUGUI's scale to the given value (using correct uniform scale as TMP requires). -// /// Also stores the TextMeshProUGUI as the tween's target so it can be used for filtered operations -// /// The end value to reachThe duration of the tween -// public static Tweener DOScale(this TextMeshProUGUI target, float endValue, float duration) -// { -// Transform t = target.transform; -// Vector3 endValueV3 = new Vector3(endValue, endValue, endValue); -// return DOTween.To(() => t.localScale, x => t.localScale = x, endValueV3, duration).SetTarget(target); -// } -// -// /// Tweens a TextMeshProUGUI's fontSize to the given value. -// /// Also stores the TextMeshProUGUI as the tween's target so it can be used for filtered operations -// /// The end value to reachThe duration of the tween -// public static Tweener DOFontSize(this TextMeshProUGUI target, float endValue, float duration) -// { -// return DOTween.To(() => target.fontSize, x => target.fontSize = x, endValue, duration) -// .SetTarget(target); -// } -// -// /// Tweens a TextMeshProUGUI's maxVisibleCharacters to the given value. -// /// Also stores the TextMeshProUGUI as the tween's target so it can be used for filtered operations -// /// The end value to reachThe duration of the tween -// public static Tweener DOMaxVisibleCharacters(this TextMeshProUGUI target, int endValue, float duration) -// { -// return DOTween.To(() => target.maxVisibleCharacters, x => target.maxVisibleCharacters = x, endValue, duration) -// .SetTarget(target); -// } -// -// /// Tweens a TextMeshProUGUI's text to the given value. -// /// Also stores the TextMeshProUGUI 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 Tweener DOText(this TextMeshProUGUI target, string endValue, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null) -// { -// return DOTween.To(() => target.text, x => target.text = x, endValue, duration) -// .SetOptions(richTextEnabled, scrambleMode, scrambleChars) -// .SetTarget(target); -// } -// -// #endregion -// } -} -#endif diff --git a/Assets/Demigiant/DOTweenPro/Editor.meta b/Assets/Demigiant/DOTweenPro/Editor.meta deleted file mode 100644 index 24daff5..0000000 --- a/Assets/Demigiant/DOTweenPro/Editor.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d5ac6e5aca16df84793e9fee91bb0b9a -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll b/Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll deleted file mode 100644 index 4253b6cf83f12bc50f71a70461c27741b8046261..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28672 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 NoA4h17XC@#zW|3KioO5< diff --git a/Assets/Demigiant/DemiLib/Core/Editor.meta b/Assets/Demigiant/DemiLib/Core/Editor.meta deleted file mode 100644 index ac21344..0000000 --- a/Assets/Demigiant/DemiLib/Core/Editor.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1e3887b9d0c9c4348aa3af5507d175cf -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll b/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll deleted file mode 100644 index b949eaa3bc61f79aa93bc2abbf5bd55cfd9b372e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132096 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 diff --git a/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.mdb b/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.mdb deleted file mode 100644 index cd6055fda40064b951dca254cc567a4b63333e18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43430 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 zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PCk&^rGpV2Nv745FkK+009C72oNAZfB*pk1PBly zK!CvB0>5|F-kF2|0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF f5FkK+!2d;{w^UWl{|4Yc@2INR9jU5(ud4q6NmHrg literal 0 HcmV?d00001 diff --git a/Assets/New Terrain.asset.meta b/Assets/New Terrain.asset.meta new file mode 100644 index 0000000..f866237 --- /dev/null +++ b/Assets/New Terrain.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cc865bcd0f229af4c8d01b56bf31d236 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 15600000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Demigiant.meta b/Assets/Plugins/Demigiant.meta similarity index 77% rename from Assets/Demigiant.meta rename to Assets/Plugins/Demigiant.meta index c683097..ea25f3a 100644 --- a/Assets/Demigiant.meta +++ b/Assets/Plugins/Demigiant.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f126aa22382add04a928df7e660f235c +guid: e90c64081faeacd448579403136b6891 folderAsset: yes DefaultImporter: externalObjects: {} 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/Demigiant/DOTween/DOTween.XML b/Assets/Plugins/Demigiant/DOTween/DOTween.XML similarity index 84% rename from Assets/Demigiant/DOTween/DOTween.XML rename to Assets/Plugins/Demigiant/DOTween/DOTween.XML index d3bf9e1..762220e 100644 --- a/Assets/Demigiant/DOTween/DOTween.XML +++ b/Assets/Plugins/Demigiant/DOTween/DOTween.XML @@ -137,6 +137,34 @@ 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. @@ -199,27 +227,59 @@ Used to dispatch commands that need to be captured externally, usually by Modules - + 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 withing all possible project assembly names + 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) @@ -262,6 +322,9 @@ INTERNAL: do not use + + INTERNAL: do not use + INTERNAL: do not use @@ -277,6 +340,46 @@ 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 @@ -290,6 +393,13 @@ (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. @@ -316,10 +426,24 @@ 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 @@ -635,9 +759,21 @@ - Returns a new to be used for tween groups + 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) @@ -678,6 +814,10 @@ 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 @@ -777,6 +917,12 @@ 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. + A tween is considered active if it wasn't killed, regardless if it's playing or paused + + Returns the total number of active and playing tweens. @@ -832,7 +978,39 @@ 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 SetUpdate 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 Vector3. + You can add regular settings to the generated tween, + but do not use SetUpdate 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 SetUpdate 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) @@ -927,6 +1105,44 @@ 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) @@ -955,11 +1171,31 @@ 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) @@ -1074,10 +1310,26 @@ (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 @@ -1092,12 +1344,12 @@ Restarts the tween from the beginning - If TRUE includes the eventual tween delay, otherwise skips it - If >= 0 changes the startup delay to this value, otherwise doesn't touch it + 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 - If TRUE includes the eventual tween delay, otherwise skips it + Ignored in case of Sequences. If TRUE includes the eventual tween delay, otherwise skips it Smoothly rewinds the tween (delays excluded). @@ -1170,6 +1422,9 @@ 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 @@ -1191,7 +1446,7 @@ 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. + 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: @@ -1382,6 +1637,13 @@ 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). @@ -1396,6 +1658,14 @@ 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 @@ -1403,6 +1673,13 @@ 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 @@ -1436,6 +1713,13 @@ 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 @@ -1551,7 +1835,16 @@ The end value to reachThe duration of the tween - Tweens a Transform's rotation so that it will look towards the given position. + 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 @@ -1669,7 +1962,7 @@ 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) or CatmullRom (curved CatmullRom path) + 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 @@ -1680,7 +1973,7 @@ 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) or CatmullRom (curved CatmullRom path) + 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 @@ -1730,6 +2023,15 @@ 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, @@ -2085,12 +2387,12 @@ - Sets the autoKill behaviour of the tween. - Has no effect if the tween has already started + 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 + 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 @@ -2107,6 +2409,19 @@ 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. @@ -2178,6 +2493,17 @@ 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 @@ -2288,9 +2614,53 @@ 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. - Has no effect on Sequences or if the tween has already started + 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 @@ -2373,6 +2743,12 @@ 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: @@ -2397,6 +2773,13 @@ 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. @@ -2406,6 +2789,13 @@ 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. @@ -2415,6 +2805,13 @@ 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 @@ -2438,7 +2835,11 @@ TimeScale for the tween - If TRUE the tween wil go backwards + 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 @@ -2452,7 +2853,7 @@ 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 shorcuts + 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. @@ -2485,12 +2886,20 @@ 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 diff --git a/Assets/Demigiant/DOTween/DOTween.XML.meta b/Assets/Plugins/Demigiant/DOTween/DOTween.XML.meta similarity index 58% rename from Assets/Demigiant/DOTween/DOTween.XML.meta rename to Assets/Plugins/Demigiant/DOTween/DOTween.XML.meta index c87a520..7a866b5 100644 --- a/Assets/Demigiant/DOTween/DOTween.XML.meta +++ b/Assets/Plugins/Demigiant/DOTween/DOTween.XML.meta @@ -1,7 +1,4 @@ fileFormatVersion: 2 guid: 34192c5e0d14aee43a0e86cc4823268a TextScriptImporter: - externalObjects: {} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTween/DOTween.dll b/Assets/Plugins/Demigiant/DOTween/DOTween.dll new file mode 100644 index 0000000000000000000000000000000000000000..4c0bb10614d73a5b46e58df117be2e2e2729aae0 GIT binary patch literal 172032 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 ~)CFU>gFNmEmDDr()MofeLM*N!iq)bs8(sgG(U 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 CoM(&x literal 0 HcmV?d00001 diff --git a/Assets/Demigiant/DOTween/DOTween.dll.mdb.meta b/Assets/Plugins/Demigiant/DOTween/DOTween.dll.mdb.meta similarity index 58% rename from Assets/Demigiant/DOTween/DOTween.dll.mdb.meta rename to Assets/Plugins/Demigiant/DOTween/DOTween.dll.mdb.meta index 779c1ad..f64a22a 100644 --- a/Assets/Demigiant/DOTween/DOTween.dll.mdb.meta +++ b/Assets/Plugins/Demigiant/DOTween/DOTween.dll.mdb.meta @@ -1,7 +1,4 @@ fileFormatVersion: 2 guid: 4f007001a22b3d24dae350342c4d19c8 DefaultImporter: - externalObjects: {} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DOTween/DOTween.dll.meta b/Assets/Plugins/Demigiant/DOTween/DOTween.dll.meta similarity index 55% rename from Assets/Demigiant/DOTween/DOTween.dll.meta rename to Assets/Plugins/Demigiant/DOTween/DOTween.dll.meta index e8655b6..482dbb8 100644 --- a/Assets/Demigiant/DOTween/DOTween.dll.meta +++ b/Assets/Plugins/Demigiant/DOTween/DOTween.dll.meta @@ -1,21 +1,22 @@ fileFormatVersion: 2 guid: a811bde74b26b53498b4f6d872b09b6d PluginImporter: - externalObjects: {} - serializedVersion: 2 + serializedVersion: 1 iconMap: {} executionOrder: {} - defineConstraints: [] isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 platformData: - - first: - Any: - second: + 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/DOTween/Editor.meta b/Assets/Plugins/Demigiant/DOTween/Editor.meta new file mode 100644 index 0000000..532edfb --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Editor.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: b27f58ae5d5c33a4bb2d1f4f34bd036d +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Demigiant/DOTween/Editor/DOTweenEditor.XML b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.XML similarity index 83% rename from Assets/Demigiant/DOTween/Editor/DOTweenEditor.XML rename to Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.XML index 884656c..8b82472 100644 --- a/Assets/Demigiant/DOTween/Editor/DOTweenEditor.XML +++ b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.XML @@ -10,10 +10,14 @@ Eventual callback to call after every update - + - Stops the update loop and clears any callback. + 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 @@ -24,6 +28,15 @@ 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, diff --git a/Assets/Demigiant/DOTween/Editor/DOTweenEditor.XML.meta b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.XML.meta similarity index 58% rename from Assets/Demigiant/DOTween/Editor/DOTweenEditor.XML.meta rename to Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.XML.meta index 258ca87..7cec113 100644 --- a/Assets/Demigiant/DOTween/Editor/DOTweenEditor.XML.meta +++ b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.XML.meta @@ -1,7 +1,4 @@ fileFormatVersion: 2 guid: 2e2c6224d345d9249acfa6e8ef40bb2d TextScriptImporter: - externalObjects: {} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll new file mode 100644 index 0000000000000000000000000000000000000000..1599b4066a5a958b3446e67cddd5926fc2ed7688 GIT binary patch literal 66048 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 QuO7ac!T&$z|2hZ$7vfCwQUCw| literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll.mdb b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll.mdb new file mode 100644 index 0000000000000000000000000000000000000000..fa2e9032c8671017aaf1b6bc5c2175026edb576f GIT binary patch literal 11774 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 NgQu&X%Q~loCICTRfS>>X literal 0 HcmV?d00001 diff --git a/Assets/Demigiant/DemiLib/Core/Editor/Imgs/blackSquare.png.meta b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta similarity index 55% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/blackSquare.png.meta rename to Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta index 0d69ecd..c343a61 100644 --- a/Assets/Demigiant/DemiLib/Core/Editor/Imgs/blackSquare.png.meta +++ b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta @@ -1,9 +1,10 @@ fileFormatVersion: 2 -guid: 7ba4b2810f605d945af87e032ca2957b +guid: 61521df2e071645488ba3d05e49289ae +timeCreated: 1602317874 +licenseType: Store TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 + fileIDToRecycleName: {} + serializedVersion: 4 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -11,8 +12,6 @@ TextureImporter: linearTexture: 0 fadeOut: 0 borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 mipMapFadeDistanceStart: 1 mipMapFadeDistanceEnd: 3 bumpmap: @@ -21,23 +20,17 @@ TextureImporter: heightScale: 0.25 normalMapFilter: 0 isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 grayScaleToAlpha: 0 generateCubemap: 6 cubemapConvolution: 0 seamlessCubemap: 0 - textureFormat: -1 - maxTextureSize: 1024 + textureFormat: 1 + maxTextureSize: 2048 textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: 0 - wrapU: 0 - wrapV: 0 - wrapW: 0 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 nPOTScale: 1 lightmap: 0 compressionQuality: 50 @@ -46,51 +39,30 @@ TextureImporter: spriteMeshType: 1 alignment: 0 spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 + spritePixelsToUnits: 100 alphaUsage: 1 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 1 platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 1024 - resizeAlgorithm: 0 + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 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/Demigiant/DOTween/Editor/Imgs/Footer.png b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer.png similarity index 100% rename from Assets/Demigiant/DOTween/Editor/Imgs/Footer.png rename to Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer.png 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/Demigiant/DOTween/Editor/Imgs/Footer_dark.png b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer_dark.png similarity index 100% rename from Assets/Demigiant/DOTween/Editor/Imgs/Footer_dark.png rename to Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer_dark.png 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/Demigiant/DOTween/Editor/Imgs/Header.jpg b/Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Header.jpg similarity index 100% rename from Assets/Demigiant/DOTween/Editor/Imgs/Header.jpg rename to Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Header.jpg 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/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs similarity index 89% rename from Assets/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs rename to Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs index c342c02..c195b6c 100644 --- a/Assets/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs @@ -3,6 +3,8 @@ #if true // MODULE_MARKER using System; +using DG.Tweening.Core; +using DG.Tweening.Plugins.Options; using UnityEngine; #if UNITY_5 || UNITY_2017_1_OR_NEWER using UnityEngine.Audio; // Required for AudioMixer @@ -20,19 +22,23 @@ namespace DG.Tweening /// 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 Tweener DOFade(this AudioSource target, float endValue, float duration) + public static TweenerCore DOFade(this AudioSource target, float endValue, float duration) { if (endValue < 0) endValue = 0; else if (endValue > 1) endValue = 1; - return DOTween.To(() => target.volume, x => target.volume = x, endValue, duration).SetTarget(target); + 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 Tweener DOPitch(this AudioSource target, float endValue, float duration) + public static TweenerCore DOPitch(this AudioSource target, float endValue, float duration) { - return DOTween.To(() => target.pitch, x => target.pitch = x, endValue, duration).SetTarget(target); + TweenerCore t = DOTween.To(() => target.pitch, x => target.pitch = x, endValue, duration); + t.SetTarget(target); + return t; } #endregion @@ -45,14 +51,15 @@ namespace DG.Tweening /// 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 Tweener DOSetFloat(this AudioMixer target, string floatName, float endValue, float duration) + public static TweenerCore DOSetFloat(this AudioMixer target, string floatName, float endValue, float duration) { - return DOTween.To(()=> { + TweenerCore t = DOTween.To(()=> { float currVal; target.GetFloat(floatName, out currVal); return currVal; - }, x=> target.SetFloat(floatName, x), endValue, duration) - .SetTarget(target); + }, x=> target.SetFloat(floatName, x), endValue, duration); + t.SetTarget(target); + return t; } #region Operation Shortcuts 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..aff1235 --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs @@ -0,0 +1,142 @@ +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); + } + + 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; + } + + 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; + } + + 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; + } + + 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; + } + + 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; + } + + 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; + } + + public static TweenerCore DOInfoRendererScale(this Outliner target, float endValue, float duration, bool snapping = false) + { + var tweener = DOTween.To(() => target.InfoRendererScale, x => target.InfoRendererScale = x, endValue, duration); + tweener.SetOptions(snapping).SetTarget(target); + return tweener; + } + + public static TweenerCore DOPrimaryRendererScale(this Outliner target, float endValue, float duration, bool snapping = false) + { + var tweener = DOTween.To(() => target.PrimaryRendererScale, x => target.PrimaryRendererScale = 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/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs similarity index 84% rename from Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs rename to Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs index 2a85cc6..08b0700 100644 --- a/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs @@ -23,47 +23,51 @@ namespace DG.Tweening /// 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 Tweener DOMove(this Rigidbody target, Vector3 endValue, float duration, bool snapping = false) + public static TweenerCore DOMove(this Rigidbody target, Vector3 endValue, float duration, bool snapping = false) { - return DOTween.To(() => target.position, target.MovePosition, endValue, duration) - .SetOptions(snapping).SetTarget(target); + 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 Tweener DOMoveX(this Rigidbody target, float endValue, float duration, bool snapping = false) + public static TweenerCore DOMoveX(this Rigidbody target, float endValue, float duration, bool snapping = false) { - return DOTween.To(() => target.position, target.MovePosition, new Vector3(endValue, 0, 0), duration) - .SetOptions(AxisConstraint.X, snapping).SetTarget(target); + 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 Tweener DOMoveY(this Rigidbody target, float endValue, float duration, bool snapping = false) + public static TweenerCore DOMoveY(this Rigidbody target, float endValue, float duration, bool snapping = false) { - return DOTween.To(() => target.position, target.MovePosition, new Vector3(0, endValue, 0), duration) - .SetOptions(AxisConstraint.Y, snapping).SetTarget(target); + 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 Tweener DOMoveZ(this Rigidbody target, float endValue, float duration, bool snapping = false) + public static TweenerCore DOMoveZ(this Rigidbody target, float endValue, float duration, bool snapping = false) { - return DOTween.To(() => target.position, target.MovePosition, new Vector3(0, 0, endValue), duration) - .SetOptions(AxisConstraint.Z, snapping).SetTarget(target); + 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 Tweener DORotate(this Rigidbody target, Vector3 endValue, float duration, RotateMode mode = RotateMode.Fast) + 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); @@ -76,7 +80,7 @@ namespace DG.Tweening /// 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 Tweener DOLookAt(this Rigidbody target, Vector3 towards, float duration, AxisConstraint axisConstraint = AxisConstraint.None, Vector3? up = null) + 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); @@ -131,7 +135,7 @@ namespace DG.Tweening /// 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) or CatmullRom (curved CatmullRom path) + /// 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 @@ -156,7 +160,7 @@ namespace DG.Tweening /// 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) or CatmullRom (curved CatmullRom path) + /// 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 diff --git a/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs.meta b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs.meta similarity index 73% rename from Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs.meta rename to Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs.meta index 42a0566..0ce0d75 100644 --- a/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs.meta +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: dae9aa560b4242648a3affa2bfabc365 MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs new file mode 100644 index 0000000..d01f728 --- /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 && (UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1_OR_NEWER) // 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/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs.meta b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs.meta similarity index 73% rename from Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs.meta rename to Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs.meta index 323d0dd..ca9ed29 100644 --- a/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs.meta +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: 230fe34542e175245ba74b4659dae700 MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs similarity index 83% rename from Assets/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs rename to Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs index 12e07aa..549fff3 100644 --- a/Assets/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs @@ -5,6 +5,7 @@ using System; using UnityEngine; using DG.Tweening.Core; +using DG.Tweening.Plugins.Options; #pragma warning disable 1591 namespace DG.Tweening @@ -18,18 +19,21 @@ namespace DG.Tweening /// 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 Tweener DOColor(this SpriteRenderer target, Color endValue, float duration) + public static TweenerCore DOColor(this SpriteRenderer target, Color endValue, float duration) { - return DOTween.To(() => target.color, x => target.color = x, endValue, duration).SetTarget(target); + 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 Tweener DOFade(this SpriteRenderer target, float endValue, float duration) + public static TweenerCore DOFade(this SpriteRenderer target, float endValue, float duration) { - return DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration) - .SetTarget(target); + 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 @@ -52,6 +56,7 @@ namespace DG.Tweening : 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; } diff --git a/Assets/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs.meta b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs.meta similarity index 73% rename from Assets/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs.meta rename to Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs.meta index e6ade0c..a0c67c4 100644 --- a/Assets/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs.meta +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: 188918ab119d93148aa0de59ccf5286b MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DOTween/Modules/DOTweenModuleUI.cs b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs similarity index 66% rename from Assets/Demigiant/DOTween/Modules/DOTweenModuleUI.cs rename to Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs index df2b42c..dc24ebf 100644 --- a/Assets/Demigiant/DOTween/Modules/DOTweenModuleUI.cs +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs @@ -2,11 +2,17 @@ // Created: 2018/07/13 #if true && (UNITY_4_6 || UNITY_5 || UNITY_2017_1_OR_NEWER) // 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 @@ -20,10 +26,11 @@ namespace DG.Tweening /// 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 Tweener DOFade(this CanvasGroup target, float endValue, float duration) + public static TweenerCore DOFade(this CanvasGroup target, float endValue, float duration) { - return DOTween.To(() => target.alpha, x => target.alpha = x, endValue, duration) - .SetTarget(target); + TweenerCore t = DOTween.To(() => target.alpha, x => target.alpha = x, endValue, duration); + t.SetTarget(target); + return t; } #endregion @@ -33,18 +40,21 @@ namespace DG.Tweening /// 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 Tweener DOColor(this Graphic target, Color endValue, float duration) + public static TweenerCore DOColor(this Graphic target, Color endValue, float duration) { - return DOTween.To(() => target.color, x => target.color = x, endValue, duration).SetTarget(target); + 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 Tweener DOFade(this Graphic target, float endValue, float duration) + public static TweenerCore DOFade(this Graphic target, float endValue, float duration) { - return DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration) - .SetTarget(target); + TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); + t.SetTarget(target); + return t; } #endregion @@ -54,29 +64,33 @@ namespace DG.Tweening /// 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 Tweener DOColor(this Image target, Color endValue, float duration) + public static TweenerCore DOColor(this Image target, Color endValue, float duration) { - return DOTween.To(() => target.color, x => target.color = x, endValue, duration).SetTarget(target); + 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 Tweener DOFade(this Image target, float endValue, float duration) + public static TweenerCore DOFade(this Image target, float endValue, float duration) { - return DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration) - .SetTarget(target); + 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 Tweener DOFillAmount(this Image target, float endValue, float duration) + public static TweenerCore DOFillAmount(this Image target, float endValue, float duration) { if (endValue > 1) endValue = 1; else if (endValue < 0) endValue = 0; - return DOTween.To(() => target.fillAmount, x => target.fillAmount = x, endValue, duration) - .SetTarget(target); + 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 @@ -99,6 +113,7 @@ namespace DG.Tweening : 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; } @@ -110,39 +125,42 @@ namespace DG.Tweening /// 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 Tweener DOFlexibleSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) + public static TweenerCore DOFlexibleSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) { - return DOTween.To(() => new Vector2(target.flexibleWidth, target.flexibleHeight), x => { + TweenerCore t = DOTween.To(() => new Vector2(target.flexibleWidth, target.flexibleHeight), x => { target.flexibleWidth = x.x; target.flexibleHeight = x.y; - }, endValue, duration) - .SetOptions(snapping).SetTarget(target); + }, 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 Tweener DOMinSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) + public static TweenerCore DOMinSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) { - return DOTween.To(() => new Vector2(target.minWidth, target.minHeight), x => { + TweenerCore t = DOTween.To(() => new Vector2(target.minWidth, target.minHeight), x => { target.minWidth = x.x; target.minHeight = x.y; - }, endValue, duration) - .SetOptions(snapping).SetTarget(target); + }, 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 Tweener DOPreferredSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) + public static TweenerCore DOPreferredSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) { - return DOTween.To(() => new Vector2(target.preferredWidth, target.preferredHeight), x => { + TweenerCore t = DOTween.To(() => new Vector2(target.preferredWidth, target.preferredHeight), x => { target.preferredWidth = x.x; target.preferredHeight = x.y; - }, endValue, duration) - .SetOptions(snapping).SetTarget(target); + }, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; } #endregion @@ -152,27 +170,31 @@ namespace DG.Tweening /// 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 Tweener DOColor(this Outline target, Color endValue, float duration) + public static TweenerCore DOColor(this Outline target, Color endValue, float duration) { - return DOTween.To(() => target.effectColor, x => target.effectColor = x, endValue, duration).SetTarget(target); + 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 Tweener DOFade(this Outline target, float endValue, float duration) + public static TweenerCore DOFade(this Outline target, float endValue, float duration) { - return DOTween.ToAlpha(() => target.effectColor, x => target.effectColor = x, endValue, duration) - .SetTarget(target); + 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 Tweener DOScale(this Outline target, Vector2 endValue, float duration) + public static TweenerCore DOScale(this Outline target, Vector2 endValue, float duration) { - return DOTween.To(() => target.effectDistance, x => target.effectDistance = x, endValue, duration) - .SetTarget(target); + TweenerCore t = DOTween.To(() => target.effectDistance, x => target.effectDistance = x, endValue, duration); + t.SetTarget(target); + return t; } #endregion @@ -183,120 +205,133 @@ namespace DG.Tweening /// 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 Tweener DOAnchorPos(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) + public static TweenerCore DOAnchorPos(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) { - return DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, endValue, duration) - .SetOptions(snapping).SetTarget(target); + 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 Tweener DOAnchorPosX(this RectTransform target, float endValue, float duration, bool snapping = false) + public static TweenerCore DOAnchorPosX(this RectTransform target, float endValue, float duration, bool snapping = false) { - return DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(endValue, 0), duration) - .SetOptions(AxisConstraint.X, snapping).SetTarget(target); + 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 Tweener DOAnchorPosY(this RectTransform target, float endValue, float duration, bool snapping = false) + public static TweenerCore DOAnchorPosY(this RectTransform target, float endValue, float duration, bool snapping = false) { - return DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(0, endValue), duration) - .SetOptions(AxisConstraint.Y, snapping).SetTarget(target); + 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 Tweener DOAnchorPos3D(this RectTransform target, Vector3 endValue, float duration, bool snapping = false) + public static TweenerCore DOAnchorPos3D(this RectTransform target, Vector3 endValue, float duration, bool snapping = false) { - return DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, endValue, duration) - .SetOptions(snapping).SetTarget(target); + 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 Tweener DOAnchorPos3DX(this RectTransform target, float endValue, float duration, bool snapping = false) + public static TweenerCore DOAnchorPos3DX(this RectTransform target, float endValue, float duration, bool snapping = false) { - return DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(endValue, 0, 0), duration) - .SetOptions(AxisConstraint.X, snapping).SetTarget(target); + 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 Tweener DOAnchorPos3DY(this RectTransform target, float endValue, float duration, bool snapping = false) + public static TweenerCore DOAnchorPos3DY(this RectTransform target, float endValue, float duration, bool snapping = false) { - return DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(0, endValue, 0), duration) - .SetOptions(AxisConstraint.Y, snapping).SetTarget(target); + 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 Tweener DOAnchorPos3DZ(this RectTransform target, float endValue, float duration, bool snapping = false) + public static TweenerCore DOAnchorPos3DZ(this RectTransform target, float endValue, float duration, bool snapping = false) { - return DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(0, 0, endValue), duration) - .SetOptions(AxisConstraint.Z, snapping).SetTarget(target); + 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 Tweener DOAnchorMax(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) + public static TweenerCore DOAnchorMax(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) { - return DOTween.To(() => target.anchorMax, x => target.anchorMax = x, endValue, duration) - .SetOptions(snapping).SetTarget(target); + 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 Tweener DOAnchorMin(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) + public static TweenerCore DOAnchorMin(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) { - return DOTween.To(() => target.anchorMin, x => target.anchorMin = x, endValue, duration) - .SetOptions(snapping).SetTarget(target); + 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 Tweener DOPivot(this RectTransform target, Vector2 endValue, float duration) + public static TweenerCore DOPivot(this RectTransform target, Vector2 endValue, float duration) { - return DOTween.To(() => target.pivot, x => target.pivot = x, endValue, duration) - .SetTarget(target); + 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 Tweener DOPivotX(this RectTransform target, float endValue, float duration) + public static TweenerCore DOPivotX(this RectTransform target, float endValue, float duration) { - return DOTween.To(() => target.pivot, x => target.pivot = x, new Vector2(endValue, 0), duration) - .SetOptions(AxisConstraint.X).SetTarget(target); + 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 Tweener DOPivotY(this RectTransform target, float endValue, float duration) + public static TweenerCore DOPivotY(this RectTransform target, float endValue, float duration) { - return DOTween.To(() => target.pivot, x => target.pivot = x, new Vector2(0, endValue), duration) - .SetOptions(AxisConstraint.Y).SetTarget(target); + 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 Tweener DOSizeDelta(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) + public static TweenerCore DOSizeDelta(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) { - return DOTween.To(() => target.sizeDelta, x => target.sizeDelta = x, endValue, duration) - .SetOptions(snapping).SetTarget(target); + 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 @@ -430,10 +465,11 @@ namespace DG.Tweening /// 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 Tweener DOValue(this Slider target, float endValue, float duration, bool snapping = false) + public static TweenerCore DOValue(this Slider target, float endValue, float duration, bool snapping = false) { - return DOTween.To(() => target.value, x => target.value = x, endValue, duration) - .SetOptions(snapping).SetTarget(target); + TweenerCore t = DOTween.To(() => target.value, x => target.value = x, endValue, duration); + t.SetOptions(snapping).SetTarget(target); + return t; } #endregion @@ -443,18 +479,44 @@ namespace DG.Tweening /// 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 Tweener DOColor(this Text target, Color endValue, float duration) + public static TweenerCore DOColor(this Text target, Color endValue, float duration) { - return DOTween.To(() => target.color, x => target.color = x, endValue, duration).SetTarget(target); + 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 Tweener DOFade(this Text target, float endValue, float duration) + public static TweenerCore DOFade(this Text target, float endValue, float duration) { - return DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration) - .SetTarget(target); + 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. @@ -466,11 +528,16 @@ namespace DG.Tweening /// 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 Tweener DOText(this Text target, string endValue, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null) + public static TweenerCore DOText(this Text target, string endValue, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null) { - return DOTween.To(() => target.text, x => target.text = x, endValue, duration) - .SetOptions(richTextEnabled, scrambleMode, scrambleChars) + 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 @@ -542,6 +609,29 @@ namespace DG.Tweening #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 // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ diff --git a/Assets/Demigiant/DOTween/Modules/DOTweenModuleUI.cs.meta b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs.meta similarity index 73% rename from Assets/Demigiant/DOTween/Modules/DOTweenModuleUI.cs.meta rename to Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs.meta index b7f95cb..60d55ef 100644 --- a/Assets/Demigiant/DOTween/Modules/DOTweenModuleUI.cs.meta +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: a060394c03331a64392db53a10e7f2d1 MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs similarity index 60% rename from Assets/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs rename to Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs index 26c4a69..fa1ac05 100644 --- a/Assets/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs @@ -4,6 +4,10 @@ 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 @@ -39,6 +43,7 @@ namespace DG.Tweening : 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 @@ -63,6 +68,7 @@ namespace DG.Tweening : 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; } @@ -72,7 +78,9 @@ namespace DG.Tweening #endif #if UNITY_5_3_OR_NEWER || UNITY_2017_1_OR_NEWER - #region CustomYieldInstructions (Unity 5.3 or Newer) + #region Unity 5.3 or Newer + + #region CustomYieldInstructions /// /// Returns a that waits until the tween is killed or complete. @@ -132,7 +140,8 @@ namespace DG.Tweening } /// - /// Returns a that waits until the tween is killed or has reached the given position (loops included, delays excluded). + /// 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); /// @@ -162,6 +171,148 @@ namespace DG.Tweening } #endregion + + #endregion +#endif + +#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 } diff --git a/Assets/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta similarity index 73% rename from Assets/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta rename to Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta index 6256c54..290189f 100644 --- a/Assets/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: 63c02322328255542995bd02b47b0457 MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs similarity index 70% rename from Assets/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs rename to Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs index acc9124..12a365d 100644 --- a/Assets/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs @@ -1,6 +1,8 @@ // 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; @@ -25,9 +27,14 @@ namespace DG.Tweening { 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; @@ -36,7 +43,7 @@ namespace DG.Tweening DOTweenExternalCommand.SetOrientationOnPath += Physics.SetOrientationOnPath; #if UNITY_EDITOR -#if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 +#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; @@ -44,9 +51,23 @@ namespace DG.Tweening #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 +#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) @@ -89,6 +110,9 @@ namespace DG.Tweening // 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 @@ -99,26 +123,41 @@ namespace DG.Tweening } // 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; + TweenerCore t = null; + bool rBodyFoundAndTweened = false; #if true // PHYSICS_MARKER - Rigidbody rBody = tweenRigidbody ? target.GetComponent() : null; - if (tweenRigidbody && rBody != null) { - t = isLocal - ? rBody.DOLocalPath(path, duration, pathMode) - : rBody.DOPath(path, duration, pathMode); - } else { + 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); } -#else - t = isLocal - ? target.transform.DOLocalPath(path, duration, pathMode) - : target.transform.DOPath(path, duration, pathMode); -#endif return t; } diff --git a/Assets/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs.meta b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs.meta similarity index 73% rename from Assets/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs.meta rename to Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs.meta index 9164e1e..ab62186 100644 --- a/Assets/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs.meta +++ b/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: 7bcaf917d9cf5b84090421a5a2abe42e MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DOTween/readme.txt b/Assets/Plugins/Demigiant/DOTween/readme.txt similarity index 100% rename from Assets/Demigiant/DOTween/readme.txt rename to Assets/Plugins/Demigiant/DOTween/readme.txt diff --git a/Assets/Demigiant/DOTween/readme.txt.meta b/Assets/Plugins/Demigiant/DOTween/readme.txt.meta similarity index 58% rename from Assets/Demigiant/DOTween/readme.txt.meta rename to Assets/Plugins/Demigiant/DOTween/readme.txt.meta index 9c3a968..3799165 100644 --- a/Assets/Demigiant/DOTween/readme.txt.meta +++ b/Assets/Plugins/Demigiant/DOTween/readme.txt.meta @@ -1,7 +1,4 @@ fileFormatVersion: 2 guid: fccfc62abf2eb0a4db614853430894fd TextScriptImporter: - externalObjects: {} userData: - assetBundleName: - assetBundleVariant: 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/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity similarity index 99% rename from Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity rename to Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity index 09a4bfa..5ca7105 100644 --- a/Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity @@ -98,7 +98,7 @@ LightmapSettings: m_TrainingDataDestination: TrainingData m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 0} - m_LightingSettings: {fileID: 4890085278179872738, guid: 6914d42df2cd2ab48897601759547b3b, type: 2} + m_LightingSettings: {fileID: 4890085278179872738, guid: c6b7023f13dc20c4d81ad9dd4f0184c4, type: 2} --- !u!196 &5 NavMeshSettings: serializedVersion: 2 @@ -356,6 +356,7 @@ MonoBehaviour: isFrom: 0 isIndependentUpdate: 0 autoKill: 0 + autoGenerate: 1 isActive: 1 isValid: 1 target: {fileID: 76224668} @@ -377,6 +378,7 @@ MonoBehaviour: height: 0 endValueTransform: {fileID: 0} optionalBool0: 0 + optionalBool1: 0 optionalFloat0: 0 optionalInt0: 0 optionalRotationMode: 0 @@ -461,6 +463,7 @@ MonoBehaviour: isFrom: 0 isIndependentUpdate: 0 autoKill: 0 + autoGenerate: 1 isActive: 1 isValid: 1 target: {fileID: 76224668} @@ -482,6 +485,7 @@ MonoBehaviour: height: 0 endValueTransform: {fileID: 0} optionalBool0: 0 + optionalBool1: 0 optionalFloat0: 0 optionalInt0: 0 optionalRotationMode: 0 @@ -566,6 +570,7 @@ MonoBehaviour: isFrom: 0 isIndependentUpdate: 0 autoKill: 0 + autoGenerate: 1 isActive: 1 isValid: 1 target: {fileID: 76224666} @@ -587,6 +592,7 @@ MonoBehaviour: height: 0 endValueTransform: {fileID: 0} optionalBool0: 0 + optionalBool1: 0 optionalFloat0: 0 optionalInt0: 0 optionalRotationMode: 0 @@ -876,6 +882,7 @@ MonoBehaviour: isFrom: 0 isIndependentUpdate: 0 autoKill: 0 + autoGenerate: 1 isActive: 1 isValid: 1 target: {fileID: 118309271} @@ -897,6 +904,7 @@ MonoBehaviour: height: 0 endValueTransform: {fileID: 0} optionalBool0: 0 + optionalBool1: 0 optionalFloat0: 0 optionalInt0: 0 optionalRotationMode: 0 @@ -1004,6 +1012,7 @@ MonoBehaviour: isFrom: 0 isIndependentUpdate: 0 autoKill: 0 + autoGenerate: 1 isActive: 1 isValid: 1 target: {fileID: 118309271} @@ -1025,6 +1034,7 @@ MonoBehaviour: height: 0 endValueTransform: {fileID: 0} optionalBool0: 0 + optionalBool1: 0 optionalFloat0: 0 optionalInt0: 0 optionalRotationMode: 0 @@ -1109,6 +1119,7 @@ MonoBehaviour: isFrom: 0 isIndependentUpdate: 0 autoKill: 0 + autoGenerate: 1 isActive: 1 isValid: 1 target: {fileID: 118309268} @@ -1130,6 +1141,7 @@ MonoBehaviour: height: 0 endValueTransform: {fileID: 0} optionalBool0: 0 + optionalBool1: 0 optionalFloat0: 0 optionalInt0: 0 optionalRotationMode: 0 @@ -1171,7 +1183,7 @@ RectTransform: 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_AnchoredPosition: {x: 0, y: -34.000015} m_SizeDelta: {x: 0, y: -48.000015} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &191643490 @@ -4584,7 +4596,7 @@ RectTransform: 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_AnchoredPosition: {x: 0, y: -184.00002} m_SizeDelta: {x: 0, y: -48} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1812319720 @@ -4917,6 +4929,7 @@ MonoBehaviour: isFrom: 0 isIndependentUpdate: 0 autoKill: 0 + autoGenerate: 1 isActive: 1 isValid: 1 target: {fileID: 1844382606} @@ -4938,6 +4951,7 @@ MonoBehaviour: height: 0 endValueTransform: {fileID: 0} optionalBool0: 0 + optionalBool1: 0 optionalFloat0: 0 optionalInt0: 0 optionalRotationMode: 0 @@ -5022,6 +5036,7 @@ MonoBehaviour: isFrom: 0 isIndependentUpdate: 0 autoKill: 0 + autoGenerate: 1 isActive: 1 isValid: 1 target: {fileID: 1844382606} @@ -5043,6 +5058,7 @@ MonoBehaviour: height: 0 endValueTransform: {fileID: 0} optionalBool0: 0 + optionalBool1: 0 optionalFloat0: 0 optionalInt0: 0 optionalRotationMode: 0 @@ -5127,6 +5143,7 @@ MonoBehaviour: isFrom: 0 isIndependentUpdate: 0 autoKill: 0 + autoGenerate: 1 isActive: 1 isValid: 1 target: {fileID: 1844382611} @@ -5148,6 +5165,7 @@ MonoBehaviour: height: 0 endValueTransform: {fileID: 0} optionalBool0: 0 + optionalBool1: 0 optionalFloat0: 0 optionalInt0: 0 optionalRotationMode: 0 @@ -5238,6 +5256,6 @@ RectTransform: 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_AnchoredPosition: {x: 0, y: -110.000015} m_SizeDelta: {x: 0, y: -200} m_Pivot: {x: 0.5, y: 0.5} diff --git a/Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity.meta b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity.meta similarity index 58% rename from Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity.meta rename to Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity.meta index 88026a4..e46232a 100644 --- a/Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Advanced.unity.meta @@ -1,7 +1,4 @@ fileFormatVersion: 2 guid: a5f7a56d339da84449899ecf95fbe33d DefaultImporter: - externalObjects: {} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting similarity index 100% rename from Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting rename to Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting diff --git a/Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting.meta b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting.meta similarity index 80% rename from Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting.meta rename to Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting.meta index 23a63d2..eb8d508 100644 --- a/Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_AdvancedSettings.lighting.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6914d42df2cd2ab48897601759547b3b +guid: c6b7023f13dc20c4d81ad9dd4f0184c4 NativeFormatImporter: externalObjects: {} mainObjectFileID: 4890085278179872738 diff --git a/Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity similarity index 99% rename from Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity rename to Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity index 0902e49..0401d92 100644 --- a/Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity @@ -98,7 +98,7 @@ LightmapSettings: m_TrainingDataDestination: TrainingData m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 0} - m_LightingSettings: {fileID: 4890085278179872738, guid: 5e22310a645f7bd4ab6357d40c9f33fa, type: 2} + m_LightingSettings: {fileID: 4890085278179872738, guid: 8e365f9bddb7a2041b910bd4d06fdb3a, type: 2} --- !u!196 &5 NavMeshSettings: serializedVersion: 2 @@ -285,11 +285,12 @@ MonoBehaviour: isFrom: 0 isIndependentUpdate: 0 autoKill: 1 + autoGenerate: 1 isActive: 1 isValid: 1 target: {fileID: 118309271} animationType: 3 - targetType: 0 + targetType: 11 forcedTargetType: 0 autoPlay: 0 useTargetAsV3: 0 @@ -306,6 +307,7 @@ MonoBehaviour: height: 0 endValueTransform: {fileID: 0} optionalBool0: 0 + optionalBool1: 0 optionalFloat0: 0 optionalInt0: 0 optionalRotationMode: 0 @@ -390,11 +392,12 @@ MonoBehaviour: isFrom: 0 isIndependentUpdate: 0 autoKill: 1 + autoGenerate: 1 isActive: 1 isValid: 1 target: {fileID: 118309271} animationType: 1 - targetType: 0 + targetType: 11 forcedTargetType: 0 autoPlay: 0 useTargetAsV3: 0 @@ -411,6 +414,7 @@ MonoBehaviour: height: 0 endValueTransform: {fileID: 0} optionalBool0: 0 + optionalBool1: 0 optionalFloat0: 0 optionalInt0: 0 optionalRotationMode: 0 @@ -749,6 +753,7 @@ MonoBehaviour: isFrom: 0 isIndependentUpdate: 0 autoKill: 1 + autoGenerate: 1 isActive: 1 isValid: 1 target: {fileID: 990238544} @@ -771,6 +776,7 @@ MonoBehaviour: height: 0 endValueTransform: {fileID: 0} optionalBool0: 1 + optionalBool1: 0 optionalFloat0: 0 optionalInt0: 0 optionalRotationMode: 0 @@ -1252,6 +1258,7 @@ MonoBehaviour: isFrom: 0 isIndependentUpdate: 0 autoKill: 1 + autoGenerate: 1 isActive: 1 isValid: 1 target: {fileID: 1323952361} @@ -1273,6 +1280,7 @@ MonoBehaviour: height: 0 endValueTransform: {fileID: 0} optionalBool0: 0 + optionalBool1: 0 optionalFloat0: 0 optionalInt0: 0 optionalRotationMode: 0 @@ -1357,6 +1365,7 @@ MonoBehaviour: isFrom: 0 isIndependentUpdate: 0 autoKill: 1 + autoGenerate: 1 isActive: 1 isValid: 1 target: {fileID: 1323952361} @@ -1378,6 +1387,7 @@ MonoBehaviour: height: 0 endValueTransform: {fileID: 0} optionalBool0: 1 + optionalBool1: 0 optionalFloat0: 0 optionalInt0: 0 optionalRotationMode: 0 @@ -1692,6 +1702,7 @@ MonoBehaviour: isFrom: 0 isIndependentUpdate: 0 autoKill: 1 + autoGenerate: 1 isActive: 1 isValid: 1 target: {fileID: 1636198020} @@ -1713,6 +1724,7 @@ MonoBehaviour: height: 0 endValueTransform: {fileID: 0} optionalBool0: 0 + optionalBool1: 0 optionalFloat0: 0 optionalInt0: 0 optionalRotationMode: 0 diff --git a/Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity.meta b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity.meta similarity index 58% rename from Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity.meta rename to Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity.meta index 5ebfe59..226d596 100644 --- a/Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_Basics.unity.meta @@ -1,7 +1,4 @@ fileFormatVersion: 2 guid: 6a2ad353325ffe64983c28d69a8738f5 DefaultImporter: - externalObjects: {} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting similarity index 100% rename from Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting rename to Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting diff --git a/Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting.meta b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting.meta similarity index 80% rename from Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting.meta rename to Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting.meta index 4452a09..ead9324 100644 --- a/Assets/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenAnimation_BasicsSettings.lighting.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5e22310a645f7bd4ab6357d40c9f33fa +guid: 8e365f9bddb7a2041b910bd4d06fdb3a NativeFormatImporter: externalObjects: {} mainObjectFileID: 4890085278179872738 diff --git a/Assets/Demigiant/DOTweenPro Examples/DOTweenPath.unity b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPath.unity similarity index 99% rename from Assets/Demigiant/DOTweenPro Examples/DOTweenPath.unity rename to Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPath.unity index 11408ec..0eeeeed 100644 --- a/Assets/Demigiant/DOTweenPro Examples/DOTweenPath.unity +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPath.unity @@ -98,7 +98,7 @@ LightmapSettings: m_TrainingDataDestination: TrainingData m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 0} - m_LightingSettings: {fileID: 4890085278179872738, guid: 34ca5be95e0dca3489f5c662ce26a862, type: 2} + m_LightingSettings: {fileID: 4890085278179872738, guid: 691301b4611a90e49b2458ea7e8c6008, type: 2} --- !u!196 &5 NavMeshSettings: serializedVersion: 2 @@ -299,9 +299,6 @@ MonoBehaviour: - 6.6672983 - 7.1915474 - 11.289525 - type: 1 - subdivisionsXSegment: 10 - subdivisions: 70 wps: - {x: 4.45, y: -1.83, z: 0} - {x: 3.8321667, y: 6.9544535, z: 0} @@ -310,6 +307,9 @@ MonoBehaviour: - {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} @@ -469,6 +469,7 @@ MonoBehaviour: 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 @@ -873,9 +874,6 @@ MonoBehaviour: - 11.593836 - 8.754475 - 7.309784 - type: 1 - subdivisionsXSegment: 10 - subdivisions: 100 wps: - {x: 10.45, y: -1.83, z: 0} - {x: 13.417454, y: 2.978077, z: 0} @@ -887,6 +885,9 @@ MonoBehaviour: - {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} @@ -1106,6 +1107,7 @@ MonoBehaviour: 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 diff --git a/Assets/Demigiant/DOTweenPro Examples/DOTweenPath.unity.meta b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPath.unity.meta similarity index 58% rename from Assets/Demigiant/DOTweenPro Examples/DOTweenPath.unity.meta rename to Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPath.unity.meta index f480ec1..9051851 100644 --- a/Assets/Demigiant/DOTweenPro Examples/DOTweenPath.unity.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPath.unity.meta @@ -1,7 +1,4 @@ fileFormatVersion: 2 guid: a351b59ca54a0bc4083c35844da13a61 DefaultImporter: - externalObjects: {} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting similarity index 100% rename from Assets/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting rename to Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting diff --git a/Assets/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting.meta b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting.meta similarity index 80% rename from Assets/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting.meta rename to Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting.meta index 4a21714..80e5a92 100644 --- a/Assets/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro Examples/DOTweenPathSettings.lighting.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 34ca5be95e0dca3489f5c662ce26a862 +guid: 691301b4611a90e49b2458ea7e8c6008 NativeFormatImporter: externalObjects: {} mainObjectFileID: 4890085278179872738 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/Demigiant/DOTweenPro Examples/Examples Assets/dotweenpro_logo.png b/Assets/Plugins/Demigiant/DOTweenPro Examples/Examples Assets/dotweenpro_logo.png similarity index 100% rename from Assets/Demigiant/DOTweenPro Examples/Examples Assets/dotweenpro_logo.png rename to Assets/Plugins/Demigiant/DOTweenPro Examples/Examples Assets/dotweenpro_logo.png diff --git a/Assets/Demigiant/DOTweenPro Examples/Examples Assets/dotweenpro_logo.png.meta b/Assets/Plugins/Demigiant/DOTweenPro Examples/Examples Assets/dotweenpro_logo.png.meta similarity index 100% rename from Assets/Demigiant/DOTweenPro Examples/Examples Assets/dotweenpro_logo.png.meta rename to Assets/Plugins/Demigiant/DOTweenPro Examples/Examples Assets/dotweenpro_logo.png.meta diff --git a/Assets/Plugins/Demigiant/DOTweenPro.meta b/Assets/Plugins/Demigiant/DOTweenPro.meta new file mode 100644 index 0000000..659537c --- /dev/null +++ b/Assets/Plugins/Demigiant/DOTweenPro.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: af55cfd0e7084ab4884c5a4f29b62d9f +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/Demigiant/DOTweenPro/DOTweenAnimation.cs b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenAnimation.cs similarity index 61% rename from Assets/Demigiant/DOTweenPro/DOTweenAnimation.cs rename to Assets/Plugins/Demigiant/DOTweenPro/DOTweenAnimation.cs index 6de61bb..8bf2ff1 100644 --- a/Assets/Demigiant/DOTweenPro/DOTweenAnimation.cs +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenAnimation.cs @@ -1,4 +1,4 @@ -// Author: Daniele Giardini - http://www.demigiant.com +// Author: Daniele Giardini - http://www.demigiant.com // Created: 2015/03/12 15:55 using System; @@ -21,9 +21,52 @@ namespace DG.Tweening [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 + } + + 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 TRUE always uses the GO containing this DOTweenAnimation (and not the one containing the target) as DOTween's SetTarget target + // 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; @@ -37,11 +80,12 @@ namespace DG.Tweening 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 DOTweenAnimationType animationType; + public AnimationType animationType; public TargetType targetType; public TargetType forcedTargetType; // Used when choosing between multiple targets public bool autoPlay = true; @@ -55,47 +99,99 @@ namespace DG.Tweening public Rect endValueRect = new Rect(0, 0, 0, 0); public Transform endValueTransform; - public bool optionalBool0; + public bool optionalBool0, optionalBool1; public float optionalFloat0; public int optionalInt0; public RotateMode optionalRotationMode = RotateMode.Fast; public ScrambleMode optionalScrambleMode = ScrambleMode.None; public string optionalString; - bool _tweenCreated; // TRUE after the tweens have been created + bool _tweenAutoGenerationCalled; // TRUE after the tweens have been autoGenerated int _playCount = -1; // Used when calling DOPlayNext #region Unity Methods void Awake() { - if (!isActive || !isValid) return; + if (!isActive || !autoGenerate) return; - if (animationType != DOTweenAnimationType.Move || !useTargetAsV3) { + 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(); - _tweenCreated = true; + CreateTween(false, autoPlay); + _tweenAutoGenerationCalled = true; } } void Start() { - if (_tweenCreated || !isActive || !isValid) return; + if (_tweenAutoGenerationCalled || !isActive || !autoGenerate) return; - CreateTween(); - _tweenCreated = true; + CreateTween(false, autoPlay); + _tweenAutoGenerationCalled = true; + } + + void Reset() + { + Dispatch_OnReset(this); } void OnDestroy() { - if (tween != null && tween.IsActive()) tween.Kill(); + if (tween != null && tween.active) tween.Kill(); tween = null; } - // Used also by DOTweenAnimationInspector when applying runtime changes and restarting - public void CreateTween() + /// + /// 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; @@ -120,9 +216,9 @@ namespace DG.Tweening } switch (animationType) { - case DOTweenAnimationType.None: + case AnimationType.None: break; - case DOTweenAnimationType.Move: + case AnimationType.Move: if (useTargetAsV3) { isRelative = false; if (endValueTransform == null) { @@ -176,10 +272,10 @@ namespace DG.Tweening break; } break; - case DOTweenAnimationType.LocalMove: + case AnimationType.LocalMove: tween = tweenGO.transform.DOLocalMove(endValueV3, duration, optionalBool0); break; - case DOTweenAnimationType.Rotate: + case AnimationType.Rotate: switch (targetType) { case TargetType.Transform: tween = ((Transform)target).DORotate(endValueV3, duration, optionalRotationMode); @@ -200,10 +296,10 @@ namespace DG.Tweening break; } break; - case DOTweenAnimationType.LocalRotate: + case AnimationType.LocalRotate: tween = tweenGO.transform.DOLocalRotate(endValueV3, duration, optionalRotationMode); break; - case DOTweenAnimationType.Scale: + case AnimationType.Scale: switch (targetType) { #if false // TK2D_MARKER case TargetType.tk2dTextMesh: @@ -219,11 +315,11 @@ namespace DG.Tweening } break; #if true // UI_MARKER - case DOTweenAnimationType.UIWidthHeight: + case AnimationType.UIWidthHeight: tween = ((RectTransform)target).DOSizeDelta(optionalBool0 ? new Vector2(endValueFloat, endValueFloat) : endValueV2, duration); break; #endif - case DOTweenAnimationType.Color: + case AnimationType.Color: isRelative = false; switch (targetType) { case TargetType.Renderer: @@ -239,7 +335,7 @@ namespace DG.Tweening #endif #if true // UI_MARKER case TargetType.Image: - tween = ((Image)target).DOColor(endValueColor, duration); + tween = ((Graphic)target).DOColor(endValueColor, duration); break; case TargetType.Text: tween = ((Text)target).DOColor(endValueColor, duration); @@ -263,7 +359,7 @@ namespace DG.Tweening #endif } break; - case DOTweenAnimationType.Fade: + case AnimationType.Fade: isRelative = false; switch (targetType) { case TargetType.Renderer: @@ -279,7 +375,7 @@ namespace DG.Tweening #endif #if true // UI_MARKER case TargetType.Image: - tween = ((Image)target).DOFade(endValueFloat, duration); + tween = ((Graphic)target).DOFade(endValueFloat, duration); break; case TargetType.Text: tween = ((Text)target).DOFade(endValueFloat, duration); @@ -306,7 +402,7 @@ namespace DG.Tweening #endif } break; - case DOTweenAnimationType.Text: + case AnimationType.Text: #if true // UI_MARKER switch (targetType) { case TargetType.Text: @@ -332,7 +428,7 @@ namespace DG.Tweening } #endif break; - case DOTweenAnimationType.PunchPosition: + case AnimationType.PunchPosition: switch (targetType) { case TargetType.Transform: tween = ((Transform)target).DOPunchPosition(endValueV3, duration, optionalInt0, optionalFloat0, optionalBool0); @@ -344,58 +440,60 @@ namespace DG.Tweening #endif } break; - case DOTweenAnimationType.PunchScale: + case AnimationType.PunchScale: tween = tweenGO.transform.DOPunchScale(endValueV3, duration, optionalInt0, optionalFloat0); break; - case DOTweenAnimationType.PunchRotation: + case AnimationType.PunchRotation: tween = tweenGO.transform.DOPunchRotation(endValueV3, duration, optionalInt0, optionalFloat0); break; - case DOTweenAnimationType.ShakePosition: + case AnimationType.ShakePosition: switch (targetType) { case TargetType.Transform: - tween = ((Transform)target).DOShakePosition(duration, endValueV3, optionalInt0, optionalFloat0, optionalBool0); + tween = ((Transform)target).DOShakePosition(duration, endValueV3, optionalInt0, optionalFloat0, optionalBool0, optionalBool1); break; #if true // UI_MARKER case TargetType.RectTransform: - tween = ((RectTransform)target).DOShakeAnchorPos(duration, endValueV3, optionalInt0, optionalFloat0, optionalBool0); + tween = ((RectTransform)target).DOShakeAnchorPos(duration, endValueV3, optionalInt0, optionalFloat0, optionalBool0, optionalBool1); break; #endif } break; - case DOTweenAnimationType.ShakeScale: - tween = tweenGO.transform.DOShakeScale(duration, endValueV3, optionalInt0, optionalFloat0); + case AnimationType.ShakeScale: + tween = tweenGO.transform.DOShakeScale(duration, endValueV3, optionalInt0, optionalFloat0, optionalBool1); break; - case DOTweenAnimationType.ShakeRotation: - tween = tweenGO.transform.DOShakeRotation(duration, endValueV3, optionalInt0, optionalFloat0); + case AnimationType.ShakeRotation: + tween = tweenGO.transform.DOShakeRotation(duration, endValueV3, optionalInt0, optionalFloat0, optionalBool1); break; - case DOTweenAnimationType.CameraAspect: + case AnimationType.CameraAspect: tween = ((Camera)target).DOAspect(endValueFloat, duration); break; - case DOTweenAnimationType.CameraBackgroundColor: + case AnimationType.CameraBackgroundColor: tween = ((Camera)target).DOColor(endValueColor, duration); break; - case DOTweenAnimationType.CameraFieldOfView: + case AnimationType.CameraFieldOfView: tween = ((Camera)target).DOFieldOfView(endValueFloat, duration); break; - case DOTweenAnimationType.CameraOrthoSize: + case AnimationType.CameraOrthoSize: tween = ((Camera)target).DOOrthoSize(endValueFloat, duration); break; - case DOTweenAnimationType.CameraPixelRect: + case AnimationType.CameraPixelRect: tween = ((Camera)target).DOPixelRect(endValueRect, duration); break; - case DOTweenAnimationType.CameraRect: + 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 = targetIsSelf || !tweenTargetIsTargetGO ? this.gameObject : targetGO; + GameObject setTarget = GetTweenTarget(); tween.SetTarget(setTarget).SetDelay(delay).SetLoops(loops, loopType).SetAutoKill(autoKill) .OnKill(()=> tween = null); if (isSpeedBased) tween.SetSpeedBased(); @@ -423,7 +521,7 @@ namespace DG.Tweening if (onRewind != null) tween.OnRewind(onRewind.Invoke); } else onRewind = null; - if (autoPlay) tween.Play(); + if (andPlay) tween.Play(); else tween.Pause(); if (hasOnTweenCreated && onTweenCreated != null) onTweenCreated.Invoke(); @@ -433,33 +531,94 @@ namespace DG.Tweening #region Public Methods - // These methods are here so they can be called directly via Unity's UGUI event system + #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(this.gameObject); + 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(this.gameObject); + 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(this.gameObject); + 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(this.gameObject); + 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(this.gameObject); + DOTween.TogglePause(GetTweenTarget()); } + /// + /// Rewinds all tweens created by this animation in the correct order + /// public override void DORewind() { _playCount = -1; @@ -469,100 +628,148 @@ namespace DG.Tweening Tween t = anims[i].tween; if (t != null && t.IsInitialized()) anims[i].tween.Rewind(); } - // DOTween.Rewind(this.gameObject); + // DOTween.Rewind(GetTweenTarget()); } /// - /// Restarts the tween + /// 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 = false) + 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(this.gameObject); + 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(this.gameObject); + DOTween.Complete(GetTweenTarget()); } + /// + /// Kills all tweens whose target-id is the same as the one set by this animation + /// public override void DOKill() { - DOTween.Kill(this.gameObject); + 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(this.gameObject, 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(this.gameObject, 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(this.gameObject, 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.IsPlaying() && !anim.tween.IsComplete()) { + 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(this.gameObject); + 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(this.gameObject, id); + DOTween.Restart(GetTweenTarget(), id); } + /// + /// Restarts all tweens with the given ID (regardless of their target gameObject) + /// public void DORestartAllById(string id) { _playCount = -1; @@ -570,16 +777,18 @@ namespace DG.Tweening } /// - /// Returns the tweens created by this DOTweenAnimation, in the same order as they appear in the Inspector (top to bottom) + /// Kills all tweens with the given ID and whose target-id is the same as the one set by this animation /// - public List GetTweens() + public void DOKillById(string id) { -// return DOTween.TweensByTarget(this.gameObject); - - List result = new List(); - DOTweenAnimation[] anims = this.GetComponents(); - foreach (DOTweenAnimation anim in anims) result.Add(anim.tween); - return result; + 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 @@ -592,14 +801,15 @@ namespace DG.Tweening 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 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); } @@ -612,7 +822,8 @@ namespace DG.Tweening { if (Application.isPlaying) return null; - CreateTween(); + // CHANGE: first param switched to TRUE otherwise changing an animation and replaying in editor would still play old one + CreateTween(true, autoPlay); return tween; } @@ -622,12 +833,23 @@ namespace DG.Tweening #region Private - // Returns the gameObject whose target component should be animated + /// + /// 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() { @@ -636,9 +858,9 @@ namespace DG.Tweening 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 == DOTweenAnimationType.Move) { + if (animationType == AnimationType.Move) { ((Tweener)tween).ChangeEndValue(tweenGO.transform.position + endValueV3, true); - } else if (animationType == DOTweenAnimationType.LocalMove) { + } else if (animationType == AnimationType.LocalMove) { ((Tweener)tween).ChangeEndValue(tweenGO.transform.localPosition + endValueV3, true); } } diff --git a/Assets/Demigiant/DOTweenPro/DOTweenAnimation.cs.meta b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenAnimation.cs.meta similarity index 73% rename from Assets/Demigiant/DOTweenPro/DOTweenAnimation.cs.meta rename to Assets/Plugins/Demigiant/DOTweenPro/DOTweenAnimation.cs.meta index 5d92ac7..a10ceea 100644 --- a/Assets/Demigiant/DOTweenPro/DOTweenAnimation.cs.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenAnimation.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: 4d0390bd8b8ffd640b34fe25065ff1df MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: 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/Demigiant/DOTweenPro/DOTweenPro.XML b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.XML similarity index 75% rename from Assets/Demigiant/DOTweenPro/DOTweenPro.XML rename to Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.XML index 9a8fa69..301a65a 100644 --- a/Assets/Demigiant/DOTweenPro/DOTweenPro.XML +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.XML @@ -4,6 +4,11 @@ DOTweenPro + + + Restarts the tween + + Restarts the tween @@ -16,6 +21,14 @@ Attach this to a GameObject to create and assign a path to it + + Used internally by the editor + + + + Restarts the tween + + Restarts the tween @@ -23,6 +36,11 @@ 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) + + + 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. diff --git a/Assets/Demigiant/DOTweenPro/DOTweenPro.XML.meta b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.XML.meta similarity index 58% rename from Assets/Demigiant/DOTweenPro/DOTweenPro.XML.meta rename to Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.XML.meta index a396828..ddc78e5 100644 --- a/Assets/Demigiant/DOTweenPro/DOTweenPro.XML.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.XML.meta @@ -1,7 +1,4 @@ fileFormatVersion: 2 guid: db7d7ef84c388bc4fbc3835d31a15306 TextScriptImporter: - externalObjects: {} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.dll b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.dll new file mode 100644 index 0000000000000000000000000000000000000000..e3f93244084fd71a6aeb2783fbd4d820db999307 GIT binary patch literal 15872 zcmeHueRLevmFKNj)m7D{?zUU9Wg8p2{RNHG60#*68$1|Ul5K%)2}!oGF_By9l2mc4 zt6kk~S#AV!GB9|6EU+7Ik{L3~*8n*~&a%r6NhZt?k^^A^Irt2_nar{YoPn7Po9w_$ zCWmAuFu(h%`a>opv;Xaxos#Rmd+&SqzWeTb@4j1A?R`h?A(etb0@v@bYeW6%elqGn4R!SxrCET^bQOsrrnI) z9*tTX0@Z_kM0*vL=EuY7N^h^zx2uqMQ6_L7!%ehU;=;F^8En72{u3bh ze5rKJZQPXq)yjZm7OvNZhz1xrM$}PN!i?aWCyD@l_g3vs z_NgN1u1)~d$*~4@gOXPQR<(NtZyc1g?HCXp_ZHlB*EN`~cF)ebXvntGJZ{#t9e3Sz z4bjdzQlg95uejJYK_ObzPISk5B1Lll@4*%!l8|kk3t>)Lz9h=LX`T!z{r ze7Z7nD>F?aiNUv8y3zT1%SXwq_!TnyrS4RNEQEWJ?7XQ%r_DUaa_(Azq?U>DWhh$sR&**Yw`>E_w$g)5`6M=#n?izqw5&)^x zEo)Kub?@uzfETb{Eq6neE6P|<+T2FTfQ+{7O`fsjC15ldE?i_SN%G>^_7eC$1No zc#$Z>bJ|^3%SJ2xF7CnBlVkXmS&4-}+6o585@F z?=MA|Tp2fOSkUSVHLV-b8g_q_R_tHvlGYPJqne@`mh_wK53FQ;@cKvTLllC(wLznr zmKv6nP0*kbT9O)OOq8*+p>R1f;3_b%8MGt@2Xq&s2BYumVC!-lBuy|b5#`;eOc{DI z?2`x=+M11>i=Z7rLrYrBZjFNEnq-6D3XwufZik_5TqCK7U$X}_sdb`^jjE-15RAO9 zV-@(jFBz2z4Y6d7Yecy}5E!foFj6lNs|s+9C|?^0;GFe)V5DAPQB{CzMESZvV5lO% zNWH+~ssPuB^4>sTxFWzvy+FJwz%`=0KM*)j5n!ZV022i-@}Rj!lo7wQR9NQ)%zT}r zG$uozJ1DF7aWzh*5iT42(q$L6JSRjM`yDC}STq-tXRW~+?*dVP>#YLZY0b%)$P=u$ z{Jto&&J^|~moB_#r4YQBXima47K~z|WsA?`v!eBqmMi^}LruaN)+H_L)Fg}ovN>pl zAzM`fGig=jo27iE9pNNfL8lE!%`qvsFnr*lJNz z2oN%0AwNif-Bt};+-MnM`~06I;jNlU@N>0af1E9ssLe?<#~}D@$EK+3Hx>2!lm2OI z35-YtMg^79nAVDAhoEW+&U>~1ft_{M#==DfGtTL4rF;M+v<-J z=&QEoGgqTLti+B+o+D?R&qyRYH^2%GoGHx!ZrqKir$o$V|LBqjlsspeqpd5<@Uk0x z;jnuI(y{`)XjtF;mw}eWCStAGERQK!Z^B0!{SbX4gv9IAa>Tv@9Vc&uDkNwX5+1N% zQ+3>*b|UCJRmZ`(Uabwwo{Z$t1@@SmUkTcvAx^^xpQ;N^L(M-8Lye)j)6iGrpN65j z)3AYa&1~11xem7i`>)xlKN2bHJJRt&=9o28A(J!LdUm zKgPjgT_qMERUAiMOS|`HFn9h+G=X}o#}K7Z8oVZi?1eU3bJw6+N4bN`Im9Uq33In! z>_pL`w_L=@WowJ2wfvoWvklcZv(U!7C%Fb~GZHDtoBOCJTVa=NOmFVjYul$t=||8IOhH zhI^!9VeA~fcBc|N2}X$MxYY;lbeJ&M6X~IyoqxCfnj1m1A48&Vg8n7~;QF0ecMLRN0^9J= zn&xmAi-3NvbP~1}mV|sZg=)eABkp=FZsx;eZbI0I@-+eT_=X+|2e^uI8E&Gh46ftI z_Zy)XESZFAjz9sQ{C4Q5HCnbDB@;|9P20h0l{1!MC z{Xz6TVbP3rpU~+KjZYdn9$FdpX)jnY`keZxZqaf5J`tnui%0bsnd+?#7Jb2Bsbj?a z7Zm1S8+}yQ=}P*Kgf@nw#^@!qwcxV0fhhog?F!^@vE zV$^7|hI=F2`*VUhza!fW&>-4xkW!aR_=J*z>>o(|JEE--i(2F;?u~F?w*cz&XDaLY zdpZZ()->!uFDc1sY+xIn46_a2Fxc{qfEK+TW~o1t9ypEOb-GjKmXi%^)eAb?a|n2h zUWTkiX9SP^kHc)+J>l;_!#(hlPJe}#JZISTxOgop7~k)PAJzMO3R7yp@_x*oP70`Z zBoz**H{s2Gyc0nk(pjd95 z*@Ic?!`W~KR6M#v?W0}PCgrZTcBuVy2yY9x_clp=JfOZ6;kt29I=vS847|3(`W#@! zx?fdjBKm!37tse)U7w*n>cRQnrbhtx>yK19ed2L&rj5s|oS#RY0H-6y@PC9EYQ__4 zoSuz53C%x`ZULM!89pSw0+`mH0bCo|1K6W{9q_M3FJP1UO~B6@-vV42Ua9Ex17fKk z!YWv3FuYP{*eUVr(c$OklipTIb&N29|Ar%n|KgK9j`UhxG=>)wF4d0XcpBDcI zwI2}o{_mt!-<9wwl{qUkh9u!Sh4F(Dem?s5ka|PHXH~{qHHI+>yA;O90B@(|=6h8; zzaZ|1onKNJW)y}~2E%tGXC`ugUCYmb|D!0whb43YE91S__zd`Ez`+FXjx%%wJ4T_8 z2NchdLU#q!q^x@ZY{*<_T`O;VhX(^sdMJRiVy@1>_B zhNjXUN%{S0bUX4E?)|w4q9#2ZP-8Ks-jLMu^h%Vezm?SO^eT3dM(+pI^PoaxBw5Sz z^jX-V(~^Mt_gGa}y#e(Fj7X=;1M2rBwLPHr$(Gj!)Pv|xr;#eP6x5>u^%mp|dMco< zMQk$YIZ54)x8I9Fy%bQ3%&2Bk0?8P>M0+Dmpo)_E6us5J)H{+oLvKTiNpEs875Ebr zvR(Fzg1$}qv7~%ooAeKox_9|NP$?To}lh6P>t1=L#C@W(H%kE^|4c0GwJPYi*M&z zib=}1Q!WqGJs;xPtWi8;HHv4fM)8c*D4wwz#WPl;c*g3frF9g~m|SwQcb>6z8Nd>uSz?&s9|~>c}t_E z;EduuxdPCl%K#VCCJDDm*ezkdgx5=WSi-b~4&YKmHm}#ktrH;Qxhs#Tn>F>=XAz zx#eF-__WISDvhBk;bCRDh>IUZ*8_e@T`!Q<#`cNr(w=t#kBV(dkDf#Al;Mf<%8#P+ z65bBZ=dC*dKcg^wOl6o+Jh4LD9=i`vn9O-NdJb^Ab|<8!jNb$Q+s2*ZU3#yw6>dCJCK1biF5S}Pi@^WsVL{#|e$P<{Yd4*vixWi*H9-xS?|I$b6%H{TJx z^jJf)+Dos6E>gqFr_I&sHYFvt0N$Z&Q8$U#)NQ~yH`u0JiIZ-d5=PFjO}x=?9pGy7 zI`up>4??ytb_n=)kZE*_Q%V~6gE(i;)5Cy!myax*0Gj@sz~7B)(PR z+vyByuc6xk-;w;ENd7T}WitxPPAS|bt8kmVawlL>xd-rO*=An0`Aym84%y}&$^Q@F zw_|sGUTdc&dI)eOJqNg+z75z)Zvb}EyMR~W%SAi&;3afBT_^d&v>W)1l0Potams^J zpwEYTs0_}t^eNc+4d9Q4UYGc|!u+*@`Om5hcjC>_VLC@oh_8ts;T=4mvV=^Hqr8sz z!Do%2ixBC)jIpPb!^*I*)CpCa=ZI2&-Gn$H>KHloOdVB0?~_dyN`3>85Kmbc=_dLu zlxq}+-d2v|p2qFsK7qS{yM%iNcNzDsxN)i}pTd0`?%%?F7WbXF@0R6haW|b7FVY9x z=l1TI^l|&@vC+}4uF($KU&?0FV_EyyCh8t9I&Ka~@4#-mShPKf4p-2|>qOy>nPH2D7C}CkMtsd%Wm+owR+Qn<-`Ot0{fTDO^t{)7g?eI!bApE{wZg z))}J#uQU^YFw zkdhTy*FD}nWv4ULoykxkZ`&E_&tWY1;CdXmQy6C6&U66;G}lpfHl1hgRJt&blY{E< z>~s+vcOmIysP9xhonxbh>=_4$lnHP*7a*maQ!LytY>&HWG31s2;n#gOhMgfB77Sv1 zKzj#xFuPoDChcWt(k_lp1o(k`1_tbRi_W-BrFvp8U7Ui4ZOT`W;k@Ievy#_4AkFX3 zVf;KBlIbj<_Q3qCUFh}FGqQH-0(zQtvyB5MZLcupy2Syndpe(WiX~L+@@$)W-06JU zv-?hsLwM3Axvt>slkRbw26BBlURFSQor1)M@u~rg>+IPH{Ng~$k2yJ;4!}*beK{;2 zoA$c^-0jG09yM~r67>f!(Sy8{B*spV2s=R{dtEm#5v&6r2?i>e!5}3*;5l}#C{eeD zVt$~aU=NRbPTsFAvLzFqJH5yDZ0gS68&N)l$@73A_{uE3uDD zEQNGQmLu*Yyya7Jb@|S~S_}|~1X!<~wI{JosE>CUBfSGWIawR1+%>sOm6p1yl$)!f zvSPSs=c^nyw}5mC)fz^etnJAy%3Gwnh&M@NCG@wu3hlBd7c0>THKg0q0v zT`1VoW7*jer&!;#%J$M3dphkMuW6}N?SdT#u|yFvK3v)3<|drUl9%R)^5N=UyCCOz zL8XiqxpcM=7&+qB1pRSKZ9@nbrzBRW)mMxf^bq{UiyyA&ar3jDGdcB3tFWDNvo)Ea zQm*Js+uSGm8FR4r>S{6lY(mjFY4_zaa!-(5K~UKvH>J<_H>i*EO7<~02Yb6X;tm(n zUeV_jYUoMcW{8)SUdRi&lMyP7Abrv%L@*g+7$35yT@<`~drBU#?wm6%J>--5T3dfp z4m+o9+K1gRQ3?MeQ;4`3?5+BJMtj}KLuoI^>_RS`&okn`xvXy{cU?Pn5m&QT*xr-H zUe54_!^XF7GZCU5TeF$SxeN(p~*H+-T5svoOv->UhiV!dy^KsZc~A53b^fm(CRs z{imf=u}byjO4GCx@^(5`v4j1BXq(PD8EG$#PCNdI<pB_33!(C0&p4}G6N!1IwJ zAM1n|P5wdR$1*;!d;QaeR^gUv>n3X)A1io@RckXw{%0RtUB zUL_E0YlNF09WISw&@ut2tcf9eB1j1+I2L;y&(9HXB-Zd=dm>%R7HbTsLk{5Z)~CRT zLAT)3C0-?P9)@67nf?@1$w?f<`HBFqlp(v|W=m4vOddz4o6op2Ir77Je{RC9%nY_a zr3(dTG8Y``-MP$xyqwZfo)9EZ(~GnqV|&D5e_uM6o&+AOQ3Re6PV#^$r>8;$CrpL( z!z)YLC-IXq>@dup=M?QBgaRB_9`}j)qJm%WD3D^g;5(w5QT19k=A+`0>y68mD@|*H~`l%&)QbxjDB+1=(J&lb+1E1!Ok`jGdF9o!D=j z1r@5Z?+3wl8I|4qud%hnoI)%EONZ`klrPXkQ0Cm+USwElk5fLb7!NXp4E7*M z*yl3r~zLUt7SSVNY-0Yz1FokYdTR{05a6|{$@yL{o>;mnvpRqs-5S-nO z#BX5i6WG3TH%!(@=%REcGdh6m8LJhi4WA}e5=kT$@Ay=ev0#%7dQv9u7a8o#5qB2` z;tfnpurkiXVS)@0G@8b_#0v(wX0FIjFtvlK%7r<#CX*Zqkm{nfzdP6&)Qtxlj1S{V z!y8D4Yp$VD&puH?n8N8Pk5rEI!};_~PWnoYy$25jMgPG;9>CaIe#s9NQiva6sz&Uy zb0uPLQx=CU27J=7XXsS0Z+tzxgP=whdHb)6;gwL7>mhBA=gd5xx$kXY+E>`RpWw)_sVzP9AvWkU^vFJTnjw{K@8K zeJ2pgkhn13pF@{E#U9PNlY@BvLAXLM1wN7nyuRr?sMGuyyssBez)20~xjxKC+Z-mtWB z9v_e#{A~zzD6|?sg;g3;VG^Qo{zd%L3?<&hpd*x^#`%}=7DEAhiJ|%m>R|&x=)C_g zvRF}9)8f_8xSC8$@!PQ#O|;esquaaDZR2cw{@zAA?wF<-pZ`oey)-`mIVJAEx)KT) zj?b{@?|;R@3Ftl>i_gEI>hU=_nmM5hQ?_iJ|8XcGlvT?OmII~f@%b|v47LH{j;3FX zE=b66Iw4T=_#PK`LKy4(yLv*bT6OWNNWD#KNUJC7aS=ZeKVbxhwtRHEMmuQp>zl@% zg-tK}XswZjEzQM>U=K%P?BbeFE$M!EK7LcBi2zTwjn6+*LE$Q6v7)esa8TQLxPrwG zXm~jqtH{T&04{DK(>GxLOgy0}@i}&Eg@fr5c&7!Q-Y=wU?+=kMSFM5?bCthv?#GLG z(*%;61io*8Q;8Sx z1iY}Ig_%$z@eT0dTKo@=_y+VQQ2!)cgMvMTDgb!>E2e_ipnR?7ulggR`4HaQ;bje8 z{@{TL84sS^+?j%ccI-lQjBoM1!6TRF_W9`~EmFv;afz-`=&DMNp3WwMssx_Myzx@8 zkSI>2i;3VUO~|7+(be9WaJ>Yce38}?{}LH5_!SEG+S53~(l}BnsnGiBgLdM%#}mCc z@$rr%vD-mv>ExVLVspnP{O0O1g*I&M_?X?XW$Sp`=5&YM)-}F$Q(L;TqqD7RtZO3E zxovaT6`SxIu82a$Cj6iVe?%)3S`wIgdBtQ-(byDuRsMeryJ8hAeD-?Wo%kOL!@a{Q zJ@Lq?ul{5Axxs5+c%%4Gjt9_t<hdW1m_I3{s_YEH%-GiL{ zBpxkjDE<%9FX3~$ zJ-BZ;M)WF2x!`(L#b%&`G)$v_eaK^msUJDge$f4ZyMXicjP|$h`(Hb_2fq9gzZ#Sm z$4r0w2MiRwxD{wkBP-e^vojkyb2NcWiZ3KRfFm;B$|1+f%52O*ZBEt`{b#L<;~#9o zQ-RFICVz>h#j;HY#_j)g(HQ#xUo*Euwg>vA@yB^2XL5w!VrB5>fb#oFqvym0nPCDg zry%Jehb&3C1mKjk(9Z!+fbXE*hU@{E^%Z4K*d?>Pgp^GLW3thX|Ld4lwI>fvIkex8 zl5OLw7v(f`PU7ZT#51}YU&fT`n7IX>#H26sRr`I}`pkF`Eqot$Ab8j04?-Sq1cGt1 zTqQ5%+?0KGH7!DWo+ZwfIh$qg)U3QPf98JL;ms`m`1%CCT`9xj0{Dc#VhXj|{}V#B<{MH!eI%=q3&%qVt-fi<_FG#tI{u&NMYQ zfAhY38Xv4|*6J2EG*mY6mq=CNZ{f&BxJ6}p*wWOw|T$;FG_tTG<0XiJZ6TVL^ZymoW%^2Os1O^l2krtjXc zQ0im3Hbn5iaMgk4p}X$iHvOTw53FDM`TR4pt1j(-_FM6ny;q7hzdx0lZ(Ib~Gy=GL z^je@|v~o%J@2lEsD@V0^XZj+o<&9mlukHW&*LF|%_(tqTeX_kZkusYaGKp*~nQtMK zHG?b04t#1Z-qC$l8Qj0MS&WIi2~aUfx3J~J z7~3M#R`~@P83dv3QOPvhT3yIhT#4OwK)-Sk_48 z>eHqqNl7Cmxmdy_vxKa0J) z3PNdP?vjvp<~Q1@Epe?=(^lhkZU@5d#Jo99W9Q(Y^to6-9%Az(H{DV>6B#mdg z;9LWYbc(xs7H*a9ve`}}?4DA3U1KV*_SIpk?eXM;F8td74h*1H@V$auGhc6eTMIzD7plJNZ= z`mN`HBcEr?6yAUG(4RfW9r-d7S-|)?51sd1aO5kDSl^6qxz*X!X@iQ_WJ*|1((BdUyd`e?Ini%-<1oX*x6DaJ&iGcIKflSwSW?ewKg zKDFm872gLdbrJFiVk@sH*Sav-tpdF>%4?n!1Ml(C5#MnPtdQHPCKM54zO0dq$ZDGy(3}yP?+CdQKIEzG9g-lT-B8ag2 z!5Me{?~19i(&LF@8YmtrF66;nrfYn@S8LU^#kJLXi!K#$FN^9?@g6Vx=@tL0{(|p5 zhLec#V}5$i{|8%@BvpvgsGm;z&j_(_#>^y_OZp8HWx9Q{7ad2f(<2s%<9K7u~fXV%}8nK6t-Q@F*(qlO601qb5w%PkhaW<6w~^sFt<0E zPG`)!@nky7J*w5x((S37B-yF)iJg(H-S#rS#s-{~7Evz|G*lg53k$0)7nkFz^NN)377J1aJ>3?lSnT;AP-917YwrurZ(%d;$*n z)8G@qtHGxMlfWN>{RS`@JOkSX+y=f8b{%j#_^YtuBQXX14cK0w4Ez}E5nw9#-(W|8 zY2cs1UIM0r`^91dcfd@84Fg{SkHA&}Gr-HS2^^RSz5uogz@A$Fez9FN24H(=4MZ$8 X{R>v~{}`R3|0&!={{~pmzX|p~F?pAq literal 0 HcmV?d00001 diff --git a/Assets/Demigiant/DOTweenPro/DOTweenPro.dll.mdb.meta b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.dll.mdb.meta similarity index 58% rename from Assets/Demigiant/DOTweenPro/DOTweenPro.dll.mdb.meta rename to Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.dll.mdb.meta index c40cf1b..6979090 100644 --- a/Assets/Demigiant/DOTweenPro/DOTweenPro.dll.mdb.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.dll.mdb.meta @@ -1,7 +1,4 @@ fileFormatVersion: 2 guid: d719ed2e2c87eae4e8dd520e2df659c1 DefaultImporter: - externalObjects: {} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DOTweenPro/DOTweenPro.dll.meta b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.dll.meta similarity index 55% rename from Assets/Demigiant/DOTweenPro/DOTweenPro.dll.meta rename to Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.dll.meta index 6bcf817..9ecbfd3 100644 --- a/Assets/Demigiant/DOTweenPro/DOTweenPro.dll.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenPro.dll.meta @@ -1,21 +1,22 @@ fileFormatVersion: 2 guid: aa0b1eebb5db27a419fa4564bbe5c9c5 PluginImporter: - externalObjects: {} - serializedVersion: 2 + serializedVersion: 1 iconMap: {} executionOrder: {} - defineConstraints: [] isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 platformData: - - first: - Any: - second: + Any: enabled: 1 settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU userData: assetBundleName: assetBundleVariant: diff --git a/Assets/Demigiant/DOTweenPro/DOTweenProShortcuts.cs b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenProShortcuts.cs similarity index 100% rename from Assets/Demigiant/DOTweenPro/DOTweenProShortcuts.cs rename to Assets/Plugins/Demigiant/DOTweenPro/DOTweenProShortcuts.cs diff --git a/Assets/Demigiant/DOTweenPro/DOTweenProShortcuts.cs.meta b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenProShortcuts.cs.meta similarity index 73% rename from Assets/Demigiant/DOTweenPro/DOTweenProShortcuts.cs.meta rename to Assets/Plugins/Demigiant/DOTweenPro/DOTweenProShortcuts.cs.meta index 99f8a2e..bc6e863 100644 --- a/Assets/Demigiant/DOTweenPro/DOTweenProShortcuts.cs.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenProShortcuts.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: 1c3190a1a1c53f449926f6d5542b4ce5 MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: 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/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs.meta b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs.meta similarity index 73% rename from Assets/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs.meta rename to Assets/Plugins/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs.meta index 66ff6cd..613cdbc 100644 --- a/Assets/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: 8fb0d65aa5b048649a3a785b82b8f8db MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DOTweenPro/DOTweenTk2d.cs b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenTk2d.cs similarity index 62% rename from Assets/Demigiant/DOTweenPro/DOTweenTk2d.cs rename to Assets/Plugins/Demigiant/DOTweenPro/DOTweenTk2d.cs index d55cc3e..0c57bfe 100644 --- a/Assets/Demigiant/DOTweenPro/DOTweenTk2d.cs +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenTk2d.cs @@ -5,6 +5,8 @@ // 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 @@ -19,55 +21,61 @@ namespace DG.Tweening /// 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 Tweener DOScale(this tk2dBaseSprite target, Vector3 endValue, float duration) + public static TweenerCore DOScale(this tk2dBaseSprite target, Vector3 endValue, float duration) { - return DOTween.To(() => target.scale, x => target.scale = x, endValue, duration) - .SetTarget(target); + 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 Tweener DOScaleX(this tk2dBaseSprite target, float endValue, float duration) + public static TweenerCore DOScaleX(this tk2dBaseSprite target, float endValue, float duration) { - return DOTween.To(() => target.scale, x => target.scale = x, new Vector3(endValue, 0, 0), duration) - .SetOptions(AxisConstraint.X) + 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 Tweener DOScaleY(this tk2dBaseSprite target, float endValue, float duration) + public static TweenerCore DOScaleY(this tk2dBaseSprite target, float endValue, float duration) { - return DOTween.To(() => target.scale, x => target.scale = x, new Vector3(0, endValue, 0), duration) - .SetOptions(AxisConstraint.Y) + 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 Tweener DOScaleZ(this tk2dBaseSprite target, float endValue, float duration) + public static TweenerCore DOScaleZ(this tk2dBaseSprite target, float endValue, float duration) { - return DOTween.To(() => target.scale, x => target.scale = x, new Vector3(0, 0, endValue), duration) - .SetOptions(AxisConstraint.Z) + 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 Tweener DOColor(this tk2dBaseSprite target, Color endValue, float duration) + public static TweenerCore DOColor(this tk2dBaseSprite target, Color endValue, float duration) { - return DOTween.To(() => target.color, x => target.color = x, endValue, duration) - .SetTarget(target); + 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 Tweener DOFade(this tk2dBaseSprite target, float endValue, float duration) + public static TweenerCore DOFade(this tk2dBaseSprite target, float endValue, float duration) { - return DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration) - .SetTarget(target); + 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 @@ -90,6 +98,7 @@ namespace DG.Tweening : 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; } @@ -100,28 +109,31 @@ namespace DG.Tweening /// 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 Tweener DOScaleDimensions(this tk2dSlicedSprite target, Vector2 endValue, float duration) + public static TweenerCore DOScaleDimensions(this tk2dSlicedSprite target, Vector2 endValue, float duration) { - return DOTween.To(() => target.dimensions, x => target.dimensions = x, endValue, duration) - .SetTarget(target); + 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 Tweener DOScaleDimensionsX(this tk2dSlicedSprite target, float endValue, float duration) + public static TweenerCore DOScaleDimensionsX(this tk2dSlicedSprite target, float endValue, float duration) { - return DOTween.To(() => target.dimensions, x => target.dimensions = x, new Vector2(endValue, 0), duration) - .SetOptions(AxisConstraint.X) + 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 Tweener DOScaleDimensionsY(this tk2dSlicedSprite target, float endValue, float duration) + public static TweenerCore DOScaleDimensionsY(this tk2dSlicedSprite target, float endValue, float duration) { - return DOTween.To(() => target.dimensions, x => target.dimensions = x, new Vector2(0, endValue), duration) - .SetOptions(AxisConstraint.Y) + TweenerCore t = DOTween.To(() => target.dimensions, x => target.dimensions = x, new Vector2(0, endValue), duration); + t.SetOptions(AxisConstraint.Y) .SetTarget(target); + return t; } #endregion @@ -131,55 +143,61 @@ namespace DG.Tweening /// 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 Tweener DOScale(this tk2dTextMesh target, Vector3 endValue, float duration) + public static TweenerCore DOScale(this tk2dTextMesh target, Vector3 endValue, float duration) { - return DOTween.To(() => target.scale, x => target.scale = x, endValue, duration) - .SetTarget(target); + 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 Tweener DOScaleX(this tk2dTextMesh target, float endValue, float duration) + public static TweenerCore DOScaleX(this tk2dTextMesh target, float endValue, float duration) { - return DOTween.To(() => target.scale, x => target.scale = x, new Vector3(endValue, 0, 0), duration) - .SetOptions(AxisConstraint.X) + 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 Tweener DOScaleY(this tk2dTextMesh target, float endValue, float duration) + public static TweenerCore DOScaleY(this tk2dTextMesh target, float endValue, float duration) { - return DOTween.To(() => target.scale, x => target.scale = x, new Vector3(0, endValue, 0), duration) - .SetOptions(AxisConstraint.Y) + 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 Tweener DOScaleZ(this tk2dTextMesh target, float endValue, float duration) + public static TweenerCore DOScaleZ(this tk2dTextMesh target, float endValue, float duration) { - return DOTween.To(() => target.scale, x => target.scale = x, new Vector3(0, 0, endValue), duration) - .SetOptions(AxisConstraint.Z) + 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 Tweener DOColor(this tk2dTextMesh target, Color endValue, float duration) + public static TweenerCore DOColor(this tk2dTextMesh target, Color endValue, float duration) { - return DOTween.To(() => target.color, x => target.color = x, endValue, duration) - .SetTarget(target); + 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 Tweener DOFade(this tk2dTextMesh target, float endValue, float duration) + public static TweenerCore DOFade(this tk2dTextMesh target, float endValue, float duration) { - return DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration) - .SetTarget(target); + 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 @@ -202,6 +220,7 @@ namespace DG.Tweening : 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; } @@ -214,11 +233,12 @@ namespace DG.Tweening /// 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 Tweener DOText(this tk2dTextMesh target, string endValue, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null) + public static TweenerCore DOText(this tk2dTextMesh target, string endValue, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null) { - return DOTween.To(() => target.text, x => target.text = x, endValue, duration) - .SetOptions(richTextEnabled, scrambleMode, scrambleChars) + TweenerCore t = DOTween.To(() => target.text, x => target.text = x, endValue, duration); + t.SetOptions(richTextEnabled, scrambleMode, scrambleChars) .SetTarget(target); + return t; } #endregion diff --git a/Assets/Demigiant/DOTweenPro/DOTweenTk2d.cs.meta b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenTk2d.cs.meta similarity index 73% rename from Assets/Demigiant/DOTweenPro/DOTweenTk2d.cs.meta rename to Assets/Plugins/Demigiant/DOTweenPro/DOTweenTk2d.cs.meta index d9c7902..c909f96 100644 --- a/Assets/Demigiant/DOTweenPro/DOTweenTk2d.cs.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro/DOTweenTk2d.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: b590cd7c24ffa5d4faa5b6fa993cccad MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: 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/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs similarity index 70% rename from Assets/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs rename to Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs index d0b8379..0b38964 100644 --- a/Assets/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs +++ b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs @@ -1,4 +1,4 @@ -// Author: Daniele Giardini - http://www.demigiant.com +// Author: Daniele Giardini - http://www.demigiant.com // Created: 2015/03/12 16:03 using System; @@ -11,6 +11,7 @@ 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 @@ -35,8 +36,8 @@ namespace DG.DOTweenEditor BetweenCanvasGroupAndImage } - static readonly Dictionary _AnimationTypeToComponent = new Dictionary() { - { DOTweenAnimationType.Move, new[] { + static readonly Dictionary _AnimationTypeToComponent = new Dictionary() { + { DOTweenAnimation.AnimationType.Move, new[] { #if true // PHYSICS_MARKER typeof(Rigidbody), #endif @@ -48,7 +49,7 @@ namespace DG.DOTweenEditor #endif typeof(Transform) }}, - { DOTweenAnimationType.Rotate, new[] { + { DOTweenAnimation.AnimationType.Rotate, new[] { #if true // PHYSICS_MARKER typeof(Rigidbody), #endif @@ -57,72 +58,72 @@ namespace DG.DOTweenEditor #endif typeof(Transform) }}, - { DOTweenAnimationType.LocalMove, new[] { typeof(Transform) } }, - { DOTweenAnimationType.LocalRotate, new[] { typeof(Transform) } }, - { DOTweenAnimationType.Scale, new[] { typeof(Transform) } }, - { DOTweenAnimationType.Color, new[] { + { 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(Image), typeof(Text), typeof(RawImage), typeof(Graphic), #endif typeof(Renderer), }}, - { DOTweenAnimationType.Fade, new[] { + { DOTweenAnimation.AnimationType.Fade, new[] { typeof(Light), #if true // SPRITE_MARKER typeof(SpriteRenderer), #endif #if true // UI_MARKER - typeof(Image), typeof(Text), typeof(CanvasGroup), + typeof(Image), typeof(Text), typeof(CanvasGroup), typeof(RawImage), typeof(Graphic), #endif typeof(Renderer), }}, #if true // UI_MARKER - { DOTweenAnimationType.Text, new[] { typeof(Text) } }, + { DOTweenAnimation.AnimationType.Text, new[] { typeof(Text) } }, #endif - { DOTweenAnimationType.PunchPosition, new[] { + { DOTweenAnimation.AnimationType.PunchPosition, new[] { #if true // UI_MARKER typeof(RectTransform), #endif typeof(Transform) }}, - { DOTweenAnimationType.PunchRotation, new[] { typeof(Transform) } }, - { DOTweenAnimationType.PunchScale, new[] { typeof(Transform) } }, - { DOTweenAnimationType.ShakePosition, new[] { + { 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) }}, - { DOTweenAnimationType.ShakeRotation, new[] { typeof(Transform) } }, - { DOTweenAnimationType.ShakeScale, new[] { typeof(Transform) } }, - { DOTweenAnimationType.CameraAspect, new[] { typeof(Camera) } }, - { DOTweenAnimationType.CameraBackgroundColor, new[] { typeof(Camera) } }, - { DOTweenAnimationType.CameraFieldOfView, new[] { typeof(Camera) } }, - { DOTweenAnimationType.CameraOrthoSize, new[] { typeof(Camera) } }, - { DOTweenAnimationType.CameraPixelRect, new[] { typeof(Camera) } }, - { DOTweenAnimationType.CameraRect, new[] { typeof(Camera) } }, + { 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 - { DOTweenAnimationType.UIWidthHeight, new[] { typeof(RectTransform) } }, + { DOTweenAnimation.AnimationType.UIWidthHeight, new[] { typeof(RectTransform) } }, #endif }; #if false // TK2D_MARKER - static readonly Dictionary _Tk2dAnimationTypeToComponent = new Dictionary() { - { DOTweenAnimationType.Scale, new[] { typeof(tk2dBaseSprite), typeof(tk2dTextMesh) } }, - { DOTweenAnimationType.Color, new[] { typeof(tk2dBaseSprite), typeof(tk2dTextMesh) } }, - { DOTweenAnimationType.Fade, new[] { typeof(tk2dBaseSprite), typeof(tk2dTextMesh) } }, - { DOTweenAnimationType.Text, new[] { typeof(tk2dTextMesh) } } + 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() { - { DOTweenAnimationType.Color, new[] { typeof(TextMeshPro), typeof(TextMeshProUGUI) } }, - { DOTweenAnimationType.Fade, new[] { typeof(TextMeshPro), typeof(TextMeshProUGUI) } }, - { DOTweenAnimationType.Text, new[] { typeof(TextMeshPro), typeof(TextMeshProUGUI) } } + 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 @@ -152,6 +153,7 @@ namespace DG.DOTweenEditor 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 @@ -178,6 +180,7 @@ namespace DG.DOTweenEditor void OnEnable() { _src = target as DOTweenAnimation; + _settings = DOTweenUtilityWindow.GetDOTweenSettings(); onStartProperty = base.serializedObject.FindProperty("onStart"); onPlayProperty = base.serializedObject.FindProperty("onPlay"); @@ -241,6 +244,7 @@ namespace DG.DOTweenEditor } Undo.RecordObject(_src, "DOTween Animation"); + Undo.RecordObject(_settings, "DOTween Animation"); // _src.isValid = Validate(); // Moved down @@ -266,16 +270,26 @@ namespace DG.DOTweenEditor 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 = DOTweenPreviewManager.PreviewGUI(_src); + bool isPreviewing = _settings.showPreviewPanel ? DOTweenPreviewManager.PreviewGUI(_src) : false; EditorGUI.BeginDisabledGroup(isPreviewing); // Choose target @@ -318,11 +332,14 @@ namespace DG.DOTweenEditor } } else { GUILayout.BeginHorizontal(); - DOTweenAnimationType prevAnimType = _src.animationType; -// _src.animationType = (DOTweenAnimationType)EditorGUILayout.EnumPopup(_src.animationType, EditorGUIUtils.popupButton); + 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.autoPlay = DeGUILayout.ToggleButton(_src.autoPlay, new GUIContent("AutoPlay", "If selected, the tween will play automatically")); + _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) { @@ -330,56 +347,57 @@ namespace DG.DOTweenEditor _src.endValueTransform = null; _src.useTargetAsV3 = false; switch (_src.animationType) { - case DOTweenAnimationType.Move: - case DOTweenAnimationType.LocalMove: - case DOTweenAnimationType.Rotate: - case DOTweenAnimationType.LocalRotate: - case DOTweenAnimationType.Scale: + 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 == DOTweenAnimationType.Scale; + _src.optionalBool0 = _src.animationType == DOTweenAnimation.AnimationType.Scale; break; - case DOTweenAnimationType.UIWidthHeight: + case DOTweenAnimation.AnimationType.UIWidthHeight: _src.endValueV3 = Vector3.zero; _src.endValueFloat = 0; - _src.optionalBool0 = _src.animationType == DOTweenAnimationType.UIWidthHeight; + _src.optionalBool0 = _src.animationType == DOTweenAnimation.AnimationType.UIWidthHeight; break; - case DOTweenAnimationType.Color: - case DOTweenAnimationType.Fade: + case DOTweenAnimation.AnimationType.Color: + case DOTweenAnimation.AnimationType.Fade: _isLightSrc = targetGO.GetComponent() != null; _src.endValueFloat = 0; break; - case DOTweenAnimationType.Text: + case DOTweenAnimation.AnimationType.Text: _src.optionalBool0 = true; break; - case DOTweenAnimationType.PunchPosition: - case DOTweenAnimationType.PunchRotation: - case DOTweenAnimationType.PunchScale: - _src.endValueV3 = _src.animationType == DOTweenAnimationType.PunchRotation ? new Vector3(0, 180, 0) : Vector3.one; + 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 DOTweenAnimationType.ShakePosition: - case DOTweenAnimationType.ShakeRotation: - case DOTweenAnimationType.ShakeScale: - _src.endValueV3 = _src.animationType == DOTweenAnimationType.ShakeRotation ? new Vector3(90, 90, 90) : Vector3.one; + 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 DOTweenAnimationType.CameraAspect: - case DOTweenAnimationType.CameraFieldOfView: - case DOTweenAnimationType.CameraOrthoSize: + case DOTweenAnimation.AnimationType.CameraAspect: + case DOTweenAnimation.AnimationType.CameraFieldOfView: + case DOTweenAnimation.AnimationType.CameraOrthoSize: _src.endValueFloat = 0; break; - case DOTweenAnimationType.CameraPixelRect: - case DOTweenAnimationType.CameraRect: + case DOTweenAnimation.AnimationType.CameraPixelRect: + case DOTweenAnimation.AnimationType.CameraRect: _src.endValueRect = new Rect(0, 0, 0, 0); break; } } - if (_src.animationType == DOTweenAnimationType.None) { + if (_src.animationType == DOTweenAnimation.AnimationType.None) { _src.isValid = false; if (GUI.changed) EditorUtility.SetDirty(_src); return; @@ -390,22 +408,22 @@ namespace DG.DOTweenEditor _src.isValid = Validate(targetGO); // See if we need to choose between multiple targets #if true // UI_MARKER - if (_src.animationType == DOTweenAnimationType.Fade && targetGO.GetComponent() != null && targetGO.GetComponent() != null) { + if (_src.animationType == DOTweenAnimation.AnimationType.Fade && targetGO.GetComponent() != null && targetGO.GetComponent() != null) { _chooseTargetMode = ChooseTargetMode.BetweenCanvasGroupAndImage; // Reassign target and forcedTargetType if lost - if (_src.forcedTargetType == TargetType.Unset) _src.forcedTargetType = _src.targetType; + if (_src.forcedTargetType == DOTweenAnimation.TargetType.Unset) _src.forcedTargetType = _src.targetType; switch (_src.forcedTargetType) { - case TargetType.CanvasGroup: + case DOTweenAnimation.TargetType.CanvasGroup: _src.target = targetGO.GetComponent(); break; - case TargetType.Image: + case DOTweenAnimation.TargetType.Image: _src.target = targetGO.GetComponent(); break; } } else { #endif _chooseTargetMode = ChooseTargetMode.None; - _src.forcedTargetType = TargetType.Unset; + _src.forcedTargetType = DOTweenAnimation.TargetType.Unset; #if true // UI_MARKER } #endif @@ -423,17 +441,17 @@ namespace DG.DOTweenEditor #if true // UI_MARKER // Special cases in which multiple target types could be used (set after validation) - if (_chooseTargetMode == ChooseTargetMode.BetweenCanvasGroupAndImage && _src.forcedTargetType != TargetType.Unset) { + if (_chooseTargetMode == ChooseTargetMode.BetweenCanvasGroupAndImage && _src.forcedTargetType != DOTweenAnimation.TargetType.Unset) { FadeTargetType fadeTargetType = (FadeTargetType)Enum.Parse(typeof(FadeTargetType), _src.forcedTargetType.ToString()); - TargetType prevTargetType = _src.forcedTargetType; - _src.forcedTargetType = (TargetType)Enum.Parse(typeof(TargetType), EditorGUILayout.EnumPopup(_src.animationType + " Target", fadeTargetType).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 TargetType.CanvasGroup: + case DOTweenAnimation.TargetType.CanvasGroup: _src.target = targetGO.GetComponent(); break; - case TargetType.Image: + case DOTweenAnimation.TargetType.Image: _src.target = targetGO.GetComponent(); break; } @@ -449,7 +467,7 @@ namespace DG.DOTweenEditor _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(_src.easeType); + _src.easeType = EditorGUIUtils.FilteredEasePopup("Ease", _src.easeType); if (_src.easeType == Ease.INTERNAL_Custom) { _src.easeCurve = EditorGUILayout.CurveField(" Ease Curve", _src.easeCurve); } @@ -462,14 +480,14 @@ namespace DG.DOTweenEditor bool canBeRelative = true; // End value and eventual specific options switch (_src.animationType) { - case DOTweenAnimationType.Move: - case DOTweenAnimationType.LocalMove: - GUIEndValueV3(targetGO, _src.animationType == DOTweenAnimationType.Move); + 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 DOTweenAnimationType.Rotate: - case DOTweenAnimationType.LocalRotate: + case DOTweenAnimation.AnimationType.Rotate: + case DOTweenAnimation.AnimationType.LocalRotate: bool isRigidbody2D = DOTweenModuleUtils.Physics.HasRigidbody2D(_src); if (isRigidbody2D) GUIEndValueFloat(); else { @@ -477,62 +495,63 @@ namespace DG.DOTweenEditor _src.optionalRotationMode = (RotateMode)EditorGUILayout.EnumPopup(" Rotation Mode", _src.optionalRotationMode); } break; - case DOTweenAnimationType.Scale: + case DOTweenAnimation.AnimationType.Scale: if (_src.optionalBool0) GUIEndValueFloat(); else GUIEndValueV3(targetGO); _src.optionalBool0 = EditorGUILayout.Toggle("Uniform Scale", _src.optionalBool0); break; - case DOTweenAnimationType.UIWidthHeight: + case DOTweenAnimation.AnimationType.UIWidthHeight: if (_src.optionalBool0) GUIEndValueFloat(); else GUIEndValueV2(); _src.optionalBool0 = EditorGUILayout.Toggle("Uniform Scale", _src.optionalBool0); break; - case DOTweenAnimationType.Color: + case DOTweenAnimation.AnimationType.Color: GUIEndValueColor(); canBeRelative = false; break; - case DOTweenAnimationType.Fade: + case DOTweenAnimation.AnimationType.Fade: GUIEndValueFloat(); if (_src.endValueFloat < 0) _src.endValueFloat = 0; if (!_isLightSrc && _src.endValueFloat > 1) _src.endValueFloat = 1; canBeRelative = false; break; - case DOTweenAnimationType.Text: + 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 DOTweenAnimationType.PunchPosition: - case DOTweenAnimationType.PunchRotation: - case DOTweenAnimationType.PunchScale: + 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 == DOTweenAnimationType.PunchPosition) _src.optionalBool0 = EditorGUILayout.Toggle(" Snapping", _src.optionalBool0); + if (_src.animationType == DOTweenAnimation.AnimationType.PunchPosition) _src.optionalBool0 = EditorGUILayout.Toggle(" Snapping", _src.optionalBool0); break; - case DOTweenAnimationType.ShakePosition: - case DOTweenAnimationType.ShakeRotation: - case DOTweenAnimationType.ShakeScale: + 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); _src.optionalFloat0 = EditorGUILayout.Slider(new GUIContent(" Randomness", "The shake randomness"), _src.optionalFloat0, 0, 90); - if (_src.animationType == DOTweenAnimationType.ShakePosition) _src.optionalBool0 = EditorGUILayout.Toggle(" Snapping", _src.optionalBool0); + _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 DOTweenAnimationType.CameraAspect: - case DOTweenAnimationType.CameraFieldOfView: - case DOTweenAnimationType.CameraOrthoSize: + case DOTweenAnimation.AnimationType.CameraAspect: + case DOTweenAnimation.AnimationType.CameraFieldOfView: + case DOTweenAnimation.AnimationType.CameraOrthoSize: GUIEndValueFloat(); canBeRelative = false; break; - case DOTweenAnimationType.CameraBackgroundColor: + case DOTweenAnimation.AnimationType.CameraBackgroundColor: GUIEndValueColor(); canBeRelative = false; break; - case DOTweenAnimationType.CameraPixelRect: - case DOTweenAnimationType.CameraRect: + case DOTweenAnimation.AnimationType.CameraPixelRect: + case DOTweenAnimation.AnimationType.CameraRect: GUIEndValueRect(); canBeRelative = false; break; @@ -564,7 +583,7 @@ namespace DG.DOTweenEditor // Checks if a Component that can be animated with the given animationType is attached to the src bool Validate(GameObject targetGO) { - if (_src.animationType == DOTweenAnimationType.None) return false; + if (_src.animationType == DOTweenAnimation.AnimationType.None) return false; Component srcTarget; // First check for external plugins @@ -606,13 +625,13 @@ namespace DG.DOTweenEditor return false; } - DOTweenAnimationType AnimationToDOTweenAnimationType(string animation) + DOTweenAnimation.AnimationType AnimationToDOTweenAnimationType(string animation) { - if (_datString == null) _datString = Enum.GetNames(typeof(DOTweenAnimationType)); + if (_datString == null) _datString = Enum.GetNames(typeof(DOTweenAnimation.AnimationType)); animation = animation.Replace("/", ""); - return (DOTweenAnimationType)(Array.IndexOf(_datString, animation)); + return (DOTweenAnimation.AnimationType)(Array.IndexOf(_datString, animation)); } - int DOTweenAnimationTypeToPopupId(DOTweenAnimationType animation) + int DOTweenAnimationTypeToPopupId(DOTweenAnimation.AnimationType animation) { return Array.IndexOf(_animationTypeNoSlashes, animation.ToString()); } @@ -704,4 +723,28 @@ namespace DG.DOTweenEditor #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/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs.meta b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs.meta similarity index 73% rename from Assets/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs.meta rename to Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs.meta index a3905ce..d2d7eee 100644 --- a/Assets/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: e0203fd81362bab4d842d87ad09ee76e MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs similarity index 94% rename from Assets/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs rename to Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs index 8e1d35b..e607979 100644 --- a/Assets/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs +++ b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs @@ -52,7 +52,7 @@ namespace DG.DOTweenEditor // Preview - Play GUILayout.BeginHorizontal(); EditorGUI.BeginDisabledGroup( - isPreviewingThis || src.animationType == DOTweenAnimationType.None + isPreviewingThis || src.animationType == DOTweenAnimation.AnimationType.None || !src.isActive || _previewOnlyIfSetToAutoPlay && !src.autoPlay ); if (GUILayout.Button("► Play", Styles.btPreview)) { @@ -189,8 +189,12 @@ namespace DG.DOTweenEditor Debug.LogWarning("DOTween Preview ► Couldn't find tween to stop"); return; } - if (tInfo.isFrom) tInfo.tween.Complete(); - else tInfo.tween.Rewind(); + 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 @@ -204,8 +208,12 @@ namespace DG.DOTweenEditor for (int i = keys.Count - 1; i > -1; --i) { DOTweenAnimation anim = keys[i]; TweenInfo tInfo = _AnimationToTween[anim]; - if (tInfo.isFrom) tInfo.tween.Complete(); - else tInfo.tween.Rewind(); + 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); diff --git a/Assets/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs.meta b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs.meta similarity index 73% rename from Assets/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs.meta rename to Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs.meta index 1586a48..53780cc 100644 --- a/Assets/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: 22292a5f27a9a644ba9e6ad1bf863531 MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML similarity index 100% rename from Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML rename to Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML diff --git a/Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML.meta b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML.meta similarity index 58% rename from Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML.meta rename to Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML.meta index 5328cb8..f37a133 100644 --- a/Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.XML.meta @@ -1,7 +1,4 @@ fileFormatVersion: 2 guid: 753a4f4ed73b17143923101226957756 TextScriptImporter: - externalObjects: {} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll new file mode 100644 index 0000000000000000000000000000000000000000..7bce843264af090a03369c21fc946417c9108421 GIT binary patch literal 35840 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 literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.mdb b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.mdb new file mode 100644 index 0000000000000000000000000000000000000000..407847604c2f6107bb5ca74f2154b5220d19654d GIT binary patch literal 5678 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 QZ|?-Hq)$ literal 0 HcmV?d00001 diff --git a/Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.mdb.meta b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.mdb.meta similarity index 58% rename from Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.mdb.meta rename to Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.mdb.meta index dc73eda..f7149bc 100644 --- a/Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.mdb.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.mdb.meta @@ -1,7 +1,4 @@ fileFormatVersion: 2 guid: ee3a420017f129443896310d9fab256b DefaultImporter: - externalObjects: {} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.meta b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.meta similarity index 55% rename from Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.meta rename to Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.meta index c980e74..62ab8c0 100644 --- a/Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.meta @@ -1,21 +1,22 @@ fileFormatVersion: 2 guid: a6402d4311c862b4eb1325590d6466af PluginImporter: - externalObjects: {} - serializedVersion: 2 + serializedVersion: 1 iconMap: {} executionOrder: {} - defineConstraints: [] isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 platformData: - - first: - Any: - second: - enabled: 1 + Any: + enabled: 0 settings: {} + Editor: + enabled: 1 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU userData: assetBundleName: assetBundleVariant: diff --git a/Assets/Demigiant/DOTweenPro/readme.txt b/Assets/Plugins/Demigiant/DOTweenPro/readme.txt similarity index 100% rename from Assets/Demigiant/DOTweenPro/readme.txt rename to Assets/Plugins/Demigiant/DOTweenPro/readme.txt diff --git a/Assets/Demigiant/DOTweenPro/readme.txt.meta b/Assets/Plugins/Demigiant/DOTweenPro/readme.txt.meta similarity index 58% rename from Assets/Demigiant/DOTweenPro/readme.txt.meta rename to Assets/Plugins/Demigiant/DOTweenPro/readme.txt.meta index 17911b4..6a87c35 100644 --- a/Assets/Demigiant/DOTweenPro/readme.txt.meta +++ b/Assets/Plugins/Demigiant/DOTweenPro/readme.txt.meta @@ -1,7 +1,4 @@ fileFormatVersion: 2 guid: aa8f07903bf128e44a7d0b91a63dedab TextScriptImporter: - externalObjects: {} userData: - assetBundleName: - assetBundleVariant: 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..61b68998bf5599ab724de8d06fa9686f326ccd08 GIT binary patch literal 13312 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 literal 0 HcmV?d00001 diff --git a/Assets/Demigiant/DemiLib/Core/DemiLib.dll.mdb.meta b/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.dll.mdb.meta similarity index 58% rename from Assets/Demigiant/DemiLib/Core/DemiLib.dll.mdb.meta rename to Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.dll.mdb.meta index 4b7d047..de5f720 100644 --- a/Assets/Demigiant/DemiLib/Core/DemiLib.dll.mdb.meta +++ b/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.dll.mdb.meta @@ -1,7 +1,4 @@ fileFormatVersion: 2 guid: 995cf2d9b4a41f840b3a41712e9b3bc0 DefaultImporter: - externalObjects: {} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DemiLib/Core/DemiLib.dll.meta b/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.dll.meta similarity index 55% rename from Assets/Demigiant/DemiLib/Core/DemiLib.dll.meta rename to Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.dll.meta index c99073f..1ed9199 100644 --- a/Assets/Demigiant/DemiLib/Core/DemiLib.dll.meta +++ b/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.dll.meta @@ -1,21 +1,22 @@ fileFormatVersion: 2 guid: 54be29b67d0d29a478da2c6e5c62f091 PluginImporter: - externalObjects: {} - serializedVersion: 2 + serializedVersion: 1 iconMap: {} executionOrder: {} - defineConstraints: [] isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 platformData: - - first: - Any: - second: + Any: enabled: 1 settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU userData: assetBundleName: assetBundleVariant: diff --git a/Assets/Demigiant/DemiLib/Core/DemiLib.xml b/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.xml similarity index 73% rename from Assets/Demigiant/DemiLib/Core/DemiLib.xml rename to Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.xml index 7246b6d..3b65c54 100644 --- a/Assets/Demigiant/DemiLib/Core/DemiLib.xml +++ b/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.xml @@ -4,6 +4,18 @@ 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 @@ -40,6 +52,22 @@ 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. @@ -90,16 +118,31 @@ 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 @@ -131,6 +174,9 @@ Returns a random value within this range (min/max included) + + + A serializable struct including a min and a max float value @@ -152,5 +198,8 @@ Returns a random value within this range (min/max included) + + + diff --git a/Assets/Demigiant/DemiLib/Core/DemiLib.xml.meta b/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.xml.meta similarity index 58% rename from Assets/Demigiant/DemiLib/Core/DemiLib.xml.meta rename to Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.xml.meta index 2192b21..473a9b5 100644 --- a/Assets/Demigiant/DemiLib/Core/DemiLib.xml.meta +++ b/Assets/Plugins/Demigiant/DemiLib/Core/DemiLib.xml.meta @@ -1,7 +1,4 @@ fileFormatVersion: 2 guid: 9bf2564c9817bb34988453ae948954d2 TextScriptImporter: - externalObjects: {} userData: - assetBundleName: - assetBundleVariant: 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..0c792c10cadfddb47da208beedc67101295ba7bb GIT binary patch literal 187392 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 literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.mdb b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.mdb new file mode 100644 index 0000000000000000000000000000000000000000..110b4a96d18cead4e56e7d0348d4ee4feed620b0 GIT binary patch literal 63264 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 literal 0 HcmV?d00001 diff --git a/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.mdb.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.mdb.meta similarity index 58% rename from Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.mdb.meta rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.mdb.meta index d7b402f..b640c3e 100644 --- a/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.mdb.meta +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.mdb.meta @@ -1,7 +1,4 @@ fileFormatVersion: 2 guid: 2c20a7b4db3cd0a4a99bcf6218f92860 DefaultImporter: - externalObjects: {} userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.meta similarity index 55% rename from Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.meta rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.meta index 75149a3..aa20ddf 100644 --- a/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.meta +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.meta @@ -1,21 +1,22 @@ fileFormatVersion: 2 guid: 202f9ddaf2c1a8a429504f7f3cd7b84f PluginImporter: - externalObjects: {} - serializedVersion: 2 + serializedVersion: 1 iconMap: {} executionOrder: {} - defineConstraints: [] isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 platformData: - - first: - Any: - second: - enabled: 1 + Any: + enabled: 0 settings: {} + Editor: + enabled: 1 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU userData: assetBundleName: assetBundleVariant: diff --git a/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.xml b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.xml similarity index 58% rename from Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.xml rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.xml index 67e922d..0aee725 100644 --- a/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.xml +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.xml @@ -6,7 +6,7 @@ - Utils to use he correct method based on Unity's version + Utils to use the correct method based on Unity's version @@ -21,6 +21,27 @@ + + + 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. + + + + + 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 @@ -88,6 +109,12 @@ 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. @@ -151,6 +178,67 @@ 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 + + + + + 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. @@ -167,6 +255,15 @@ 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 @@ -182,6 +279,11 @@ Icon to apply Title. If NULL doesn't change it + + + Repaints the currently focues editor + + Prefab utilities @@ -223,7 +325,13 @@ 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 + @@ -258,6 +366,20 @@ to use. Leave NULL to check in all of them. + + + 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. @@ -265,6 +387,21 @@ 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 @@ -283,6 +420,16 @@ 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 @@ -313,6 +460,15 @@ 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. @@ -323,6 +479,15 @@ 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. @@ -333,7 +498,7 @@ 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). @@ -343,8 +508,22 @@ 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 - + + + 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 + + Call this after each draggable GUI block, to calculate and draw the current drag state (or complete it if the mouse was released). @@ -355,6 +534,21 @@ 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 + + + + 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 @@ -410,7 +604,7 @@ - Returns a clone of the given node (clones also lists, but leaves other references as references). + Returns a deep clone of the given node but doesn't clone UnityEngine references. A new ID will be automatically generated. @@ -486,6 +680,14 @@ 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 @@ -501,7 +703,8 @@ 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 + - Inside OnGUI, write all your nodes GUI code inside a + - To draw the nodes, loop through the list and call for each node @@ -513,6 +716,10 @@ 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. @@ -541,7 +748,12 @@ 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 @@ -555,7 +767,7 @@ Draws the given node using the given T editor GUINode type. - Retuns the full area of the node + Returns the full area of the node @@ -578,6 +790,25 @@ 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. @@ -625,6 +856,26 @@ 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 . @@ -649,11 +900,15 @@ Returns the current open, or an empty one if none is open. + + + Sets the width + + Sets the height - @@ -669,6 +924,14 @@ 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 @@ -695,6 +958,36 @@ 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 @@ -758,6 +1051,11 @@ Sets the border of the style + + + Sets the border of the style + + Sets the border of the style @@ -768,6 +1066,11 @@ Sets the background of the style + + + Sets the background of the style + + Sets the contentOffset of the style @@ -925,6 +1228,7 @@ Called automatically by DeGUI.BeginGUI. Override when adding new style subclasses. + Returns TRUE if the styles were initialized or re-initialized @@ -937,6 +1241,39 @@ 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 @@ -971,24 +1308,42 @@ 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 @@ -998,6 +1353,18 @@ 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 @@ -1034,6 +1401,78 @@ 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 @@ -1066,28 +1505,26 @@ 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 - ID for this drag operation (must be the same for both this and Drag 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 - ID for this drag operation (must be the same for both this and Drag 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 @@ -1122,7 +1559,8 @@ - Call this at the beginning of GUI methods + Call this at the beginning of GUI methods. + Returns TRUE if the styles were initialized or re-initialized Eventual to use Eventual to use @@ -1131,10 +1569,23 @@ Better implementation of GUI.BeginScrollView. Returns the modified scrollView struct. - Must be closed by a DeGUI.. + 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();
+            
- Area used by the scrollView - target + 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
@@ -1148,10 +1599,16 @@ 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) + (or resets them to the default ones if NULL). + Returns TRUE if the styles were initialized or re-initialized @@ -1164,6 +1621,21 @@ 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 @@ -1174,6 +1646,53 @@ 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 @@ -1201,6 +1720,9 @@ 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. @@ -1211,24 +1733,36 @@ 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 @@ -1238,6 +1772,18 @@ 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 @@ -1277,6 +1823,8 @@ Draws the given texture tiled within the given rect + Rect + Texture Eventual scale to apply If not NULL, colorizes the texture with this color @@ -1302,7 +1850,7 @@ 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 @@ -1310,13 +1858,12 @@ EditorWindow reference A unique ID to use in order to determine if the text is selected or not Text - ID for this drag operation (must be the same for both this and Drag 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 @@ -1324,7 +1871,6 @@ Editor reference A unique ID to use in order to determine if the text is selected or not Text - ID for this drag operation (must be the same for both this and Drag 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 @@ -1355,34 +1901,179 @@ Divider - + + 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 @@ -1391,49 +2082,104 @@ 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). - + 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) - @@ -1446,11 +2192,49 @@ 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 @@ -1464,24 +2248,42 @@ 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. - + - Replicates parts of DeExtensions.ListExtensions for internal usage + Returns a clone of the event - + - Shifts an item from an index to another, without modifying the list except than by moving elements around + 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) + + + + + Draws all property fields diff --git a/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.xml.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.xml.meta similarity index 58% rename from Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.xml.meta rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.xml.meta index 22f8130..d199425 100644 --- a/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.xml.meta +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/DemiEditor.xml.meta @@ -1,7 +1,4 @@ fileFormatVersion: 2 guid: d4a42b2e4e6f64d4ba01d35c5a3dafed TextScriptImporter: - externalObjects: {} userData: - assetBundleName: - assetBundleVariant: 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/Demigiant/DemiLib/Core/Editor/Imgs/blackSquare.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquare.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/blackSquare.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquare.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquare.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquare.png.meta new file mode 100644 index 0000000..ca9400a --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquare.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 7ba4b2810f605d945af87e032ca2957b +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/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha10.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha10.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha10.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha10.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha10.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha10.png.meta new file mode 100644 index 0000000..488d14c --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha10.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 8c9cfa1dbe00a1d41ae9d14f5ac543ec +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/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha15.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha15.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha15.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha15.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha15.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha15.png.meta new file mode 100644 index 0000000..e907551 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha15.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 53d696c01f6ca524383f11fcc34dd13c +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/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha25.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha25.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha25.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha25.png 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/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha50.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha50.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha50.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha50.png 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/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha80.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha80.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha80.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha80.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha80.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha80.png.meta new file mode 100644 index 0000000..ce709e4 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha80.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 595b166389c8db546a199430284ebc9b +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/Demigiant/DemiLib/Core/Editor/Imgs/blueSquare.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blueSquare.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/blueSquare.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/blueSquare.png 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/Demigiant/DemiLib/Core/Editor/Imgs/circle.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/circle.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle.png 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/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha10.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle_dashedBorderEmpty.png.meta similarity index 55% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha10.png.meta rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle_dashedBorderEmpty.png.meta index dcf0dbf..0055f30 100644 --- a/Assets/Demigiant/DemiLib/Core/Editor/Imgs/blackSquareAlpha10.png.meta +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/circle_dashedBorderEmpty.png.meta @@ -1,9 +1,10 @@ fileFormatVersion: 2 -guid: 8c9cfa1dbe00a1d41ae9d14f5ac543ec +guid: 522b0133a9838674ca9a12e0c6e5a59c +timeCreated: 1625322295 +licenseType: Store TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 + fileIDToRecycleName: {} + serializedVersion: 4 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -11,8 +12,6 @@ TextureImporter: linearTexture: 0 fadeOut: 0 borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 mipMapFadeDistanceStart: 1 mipMapFadeDistanceEnd: 3 bumpmap: @@ -21,23 +20,17 @@ TextureImporter: heightScale: 0.25 normalMapFilter: 0 isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 grayScaleToAlpha: 0 generateCubemap: 6 cubemapConvolution: 0 seamlessCubemap: 0 - textureFormat: -1 - maxTextureSize: 1024 + textureFormat: 1 + maxTextureSize: 2048 textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: 0 - wrapU: 0 - wrapV: 0 - wrapW: 0 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 nPOTScale: 1 lightmap: 0 compressionQuality: 50 @@ -46,51 +39,30 @@ TextureImporter: spriteMeshType: 1 alignment: 0 spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 + spritePixelsToUnits: 100 alphaUsage: 1 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 1 platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 1024 - resizeAlgorithm: 0 + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 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/Demigiant/DemiLib/Core/Editor/Imgs/greenSquare.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/greenSquare.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/greenSquare.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/greenSquare.png 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/Demigiant/DemiLib/Core/Editor/Imgs/grid_bright.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/grid_bright.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/grid_bright.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/grid_bright.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/grid_bright.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/grid_bright.png.meta new file mode 100644 index 0000000..ccb4643 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/grid_bright.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 93b1287b4a087f84c95c72f49ec94e83 +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/Demigiant/DemiLib/Core/Editor/Imgs/grid_dark.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/grid_dark.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/grid_dark.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/grid_dark.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_alert.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alert.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alert.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alert.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alert.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alert.png.meta new file mode 100644 index 0000000..f84830d --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alert.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 39cacc93c6c183f44992bf2421362f78 +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/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignB.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignB.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignB.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignB.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBC.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBC.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBC.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBC.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBC.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBC.png.meta new file mode 100644 index 0000000..b623d58 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBC.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 2cdc0bc527f7a434496c6be9236e636f +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/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBL.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBL.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBL.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBL.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBL.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBL.png.meta new file mode 100644 index 0000000..fd7ccf1 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBL.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: abf8a615f379ef44b9ac872a13b7712f +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/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBR.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBR.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBR.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignBR.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCC.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCC.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCC.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCC.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCL.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCL.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCL.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCL.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCL.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCL.png.meta new file mode 100644 index 0000000..b0e188a --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCL.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 2a8208d8e80f90944b8ff2978292b03b +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/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCR.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCR.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCR.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignCR.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignHC.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignHC.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignHC.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignHC.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignHC.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignHC.png.meta new file mode 100644 index 0000000..7f4d729 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignHC.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: b9e0e5a8836018e4c810fbceba55a1b4 +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/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignL.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignL.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignL.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignL.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignL.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignL.png.meta new file mode 100644 index 0000000..c7e801b --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignL.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: d18ceface0c20014b8db4bba05a41b83 +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/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignR.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignR.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignR.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignR.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignT.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignT.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignT.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignT.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTC.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTC.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTC.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTC.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTL.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTL.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTL.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTL.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTR.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTR.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTR.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTR.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTR.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTR.png.meta new file mode 100644 index 0000000..bb1b90d --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignTR.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: e01c0b07c87513844ab88bb432bcf85a +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/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignVC.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignVC.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignVC.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_alignVC.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera.png.meta new file mode 100644 index 0000000..e362a81 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 37639be6148186645bca3fce45d5aa22 +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/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera_border.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera_border.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera_border.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_camera_border.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog.png.meta new file mode 100644 index 0000000..2a9bf06 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 7c83a08052c9e2f49b47897a637994de +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/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog_border.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog_border.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog_border.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog_border.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog_border.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog_border.png.meta new file mode 100644 index 0000000..d9323e2 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_cog_border.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 6862027f2176eae40a3143c562466a1b +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/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment_border.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment_border.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment_border.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_comment_border.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_delete.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_delete.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_delete.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_delete.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_demigiant.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_demigiant.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_demigiant.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_demigiant.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_demigiant.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_demigiant.png.meta new file mode 100644 index 0000000..6bac83d --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_demigiant.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 229d0d11465a822449f78a50dbf7104d +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_distributeHAlignT.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_distributeHAlignT.png new file mode 100644 index 0000000000000000000000000000000000000000..90dc9def9d4ba688b12cace5483741775c5d9e54 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>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/Demigiant/DemiLib/Core/Editor/Imgs/ico_end.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_end.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_end.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_end.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart_border.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart_border.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart_border.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart_border.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart_border.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart_border.png.meta new file mode 100644 index 0000000..f7b7f22 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_heart_border.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 669c487f3c9c5fe4abb6459f9c2628f0 +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_light.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_light.png new file mode 100644 index 0000000000000000000000000000000000000000..5a60bd064f947c024ba9ecf2b7a78235a32a7798 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^>_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{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/Demigiant/DemiLib/Core/Editor/Imgs/ico_play.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_play.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_play.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_play.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_play.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_play.png.meta new file mode 100644 index 0000000..483c5b7 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_play.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 2a563a43c33f0f3428d02b3a43886fc2 +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/Demigiant/DemiLib/Core/Editor/Imgs/ico_play_border.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_play_border.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_play_border.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_play_border.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull.png.meta new file mode 100644 index 0000000..8d4e226 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 01976ad42d31f494e8040d3e32e283dc +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/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull_border.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull_border.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull_border.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull_border.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull_border.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull_border.png.meta new file mode 100644 index 0000000..ae28986 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_skull_border.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 6dfd924c0ba23844fb5d04ad1560de22 +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/Demigiant/DemiLib/Core/Editor/Imgs/ico_star.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_star.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_star.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_star.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_star_border.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_star_border.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_star_border.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_star_border.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_star_border.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_star_border.png.meta new file mode 100644 index 0000000..955bf42 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_star_border.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 18f3a26aa87fccc4cb5e211d4c6de662 +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/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui.png 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/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui_border.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui_border.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui_border.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/ico_ui_border.png 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/Demigiant/DemiLib/Core/Editor/Imgs/orangeSquare.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/orangeSquare.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/orangeSquare.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/orangeSquare.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/orangeSquare.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/orangeSquare.png.meta new file mode 100644 index 0000000..012525b --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/orangeSquare.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 3e730492361eb6e45be5c5fdafac23be +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/project.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project.meta new file mode 100644 index 0000000..8ddc4ff --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 52bdbb53205da074d9937b996806e2e2 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_atlas.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_atlas.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_atlas.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_atlas.png 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/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_audio.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_audio.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_audio.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_audio.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_audio.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_audio.png.meta new file mode 100644 index 0000000..30cc40c --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_audio.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: e1af8927fb6f5634896d59aed409a589 +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/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_bundle.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_bundle.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_bundle.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_bundle.png 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/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cog.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cog.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cog.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cog.png 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/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cross.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cross.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cross.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cross.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cross.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cross.png.meta new file mode 100644 index 0000000..529d85c --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_cross.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 3b67e53c8c2f8114b966c0e70d452419 +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/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_demigiant.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_demigiant.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_demigiant.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_demigiant.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_demigiant.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_demigiant.png.meta new file mode 100644 index 0000000..8276473 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_demigiant.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: f36ab42cc6fcdfd4187033279d3d14a9 +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/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_folder.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_folder.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_folder.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_folder.png 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/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_fonts.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_fonts.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_fonts.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_fonts.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_fonts.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_fonts.png.meta new file mode 100644 index 0000000..996c26e --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_fonts.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: cf986943c88c2254780c17b2b5e3bc2f +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/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_heart.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_heart.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_heart.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_heart.png 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/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_play.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_play.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_play.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_play.png 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/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_prefab.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_prefab.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_prefab.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_prefab.png 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/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_scripts.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_scripts.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_scripts.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_scripts.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_scripts.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_scripts.png.meta new file mode 100644 index 0000000..2b2bbf9 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_scripts.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 96cbdf605b8ddb34da384703f2d0b849 +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_shaders.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_shaders.png new file mode 100644 index 0000000000000000000000000000000000000000..ed3b4bb19311e5fdf573e62b2316b8b589ff17a1 GIT binary patch literal 379 zcmV->0fhdEP)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/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_skull.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_skull.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_skull.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_skull.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_skull.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_skull.png.meta new file mode 100644 index 0000000..68df579 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_skull.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: d563d6ce25cd2ca48b185ec47a74a3fb +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/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_star.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_star.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_star.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_star.png 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/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_textures.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_textures.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_textures.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/project/ico_textures.png 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/Demigiant/DemiLib/Core/Editor/Imgs/purpleSquare.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/purpleSquare.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/purpleSquare.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/purpleSquare.png 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/Demigiant/DemiLib/Core/Editor/Imgs/redSquare.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/redSquare.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/redSquare.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/redSquare.png 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/Demigiant/DemiLib/Core/Editor/Imgs/squareBorder.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorder.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorder.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorder.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorder.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorder.png.meta new file mode 100644 index 0000000..50cd914 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorder.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: afd7d0ddb1d6c744b9cb87ae49b2ce62 +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/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderAlpha15.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderAlpha15.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderAlpha15.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderAlpha15.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderAlpha15.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderAlpha15.png.meta new file mode 100644 index 0000000..0488aae --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderAlpha15.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: dfd33662d9f6f3849bd92f6e159ca226 +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/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved.png 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/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02.png 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/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02_darkBorders.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02_darkBorders.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02_darkBorders.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02_darkBorders.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02_darkBorders.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02_darkBorders.png.meta new file mode 100644 index 0000000..dd83662 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved02_darkBorders.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: e3ae01f12865ad54ba365963bda55759 +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/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedAlpha.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedAlpha.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedAlpha.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedAlpha.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedAlpha.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedAlpha.png.meta new file mode 100644 index 0000000..44abb4e --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedAlpha.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: a1606d34a052ed3449da93edd229743e +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/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty.png.meta new file mode 100644 index 0000000..a156e1a --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 4578222ee7a511446b0c340551bf8740 +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/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty02.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty02.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty02.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty02.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty02.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty02.png.meta new file mode 100644 index 0000000..72910c0 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmpty02.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 7d504312fad10f040b95bd8836dc6fc6 +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/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmptyThick.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmptyThick.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmptyThick.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmptyThick.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmptyThick.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmptyThick.png.meta new file mode 100644 index 0000000..e9a6d7d --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurvedEmptyThick.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: fc3b86627d5fe1c4d865b80627e2e37c +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/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBorders.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBorders.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBorders.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBorders.png 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/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBordersAlpha.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBordersAlpha.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBordersAlpha.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderCurved_darkBordersAlpha.png 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/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty.png.meta new file mode 100644 index 0000000..365f54f --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 8db54efcce998554c86b796b37a7cdfa +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/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty01.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty01.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty01.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty01.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty01.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty01.png.meta new file mode 100644 index 0000000..c86a60d --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty01.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: aa8dc9238ab21e54ca88fa22698e4679 +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/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty02.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty02.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty02.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty02.png 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/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty03.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty03.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty03.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderEmpty03.png 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/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickEmpty.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickEmpty.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickEmpty.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickEmpty.png 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/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickerEmpty.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickerEmpty.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickerEmpty.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareBorderThickerEmpty.png 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/Demigiant/DemiLib/Core/Editor/Imgs/squareCorners03.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareCorners03.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareCorners03.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareCorners03.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareCorners03.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareCorners03.png.meta new file mode 100644 index 0000000..17c7922 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareCorners03.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: dec3ea647707588408ec0d11ab130b73 +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/Demigiant/DemiLib/Core/Editor/Imgs/squareCornersEmpty02.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareCornersEmpty02.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/squareCornersEmpty02.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/squareCornersEmpty02.png 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/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_empty.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_empty.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_empty.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_empty.png 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/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted.png 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/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted_alpha.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted_alpha.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted_alpha.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted_alpha.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted_alpha.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted_alpha.png.meta new file mode 100644 index 0000000..b26261d --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/tileBars_slanted_alpha.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 018a5623a46db1d49b1e6ff2482b07ab +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/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/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot.png 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/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_darkBorder.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_darkBorder.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_darkBorder.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_darkBorder.png 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/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_whiteBorderAlpha.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_whiteBorderAlpha.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_whiteBorderAlpha.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteDot_whiteBorderAlpha.png 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/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquare.png 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/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha10.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha10.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha10.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha10.png 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/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha15.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha15.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha15.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha15.png 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/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha25.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha25.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha25.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha25.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha25.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha25.png.meta new file mode 100644 index 0000000..cdfa23e --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha25.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 511f6b24c50557a40a09633b12b8b8ef +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/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha50.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha50.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha50.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha50.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha50.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha50.png.meta new file mode 100644 index 0000000..103bbf1 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha50.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: ef40b00a83f7bd34f84851386b3321f0 +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/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha80.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha80.png similarity index 100% rename from Assets/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha80.png rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha80.png diff --git a/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha80.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha80.png.meta new file mode 100644 index 0000000..4dd7287 --- /dev/null +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareAlpha80.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 11848dd30e516d846a02cd302634d317 +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/whiteSquareCurved.png b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareCurved.png new file mode 100644 index 0000000000000000000000000000000000000000..fb54c9f8ae6834b49ba0f0f661907e442209e7c9 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMprDhd 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/Demigiant/DOTween/Editor/Imgs/Footer_dark.png.meta b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareCurved.png.meta similarity index 55% rename from Assets/Demigiant/DOTween/Editor/Imgs/Footer_dark.png.meta rename to Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareCurved.png.meta index 33a5ee0..8a6304e 100644 --- a/Assets/Demigiant/DOTween/Editor/Imgs/Footer_dark.png.meta +++ b/Assets/Plugins/Demigiant/DemiLib/Core/Editor/Imgs/whiteSquareCurved.png.meta @@ -1,9 +1,10 @@ fileFormatVersion: 2 -guid: 519694efe2bb2914788b151fbd8c01f4 +guid: 070edb62059c27b408e16f28cb87f941 +timeCreated: 1604057757 +licenseType: Store TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 + fileIDToRecycleName: {} + serializedVersion: 4 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -11,8 +12,6 @@ TextureImporter: linearTexture: 0 fadeOut: 0 borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 mipMapFadeDistanceStart: 1 mipMapFadeDistanceEnd: 3 bumpmap: @@ -21,23 +20,17 @@ TextureImporter: heightScale: 0.25 normalMapFilter: 0 isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 grayScaleToAlpha: 0 generateCubemap: 6 cubemapConvolution: 0 seamlessCubemap: 0 - textureFormat: -1 - maxTextureSize: 1024 + textureFormat: 1 + maxTextureSize: 2048 textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: 0 - wrapU: 0 - wrapV: 0 - wrapW: 0 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 nPOTScale: 1 lightmap: 0 compressionQuality: 50 @@ -46,51 +39,30 @@ TextureImporter: spriteMeshType: 1 alignment: 0 spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 + spritePixelsToUnits: 100 alphaUsage: 1 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 1 platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 1024 - resizeAlgorithm: 0 + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 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/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^MBOsGEy19msA /// 速度 ///
- [BoxGroup("属性")][Header("速度")] - public float speed; + [BoxGroup("属性")] + public float speed{get{return speed;} set{speed = value;}} /// /// 打死后掉多少金币 @@ -55,28 +55,15 @@ public class Enemy : MonoBehaviour /// /// 当前生命值 /// - [ReadOnly][SerializeField][ProgressBar(0,10,0.15f,0.47f,0.74f)] + [ReadOnly][SerializeField][ProgressBar(0,10,0.15f,0.47f,0.74f)][BoxGroup("状态")] protected float HPLeft; /// /// 当前状态 /// - [EnumPaging][SerializeField][ReadOnly][Header("当前状态")] + [EnumPaging][SerializeField][ReadOnly][Header("当前状态")][BoxGroup("状态")] protected State state; - - // Start is called before the first frame update - void Start() - { - - } - - // Update is called once per frame - void Update() - { - - } - // ______ _ // | ____| | | // | |____ _____ _ __ | |_ @@ -92,7 +79,7 @@ public class Enemy : MonoBehaviour /// /// 当怪物触碰到玩家的时候Call这个 /// - protected void OnTouchThePlayer(){} + protected virtual void OnTouchThePlayer(MyPlayer player){} /// /// 当怪物被打的时候触发 @@ -116,7 +103,7 @@ public class Enemy : MonoBehaviour protected void OnCollisionEnter2D(Collision2D other)//当有物体碰上 { if(other.gameObject.TryGetComponent(out MyPlayer player)) - {OnTouchThePlayer();}//如果创到的是玩家,则Call事件 + {OnTouchThePlayer(player);}//如果创到的是玩家,则Call事件 } protected void OnTriggerEnter2D(Collider2D other) { diff --git a/Assets/Scripts/MyPlayer.cs b/Assets/Scripts/MyPlayer.cs index e61ceec..ccb3aca 100644 --- a/Assets/Scripts/MyPlayer.cs +++ b/Assets/Scripts/MyPlayer.cs @@ -5,7 +5,6 @@ using UnityEngine.InputSystem; using DG.Tweening; using Sirenix.OdinInspector; - // _ // | | // _ __ | | __ _ _ _ ___ _ __ @@ -18,35 +17,36 @@ using Sirenix.OdinInspector; /// /// 玩家类,控制玩家相关的东西 /// - -[RequireComponent(typeof(Rigidbody2D))] public class MyPlayer : MonoBehaviour { - // _____ _ _ _ // | __ \ | | | (_) // | |__) | _| |__ | |_ ___ // | ___/ | | | '_ \| | |/ __| // | | | |_| | |_) | | | (__ // |_| \__,_|_.__/|_|_|\___| - - + [Header("玩家平时地面移动的速度")][FoldoutGroup("Info")] - - public float speed = 10f; + public float speed = 10f; [Header("玩家跳跃力度的大小")][FoldoutGroup("Info")] - public float jumpForce = 10f; - [BoxGroup("CD")] - [Header("挥动锤子的CD时长")] + [BoxGroup("CD")][Header("挥动锤子的CD时长")] public float hammerCD = 1f; - [BoxGroup("CD")] - [Header("发射镰刀的CD时长")] + [BoxGroup("CD")][Header("发射镰刀的CD时长")] public float sickleCD = 10f; - [Header("镰刀发射点Transform")] - [BoxGroup("预制体")] + [Header("镰刀游戏物体")][BoxGroup("预制体")] public GameObject sicklePrefab; public enum AtkMethod{镰刀,锤子,反弹炸弹}; + /// + /// 生命值上限 + /// + [FoldoutGroup("Info")][Header("生命值上限")] + public float HP; + /// + /// 被击飞后的飞行方向的调整值 + /// + [Header("被攻击后击飞的力度调整值")][FoldoutGroup("其他",false,0)] + public Vector2 hitToflyParameter; // _____ _ _ // | __ \ (_) | | @@ -61,17 +61,27 @@ public class MyPlayer : MonoBehaviour [SerializeField][ReadOnly][FoldoutGroup("Info")] private bool isLanding;//记录自己当前是否着地 private DOTweenAnimation wavingAnimation;//锤子挥动动画组件 - private SpriteRenderer hammerSprite; - private BoxCollider2D hammerCollider; + private SpriteRenderer hammerSprite;//锤子的图片组件 + private BoxCollider2D hammerCollider;//锤子的碰撞体 [BoxGroup("CD")][Header("挥动锤子的CD还剩多长时间")][SerializeField][ReadOnly] private float hammerCDLeft = 0f; [BoxGroup("CD")][Header("发射镰刀的CD还剩多长时间")][SerializeField][ReadOnly] private float sickleCDLeft = 0f; private int faceDir = 1;//面部朝向 - private Transform sickleFirePoint; - private Transform sickleClearerL; - private Transform sickleClearerR; + private Transform sickleFirePoint;//镰刀发射点的transform + private Transform sickleClearerL;//左边的镰刀清除触发器 + private Transform sickleClearerR;//右边的镰刀清除触发器 + [FoldoutGroup("其他",false,1)][Header("玩家现在是否处于控制状态下(物理)")][SerializeField][ReadOnly] + private bool inControl = true; + [SerializeField][ReadOnly][ProgressBar(0,10,0.15f,0.47f,0.74f)] + private float HPLeft; + // _____ _ _ ____ _ + // / ____| | | | _ \ | | + // | | __ _| | | |_) | __ _ ___| | __ + // | | / _` | | | _ < / _` |/ __| |/ / + // | |___| (_| | | | |_) | (_| | (__| < + // \_____\__,_|_|_|____/ \__,_|\___|_|\_\ void Start() { Init();//初始化一些参数 @@ -87,6 +97,13 @@ public class MyPlayer : MonoBehaviour Move();//处理水平移动 } + // _ _ _ + // | \ | | | | + // | \| | ___ _ __ _ __ ___ __ _| | + // | . ` |/ _ \| '__| '_ ` _ \ / _` | | + // | |\ | (_) | | | | | | | | (_| | | + // |_| \_|\___/|_| |_| |_| |_|\__,_|_| + //初始化函数 private void Init() { @@ -99,11 +116,13 @@ public class MyPlayer : MonoBehaviour sickleClearerL.gameObject.AddComponent(); sickleClearerR = transform.Find("镰刀飞出消除触发器右"); sickleClearerR.gameObject.AddComponent(); + HPLeft = HP; } //移动函数,处理水平方向移动 private void Move() { + if(inControl) //直接修改刚体速度 m_rigidbody.velocity = new Vector2(inputDir * speed,//水平方向以输入方向乘以预设速度大小 m_rigidbody.velocity.y);//垂直方向不变 @@ -116,15 +135,25 @@ public class MyPlayer : MonoBehaviour if(sickleCDLeft > 0) sickleCDLeft -= Time.deltaTime; } - private void OnTurnAround() + private void TurnAround() { faceDir = inputDir; transform.localScale = new Vector3( //x乘-1以显示转身 transform.localScale.x * -1, //y、z不变 - transform.localScale.y, transform.localScale.z); - - + transform.localScale.y, transform.localScale.z); + } + + /// + /// 被击飞的时候Call这个 + /// + /// 被击方向 + public void BeHitToFly(int dir) + { + m_rigidbody.velocity += new Vector2( + -1 * dir * hitToflyParameter.x, + hitToflyParameter.y + ); } //碰撞检测代码 @@ -137,12 +166,13 @@ public class MyPlayer : MonoBehaviour private void OnCollisionEnter2D(Collision2D collision)//当有物体碰上 { if(collision.transform.tag == "地面") - isLanding = true;//若碰撞物体标签为地面,标记自身着地 + {isLanding = true;//若碰撞物体标签为地面,标记自身着地 + inControl = true;} } private void OnCollisionExit2D(Collision2D collision)//当有碰撞体离开 { if(collision.transform.tag == "地面") - isLanding = false;//若碰撞物体标签为地面,标记自身未着地 + {isLanding = false;}//若碰撞物体标签为地面,标记自身未着地 } // 以下为操作监听事件 @@ -163,7 +193,7 @@ public class MyPlayer : MonoBehaviour if(faceDir * inputDir < 0) { - OnTurnAround(); + TurnAround(); } } @@ -223,6 +253,21 @@ public class MyPlayer : MonoBehaviour hammerCollider.enabled = false; } + /// + /// 当玩家被打则Call这个函数 + /// + /// 遭受的攻击力 + /// 攻击来源的方向,-1左,1右 + public void OnBeHit(float atk, int dir) + { + Debug.Log("我被攻击了!受到的攻击力是:" + atk + + "攻击方向来自" + ((dir == 1) ? "右边" : "左边")); + BeHitToFly(dir); + inControl = false; + HPLeft -= atk; + } + + // _______ _ _____ _ // |__ __| | |/ ____| | // | | ___ ___ | | | | | __ _ ___ ___ diff --git a/Assets/Scripts/NormalEnemy.cs b/Assets/Scripts/NormalEnemy.cs new file mode 100644 index 0000000..f23c11a --- /dev/null +++ b/Assets/Scripts/NormalEnemy.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class NormalEnemy : Enemy +{ + protected override void OnTouchThePlayer(MyPlayer player) + { + player.OnBeHit(ATK, + ((transform.position.x - + player.transform.position.x) + > 0) ? 1 : -1); + } +} diff --git a/Assets/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs.meta b/Assets/Scripts/NormalEnemy.cs.meta similarity index 83% rename from Assets/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs.meta rename to Assets/Scripts/NormalEnemy.cs.meta index 5568217..6606bff 100644 --- a/Assets/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs.meta +++ b/Assets/Scripts/NormalEnemy.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b766d08851589514b97afb23c6f30a70 +guid: 2127494698a58b642b7d3ec5f92f8974 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Logs/ApiUpdaterCheck.txt b/Logs/ApiUpdaterCheck.txt index dd5595a..bf62b1f 100644 --- a/Logs/ApiUpdaterCheck.txt +++ b/Logs/ApiUpdaterCheck.txt @@ -18,3 +18,60 @@ C# parse time : 639ms candidates check time : 57ms console write time : 0ms +[api-updater (non-obsolete-error-filter)] 2021/11/27 22:03:44 : Starting D:/unity/Editor/2020.3.20f1c1/Editor/Data/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe +[api-updater (non-obsolete-error-filter)] +---------------------------------- +jit/startup time : 246.7565ms +moved types parse time: 48ms +candidates parse time : 1ms +C# parse time : 693ms +candidates check time : 71ms +console write time : 0ms + +[api-updater (non-obsolete-error-filter)] 2021/11/27 22:09:10 : Starting D:/unity/Editor/2020.3.20f1c1/Editor/Data/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe +[api-updater (non-obsolete-error-filter)] Exception caught while loading types from C:\Users\13259\Desktop\宗教\Library\ScriptAssemblies\Sirenix.OdinInspector.CompatibilityLayer.Editor.dll (some types may not be loaded) + Exception of type 'System.Reflection.ReflectionTypeLoadException' was thrown. + at (wrapper managed-to-native) System.Reflection.Assembly.GetTypes(System.Reflection.Assembly,bool) + at System.Reflection.Assembly.GetTypes () [0x00000] in <695d1cc93cca45069c528c15c9fdd749>:0 + at APIUpdater.NonObsoleteApiUpdaterDetector.ExtraInfoParser+d__3.MoveNext () [0x000c8] in <00f49e0ec5f946baac3cd78779c2f2a8>:0 + Cannot resolve dependency to assembly because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event. + + Cannot resolve dependency to assembly because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event. + + Cannot resolve dependency to assembly because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event. + + Cannot resolve dependency to assembly because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event. + + Cannot resolve dependency to assembly because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event. + + Cannot resolve dependency to assembly because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event. + +[api-updater (non-obsolete-error-filter)] +---------------------------------- +jit/startup time : 73.807ms +moved types parse time: 49ms +candidates parse time : 1ms +C# parse time : 259ms +candidates check time : -1ms +console write time : -1ms + +[api-updater (non-obsolete-error-filter)] 2021/11/27 22:11:26 : Starting D:/unity/Editor/2020.3.20f1c1/Editor/Data/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe +[api-updater (non-obsolete-error-filter)] +---------------------------------- +jit/startup time : 86.7683ms +moved types parse time: 48ms +candidates parse time : 1ms +C# parse time : 276ms +candidates check time : 84ms +console write time : 0ms + +[api-updater (non-obsolete-error-filter)] 2021/11/27 22:42:03 : Starting D:/unity/Editor/2020.3.20f1c1/Editor/Data/Tools/ScriptUpdater/APIUpdater.NonObsoleteApiUpdaterDetector.exe +[api-updater (non-obsolete-error-filter)] +---------------------------------- +jit/startup time : 86.7738ms +moved types parse time: 49ms +candidates parse time : 1ms +C# parse time : 218ms +candidates check time : 79ms +console write time : 0ms + diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index 3d6898d..744e910 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -5,9 +5,12 @@ EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_Scenes: + - enabled: 0 + path: + guid: 00000000000000000000000000000000 - enabled: 1 path: Assets/Scenes/test.unity - guid: 2cda990e2423bbf4892e6590ba056729 + guid: 57c7619c790d5a94890207bd10cc8aca m_configObjects: com.unity.adaptiveperformance.loader_settings: {fileID: 11400000, guid: c904ac9773b374d419329ca1a0f380ac, type: 2} com.unity.adaptiveperformance.simulator.provider_settings: {fileID: 11400000, guid: ad690714d07fc1a44849fae3ac890474, type: 2} diff --git a/ProjectSettings/NavMeshAreas.asset b/ProjectSettings/NavMeshAreas.asset index 3b0b7c3..35d25c6 100644 --- a/ProjectSettings/NavMeshAreas.asset +++ b/ProjectSettings/NavMeshAreas.asset @@ -69,7 +69,7 @@ NavMeshProjectSettings: cost: 1 - name: cost: 1 - m_LastAgentTypeID: -887442657 + m_LastAgentTypeID: -1372625422 m_Settings: - serializedVersion: 2 agentTypeID: 0 @@ -85,7 +85,28 @@ NavMeshProjectSettings: manualTileSize: 0 tileSize: 256 accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + - serializedVersion: 2 + agentTypeID: -1372625422 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 debug: m_Flags: 0 m_SettingNames: - Humanoid + - New Agent diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index a49acf2..7d60824 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -146,7 +146,8 @@ PlayerSettings: 16:9: 1 Others: 1 bundleVersion: 1.0 - preloadedAssets: [] + preloadedAssets: + - {fileID: -233813179328996068, guid: c904ac9773b374d419329ca1a0f380ac, type: 2} metroInputSource: 0 wsaTransparentSwapchain: 0 m_HolographicPauseOnTrackingLoss: 1 diff --git a/ProjectSettings/UnityConnectSettings.asset b/ProjectSettings/UnityConnectSettings.asset index b2f8bbe..6b7451a 100644 --- a/ProjectSettings/UnityConnectSettings.asset +++ b/ProjectSettings/UnityConnectSettings.asset @@ -4,7 +4,7 @@ UnityConnectSettings: m_ObjectHideFlags: 0 serializedVersion: 1 - m_Enabled: 0 + m_Enabled: 1 m_TestMode: 0 m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events m_EventUrl: https://cdp.cloud.unity3d.com/v1/events diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset index bb23fb6..e625419 100644 --- a/UserSettings/EditorUserSettings.asset +++ b/UserSettings/EditorUserSettings.asset @@ -6,35 +6,35 @@ EditorUserSettings: serializedVersion: 4 m_ConfigSettings: RecentlyUsedScenePath-0: - value: 224247031146466f081d18315f064915040e0c222526217e38271427fb - flags: 0 - RecentlyUsedScenePath-1: - value: 224247031146466f081d18315f0e5e1e0f3514252f23350f7a794d78acf53a31f6fe - flags: 0 - RecentlyUsedScenePath-2: - value: 224247031146466f081d18315f105a110414102b2e24231322241032ece42776f7e93ffdfe - flags: 0 - RecentlyUsedScenePath-3: - value: 224247031146466f081d18315f144d19021e162d1f382335291d1820f6ae2136ebf32f - flags: 0 - RecentlyUsedScenePath-4: - value: 224247031146466f081d18315f00501e00120a392d3c2f3f23162e3aefe93839f0c937e4e2297129370bfb25 - flags: 0 - RecentlyUsedScenePath-5: - value: 22424703114646680e0b0227036c6c111b07142f1f2b233e2867083debf42d - flags: 0 - RecentlyUsedScenePath-6: value: 22424703114646680c031c2e1530103918070d3e6c1b3f23392c107cb3ae6476b0a805e0ea2a33397926ea310b713236ff1a050ed20e07042e3bee071ff8311005cc17cb09860a12c20d05 flags: 0 - RecentlyUsedScenePath-7: + RecentlyUsedScenePath-1: value: 22424703114646680c031c2e1530103918070d3e6c1b3f23392c107cb3ae6476b0a805e0ea2a33397926ea310b713236ff1a050ed20e07042e3bee071ff8311005cc17cb3bdb0c19df5709c0c409c8 flags: 0 - RecentlyUsedScenePath-8: + RecentlyUsedScenePath-2: value: 224247031146466b011b0b2b1e3010231f051d242530691428241220adcf3031eca71fe7f42a3a3f2d0dfd73373d0431f745584bbb4b250f1800bd2f05eb021a13d00cc00988300ace0b0ac7c80a9ff6dbdfc0f3 flags: 0 - RecentlyUsedScenePath-9: + RecentlyUsedScenePath-3: + value: 224247031146467f08030525192251045933371e3b2d233e1d3b1273c7f83535f2eb33faa81e10082e07ea32343f1537bc1f0702e212 + flags: 0 + RecentlyUsedScenePath-4: + value: 224247031146467f08030525192251045933371e3b2d233e1d3b1273c7f83535f2eb33faa81e10082e07ea3225300832f31e0004f834280a0207fe1d5fea1e1a05dc + flags: 0 + RecentlyUsedScenePath-5: + value: 224247031146467f08030525192251045933371e3b2d233e1d3b1273c7f83535f2eb33faa81e10082e07ea3225300832f31e0004f8342b0f070ff30d14fb5e061fcc0cdc + flags: 0 + RecentlyUsedScenePath-6: value: 22424703114646680e0b0227036c4b150503563f22213229 flags: 0 + RecentlyUsedScenePath-7: + value: 224247031146466b011b0b2b1e301034131a112d25292824620d3207f5e53136d2f539a9c2223e31290eea2f4b1a2e0be50f0c05c60a1e035f1bf30705e6 + flags: 0 + RecentlyUsedScenePath-8: + value: 224247031146466b011b0b2b1e301034131a112d25292824620d3207f5e53136d2f539a9c2223e31290eea2f4b1a2e0be50f0c05d7050306101af4011fc0321202cc1bd654dd1115df00 + flags: 0 + RecentlyUsedScenePath-9: + value: 224247031146466b011b0b2b1e301034131a112d25292824620d3207f5e53136d2f539a9c2223e31290eea2f4b1a2e0be50f0c05d7050306101af4011fc0311707c416c61fcc5109c51008d7 + flags: 0 vcSharedLogLevel: value: 0d5e400f0650 flags: 0