Editor Update (#553)
* Update issue template to include .riq/.zip info (#483) Co-authored-by: patata <patataofcourse@gmail.com> * Pull release 1 (#484) * Squashed commit of the following: commit2c628a4109
Merge:4fde418c
6246a144
Author: minenice55 <star.elementa@gmail.com> Date: Wed Jun 14 01:23:31 2023 +0000 Merge pull request #473 from minenice55/easings-fix Enum Parsing Fix commit6246a144b6
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:21:13 2023 -0400 fix all parsing of enums, removed the "special case" for eases update to latest Jukebox commit4fde418c33
Merge:b9043582
50bc8765
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:39:15 2023 +0000 Merge pull request #469 from minenice55/jukebox-update Jukebox Package Update commitb90435825a
Merge:eec3c09a
73e9efd4
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:39:08 2023 +0000 Merge pull request #458 from AstrlJelly/MiscAdditions_4 Bug Fixes + Feature Additions commit73e9efd4b1
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 17:38:24 2023 -0400 add "updater" for the old marching entity commitb8d149743a
Merge:4291333c
eec3c09a
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 17:22:01 2023 -0400 Merge branch 'release_1' into pr/458 commit50bc876509
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 16:55:02 2023 -0400 let play mode start if no song file is loaded fix issue with loading large audio files commiteec3c09aa8
Merge:a0d70933
990af323
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 18:32:40 2023 +0000 Merge pull request #471 from Rapandrasmus/FixWorkingDoughCurve Fixed weird curve stuff on game switch in working dough commit990af32379
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 19:24:13 2023 +0200 Fixed weird curve stuff on game switch in working dough commita0d7093345
Merge:bdef3f95
3d19e75e
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 16:09:21 2023 +0000 Merge pull request #470 from Rapandrasmus/WorkingDoughFixes Fixed small balls not working in working dough commit3d19e75e1a
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 18:07:13 2023 +0200 Fixed small balls not working in working dough commitbdef3f95c3
Merge:8954b8c2
0bfafac6
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 14:56:58 2023 +0000 Merge pull request #467 from Rapandrasmus/WorkingDoughRework Working Dough rework commit0bfafac6fe
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 16:13:08 2023 +0200 modernised rockers pass turn commitd770266d81
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 16:03:08 2023 +0200 Rhythm tweezers pass turn now works like working dough commit2109c99a95
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 15:51:35 2023 +0200 gandw on balls has been added commit785abf8486
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 14:59:56 2023 +0200 Proper inactive handling now commit0a92b7bd69
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 13:52:15 2023 +0200 OnSpawnBall reimplemented commita14aacc181
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 13:37:09 2023 +0200 new sounds commit8b0544246d
Author: minenice55 <star.elementa@gmail.com> Date: Mon Jun 12 17:18:37 2023 -0400 update Jukebox to latest version fixes for inferred entity loading commitd8ff6744c0
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 21:36:57 2023 +0200 ball transporter anims for pass turn commitd283624b07
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 20:38:48 2023 +0200 working dough converted, need to fix eveerything though commit5b3c59eabd
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 18:36:41 2023 +0200 Converted everything to new curves and made playerballs handle themselves input-wise commitdee630ea45
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 14:04:32 2023 +0200 Some new curves commit31e8890190
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 12:03:21 2023 +0200 Rockers can do it too now commit76bf6eefa6
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 11:58:31 2023 +0200 You can now place inputs on top of pass turn for rhythm tweezers commit8954b8c269
Merge:743e954e
ce3e6f2d
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 15:55:40 2023 -0400 Merge branch 'master' into release_1 commit743e954e05
Merge:5af551b3
8929cd56
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 19:53:47 2023 +0000 Merge pull request #465 from minenice55/dont_infer_track Don't infer the track field when importing converted v0 riq coming from unknown origin commit8929cd5618
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 15:52:14 2023 -0400 don't infer track when importing a v0 riq from another program commit5af551b32e
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 12:12:25 2023 -0400 make base datamodels for special entity reading (#463) * make base datamodels for special entity reading * fix crop stomp breaking when no game switch or remix end is set * fix save shortcut fix loading charts with no music commit4291333cb0
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 23:00:30 2023 -0400 add updater for marching orders turn commit82da6da741
Merge:52a4d2b6
411b9a3c
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 22:36:10 2023 -0400 Merge branch 'release_1' into pr/458 commit411b9a3cb1
Merge:b6c222a9
afc665ed
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 22:30:32 2023 -0400 Merge branch 'master' into release_1 commitb6c222a981
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 22:27:58 2023 -0400 editor fixes (#459) * ditch loading dialog doesn't show up when it's supposed to * format song offset in editor * remove VorbisPlugin * Update Editor.cs commit52a4d2b65c
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 16:55:10 2023 -0400 convert float to double and all that commitaa8f531466
Merge:242b076f
afc665ed
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 16:01:44 2023 -0400 Merge remote-tracking branch 'upstream/master' into MiscAdditions_4 commit242b076f09
Merge:db653d5a
2b0ced2f
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 15:21:22 2023 -0400 Merge remote-tracking branch 'upstream/master' into MiscAdditions_4 commitdb653d5a52
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 15:18:45 2023 -0400 a lot * munchy monk input + mustache fixes * fork lifter and pajama party bopping * meat grinder miss bop fix * cloud monkey Real * marching orders Go! was broken * force march doesn't break when it's too early from a game switch * you can use the March! block without the marching now commit50a1b7bcdb
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 15:13:29 2023 -0400 Integration of Jukebox Library (#451) * add Jukebox library todo: - saving / loading of new format - inferrence of unknown data like past versions - move the temporary float casts to proper use of double - make sound related functions take double for timing - inform people that the Jukebox sound player was renamed to SoundByte lol * make sound, input scheduling, and super curve use double precision * successfully load charts * editor works again v1 riqs can be saved and loaded * first tempo and volume markers are unmovable fix loading of charts' easing values * use gsync / freesync * update Jukebox refs to SoundByte * game events use double part 1 Air Rally - Glee Club converted * don't load song if chart load fails * finish conversion of all minigames * remove editor waveform toggle * timeline now respects added song offset length clear cache files on app close prepped notes for dsp sync * update timeline length when offset changed * update to latest Jukebox * make error panel object in global game manager * improve conductor music scheduling * added error message box fix first game events sometimes not playing * Squashed commit of the following: commit0d25221b71
Merge:5869d212
9163085d
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 17 16:40:52 2023 +0000 Merge pull request #478 from evdial/working-dough Working Dough Tweaks commit9163085d7a
Merge:6592a5f2
5869d212
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 17 12:40:06 2023 -0400 Merge branch 'release_1' into pr/478 commit5869d212bc
Author: patata <patataofcourse@gmail.com> Date: Sat Jun 17 17:20:15 2023 +0200 Update issue template to include .riq/.zip info commit6592a5f202
Author: ev <85412919+evdial@users.noreply.github.com> Date: Thu Jun 15 15:05:07 2023 -0400 assbuns commit11a4c090a1
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Thu Jun 15 20:56:40 2023 +0200 made small idle not crazy commit45e7d81b0f
Author: ev <85412919+evdial@users.noreply.github.com> Date: Thu Jun 15 14:33:57 2023 -0400 fsd commit47efa3e4f3
Author: ev <85412919+evdial@users.noreply.github.com> Date: Thu Jun 15 14:16:38 2023 -0400 anim commitc6fb8880a0
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Thu Jun 15 20:13:11 2023 +0200 Fixed stuff also scaled now yippee commit16ce508b03
Author: ev <85412919+evdial@users.noreply.github.com> Date: Thu Jun 15 13:50:10 2023 -0400 many commit37b80a33c7
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:28:21 2023 -0400 Squashed commit of the following: (#474) commit2c628a4109
Merge:4fde418c
6246a144
Author: minenice55 <star.elementa@gmail.com> Date: Wed Jun 14 01:23:31 2023 +0000 Merge pull request #473 from minenice55/easings-fix Enum Parsing Fix commit6246a144b6
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:21:13 2023 -0400 fix all parsing of enums, removed the "special case" for eases update to latest Jukebox commit4fde418c33
Merge:b9043582
50bc8765
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:39:15 2023 +0000 Merge pull request #469 from minenice55/jukebox-update Jukebox Package Update commitb90435825a
Merge:eec3c09a
73e9efd4
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:39:08 2023 +0000 Merge pull request #458 from AstrlJelly/MiscAdditions_4 Bug Fixes + Feature Additions commit73e9efd4b1
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 17:38:24 2023 -0400 add "updater" for the old marching entity commitb8d149743a
Merge:4291333c
eec3c09a
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 17:22:01 2023 -0400 Merge branch 'release_1' into pr/458 commit50bc876509
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 16:55:02 2023 -0400 let play mode start if no song file is loaded fix issue with loading large audio files commiteec3c09aa8
Merge:a0d70933
990af323
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 18:32:40 2023 +0000 Merge pull request #471 from Rapandrasmus/FixWorkingDoughCurve Fixed weird curve stuff on game switch in working dough commit990af32379
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 19:24:13 2023 +0200 Fixed weird curve stuff on game switch in working dough commita0d7093345
Merge:bdef3f95
3d19e75e
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 16:09:21 2023 +0000 Merge pull request #470 from Rapandrasmus/WorkingDoughFixes Fixed small balls not working in working dough commit3d19e75e1a
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 18:07:13 2023 +0200 Fixed small balls not working in working dough commitbdef3f95c3
Merge:8954b8c2
0bfafac6
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 14:56:58 2023 +0000 Merge pull request #467 from Rapandrasmus/WorkingDoughRework Working Dough rework commit0bfafac6fe
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 16:13:08 2023 +0200 modernised rockers pass turn commitd770266d81
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 16:03:08 2023 +0200 Rhythm tweezers pass turn now works like working dough commit2109c99a95
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 15:51:35 2023 +0200 gandw on balls has been added commit785abf8486
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 14:59:56 2023 +0200 Proper inactive handling now commit0a92b7bd69
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 13:52:15 2023 +0200 OnSpawnBall reimplemented commita14aacc181
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 13:37:09 2023 +0200 new sounds commit8b0544246d
Author: minenice55 <star.elementa@gmail.com> Date: Mon Jun 12 17:18:37 2023 -0400 update Jukebox to latest version fixes for inferred entity loading commitd8ff6744c0
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 21:36:57 2023 +0200 ball transporter anims for pass turn commitd283624b07
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 20:38:48 2023 +0200 working dough converted, need to fix eveerything though commit5b3c59eabd
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 18:36:41 2023 +0200 Converted everything to new curves and made playerballs handle themselves input-wise commitdee630ea45
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 14:04:32 2023 +0200 Some new curves commit31e8890190
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 12:03:21 2023 +0200 Rockers can do it too now commit76bf6eefa6
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 11:58:31 2023 +0200 You can now place inputs on top of pass turn for rhythm tweezers commit8954b8c269
Merge:743e954e
ce3e6f2d
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 15:55:40 2023 -0400 Merge branch 'master' into release_1 commit743e954e05
Merge:5af551b3
8929cd56
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 19:53:47 2023 +0000 Merge pull request #465 from minenice55/dont_infer_track Don't infer the track field when importing converted v0 riq coming from unknown origin commit8929cd5618
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 15:52:14 2023 -0400 don't infer track when importing a v0 riq from another program commit5af551b32e
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 12:12:25 2023 -0400 make base datamodels for special entity reading (#463) * make base datamodels for special entity reading * fix crop stomp breaking when no game switch or remix end is set * fix save shortcut fix loading charts with no music commit4291333cb0
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 23:00:30 2023 -0400 add updater for marching orders turn commit82da6da741
Merge:52a4d2b6
411b9a3c
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 22:36:10 2023 -0400 Merge branch 'release_1' into pr/458 commit411b9a3cb1
Merge:b6c222a9
afc665ed
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 22:30:32 2023 -0400 Merge branch 'master' into release_1 commitb6c222a981
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 22:27:58 2023 -0400 editor fixes (#459) * ditch loading dialog doesn't show up when it's supposed to * format song offset in editor * remove VorbisPlugin * Update Editor.cs commit52a4d2b65c
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 16:55:10 2023 -0400 convert float to double and all that commitaa8f531466
Merge:242b076f
afc665ed
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 16:01:44 2023 -0400 Merge remote-tracking branch 'upstream/master' into MiscAdditions_4 commit242b076f09
Merge:db653d5a
2b0ced2f
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 15:21:22 2023 -0400 Merge remote-tracking branch 'upstream/master' into MiscAdditions_4 commitdb653d5a52
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 15:18:45 2023 -0400 a lot * munchy monk input + mustache fixes * fork lifter and pajama party bopping * meat grinder miss bop fix * cloud monkey Real * marching orders Go! was broken * force march doesn't break when it's too early from a game switch * you can use the March! block without the marching now commit50a1b7bcdb
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 15:13:29 2023 -0400 Integration of Jukebox Library (#451) * add Jukebox library todo: - saving / loading of new format - inferrence of unknown data like past versions - move the temporary float casts to proper use of double - make sound related functions take double for timing - inform people that the Jukebox sound player was renamed to SoundByte lol * make sound, input scheduling, and super curve use double precision * successfully load charts * editor works again v1 riqs can be saved and loaded * first tempo and volume markers are unmovable fix loading of charts' easing values * use gsync / freesync * update Jukebox refs to SoundByte * game events use double part 1 Air Rally - Glee Club converted * don't load song if chart load fails * finish conversion of all minigames * remove editor waveform toggle * timeline now respects added song offset length clear cache files on app close prepped notes for dsp sync * update timeline length when offset changed * update to latest Jukebox * make error panel object in global game manager * improve conductor music scheduling * added error message box fix first game events sometimes not playing commit2c628a4109
Merge:4fde418c
6246a144
Author: minenice55 <star.elementa@gmail.com> Date: Wed Jun 14 01:23:31 2023 +0000 Merge pull request #473 from minenice55/easings-fix Enum Parsing Fix commit6246a144b6
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:21:13 2023 -0400 fix all parsing of enums, removed the "special case" for eases update to latest Jukebox commit4fde418c33
Merge:b9043582
50bc8765
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:39:15 2023 +0000 Merge pull request #469 from minenice55/jukebox-update Jukebox Package Update commitb90435825a
Merge:eec3c09a
73e9efd4
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:39:08 2023 +0000 Merge pull request #458 from AstrlJelly/MiscAdditions_4 Bug Fixes + Feature Additions commit73e9efd4b1
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 17:38:24 2023 -0400 add "updater" for the old marching entity commitb8d149743a
Merge:4291333c
eec3c09a
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 17:22:01 2023 -0400 Merge branch 'release_1' into pr/458 commit50bc876509
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 16:55:02 2023 -0400 let play mode start if no song file is loaded fix issue with loading large audio files commiteec3c09aa8
Merge:a0d70933
990af323
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 18:32:40 2023 +0000 Merge pull request #471 from Rapandrasmus/FixWorkingDoughCurve Fixed weird curve stuff on game switch in working dough commit990af32379
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 19:24:13 2023 +0200 Fixed weird curve stuff on game switch in working dough commita0d7093345
Merge:bdef3f95
3d19e75e
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 16:09:21 2023 +0000 Merge pull request #470 from Rapandrasmus/WorkingDoughFixes Fixed small balls not working in working dough commit3d19e75e1a
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 18:07:13 2023 +0200 Fixed small balls not working in working dough commitbdef3f95c3
Merge:8954b8c2
0bfafac6
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 14:56:58 2023 +0000 Merge pull request #467 from Rapandrasmus/WorkingDoughRework Working Dough rework commit0bfafac6fe
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 16:13:08 2023 +0200 modernised rockers pass turn commitd770266d81
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 16:03:08 2023 +0200 Rhythm tweezers pass turn now works like working dough commit2109c99a95
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 15:51:35 2023 +0200 gandw on balls has been added commit785abf8486
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 14:59:56 2023 +0200 Proper inactive handling now commit0a92b7bd69
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 13:52:15 2023 +0200 OnSpawnBall reimplemented commita14aacc181
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 13:37:09 2023 +0200 new sounds commit8b0544246d
Author: minenice55 <star.elementa@gmail.com> Date: Mon Jun 12 17:18:37 2023 -0400 update Jukebox to latest version fixes for inferred entity loading commitd8ff6744c0
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 21:36:57 2023 +0200 ball transporter anims for pass turn commitd283624b07
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 20:38:48 2023 +0200 working dough converted, need to fix eveerything though commit5b3c59eabd
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 18:36:41 2023 +0200 Converted everything to new curves and made playerballs handle themselves input-wise commitdee630ea45
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 14:04:32 2023 +0200 Some new curves commit31e8890190
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 12:03:21 2023 +0200 Rockers can do it too now commit76bf6eefa6
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 11:58:31 2023 +0200 You can now place inputs on top of pass turn for rhythm tweezers commit8954b8c269
Merge:743e954e
ce3e6f2d
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 15:55:40 2023 -0400 Merge branch 'master' into release_1 commit743e954e05
Merge:5af551b3
8929cd56
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 19:53:47 2023 +0000 Merge pull request #465 from minenice55/dont_infer_track Don't infer the track field when importing converted v0 riq coming from unknown origin commit8929cd5618
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 15:52:14 2023 -0400 don't infer track when importing a v0 riq from another program commit5af551b32e
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 12:12:25 2023 -0400 make base datamodels for special entity reading (#463) * make base datamodels for special entity reading * fix crop stomp breaking when no game switch or remix end is set * fix save shortcut fix loading charts with no music commit4291333cb0
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 23:00:30 2023 -0400 add updater for marching orders turn commit82da6da741
Merge:52a4d2b6
411b9a3c
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 22:36:10 2023 -0400 Merge branch 'release_1' into pr/458 commit411b9a3cb1
Merge:b6c222a9
afc665ed
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 22:30:32 2023 -0400 Merge branch 'master' into release_1 commitb6c222a981
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 22:27:58 2023 -0400 editor fixes (#459) * ditch loading dialog doesn't show up when it's supposed to * format song offset in editor * remove VorbisPlugin * Update Editor.cs commit52a4d2b65c
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 16:55:10 2023 -0400 convert float to double and all that commitaa8f531466
Merge:242b076f
afc665ed
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 16:01:44 2023 -0400 Merge remote-tracking branch 'upstream/master' into MiscAdditions_4 commit242b076f09
Merge:db653d5a
2b0ced2f
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 15:21:22 2023 -0400 Merge remote-tracking branch 'upstream/master' into MiscAdditions_4 commitdb653d5a52
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 15:18:45 2023 -0400 a lot * munchy monk input + mustache fixes * fork lifter and pajama party bopping * meat grinder miss bop fix * cloud monkey Real * marching orders Go! was broken * force march doesn't break when it's too early from a game switch * you can use the March! block without the marching now commit50a1b7bcdb
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 15:13:29 2023 -0400 Integration of Jukebox Library (#451) * add Jukebox library todo: - saving / loading of new format - inferrence of unknown data like past versions - move the temporary float casts to proper use of double - make sound related functions take double for timing - inform people that the Jukebox sound player was renamed to SoundByte lol * make sound, input scheduling, and super curve use double precision * successfully load charts * editor works again v1 riqs can be saved and loaded * first tempo and volume markers are unmovable fix loading of charts' easing values * use gsync / freesync * update Jukebox refs to SoundByte * game events use double part 1 Air Rally - Glee Club converted * don't load song if chart load fails * finish conversion of all minigames * remove editor waveform toggle * timeline now respects added song offset length clear cache files on app close prepped notes for dsp sync * update timeline length when offset changed * update to latest Jukebox * make error panel object in global game manager * improve conductor music scheduling * added error message box fix first game events sometimes not playing * Editor Additions (#479) * favoriting and pick block favoriting needs to not break after previewing (maybe make it persistent in the settings file?) pick block needs to pick the icon, too. and preferably scroll to it as well * final star anim + automatic icon game switching before i make any more changes im making a checkpoint here cuz i know it works * i want to add a way to specify which event SwitchGame() will switch to (because that's a cool feature for pick block) * i'll have to figure out how to auto scroll to the game when the icon is selected * the star now fully works, even between preview switches 👍 * fix the rest of the stuff the event name gets colored correctly and hidden games are skipped over, but still loaded. also i built mm ass buns * tweaks + zoom and sorting this stuff will be in the pr desc so it doesn't matter * oop one more thing * icons look better now :D mipmaps to the rescue * double date fix * Merge pull request #486 from RHeavenStudio/actions_rework Rework GitHub Actions and build script * add ab meta to gitignore (#489) * Sound Scheduling Improvements (#491) * port conductor adjustments * scheduled sounds prebake * allow aiff files to be imported add vbr mp3 warning to readme * improve wording * CNR API Internal Rework (#488) * Prep stuff * Tweezers now spawn in * Started converting tweezers * I hate <1 beat intervals * Actually nvm * fixed a bug * You can chain intervals now, stack them if you really wanted * Pass turn checks if crhandlerinstance exists * Fixed hairs being deleted by onion switch * Rockers rerewritten * working dough rerewritten * CNR API Internal Rework (#488) * Prep stuff * Tweezers now spawn in * Started converting tweezers * I hate <1 beat intervals * Actually nvm * fixed a bug * You can chain intervals now, stack them if you really wanted * Pass turn checks if crhandlerinstance exists * Fixed hairs being deleted by onion switch * Rockers rerewritten * working dough rerewritten * Games fixes/reworks patch (#501) * ghosts are scaled now * Lockstep fully reworked * mr. bach has been implemented * Space dance fixes * oops * Tap trial rework part 1 * tap trial rework part 2 * oopsie * Gramps Talk Update * Space Dance Voice Offsets * Giraffe done! (Except miss anim) * bg is not showing up for some reason * bg not rendering fixed + giraffe fixed * scrolling done * fixed space dance and space soccer bg scrolls * fixed rockers bugs * adjustment * fixed el inaccuracies * particle fix * changed pitch and volume of monkey tap * miss anim * megamix face for girl * Proper miss anim implementation * Added force stepping event * miss anim fix --------- Co-authored-by: saladplainzone <chocolate2890mail@gmail.com> Co-authored-by: ev <85412919+evdial@users.noreply.github.com> * Mahou Tsukai Rework (#502) * fixed not being able to whiff in tap trial * bored meeting fixes * more board meeting fix * ww now uses z axis instead of scale * Inputs are now reworked in mahou tsukai * Fixed the particle effect * Game Switch Black Flash is now beat-based. (#503) * Game switch flashes are now 0.25 beats long * ambient glow now turns black when the game switch flash is on * you can now set the void color, it doesn't work with game switch flashes * black * fixed! (#504) * Quiz Show and Tambourine Reworks (#505) * Tambourine fully reworked * quiz show rework part 1 * quiz show rework part 2 * oopsie doopsie * el fix numbah two * In CheerReaders.cs, quotation marks were aptly added, and references … (#506) * Update issue template to include .riq/.zip info (#483) Co-authored-by: patata <patataofcourse@gmail.com> * Pull release 1 (#484) * Squashed commit of the following: commit2c628a4109
Merge:4fde418c
6246a144
Author: minenice55 <star.elementa@gmail.com> Date: Wed Jun 14 01:23:31 2023 +0000 Merge pull request #473 from minenice55/easings-fix Enum Parsing Fix commit6246a144b6
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:21:13 2023 -0400 fix all parsing of enums, removed the "special case" for eases update to latest Jukebox commit4fde418c33
Merge:b9043582
50bc8765
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:39:15 2023 +0000 Merge pull request #469 from minenice55/jukebox-update Jukebox Package Update commitb90435825a
Merge:eec3c09a
73e9efd4
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:39:08 2023 +0000 Merge pull request #458 from AstrlJelly/MiscAdditions_4 Bug Fixes + Feature Additions commit73e9efd4b1
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 17:38:24 2023 -0400 add "updater" for the old marching entity commitb8d149743a
Merge:4291333c
eec3c09a
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 17:22:01 2023 -0400 Merge branch 'release_1' into pr/458 commit50bc876509
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 16:55:02 2023 -0400 let play mode start if no song file is loaded fix issue with loading large audio files commiteec3c09aa8
Merge:a0d70933
990af323
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 18:32:40 2023 +0000 Merge pull request #471 from Rapandrasmus/FixWorkingDoughCurve Fixed weird curve stuff on game switch in working dough commit990af32379
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 19:24:13 2023 +0200 Fixed weird curve stuff on game switch in working dough commita0d7093345
Merge:bdef3f95
3d19e75e
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 16:09:21 2023 +0000 Merge pull request #470 from Rapandrasmus/WorkingDoughFixes Fixed small balls not working in working dough commit3d19e75e1a
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 18:07:13 2023 +0200 Fixed small balls not working in working dough commitbdef3f95c3
Merge:8954b8c2
0bfafac6
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 14:56:58 2023 +0000 Merge pull request #467 from Rapandrasmus/WorkingDoughRework Working Dough rework commit0bfafac6fe
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 16:13:08 2023 +0200 modernised rockers pass turn commitd770266d81
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 16:03:08 2023 +0200 Rhythm tweezers pass turn now works like working dough commit2109c99a95
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 15:51:35 2023 +0200 gandw on balls has been added commit785abf8486
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 14:59:56 2023 +0200 Proper inactive handling now commit0a92b7bd69
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 13:52:15 2023 +0200 OnSpawnBall reimplemented commita14aacc181
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 13:37:09 2023 +0200 new sounds commit8b0544246d
Author: minenice55 <star.elementa@gmail.com> Date: Mon Jun 12 17:18:37 2023 -0400 update Jukebox to latest version fixes for inferred entity loading commitd8ff6744c0
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 21:36:57 2023 +0200 ball transporter anims for pass turn commitd283624b07
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 20:38:48 2023 +0200 working dough converted, need to fix eveerything though commit5b3c59eabd
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 18:36:41 2023 +0200 Converted everything to new curves and made playerballs handle themselves input-wise commitdee630ea45
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 14:04:32 2023 +0200 Some new curves commit31e8890190
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 12:03:21 2023 +0200 Rockers can do it too now commit76bf6eefa6
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 11:58:31 2023 +0200 You can now place inputs on top of pass turn for rhythm tweezers commit8954b8c269
Merge:743e954e
ce3e6f2d
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 15:55:40 2023 -0400 Merge branch 'master' into release_1 commit743e954e05
Merge:5af551b3
8929cd56
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 19:53:47 2023 +0000 Merge pull request #465 from minenice55/dont_infer_track Don't infer the track field when importing converted v0 riq coming from unknown origin commit8929cd5618
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 15:52:14 2023 -0400 don't infer track when importing a v0 riq from another program commit5af551b32e
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 12:12:25 2023 -0400 make base datamodels for special entity reading (#463) * make base datamodels for special entity reading * fix crop stomp breaking when no game switch or remix end is set * fix save shortcut fix loading charts with no music commit4291333cb0
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 23:00:30 2023 -0400 add updater for marching orders turn commit82da6da741
Merge:52a4d2b6
411b9a3c
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 22:36:10 2023 -0400 Merge branch 'release_1' into pr/458 commit411b9a3cb1
Merge:b6c222a9
afc665ed
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 22:30:32 2023 -0400 Merge branch 'master' into release_1 commitb6c222a981
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 22:27:58 2023 -0400 editor fixes (#459) * ditch loading dialog doesn't show up when it's supposed to * format song offset in editor * remove VorbisPlugin * Update Editor.cs commit52a4d2b65c
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 16:55:10 2023 -0400 convert float to double and all that commitaa8f531466
Merge:242b076f
afc665ed
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 16:01:44 2023 -0400 Merge remote-tracking branch 'upstream/master' into MiscAdditions_4 commit242b076f09
Merge:db653d5a
2b0ced2f
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 15:21:22 2023 -0400 Merge remote-tracking branch 'upstream/master' into MiscAdditions_4 commitdb653d5a52
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 15:18:45 2023 -0400 a lot * munchy monk input + mustache fixes * fork lifter and pajama party bopping * meat grinder miss bop fix * cloud monkey Real * marching orders Go! was broken * force march doesn't break when it's too early from a game switch * you can use the March! block without the marching now commit50a1b7bcdb
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 15:13:29 2023 -0400 Integration of Jukebox Library (#451) * add Jukebox library todo: - saving / loading of new format - inferrence of unknown data like past versions - move the temporary float casts to proper use of double - make sound related functions take double for timing - inform people that the Jukebox sound player was renamed to SoundByte lol * make sound, input scheduling, and super curve use double precision * successfully load charts * editor works again v1 riqs can be saved and loaded * first tempo and volume markers are unmovable fix loading of charts' easing values * use gsync / freesync * update Jukebox refs to SoundByte * game events use double part 1 Air Rally - Glee Club converted * don't load song if chart load fails * finish conversion of all minigames * remove editor waveform toggle * timeline now respects added song offset length clear cache files on app close prepped notes for dsp sync * update timeline length when offset changed * update to latest Jukebox * make error panel object in global game manager * improve conductor music scheduling * added error message box fix first game events sometimes not playing * Squashed commit of the following: commit0d25221b71
Merge:5869d212
9163085d
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 17 16:40:52 2023 +0000 Merge pull request #478 from evdial/working-dough Working Dough Tweaks commit9163085d7a
Merge:6592a5f2
5869d212
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 17 12:40:06 2023 -0400 Merge branch 'release_1' into pr/478 commit5869d212bc
Author: patata <patataofcourse@gmail.com> Date: Sat Jun 17 17:20:15 2023 +0200 Update issue template to include .riq/.zip info commit6592a5f202
Author: ev <85412919+evdial@users.noreply.github.com> Date: Thu Jun 15 15:05:07 2023 -0400 assbuns commit11a4c090a1
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Thu Jun 15 20:56:40 2023 +0200 made small idle not crazy commit45e7d81b0f
Author: ev <85412919+evdial@users.noreply.github.com> Date: Thu Jun 15 14:33:57 2023 -0400 fsd commit47efa3e4f3
Author: ev <85412919+evdial@users.noreply.github.com> Date: Thu Jun 15 14:16:38 2023 -0400 anim commitc6fb8880a0
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Thu Jun 15 20:13:11 2023 +0200 Fixed stuff also scaled now yippee commit16ce508b03
Author: ev <85412919+evdial@users.noreply.github.com> Date: Thu Jun 15 13:50:10 2023 -0400 many commit37b80a33c7
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:28:21 2023 -0400 Squashed commit of the following: (#474) commit2c628a4109
Merge:4fde418c
6246a144
Author: minenice55 <star.elementa@gmail.com> Date: Wed Jun 14 01:23:31 2023 +0000 Merge pull request #473 from minenice55/easings-fix Enum Parsing Fix commit6246a144b6
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:21:13 2023 -0400 fix all parsing of enums, removed the "special case" for eases update to latest Jukebox commit4fde418c33
Merge:b9043582
50bc8765
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:39:15 2023 +0000 Merge pull request #469 from minenice55/jukebox-update Jukebox Package Update commitb90435825a
Merge:eec3c09a
73e9efd4
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:39:08 2023 +0000 Merge pull request #458 from AstrlJelly/MiscAdditions_4 Bug Fixes + Feature Additions commit73e9efd4b1
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 17:38:24 2023 -0400 add "updater" for the old marching entity commitb8d149743a
Merge:4291333c
eec3c09a
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 17:22:01 2023 -0400 Merge branch 'release_1' into pr/458 commit50bc876509
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 16:55:02 2023 -0400 let play mode start if no song file is loaded fix issue with loading large audio files commiteec3c09aa8
Merge:a0d70933
990af323
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 18:32:40 2023 +0000 Merge pull request #471 from Rapandrasmus/FixWorkingDoughCurve Fixed weird curve stuff on game switch in working dough commit990af32379
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 19:24:13 2023 +0200 Fixed weird curve stuff on game switch in working dough commita0d7093345
Merge:bdef3f95
3d19e75e
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 16:09:21 2023 +0000 Merge pull request #470 from Rapandrasmus/WorkingDoughFixes Fixed small balls not working in working dough commit3d19e75e1a
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 18:07:13 2023 +0200 Fixed small balls not working in working dough commitbdef3f95c3
Merge:8954b8c2
0bfafac6
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 14:56:58 2023 +0000 Merge pull request #467 from Rapandrasmus/WorkingDoughRework Working Dough rework commit0bfafac6fe
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 16:13:08 2023 +0200 modernised rockers pass turn commitd770266d81
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 16:03:08 2023 +0200 Rhythm tweezers pass turn now works like working dough commit2109c99a95
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 15:51:35 2023 +0200 gandw on balls has been added commit785abf8486
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 14:59:56 2023 +0200 Proper inactive handling now commit0a92b7bd69
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 13:52:15 2023 +0200 OnSpawnBall reimplemented commita14aacc181
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 13:37:09 2023 +0200 new sounds commit8b0544246d
Author: minenice55 <star.elementa@gmail.com> Date: Mon Jun 12 17:18:37 2023 -0400 update Jukebox to latest version fixes for inferred entity loading commitd8ff6744c0
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 21:36:57 2023 +0200 ball transporter anims for pass turn commitd283624b07
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 20:38:48 2023 +0200 working dough converted, need to fix eveerything though commit5b3c59eabd
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 18:36:41 2023 +0200 Converted everything to new curves and made playerballs handle themselves input-wise commitdee630ea45
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 14:04:32 2023 +0200 Some new curves commit31e8890190
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 12:03:21 2023 +0200 Rockers can do it too now commit76bf6eefa6
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 11:58:31 2023 +0200 You can now place inputs on top of pass turn for rhythm tweezers commit8954b8c269
Merge:743e954e
ce3e6f2d
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 15:55:40 2023 -0400 Merge branch 'master' into release_1 commit743e954e05
Merge:5af551b3
8929cd56
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 19:53:47 2023 +0000 Merge pull request #465 from minenice55/dont_infer_track Don't infer the track field when importing converted v0 riq coming from unknown origin commit8929cd5618
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 15:52:14 2023 -0400 don't infer track when importing a v0 riq from another program commit5af551b32e
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 12:12:25 2023 -0400 make base datamodels for special entity reading (#463) * make base datamodels for special entity reading * fix crop stomp breaking when no game switch or remix end is set * fix save shortcut fix loading charts with no music commit4291333cb0
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 23:00:30 2023 -0400 add updater for marching orders turn commit82da6da741
Merge:52a4d2b6
411b9a3c
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 22:36:10 2023 -0400 Merge branch 'release_1' into pr/458 commit411b9a3cb1
Merge:b6c222a9
afc665ed
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 22:30:32 2023 -0400 Merge branch 'master' into release_1 commitb6c222a981
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 22:27:58 2023 -0400 editor fixes (#459) * ditch loading dialog doesn't show up when it's supposed to * format song offset in editor * remove VorbisPlugin * Update Editor.cs commit52a4d2b65c
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 16:55:10 2023 -0400 convert float to double and all that commitaa8f531466
Merge:242b076f
afc665ed
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 16:01:44 2023 -0400 Merge remote-tracking branch 'upstream/master' into MiscAdditions_4 commit242b076f09
Merge:db653d5a
2b0ced2f
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 15:21:22 2023 -0400 Merge remote-tracking branch 'upstream/master' into MiscAdditions_4 commitdb653d5a52
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 15:18:45 2023 -0400 a lot * munchy monk input + mustache fixes * fork lifter and pajama party bopping * meat grinder miss bop fix * cloud monkey Real * marching orders Go! was broken * force march doesn't break when it's too early from a game switch * you can use the March! block without the marching now commit50a1b7bcdb
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 15:13:29 2023 -0400 Integration of Jukebox Library (#451) * add Jukebox library todo: - saving / loading of new format - inferrence of unknown data like past versions - move the temporary float casts to proper use of double - make sound related functions take double for timing - inform people that the Jukebox sound player was renamed to SoundByte lol * make sound, input scheduling, and super curve use double precision * successfully load charts * editor works again v1 riqs can be saved and loaded * first tempo and volume markers are unmovable fix loading of charts' easing values * use gsync / freesync * update Jukebox refs to SoundByte * game events use double part 1 Air Rally - Glee Club converted * don't load song if chart load fails * finish conversion of all minigames * remove editor waveform toggle * timeline now respects added song offset length clear cache files on app close prepped notes for dsp sync * update timeline length when offset changed * update to latest Jukebox * make error panel object in global game manager * improve conductor music scheduling * added error message box fix first game events sometimes not playing commit2c628a4109
Merge:4fde418c
6246a144
Author: minenice55 <star.elementa@gmail.com> Date: Wed Jun 14 01:23:31 2023 +0000 Merge pull request #473 from minenice55/easings-fix Enum Parsing Fix commit6246a144b6
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:21:13 2023 -0400 fix all parsing of enums, removed the "special case" for eases update to latest Jukebox commit4fde418c33
Merge:b9043582
50bc8765
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:39:15 2023 +0000 Merge pull request #469 from minenice55/jukebox-update Jukebox Package Update commitb90435825a
Merge:eec3c09a
73e9efd4
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 21:39:08 2023 +0000 Merge pull request #458 from AstrlJelly/MiscAdditions_4 Bug Fixes + Feature Additions commit73e9efd4b1
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 17:38:24 2023 -0400 add "updater" for the old marching entity commitb8d149743a
Merge:4291333c
eec3c09a
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 17:22:01 2023 -0400 Merge branch 'release_1' into pr/458 commit50bc876509
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 16:55:02 2023 -0400 let play mode start if no song file is loaded fix issue with loading large audio files commiteec3c09aa8
Merge:a0d70933
990af323
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 18:32:40 2023 +0000 Merge pull request #471 from Rapandrasmus/FixWorkingDoughCurve Fixed weird curve stuff on game switch in working dough commit990af32379
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 19:24:13 2023 +0200 Fixed weird curve stuff on game switch in working dough commita0d7093345
Merge:bdef3f95
3d19e75e
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 16:09:21 2023 +0000 Merge pull request #470 from Rapandrasmus/WorkingDoughFixes Fixed small balls not working in working dough commit3d19e75e1a
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 18:07:13 2023 +0200 Fixed small balls not working in working dough commitbdef3f95c3
Merge:8954b8c2
0bfafac6
Author: minenice55 <star.elementa@gmail.com> Date: Tue Jun 13 14:56:58 2023 +0000 Merge pull request #467 from Rapandrasmus/WorkingDoughRework Working Dough rework commit0bfafac6fe
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 16:13:08 2023 +0200 modernised rockers pass turn commitd770266d81
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 16:03:08 2023 +0200 Rhythm tweezers pass turn now works like working dough commit2109c99a95
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 15:51:35 2023 +0200 gandw on balls has been added commit785abf8486
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 14:59:56 2023 +0200 Proper inactive handling now commit0a92b7bd69
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 13:52:15 2023 +0200 OnSpawnBall reimplemented commita14aacc181
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Tue Jun 13 13:37:09 2023 +0200 new sounds commit8b0544246d
Author: minenice55 <star.elementa@gmail.com> Date: Mon Jun 12 17:18:37 2023 -0400 update Jukebox to latest version fixes for inferred entity loading commitd8ff6744c0
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 21:36:57 2023 +0200 ball transporter anims for pass turn commitd283624b07
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 20:38:48 2023 +0200 working dough converted, need to fix eveerything though commit5b3c59eabd
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 18:36:41 2023 +0200 Converted everything to new curves and made playerballs handle themselves input-wise commitdee630ea45
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 14:04:32 2023 +0200 Some new curves commit31e8890190
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 12:03:21 2023 +0200 Rockers can do it too now commit76bf6eefa6
Author: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Mon Jun 12 11:58:31 2023 +0200 You can now place inputs on top of pass turn for rhythm tweezers commit8954b8c269
Merge:743e954e
ce3e6f2d
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 15:55:40 2023 -0400 Merge branch 'master' into release_1 commit743e954e05
Merge:5af551b3
8929cd56
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 19:53:47 2023 +0000 Merge pull request #465 from minenice55/dont_infer_track Don't infer the track field when importing converted v0 riq coming from unknown origin commit8929cd5618
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 15:52:14 2023 -0400 don't infer track when importing a v0 riq from another program commit5af551b32e
Author: minenice55 <star.elementa@gmail.com> Date: Sun Jun 11 12:12:25 2023 -0400 make base datamodels for special entity reading (#463) * make base datamodels for special entity reading * fix crop stomp breaking when no game switch or remix end is set * fix save shortcut fix loading charts with no music commit4291333cb0
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 23:00:30 2023 -0400 add updater for marching orders turn commit82da6da741
Merge:52a4d2b6
411b9a3c
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 22:36:10 2023 -0400 Merge branch 'release_1' into pr/458 commit411b9a3cb1
Merge:b6c222a9
afc665ed
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 22:30:32 2023 -0400 Merge branch 'master' into release_1 commitb6c222a981
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 22:27:58 2023 -0400 editor fixes (#459) * ditch loading dialog doesn't show up when it's supposed to * format song offset in editor * remove VorbisPlugin * Update Editor.cs commit52a4d2b65c
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 16:55:10 2023 -0400 convert float to double and all that commitaa8f531466
Merge:242b076f
afc665ed
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 16:01:44 2023 -0400 Merge remote-tracking branch 'upstream/master' into MiscAdditions_4 commit242b076f09
Merge:db653d5a
2b0ced2f
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 15:21:22 2023 -0400 Merge remote-tracking branch 'upstream/master' into MiscAdditions_4 commitdb653d5a52
Author: AstrlJelly <bdlawson115@gmail.com> Date: Sat Jun 10 15:18:45 2023 -0400 a lot * munchy monk input + mustache fixes * fork lifter and pajama party bopping * meat grinder miss bop fix * cloud monkey Real * marching orders Go! was broken * force march doesn't break when it's too early from a game switch * you can use the March! block without the marching now commit50a1b7bcdb
Author: minenice55 <star.elementa@gmail.com> Date: Sat Jun 10 15:13:29 2023 -0400 Integration of Jukebox Library (#451) * add Jukebox library todo: - saving / loading of new format - inferrence of unknown data like past versions - move the temporary float casts to proper use of double - make sound related functions take double for timing - inform people that the Jukebox sound player was renamed to SoundByte lol * make sound, input scheduling, and super curve use double precision * successfully load charts * editor works again v1 riqs can be saved and loaded * first tempo and volume markers are unmovable fix loading of charts' easing values * use gsync / freesync * update Jukebox refs to SoundByte * game events use double part 1 Air Rally - Glee Club converted * don't load song if chart load fails * finish conversion of all minigames * remove editor waveform toggle * timeline now respects added song offset length clear cache files on app close prepped notes for dsp sync * update timeline length when offset changed * update to latest Jukebox * make error panel object in global game manager * improve conductor music scheduling * added error message box fix first game events sometimes not playing * Editor Additions (#479) * favoriting and pick block favoriting needs to not break after previewing (maybe make it persistent in the settings file?) pick block needs to pick the icon, too. and preferably scroll to it as well * final star anim + automatic icon game switching before i make any more changes im making a checkpoint here cuz i know it works * i want to add a way to specify which event SwitchGame() will switch to (because that's a cool feature for pick block) * i'll have to figure out how to auto scroll to the game when the icon is selected * the star now fully works, even between preview switches 👍 * fix the rest of the stuff the event name gets colored correctly and hidden games are skipped over, but still loaded. also i built mm ass buns * tweaks + zoom and sorting this stuff will be in the pr desc so it doesn't matter * oop one more thing * icons look better now :D mipmaps to the rescue * double date fix * Merge pull request #486 from RHeavenStudio/actions_rework Rework GitHub Actions and build script * add ab meta to gitignore (#489) * Sound Scheduling Improvements (#491) * port conductor adjustments * scheduled sounds prebake * allow aiff files to be imported add vbr mp3 warning to readme * improve wording * CNR API Internal Rework (#488) * Prep stuff * Tweezers now spawn in * Started converting tweezers * I hate <1 beat intervals * Actually nvm * fixed a bug * You can chain intervals now, stack them if you really wanted * Pass turn checks if crhandlerinstance exists * Fixed hairs being deleted by onion switch * Rockers rerewritten * working dough rerewritten * CNR API Internal Rework (#488) * Prep stuff * Tweezers now spawn in * Started converting tweezers * I hate <1 beat intervals * Actually nvm * fixed a bug * You can chain intervals now, stack them if you really wanted * Pass turn checks if crhandlerinstance exists * Fixed hairs being deleted by onion switch * Rockers rerewritten * working dough rerewritten * Games fixes/reworks patch (#501) * ghosts are scaled now * Lockstep fully reworked * mr. bach has been implemented * Space dance fixes * oops * Tap trial rework part 1 * tap trial rework part 2 * oopsie * Gramps Talk Update * Space Dance Voice Offsets * Giraffe done! (Except miss anim) * bg is not showing up for some reason * bg not rendering fixed + giraffe fixed * scrolling done * fixed space dance and space soccer bg scrolls * fixed rockers bugs * adjustment * fixed el inaccuracies * particle fix * changed pitch and volume of monkey tap * miss anim * megamix face for girl * Proper miss anim implementation * Added force stepping event * miss anim fix --------- Co-authored-by: saladplainzone <chocolate2890mail@gmail.com> Co-authored-by: ev <85412919+evdial@users.noreply.github.com> * In CheerReaders.cs, quotation marks were aptly added, and references to the girls were more-so neutralized. Consider this my cheer. * revert capitalization and quotations while keeping grammar changes --------- Co-authored-by: minenice55 <star.elementa@gmail.com> Co-authored-by: patata <patataofcourse@gmail.com> Co-authored-by: AstrlJelly <bdlawson115@gmail.com> Co-authored-by: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Co-authored-by: saladplainzone <chocolate2890mail@gmail.com> Co-authored-by: ev <85412919+evdial@users.noreply.github.com> * oops * add manually triggering build action to workflows (#507) * don't crash if origin is undefined (#513) reword the unknown origin message to be less scary * test action to free space (#516) * maybe not this * clear out unused tools before run * we do need a swap file * Mr. Upbeat Re-Re-Rework (#525) * so much * reworked everything (AGAIN.) -everything just uses recursive methods and beatactions, and only uses the update loop for inactive queuing * count-ins -need hq 4 sound effect, kitties doesn't have the og :( * mr. downbeat rere-revived (unfortunately enough.) * huge change to how stepping works, to make it so you can't step over it the wrong way, and so that missing looks good * added missing miss anim, which happens in the same way as the og * added a check on game switch to use the last bg change/blip color block's attributes -i think i might add these to other games; it should make the process of remixing more intuitive and fun, even if it's a small change currently all i'm missing is blip jank fix. but im not staying up another hour for that lol * letter/blip jank fixed + force stepping * instead of being a separate animator, the letter is instead set to have a scale of (1, 1, 1) in the update loop, so that no graphical bugs happen even when the scale is changed. * hopefully this new system is a lot less janky, but if bugs do still come up they'll be a lot easier to fix now * make mac build script put streamingassets in the right place * Release game's render texture before resizing it (#548) * basic setup * Block pooling and finish editor redesign * Blocks almost fully replaced * Fix box selection * Too much to list all them * editor icon sprite sheet * vertical timeline scrolling * external profiler * metronome animation * fix special timeline * fix timeline autoscrolling * Fix dialogs * timeline zoom * block resizing * Add duplicate * fix place undo * copy paste * fixes 1 * sus fix for loading and saving * fix block window rescaling * another fix * nope that wasn't right * block positioning fix * update Jukebox * add special marker operations to the undo/redo system fix bugs with special marker operations --------- Co-authored-by: minenice55 <star.elementa@gmail.com> Co-authored-by: patata <patataofcourse@gmail.com> Co-authored-by: AstrlJelly <bdlawson115@gmail.com> Co-authored-by: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Co-authored-by: saladplainzone <chocolate2890mail@gmail.com> Co-authored-by: ev <85412919+evdial@users.noreply.github.com> Co-authored-by: Xylon <40894547+scriptorluminary@users.noreply.github.com>
|
@ -73,6 +73,14 @@ namespace Starpelly
|
|||
return val >= min && val <= max;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns true if a value is within a certain range.
|
||||
/// </summary>
|
||||
public static bool IsWithin(this Vector2 val, Vector2 min, Vector2 max)
|
||||
{
|
||||
return val.x.IsWithin(min.x, max.x) && val.y.IsWithin(min.y, max.y);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns true if value is between two numbers.
|
||||
/// </summary>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<align="center"><b>Programming</b></align>
|
||||
-<indent=5%>Megaminerzero</indent>
|
||||
-<indent=5%>Starpelly <alpha=#88>(Rhythm Heaven Mania)<alpha=#FF></indent>
|
||||
-<indent=5%>Starpelly</indent>
|
||||
-<indent=5%>minenice</indent>
|
||||
-<indent=5%>huantian</indent>
|
||||
-<indent=5%>Slaith12</indent>
|
||||
|
@ -20,7 +20,7 @@
|
|||
<align="center"><b>Artwork</b></align>
|
||||
-<indent=5%>Ko Takeuchi <alpha=#88>(Original <i>Rhythm Heaven</i> Assets)<alpha=#FF></indent>
|
||||
-<indent=5%>Nintendo <alpha=#88>(Original <i>Rhythm Heaven</i> Assets)<alpha=#FF></indent>
|
||||
-<indent=5%>Starpelly <alpha=#88>(Rhythm Heaven Mania)<alpha=#FF></indent>
|
||||
-<indent=5%>Starpelly</indent>
|
||||
-<indent=5%>OctaHeart <alpha=#88>(Logo)<alpha=#FF></indent>
|
||||
-<indent=5%>ev <alpha=#88>(Editor UI)<alpha=#FF></indent>
|
||||
-<indent=5%>Seanski2 <alpha=#88>(Minigame Icons)<alpha=#FF></indent>
|
||||
|
|
1100
Assets/Resources/Fonts/rodin/FOT-Rodin Pro B SDF Dynamic 1.asset
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9ff0c04cbd659ef43bccfe273684eadf
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 00ba8359d55aea94799b54c203adf38f
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -2,14 +2,15 @@
|
|||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: FOT-Rodin Pro DB Entity
|
||||
m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3}
|
||||
m_ShaderKeywords:
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
|
@ -39,6 +40,7 @@ Material:
|
|||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _Ambient: 1
|
||||
- _Bevel: 0.5
|
||||
|
|
|
@ -14,9 +14,9 @@ Texture2D:
|
|||
m_DownscaleFallback: 0
|
||||
m_IsAlphaChannelOptional: 0
|
||||
serializedVersion: 2
|
||||
m_Width: 0
|
||||
m_Height: 0
|
||||
m_CompleteImageSize: 0
|
||||
m_Width: 1
|
||||
m_Height: 1
|
||||
m_CompleteImageSize: 1
|
||||
m_MipsStripped: 0
|
||||
m_TextureFormat: 1
|
||||
m_MipCount: 1
|
||||
|
@ -40,8 +40,8 @@ Texture2D:
|
|||
m_LightmapFormat: 0
|
||||
m_ColorSpace: 0
|
||||
m_PlatformBlob:
|
||||
image data: 0
|
||||
_typelessdata:
|
||||
image data: 1
|
||||
_typelessdata: 00
|
||||
m_StreamData:
|
||||
serializedVersion: 2
|
||||
offset: 0
|
||||
|
@ -59,21 +59,14 @@ MonoBehaviour:
|
|||
m_Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3}
|
||||
m_Name: FOT-Rodin Pro DB SDF Dynamic
|
||||
m_EditorClassIdentifier:
|
||||
hashCode: -716773919
|
||||
material: {fileID: 5296781804180034499}
|
||||
materialHashCode: -1646043487
|
||||
m_Version: 1.1.0
|
||||
m_SourceFontFileGUID: d9b391ecd583bd54fa458814fbcad7be
|
||||
m_SourceFontFile_EditorRef: {fileID: 12800000, guid: d9b391ecd583bd54fa458814fbcad7be, type: 3}
|
||||
m_SourceFontFile: {fileID: 12800000, guid: d9b391ecd583bd54fa458814fbcad7be, type: 3}
|
||||
m_AtlasPopulationMode: 1
|
||||
m_FaceInfo:
|
||||
m_FaceIndex: 0
|
||||
m_FamilyName: FOT-Rodin Pro
|
||||
m_StyleName: DB
|
||||
m_PointSize: 90
|
||||
m_Scale: 1
|
||||
m_UnitsPerEM: 0
|
||||
m_UnitsPerEM: 1000
|
||||
m_LineHeight: 180
|
||||
m_AscentLine: 79.200005
|
||||
m_CapLine: 71
|
||||
|
@ -89,59 +82,16 @@ MonoBehaviour:
|
|||
m_StrikethroughOffset: 20
|
||||
m_StrikethroughThickness: 4.5
|
||||
m_TabWidth: 31
|
||||
m_GlyphTable: []
|
||||
m_CharacterTable: []
|
||||
m_AtlasTextures:
|
||||
- {fileID: -7616882842637102995}
|
||||
m_AtlasTextureIndex: 0
|
||||
m_IsMultiAtlasTexturesEnabled: 1
|
||||
m_ClearDynamicDataOnBuild: 1
|
||||
m_UsedGlyphRects: []
|
||||
m_FreeGlyphRects:
|
||||
- m_X: 0
|
||||
m_Y: 0
|
||||
m_Width: 2047
|
||||
m_Height: 2047
|
||||
m_fontInfo:
|
||||
Name:
|
||||
PointSize: 0
|
||||
Scale: 0
|
||||
CharacterCount: 0
|
||||
LineHeight: 0
|
||||
Baseline: 0
|
||||
Ascender: 0
|
||||
CapHeight: 0
|
||||
Descender: 0
|
||||
CenterLine: 0
|
||||
SuperscriptOffset: 0
|
||||
SubscriptOffset: 0
|
||||
SubSize: 0
|
||||
Underline: 0
|
||||
UnderlineThickness: 0
|
||||
strikethrough: 0
|
||||
strikethroughThickness: 0
|
||||
TabWidth: 0
|
||||
Padding: 0
|
||||
AtlasWidth: 0
|
||||
AtlasHeight: 0
|
||||
atlas: {fileID: 0}
|
||||
m_AtlasWidth: 2048
|
||||
m_AtlasHeight: 2048
|
||||
m_AtlasPadding: 9
|
||||
m_AtlasRenderMode: 4165
|
||||
m_glyphInfoList: []
|
||||
m_KerningTable:
|
||||
kerningPairs: []
|
||||
m_FontFeatureTable:
|
||||
m_GlyphPairAdjustmentRecords: []
|
||||
fallbackFontAssets: []
|
||||
m_FallbackFontAssetTable: []
|
||||
m_Material: {fileID: 5296781804180034499}
|
||||
m_SourceFontFileGUID: d9b391ecd583bd54fa458814fbcad7be
|
||||
m_CreationSettings:
|
||||
sourceFontFileName:
|
||||
sourceFontFileGUID: d9b391ecd583bd54fa458814fbcad7be
|
||||
faceIndex: 0
|
||||
pointSizeSamplingMode: 0
|
||||
pointSize: 90
|
||||
padding: 9
|
||||
paddingMode: 0
|
||||
packingMode: 0
|
||||
atlasWidth: 2048
|
||||
atlasHeight: 2048
|
||||
|
@ -153,6 +103,115 @@ MonoBehaviour:
|
|||
fontStyleModifier: 0
|
||||
renderMode: 4165
|
||||
includeFontFeatures: 0
|
||||
m_SourceFontFile: {fileID: 12800000, guid: d9b391ecd583bd54fa458814fbcad7be, type: 3}
|
||||
m_SourceFontFilePath:
|
||||
m_AtlasPopulationMode: 1
|
||||
InternalDynamicOS: 0
|
||||
m_GlyphTable: []
|
||||
m_CharacterTable: []
|
||||
m_AtlasTextures:
|
||||
- {fileID: -7616882842637102995}
|
||||
m_AtlasTextureIndex: 0
|
||||
m_IsMultiAtlasTexturesEnabled: 1
|
||||
m_GetFontFeatures: 1
|
||||
m_ClearDynamicDataOnBuild: 1
|
||||
m_AtlasWidth: 2048
|
||||
m_AtlasHeight: 2048
|
||||
m_AtlasPadding: 9
|
||||
m_AtlasRenderMode: 4165
|
||||
m_UsedGlyphRects: []
|
||||
m_FreeGlyphRects:
|
||||
- m_X: 0
|
||||
m_Y: 0
|
||||
m_Width: 2047
|
||||
m_Height: 2047
|
||||
m_FontFeatureTable:
|
||||
m_MultipleSubstitutionRecords: []
|
||||
m_LigatureSubstitutionRecords:
|
||||
- m_ComponentGlyphIDs: 4f000000100000004e000000
|
||||
m_LigatureGlyphID: 11868
|
||||
- m_ComponentGlyphIDs: 4f00000054000000
|
||||
m_LigatureGlyphID: 8029
|
||||
m_GlyphPairAdjustmentRecords:
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 79
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 1.8000001
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 87
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: -1702022880
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 79
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0.45000002
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 90
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: -1702022880
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 87
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -4.5
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 13
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: -1702022880
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 87
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: -4.5
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 15
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: -1702022880
|
||||
- m_FirstAdjustmentRecord:
|
||||
m_GlyphIndex: 87
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 4.1400003
|
||||
m_YAdvance: 0
|
||||
m_SecondAdjustmentRecord:
|
||||
m_GlyphIndex: 122
|
||||
m_GlyphValueRecord:
|
||||
m_XPlacement: 0
|
||||
m_YPlacement: 0
|
||||
m_XAdvance: 0
|
||||
m_YAdvance: 0
|
||||
m_FeatureLookupFlags: -1702022880
|
||||
m_MarkToBaseAdjustmentRecords: []
|
||||
m_MarkToMarkAdjustmentRecords: []
|
||||
m_ShouldReimportFontFeatures: 0
|
||||
m_FallbackFontAssetTable: []
|
||||
m_FontWeightTable:
|
||||
- regularTypeface: {fileID: 0}
|
||||
italicTypeface: {fileID: 0}
|
||||
|
@ -181,6 +240,33 @@ MonoBehaviour:
|
|||
boldSpacing: 7
|
||||
italicStyle: 35
|
||||
tabSize: 10
|
||||
m_fontInfo:
|
||||
Name:
|
||||
PointSize: 0
|
||||
Scale: 0
|
||||
CharacterCount: 0
|
||||
LineHeight: 0
|
||||
Baseline: 0
|
||||
Ascender: 0
|
||||
CapHeight: 0
|
||||
Descender: 0
|
||||
CenterLine: 0
|
||||
SuperscriptOffset: 0
|
||||
SubscriptOffset: 0
|
||||
SubSize: 0
|
||||
Underline: 0
|
||||
UnderlineThickness: 0
|
||||
strikethrough: 0
|
||||
strikethroughThickness: 0
|
||||
TabWidth: 0
|
||||
Padding: 0
|
||||
AtlasWidth: 0
|
||||
AtlasHeight: 0
|
||||
m_glyphInfoList: []
|
||||
m_KerningTable:
|
||||
kerningPairs: []
|
||||
fallbackFontAssets: []
|
||||
atlas: {fileID: 0}
|
||||
--- !u!21 &5296781804180034499
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
|
|
|
@ -59,7 +59,7 @@ MonoBehaviour:
|
|||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.20392157, g: 0.20392157, b: 0.20392157, a: 1}
|
||||
m_Color: {r: 0.6509804, g: 0.6509804, b: 0.6509804, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
|
@ -185,15 +185,17 @@ MonoBehaviour:
|
|||
m_lineSpacingMax: 0
|
||||
m_paragraphSpacing: 0
|
||||
m_charWidthMaxAdj: 0
|
||||
m_enableWordWrapping: 1
|
||||
m_TextWrappingMode: 1
|
||||
m_wordWrappingRatios: 0.4
|
||||
m_overflowMode: 0
|
||||
m_linkedTextComponent: {fileID: 0}
|
||||
parentLinkedComponent: {fileID: 0}
|
||||
m_enableKerning: 1
|
||||
m_ActiveFontFeatures: 6e72656b
|
||||
m_enableExtraPadding: 0
|
||||
checkPaddingRequired: 0
|
||||
m_isRichText: 1
|
||||
m_EmojiFallbackSupport: 1
|
||||
m_parseCtrlCharacters: 1
|
||||
m_isOrthographic: 1
|
||||
m_isCullingEnabled: 0
|
||||
|
@ -323,7 +325,7 @@ RectTransform:
|
|||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 50, y: 50}
|
||||
m_SizeDelta: {x: 32, y: 32}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &8995444694228702769
|
||||
CanvasRenderer:
|
||||
|
@ -474,10 +476,10 @@ RectTransform:
|
|||
m_Father: {fileID: 8995444695563632161}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 1}
|
||||
m_AnchorMax: {x: 0.5, y: 1}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: -124.099976}
|
||||
m_SizeDelta: {x: 1202, y: 27.28003}
|
||||
m_SizeDelta: {x: -64, y: 27.28003}
|
||||
m_Pivot: {x: 0.5, y: 0}
|
||||
--- !u!222 &8995444694302297417
|
||||
CanvasRenderer:
|
||||
|
@ -494,7 +496,7 @@ MonoBehaviour:
|
|||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8995444694302297421}
|
||||
m_Enabled: 1
|
||||
m_Enabled: 0
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
|
@ -535,7 +537,7 @@ MonoBehaviour:
|
|||
m_Top: 0
|
||||
m_Bottom: 0
|
||||
m_ChildAlignment: 0
|
||||
m_Spacing: 0
|
||||
m_Spacing: 4
|
||||
m_ChildForceExpandWidth: 1
|
||||
m_ChildForceExpandHeight: 0
|
||||
m_ChildControlWidth: 1
|
||||
|
@ -668,15 +670,17 @@ MonoBehaviour:
|
|||
m_lineSpacingMax: 0
|
||||
m_paragraphSpacing: 0
|
||||
m_charWidthMaxAdj: 0
|
||||
m_enableWordWrapping: 1
|
||||
m_TextWrappingMode: 1
|
||||
m_wordWrappingRatios: 0.4
|
||||
m_overflowMode: 0
|
||||
m_linkedTextComponent: {fileID: 0}
|
||||
parentLinkedComponent: {fileID: 0}
|
||||
m_enableKerning: 1
|
||||
m_ActiveFontFeatures: 6e72656b
|
||||
m_enableExtraPadding: 0
|
||||
checkPaddingRequired: 0
|
||||
m_isRichText: 1
|
||||
m_EmojiFallbackSupport: 1
|
||||
m_parseCtrlCharacters: 1
|
||||
m_isOrthographic: 1
|
||||
m_isCullingEnabled: 0
|
||||
|
@ -824,7 +828,7 @@ RectTransform:
|
|||
m_AnchorMin: {x: 1, y: 1}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: -38, y: -38}
|
||||
m_SizeDelta: {x: 52, y: 52}
|
||||
m_SizeDelta: {x: 42, y: 42}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &8995444695466722202
|
||||
CanvasRenderer:
|
||||
|
@ -854,7 +858,7 @@ MonoBehaviour:
|
|||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 0}
|
||||
m_Sprite: {fileID: 21300000, guid: 77703dfffd29ca6439338d6adfc62c9b, type: 3}
|
||||
m_Type: 1
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
|
|
|
@ -27,6 +27,7 @@ RectTransform:
|
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 3276216358884288554}
|
||||
m_Father: {fileID: 3276216360127051165}
|
||||
|
@ -73,6 +74,7 @@ RectTransform:
|
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 3276216360411725377}
|
||||
m_Father: {fileID: 3276216359486296926}
|
||||
|
@ -150,6 +152,7 @@ RectTransform:
|
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 3276216359673638260}
|
||||
m_Father: {fileID: 3276216358621914657}
|
||||
|
@ -283,6 +286,7 @@ RectTransform:
|
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 3276216359294279433}
|
||||
m_Father: {fileID: 3276216359814484404}
|
||||
|
@ -416,6 +420,7 @@ RectTransform:
|
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 3276216360127051165}
|
||||
m_Father: {fileID: 3276216359861115896}
|
||||
|
@ -507,14 +512,15 @@ RectTransform:
|
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3276216360127051165}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 705.5, y: 0}
|
||||
m_SizeDelta: {x: 1371, y: 0}
|
||||
m_AnchoredPosition: {x: 627.5, y: 0}
|
||||
m_SizeDelta: {x: 1215, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &3276216359264292463
|
||||
CanvasRenderer:
|
||||
|
@ -587,15 +593,17 @@ MonoBehaviour:
|
|||
m_lineSpacingMax: 0
|
||||
m_paragraphSpacing: 0
|
||||
m_charWidthMaxAdj: 0
|
||||
m_enableWordWrapping: 1
|
||||
m_TextWrappingMode: 1
|
||||
m_wordWrappingRatios: 0.4
|
||||
m_overflowMode: 0
|
||||
m_linkedTextComponent: {fileID: 0}
|
||||
parentLinkedComponent: {fileID: 0}
|
||||
m_enableKerning: 1
|
||||
m_ActiveFontFeatures: 6e72656b
|
||||
m_enableExtraPadding: 0
|
||||
checkPaddingRequired: 0
|
||||
m_isRichText: 1
|
||||
m_EmojiFallbackSupport: 1
|
||||
m_parseCtrlCharacters: 1
|
||||
m_isOrthographic: 1
|
||||
m_isCullingEnabled: 0
|
||||
|
@ -675,6 +683,7 @@ RectTransform:
|
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3276216358902658882}
|
||||
m_RootOrder: 0
|
||||
|
@ -750,6 +759,7 @@ RectTransform:
|
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3276216359692268649}
|
||||
m_RootOrder: 0
|
||||
|
@ -826,6 +836,7 @@ RectTransform:
|
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 3276216359861115896}
|
||||
- {fileID: 3276216358758736494}
|
||||
|
@ -918,6 +929,7 @@ RectTransform:
|
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3276216358884288554}
|
||||
m_RootOrder: 0
|
||||
|
@ -991,6 +1003,7 @@ RectTransform:
|
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 3276216359458918366}
|
||||
m_Father: {fileID: 3276216360247263705}
|
||||
|
@ -1028,6 +1041,7 @@ RectTransform:
|
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 3276216358902658882}
|
||||
m_Father: {fileID: 3276216360127051165}
|
||||
|
@ -1075,6 +1089,7 @@ RectTransform:
|
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 3276216359023061022}
|
||||
- {fileID: 3276216360247263705}
|
||||
|
@ -1141,8 +1156,8 @@ MonoBehaviour:
|
|||
m_Vertical: 1
|
||||
m_MovementType: 1
|
||||
m_Elasticity: 0.1
|
||||
m_Inertia: 0
|
||||
m_DecelerationRate: 0.135
|
||||
m_Inertia: 1
|
||||
m_DecelerationRate: 0.01
|
||||
m_ScrollSensitivity: 35
|
||||
m_Viewport: {fileID: 3276216359023061022}
|
||||
m_HorizontalScrollbar: {fileID: 0}
|
||||
|
@ -1182,6 +1197,7 @@ RectTransform:
|
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 3276216358621914657}
|
||||
- {fileID: 3276216359264292461}
|
||||
|
@ -1263,6 +1279,7 @@ RectTransform:
|
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 3276216359692268649}
|
||||
m_Father: {fileID: 3276216359861115896}
|
||||
|
@ -1388,6 +1405,7 @@ RectTransform:
|
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3276216358758736494}
|
||||
m_RootOrder: 0
|
||||
|
@ -1468,15 +1486,17 @@ MonoBehaviour:
|
|||
m_lineSpacingMax: 0
|
||||
m_paragraphSpacing: 0
|
||||
m_charWidthMaxAdj: 0
|
||||
m_enableWordWrapping: 1
|
||||
m_TextWrappingMode: 1
|
||||
m_wordWrappingRatios: 0.4
|
||||
m_overflowMode: 0
|
||||
m_linkedTextComponent: {fileID: 0}
|
||||
parentLinkedComponent: {fileID: 0}
|
||||
m_enableKerning: 1
|
||||
m_ActiveFontFeatures: 6e72656b
|
||||
m_enableExtraPadding: 0
|
||||
checkPaddingRequired: 0
|
||||
m_isRichText: 1
|
||||
m_EmojiFallbackSupport: 1
|
||||
m_parseCtrlCharacters: 1
|
||||
m_isOrthographic: 1
|
||||
m_isCullingEnabled: 0
|
||||
|
|
|
@ -14,8 +14,8 @@ RenderTexture:
|
|||
m_DownscaleFallback: 0
|
||||
m_IsAlphaChannelOptional: 0
|
||||
serializedVersion: 5
|
||||
m_Width: 1728
|
||||
m_Height: 972
|
||||
m_Width: 1109
|
||||
m_Height: 623
|
||||
m_AntiAliasing: 2
|
||||
m_MipCount: -1
|
||||
m_DepthStencilFormat: 92
|
||||
|
|
|
@ -14,8 +14,8 @@ RenderTexture:
|
|||
m_DownscaleFallback: 0
|
||||
m_IsAlphaChannelOptional: 0
|
||||
serializedVersion: 5
|
||||
m_Width: 2592
|
||||
m_Height: 1458
|
||||
m_Width: 1663
|
||||
m_Height: 934
|
||||
m_AntiAliasing: 1
|
||||
m_MipCount: -1
|
||||
m_DepthStencilFormat: 92
|
||||
|
|
Before Width: | Height: | Size: 122 B After Width: | Height: | Size: 225 B |
|
@ -3,7 +3,7 @@ guid: f9232c079e126cd48a7344b23eaf42a5
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -106,12 +132,13 @@ TextureImporter:
|
|||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
internalID: 1537655665
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
|
@ -20,6 +20,15 @@ AnimationClip:
|
|||
- curve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 4.8
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 136
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 0.016666668
|
||||
value: 4.8
|
||||
|
@ -48,15 +57,13 @@ AnimationClip:
|
|||
m_PPtrCurves:
|
||||
- curve:
|
||||
- time: 0
|
||||
value: {fileID: 6240004448574861874, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
|
||||
- time: 0.016666668
|
||||
value: {fileID: 6240004448574861874, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
|
||||
value: {fileID: 1473124820, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
|
||||
- time: 0.05
|
||||
value: {fileID: -1354652295505547112, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
|
||||
value: {fileID: -91994477, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
|
||||
- time: 0.083333336
|
||||
value: {fileID: -159972075433952791, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
|
||||
value: {fileID: -1267118016, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
|
||||
- time: 0.11666667
|
||||
value: {fileID: 5181778189044111492, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
|
||||
value: {fileID: -1983818443, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
|
||||
attribute: m_Sprite
|
||||
path: Graphic
|
||||
classID: 114
|
||||
|
@ -83,11 +90,10 @@ AnimationClip:
|
|||
customType: 0
|
||||
isPPtrCurve: 1
|
||||
pptrCurveMapping:
|
||||
- {fileID: 6240004448574861874, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
|
||||
- {fileID: 6240004448574861874, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
|
||||
- {fileID: -1354652295505547112, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
|
||||
- {fileID: -159972075433952791, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
|
||||
- {fileID: 5181778189044111492, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
|
||||
- {fileID: 1473124820, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
|
||||
- {fileID: -91994477, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
|
||||
- {fileID: -1267118016, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
|
||||
- {fileID: -1983818443, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
|
||||
m_AnimationClipSettings:
|
||||
serializedVersion: 2
|
||||
m_AdditiveReferencePoseClip: {fileID: 0}
|
||||
|
@ -112,6 +118,15 @@ AnimationClip:
|
|||
- curve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 4.8
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 136
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 0.016666668
|
||||
value: 4.8
|
||||
|
|
|
@ -20,7 +20,7 @@ AnimationClip:
|
|||
m_PPtrCurves:
|
||||
- curve:
|
||||
- time: 0
|
||||
value: {fileID: -9052558874090446877, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
|
||||
value: {fileID: 2011919177, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
|
||||
attribute: m_Sprite
|
||||
path: Graphic
|
||||
classID: 114
|
||||
|
@ -40,7 +40,7 @@ AnimationClip:
|
|||
customType: 0
|
||||
isPPtrCurve: 1
|
||||
pptrCurveMapping:
|
||||
- {fileID: -9052558874090446877, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
|
||||
- {fileID: 2011919177, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
|
||||
m_AnimationClipSettings:
|
||||
serializedVersion: 2
|
||||
m_AdditiveReferencePoseClip: {fileID: 0}
|
||||
|
|
|
@ -20,7 +20,7 @@ AnimationClip:
|
|||
m_PPtrCurves:
|
||||
- curve:
|
||||
- time: 0
|
||||
value: {fileID: 5181778189044111492, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
|
||||
value: {fileID: -1983818443, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
|
||||
attribute: m_Sprite
|
||||
path: Graphic
|
||||
classID: 114
|
||||
|
@ -40,7 +40,7 @@ AnimationClip:
|
|||
customType: 0
|
||||
isPPtrCurve: 1
|
||||
pptrCurveMapping:
|
||||
- {fileID: 5181778189044111492, guid: d25eab4740f92b74087acaa572d8a1c4, type: 3}
|
||||
- {fileID: -1983818443, guid: 655fc978fc6e6ca41a3d3104b43298bd, type: 3}
|
||||
m_AnimationClipSettings:
|
||||
serializedVersion: 2
|
||||
m_AdditiveReferencePoseClip: {fileID: 0}
|
||||
|
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 2.9 KiB |
|
@ -3,7 +3,7 @@ guid: b7a1fac8b59b4d14289fa198206ef47e
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 3.4 KiB |
|
@ -33,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -67,10 +67,10 @@ TextureImporter:
|
|||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -101,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
|
|
@ -3,7 +3,7 @@ guid: 39656548c069d5541a9d9d1a808a76e4
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
|
@ -3,7 +3,7 @@ guid: 6dd981c3e3319f243b56549e3f26fb72
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
257
Assets/Resources/Sprites/Editor/UI/autoplay.png.meta
Normal file
|
@ -0,0 +1,257 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 655fc978fc6e6ca41a3d3104b43298bd
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 2
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 256
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites:
|
||||
- serializedVersion: 2
|
||||
name: autoplay_0
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 32
|
||||
height: 32
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 672ded1a8ba4c93438f5ce6ac146c5c9
|
||||
internalID: -1983818443
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
- serializedVersion: 2
|
||||
name: autoplay_1
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 32
|
||||
y: 0
|
||||
width: 32
|
||||
height: 32
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 801ff7807807f9b4cbf93407358070b8
|
||||
internalID: -1267118016
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
- serializedVersion: 2
|
||||
name: autoplay_2
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 64
|
||||
y: 0
|
||||
width: 32
|
||||
height: 32
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 474e20f632bd42344af459b1022c612a
|
||||
internalID: -91994477
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
- serializedVersion: 2
|
||||
name: autoplay_3
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 96
|
||||
y: 0
|
||||
width: 32
|
||||
height: 32
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 48e39d246f49dc546b5b07e88238cd83
|
||||
internalID: 1473124820
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
- serializedVersion: 2
|
||||
name: autoplay_4
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 128
|
||||
y: 0
|
||||
width: 32
|
||||
height: 32
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: d479d07287a393649b83a8a3dd03c235
|
||||
internalID: 2011919177
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable:
|
||||
autoplay_0: -1983818443
|
||||
autoplay_1: -1267118016
|
||||
autoplay_2: -91994477
|
||||
autoplay_3: 1473124820
|
||||
autoplay_4: 2011919177
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -3,7 +3,7 @@ guid: e85d5d286a8191b499c570d33dd0899c
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 3.8 KiB |
|
@ -33,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -67,10 +67,10 @@ TextureImporter:
|
|||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -101,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
|
|
@ -3,7 +3,7 @@ guid: 49e59e302f4a24a4da56bd63185fcb01
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
BIN
Assets/Resources/Sprites/Editor/UI/copy.png
Normal file
After Width: | Height: | Size: 740 B |
147
Assets/Resources/Sprites/Editor/UI/copy.png.meta
Normal file
|
@ -0,0 +1,147 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 4ea196d68cba90a4d8b08ad6fe012f49
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -3,7 +3,7 @@ guid: dd516f1a3380ca642939d4fa86603249
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 5.2 KiB |
|
@ -3,7 +3,7 @@ guid: 05e0181d5d7f7144f9263d1ccca41112
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
|
@ -3,7 +3,7 @@ guid: 55bb46a7614176b4c941a5caf846f7e8
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
|
@ -3,7 +3,7 @@ guid: 57971d0838f02124080be29466f8f638
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1 KiB |
|
@ -3,7 +3,7 @@ guid: ebef38bdbaa406747b71f2e1944deda2
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -41,7 +42,7 @@ TextureImporter:
|
|||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteMode: 2
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,9 +101,75 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
sprites:
|
||||
- serializedVersion: 2
|
||||
name: top
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 24
|
||||
width: 64
|
||||
height: 40
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
border: {x: 0, y: 1, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: b2234eea6e56b0345980a27759a8fc26
|
||||
internalID: 1735959733
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
- serializedVersion: 2
|
||||
name: bottom
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 64
|
||||
height: 25
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 64b90d23bd4f157469bed27275bccb02
|
||||
internalID: -851579828
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
|
@ -112,6 +180,9 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable:
|
||||
bottom: -851579828
|
||||
top: 1735959733
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
BIN
Assets/Resources/Sprites/Editor/UI/metronome_handle.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
147
Assets/Resources/Sprites/Editor/UI/metronome_handle.png.meta
Normal file
|
@ -0,0 +1,147 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 1b346468a32e5fa45ba9e3343c18fc43
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 7
|
||||
spritePivot: {x: 0.5, y: 0}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 1537655665
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -3,7 +3,7 @@ guid: a1e215e768b7d1b4e93a60f8ce9c10fc
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
|
@ -3,7 +3,7 @@ guid: 8ae7d31f585b0cf4483963e20305e4f8
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
BIN
Assets/Resources/Sprites/Editor/UI/paste.png
Normal file
After Width: | Height: | Size: 903 B |
147
Assets/Resources/Sprites/Editor/UI/paste.png.meta
Normal file
|
@ -0,0 +1,147 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 42ffabfe4c37e104d8e9d884fe7db980
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -3,7 +3,7 @@ guid: 1256a95b617ffc0458b3aec7fba83afe
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
|
@ -3,7 +3,7 @@ guid: ba34210de39bafc4d9bc0bb9163d83c7
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
|
@ -3,7 +3,7 @@ guid: 0c2c8bed0306b7d408a268884c6af79b
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
8
Assets/Resources/Sprites/Editor/UI/rounded-bg-6px.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 521af96912848ef4887f49a524efb143
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
After Width: | Height: | Size: 755 B |
|
@ -0,0 +1,345 @@
|
|||
fileFormatVersion: 2
|
||||
guid: bd48ded17f064414eb670529c2375358
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 2
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites:
|
||||
- serializedVersion: 2
|
||||
name: right
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 64
|
||||
height: 64
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
border: {x: 6, y: 6, z: 6, w: 6}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 5695434ae09b7894888b9766c0fafe5c
|
||||
internalID: -1106677661
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
- serializedVersion: 2
|
||||
name: top
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 64
|
||||
y: 0
|
||||
width: 64
|
||||
height: 64
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
border: {x: 6, y: 6, z: 6, w: 6}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 1350a8d457f4c424f98c69ce6e6df1be
|
||||
internalID: 1099965293
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
- serializedVersion: 2
|
||||
name: topleft
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 128
|
||||
y: 0
|
||||
width: 64
|
||||
height: 64
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
border: {x: 6, y: 6, z: 6, w: 6}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 3f2592c6e00f5894ab312ff3ce6f5dc1
|
||||
internalID: -997670817
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
- serializedVersion: 2
|
||||
name: topright
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 192
|
||||
y: 0
|
||||
width: 64
|
||||
height: 64
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
border: {x: 6, y: 6, z: 6, w: 6}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 782584f2863184b458a12717d9678b79
|
||||
internalID: -1853719049
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
- serializedVersion: 2
|
||||
name: all
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 256
|
||||
y: 0
|
||||
width: 64
|
||||
height: 64
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
border: {x: 6, y: 6, z: 6, w: 6}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 0f3cd91703739b04b86d55ba7d1b25e9
|
||||
internalID: 1401309272
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
- serializedVersion: 2
|
||||
name: bottom
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 320
|
||||
y: 0
|
||||
width: 64
|
||||
height: 64
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
border: {x: 6, y: 6, z: 6, w: 6}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: e3d49d09c750a384aac9b16bb51b26a2
|
||||
internalID: 1782490243
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
- serializedVersion: 2
|
||||
name: bottomleft
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 384
|
||||
y: 0
|
||||
width: 64
|
||||
height: 64
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
border: {x: 6, y: 6, z: 6, w: 6}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: ed9f01dd79b2205449a42f45cb342289
|
||||
internalID: 1973936073
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
- serializedVersion: 2
|
||||
name: bottomright
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 448
|
||||
y: 0
|
||||
width: 64
|
||||
height: 64
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
border: {x: 6, y: 6, z: 6, w: 6}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 03b889313964dcb47baff7696505e9c8
|
||||
internalID: -520399450
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
- serializedVersion: 2
|
||||
name: left
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 512
|
||||
y: 0
|
||||
width: 64
|
||||
height: 64
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
border: {x: 6, y: 6, z: 6, w: 6}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: c40d45e6189a98a4c873384925aab9f1
|
||||
internalID: 1937931747
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable:
|
||||
all: 1401309272
|
||||
bottom: 1782490243
|
||||
bottomleft: 1973936073
|
||||
bottomright: -520399450
|
||||
left: 1937931747
|
||||
right: -1106677661
|
||||
top: 1099965293
|
||||
topleft: -997670817
|
||||
topright: -1853719049
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -3,7 +3,7 @@ guid: 9ae7ecf2cc001d14595ec03e1d4d86a6
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
|
@ -3,7 +3,7 @@ guid: 6e7b88d9d62ed1b429c63b83745e3672
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -111,6 +113,18 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -124,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 3.4 KiB |
|
@ -33,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -67,10 +67,10 @@ TextureImporter:
|
|||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -101,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
|
|
@ -3,7 +3,7 @@ guid: e63dfe3b432d7404bab9ef307426a0bf
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
|
@ -3,7 +3,7 @@ guid: 44c391c5df20f2844b9437c0f3138355
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
|
@ -3,7 +3,7 @@ guid: 21da6678ec5624a439f87f3487819ac0
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
|
@ -3,7 +3,7 @@ guid: 348825b5c77b9d143961119fc008e631
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
|
@ -3,7 +3,7 @@ guid: b29210cf5b7b8234984ec842a3110005
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
|
@ -3,7 +3,7 @@ guid: 027d0a4d1b2bb2d4fa529145afb6e506
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -32,7 +33,7 @@ TextureImporter:
|
|||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
|
@ -62,9 +63,58 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
|
@ -88,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
BIN
Assets/Resources/Sprites/Editor/UI/wrench.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
147
Assets/Resources/Sprites/Editor/UI/wrench.png.meta
Normal file
|
@ -0,0 +1,147 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9d635a6edbcd76549a58fd1b4640cc99
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -3,7 +3,7 @@ guid: 5562630d3cb1e1b439e6f0d06c45b14a
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
|
@ -3,7 +3,7 @@ guid: 6f76ee0157ff5854295d8d0b12b5f165
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
|
@ -3,7 +3,7 @@ guid: c158bbf3be7618c468e696e8c2c54e95
|
|||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
|
@ -24,6 +24,7 @@ TextureImporter:
|
|||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
|
@ -62,13 +63,14 @@ TextureImporter:
|
|||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
|
@ -99,6 +101,30 @@ TextureImporter:
|
|||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
|
@ -112,6 +138,7 @@ TextureImporter:
|
|||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
|
|
BIN
Assets/Resources/Sprites/Editor/eventObjs/blockResize.png
Normal file
After Width: | Height: | Size: 667 B |
147
Assets/Resources/Sprites/Editor/eventObjs/blockResize.png.meta
Normal file
|
@ -0,0 +1,147 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a0b769f6af690934f97fb73c271e1830
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 35, y: 0, z: 35, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 128
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 2
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 1537655665
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -2,14 +2,15 @@
|
|||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: karateman_cellshader
|
||||
m_Shader: {fileID: 4800000, guid: ff54fed5718ccc543808dec1f266d1c8, type: 3}
|
||||
m_ShaderKeywords:
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
|
@ -55,6 +56,7 @@ Material:
|
|||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _ColorMask: 15
|
||||
|
@ -82,8 +84,8 @@ Material:
|
|||
m_Colors:
|
||||
- _AddColor: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _ColorAlpha: {r: 0.84705883, g: 0.8156863, b: 0.6901961, a: 1}
|
||||
- _ColorAlpha: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _ColorBravo: {r: 1, g: 0, b: 0, a: 1}
|
||||
- _ColorDelta: {r: 0.972549, g: 0.972549, b: 0.972549, a: 1}
|
||||
- _ColorDelta: {r: 0.81, g: 0.81, b: 0.81, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
using System;
|
||||
|
||||
public static class AppInfo {
|
||||
public const string Version = "0.0.982";
|
||||
public static readonly DateTime Date = new DateTime(2023, 09, 11, 20, 44, 02, 741, DateTimeKind.Utc);
|
||||
public const string Version = "0.0.1002";
|
||||
public static readonly DateTime Date = new DateTime(2023, 09, 27, 22, 20, 38, 655, DateTimeKind.Utc);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -222,6 +222,7 @@ namespace HeavenStudio
|
|||
Beatmap.AddNewVolumeChange(0, 100f);
|
||||
Beatmap.data.offset = 0f;
|
||||
Conductor.instance.musicSource.clip = null;
|
||||
RiqFileHandler.UnlockCache();
|
||||
RiqFileHandler.WriteRiq(Beatmap);
|
||||
AudioLoadDone = true;
|
||||
}
|
||||
|
@ -683,7 +684,7 @@ namespace HeavenStudio
|
|||
GoForAPerfect.instance.Disable();
|
||||
SectionMedalsManager.instance?.OnRemixEnd();
|
||||
|
||||
GlobalGameManager.UpdateDiscordStatus(Beatmap["remixtitle"], false, true);
|
||||
GlobalGameManager.UpdateDiscordStatus(Beatmap["remixtitle"].ToString(), false, true);
|
||||
|
||||
Play(beat, 1f);
|
||||
yield break;
|
||||
|
|
|
@ -23,8 +23,7 @@ namespace HeavenStudio.Editor.Track
|
|||
private float lastPosX;
|
||||
private float lastContentScale;
|
||||
private float lastTimelineSize;
|
||||
|
||||
private float contentPosX => Mathf.Abs(scrollRect.content.localPosition.x / scrollRect.content.localScale.x);
|
||||
private float lastZoom;
|
||||
|
||||
private List<GameObject> Lines = new List<GameObject>();
|
||||
|
||||
|
@ -50,10 +49,12 @@ namespace HeavenStudio.Editor.Track
|
|||
{
|
||||
if (Editor.instance.fullscreen) return;
|
||||
|
||||
var x = Mathf.FloorToInt(contentPosX);
|
||||
// var x = Mathp.Round2Nearest(contentPosX, Timeline.instance.PixelsPerBeat);
|
||||
var x = Mathp.Round2Nearest(-scrollRect.content.anchoredPosition.x, Timeline.instance.PixelsPerBeat);
|
||||
var pos = new Vector3(x, transform.localPosition.y, transform.localPosition.z);
|
||||
transform.localPosition = pos;
|
||||
GetComponent<RectTransform>().anchoredPosition = new Vector3(rectTransform.anchoredPosition.x, rectTransform.anchoredPosition.y, 0);
|
||||
rectTransform.anchoredPosition = new Vector3(rectTransform.anchoredPosition.x, rectTransform.anchoredPosition.y, 0);
|
||||
rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, transform.parent.parent.parent.GetComponent<RectTransform>().rect.height);
|
||||
|
||||
UpdateCount();
|
||||
}
|
||||
|
@ -62,28 +63,27 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
private void UpdateCount()
|
||||
{
|
||||
var changeScale = (scrollRect.viewport.rect.size.x != lastTimelineSize || scrollRect.content.localScale.x != lastContentScale);
|
||||
var changeScale = (scrollRect.viewport.rect.size.x != lastTimelineSize || scrollRect.content.localScale.x != lastContentScale) ||
|
||||
(Timeline.instance.Zoom != lastZoom);
|
||||
if (changeScale)
|
||||
{
|
||||
var rightSide = (scrollRect.viewport.GetComponent<RectTransform>().rect.width / scrollRect.content.localScale.x) + contentPosX;
|
||||
|
||||
for (int i = 0; i < Lines.Count; i++)
|
||||
Destroy(Lines[i].gameObject);
|
||||
Lines.Clear();
|
||||
|
||||
count = Mathf.RoundToInt(rightSide - contentPosX) + 2;
|
||||
count = Mathf.RoundToInt(scrollRect.viewport.GetComponent<RectTransform>().rect.width / Timeline.instance.PixelsPerBeat) + 2;
|
||||
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
var line = Instantiate(transform.GetChild(0).gameObject, transform);
|
||||
line.transform.localPosition = new Vector3(i, line.transform.localPosition.y, line.transform.localPosition.z);
|
||||
var line = Instantiate(transform.GetChild(0).gameObject.GetComponent<RectTransform>(), transform);
|
||||
line.anchoredPosition = new Vector3(i * Timeline.instance.PixelsPerBeat, line.transform.localPosition.y, line.transform.localPosition.z);
|
||||
|
||||
var halfBeatRect = line.transform.GetChild(2).GetComponent<RectTransform>();
|
||||
halfBeatRect.anchoredPosition = new Vector3(scrollRect.content.localScale.x * 0.5f, halfBeatRect.anchoredPosition.y);
|
||||
halfBeatRect.anchoredPosition = new Vector3(Timeline.instance.PixelsPerBeat * 0.5f, halfBeatRect.anchoredPosition.y);
|
||||
|
||||
line.SetActive(true);
|
||||
line.gameObject.SetActive(true);
|
||||
|
||||
Lines.Add(line);
|
||||
Lines.Add(line.gameObject);
|
||||
}
|
||||
UpdateGridNum();
|
||||
|
||||
|
@ -96,6 +96,7 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
lastContentScale = scrollRect.content.localScale.x;
|
||||
lastTimelineSize = scrollRect.viewport.rect.size.x;
|
||||
lastZoom = Timeline.instance.Zoom;
|
||||
lastPosX = rectTransform.anchoredPosition.x;
|
||||
}
|
||||
|
||||
|
@ -106,7 +107,7 @@ namespace HeavenStudio.Editor.Track
|
|||
var line = Lines[i];
|
||||
if (line.transform.childCount == 0) continue;
|
||||
|
||||
var newNum = Mathf.RoundToInt(rectTransform.anchoredPosition.x + ((i) / snap));
|
||||
var newNum = Mathf.RoundToInt((rectTransform.anchoredPosition.x / Timeline.instance.PixelsPerBeat) + ((i) / snap));
|
||||
line.transform.GetChild(0).GetComponent<TMP_Text>().text = newNum.ToString(CultureInfo.CurrentCulture);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,206 +1,136 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
using Starpelly;
|
||||
|
||||
using HeavenStudio.Editor.Track;
|
||||
|
||||
using DG.Tweening;
|
||||
using Starpelly;
|
||||
|
||||
namespace HeavenStudio.Editor
|
||||
{
|
||||
public class BoxSelection : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private RectTransform boxVisual;
|
||||
[SerializeField] private RectTransform timelineContent;
|
||||
private Rect selectionBox;
|
||||
|
||||
private Vector2 startPosition = Vector2.zero;
|
||||
private Vector2 endPosition = Vector2.zero;
|
||||
|
||||
public bool selecting = false;
|
||||
|
||||
/// <summary>
|
||||
/// Are we currently drag selecting?
|
||||
/// </summary>
|
||||
public bool ActivelySelecting = false;
|
||||
public bool ActivelySelecting { get; private set; } = false;
|
||||
|
||||
private bool clickedInTimeline = false;
|
||||
private Vector2 startPosition = Vector2.zero;
|
||||
private Vector2 endPosition = Vector2.zero;
|
||||
private bool validClick = false;
|
||||
|
||||
[SerializeField] private RectTransform boxVisual;
|
||||
private CanvasGroup boxGroup;
|
||||
private TMPro.TMP_Text sizeText;
|
||||
private RectTransform text;
|
||||
|
||||
private float timelineLastX;
|
||||
|
||||
public static BoxSelection instance { get; private set; }
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
instance = this;
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
DrawVisual();
|
||||
instance = this;
|
||||
|
||||
Color boxCol = EditorTheme.theme.properties.BoxSelectionCol.Hex2RGB();
|
||||
boxVisual.GetComponent<Image>().color = new Color(boxCol.r, boxCol.g, boxCol.b, 0.3f);
|
||||
boxVisual.transform.GetChild(0).GetComponent<Image>().color = EditorTheme.theme.properties.BoxSelectionOutlineCol.Hex2RGB();
|
||||
boxVisual.GetChild(0).GetComponent<Image>().color = new Color(boxCol.r, boxCol.g, boxCol.b, 0.3f);
|
||||
boxVisual.GetChild(0).GetChild(0).GetComponent<Image>().color = EditorTheme.theme.properties.BoxSelectionOutlineCol.Hex2RGB();
|
||||
|
||||
sizeText = boxVisual.transform.GetChild(1).GetComponent<TMPro.TMP_Text>();
|
||||
text = boxVisual.transform.GetChild(1).GetComponent<RectTransform>();
|
||||
sizeText = boxVisual.GetChild(0).GetChild(1).GetComponent<TMPro.TMP_Text>();
|
||||
sizeText.text = string.Empty;
|
||||
|
||||
boxGroup = boxVisual.GetComponent<CanvasGroup>();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
public void LayerSelectUpdate()
|
||||
{
|
||||
if (Editor.instance == null) return;
|
||||
float deltaTimelineX = timelineContent.transform.localPosition.x - timelineLastX;
|
||||
|
||||
Camera camera = Editor.instance.EditorCamera;
|
||||
Vector3 scale = Editor.instance.MainCanvas.transform.localScale;
|
||||
|
||||
boxVisual.transform.localScale = new Vector2((1f / Timeline.instance.TimelineContent.localScale.x) / scale.x, 1f / scale.y);
|
||||
text.transform.localScale = scale;
|
||||
|
||||
if (Selections.instance.eventsSelected.Count > 0 && Timeline.instance.InteractingWithEvents())
|
||||
{
|
||||
startPosition = Vector2.zero;
|
||||
endPosition = Vector2.zero;
|
||||
DrawVisual();
|
||||
return;
|
||||
}
|
||||
|
||||
if (Conductor.instance.NotStopped() || !Timeline.instance.timelineState.selected)
|
||||
{
|
||||
startPosition = Vector2.zero;
|
||||
endPosition = Vector2.zero;
|
||||
DrawVisual();
|
||||
return;
|
||||
}
|
||||
|
||||
float beatLen = boxVisual.rect.width * boxVisual.transform.localScale.x;
|
||||
if (beatLen >= 0.5f)
|
||||
sizeText.text = $"{string.Format("{0:0.000}", beatLen)}";
|
||||
else
|
||||
sizeText.text = string.Empty;
|
||||
|
||||
// click
|
||||
if (Input.GetMouseButtonDown(0))
|
||||
{
|
||||
clickedInTimeline = Timeline.instance.CheckIfMouseInTimeline();
|
||||
if (!Timeline.instance.MouseInTimeline || TimelineBlockManager.Instance.InteractingWithEvents || Conductor.instance.NotStopped())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
startPosition = MousePosition();
|
||||
selectionBox = new Rect();
|
||||
validClick = true;
|
||||
startPosition = new Vector2(Timeline.instance.MousePos2Beat, Timeline.instance.MousePos2Layer);
|
||||
|
||||
boxGroup.DOKill();
|
||||
boxGroup.alpha = 1.0f;
|
||||
}
|
||||
|
||||
if (!validClick) return;
|
||||
|
||||
var startPos = startPosition;
|
||||
var endPos = endPosition;
|
||||
|
||||
if (Input.GetMouseButton(0))
|
||||
{
|
||||
endPos = new Vector2(Timeline.instance.MousePos2Beat,
|
||||
Timeline.instance.MousePos2Layer +
|
||||
(Timeline.instance.MousePos2Layer < startPosition.y ? 0 : 1));
|
||||
startPos = new Vector2(startPos.x,
|
||||
startPos.y + ((Timeline.instance.MousePos2Layer < startPosition.y) ? 1 : 0));
|
||||
|
||||
startPos = new Vector2(startPos.x, Mathf.Clamp(startPos.y, 0, Timeline.instance.LayerCount));
|
||||
endPos = new Vector2(endPos.x, Mathf.Clamp(endPos.y, 0, Timeline.instance.LayerCount));
|
||||
|
||||
ActivelySelecting = true;
|
||||
}
|
||||
|
||||
// dragging
|
||||
if (Input.GetMouseButton(0) && clickedInTimeline)
|
||||
{
|
||||
startPosition.x += deltaTimelineX * scale.x;
|
||||
endPosition = MousePosition();
|
||||
DrawSelection();
|
||||
SelectEvents(); //kek
|
||||
DrawVisual();
|
||||
}
|
||||
|
||||
// release click
|
||||
if (Input.GetMouseButtonUp(0))
|
||||
{
|
||||
startPosition = Vector2.zero;
|
||||
endPosition = Vector2.zero;
|
||||
SelectEvents();
|
||||
DrawVisual();
|
||||
|
||||
ActivelySelecting = false;
|
||||
}
|
||||
|
||||
timelineLastX = timelineContent.transform.localPosition.x;
|
||||
}
|
||||
|
||||
private void DrawVisual()
|
||||
{
|
||||
Vector2 boxStart = startPosition;
|
||||
Vector2 boxEnd = endPosition;
|
||||
|
||||
Vector2 boxCenter = (boxStart + boxEnd) / 2;
|
||||
boxVisual.position = boxCenter;
|
||||
|
||||
Vector2 boxSize = new Vector2(Mathf.Abs(boxStart.x - boxEnd.x), Mathf.Abs(boxStart.y - boxEnd.y));
|
||||
boxVisual.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, boxSize.x);
|
||||
boxVisual.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, boxSize.y);
|
||||
}
|
||||
|
||||
private void DrawSelection()
|
||||
{
|
||||
// X
|
||||
if (MousePosition().x < startPosition.x)
|
||||
{
|
||||
// dragging left
|
||||
selectionBox.xMin = MousePosition().x;
|
||||
selectionBox.xMax = startPosition.x;
|
||||
}
|
||||
else
|
||||
{
|
||||
// dragging right
|
||||
selectionBox.xMin = startPosition.x;
|
||||
selectionBox.xMax = MousePosition().x;
|
||||
}
|
||||
|
||||
// Y
|
||||
if (MousePosition().y < startPosition.y)
|
||||
{
|
||||
// dragging down
|
||||
selectionBox.yMin = MousePosition().y;
|
||||
selectionBox.yMax = startPosition.y;
|
||||
}
|
||||
else
|
||||
{
|
||||
// dragging up
|
||||
selectionBox.yMin = startPosition.y;
|
||||
selectionBox.yMax = MousePosition().y;
|
||||
}
|
||||
}
|
||||
|
||||
private void SelectEvents()
|
||||
{
|
||||
if (!Input.GetKey(KeyCode.LeftShift) && !Timeline.instance.InteractingWithEvents() && Editor.instance.canSelect) Selections.instance.DeselectAll();
|
||||
|
||||
int selected = 0;
|
||||
|
||||
for (int i = 0; i < Timeline.instance.eventObjs.Count; i++)
|
||||
{
|
||||
TimelineEventObj e = Timeline.instance.eventObjs[i];
|
||||
|
||||
if (selectionBox.Overlaps(GetWorldRect(e.GetComponent<RectTransform>())))
|
||||
if (Conductor.instance.NotStopped())
|
||||
{
|
||||
Selections.instance.DragSelect(e);
|
||||
selected++;
|
||||
validClick = false;
|
||||
boxGroup.DOFade(0.0f, 0.3f).SetEase(Ease.OutExpo);
|
||||
|
||||
ActivelySelecting = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
selecting = selected > 0;
|
||||
var start = new Vector2(Mathf.Min(startPos.x, endPos.x),
|
||||
Mathf.Min(startPos.y, endPos.y));
|
||||
var end = new Vector2(Mathf.Max(startPos.x, endPos.x),
|
||||
Mathf.Max(startPos.y, endPos.y));
|
||||
|
||||
if (Input.GetMouseButtonUp(0))
|
||||
{
|
||||
validClick = false;
|
||||
boxGroup.DOFade(0.0f, 0.3f).SetEase(Ease.OutExpo);
|
||||
|
||||
ActivelySelecting = false;
|
||||
return;
|
||||
}
|
||||
|
||||
boxVisual.anchoredPosition = new Vector2(start.x * Timeline.instance.PixelsPerBeat, Timeline.instance.LayerToY(Mathf.FloorToInt(start.y)));
|
||||
boxVisual.sizeDelta = new Vector2((end.x - start.x) * Timeline.instance.PixelsPerBeat,
|
||||
(end.y - start.y) * Timeline.instance.LayerHeight());
|
||||
|
||||
var boxLength = end.x - start.x;
|
||||
if (boxLength > 0.01f)
|
||||
sizeText.text = (boxLength).ToString("F");
|
||||
else
|
||||
sizeText.text = string.Empty;
|
||||
|
||||
Select(start, end);
|
||||
}
|
||||
|
||||
public Vector3 MousePosition()
|
||||
private void Select(Vector2 start, Vector2 end)
|
||||
{
|
||||
var mousePos = Editor.instance.EditorCamera.ScreenToWorldPoint(Input.mousePosition);
|
||||
return new Vector3(mousePos.x, mousePos.y, 0);
|
||||
}
|
||||
var boxRect = new Rect(start.x, start.y, end.x - start.x, end.y - start.y);
|
||||
|
||||
public Rect GetWorldRect(RectTransform rectTransform)
|
||||
{
|
||||
Vector3[] corners = new Vector3[4];
|
||||
rectTransform.GetWorldCorners(corners);
|
||||
// Get the bottom left corner.
|
||||
Vector3 position = corners[0];
|
||||
// This doesn't take into account blocks the user cannot see, this is intentional.
|
||||
foreach (var marker in TimelineBlockManager.Instance.EntityMarkers.Values)
|
||||
{
|
||||
var markerRect = new Rect((float)marker.entity.beat, (int)marker.entity["track"], marker.entity.length, 1);
|
||||
|
||||
Vector2 size = new Vector2(
|
||||
rectTransform.lossyScale.x * rectTransform.rect.size.x,
|
||||
rectTransform.lossyScale.y * rectTransform.rect.size.y);
|
||||
|
||||
return new Rect(position, size);
|
||||
var boxOverMarker = boxRect.Overlaps(markerRect);
|
||||
if (boxOverMarker)
|
||||
{
|
||||
if (!marker.selected)
|
||||
Selections.instance.DragSelect(marker);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (marker.selected && !Input.GetKey(KeyCode.LeftShift))
|
||||
Selections.instance.Deselect(marker);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,210 +1,386 @@
|
|||
using System.Collections;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using Jukebox;
|
||||
using Jukebox.Legacy;
|
||||
|
||||
using HeavenStudio.Editor.Track;
|
||||
using Newtonsoft.Json;
|
||||
using UnityEditor;
|
||||
using UnityEngine.Timeline;
|
||||
|
||||
namespace HeavenStudio.Editor.Commands
|
||||
{
|
||||
public class Selection : IAction
|
||||
public class Delete : ICommand
|
||||
{
|
||||
List<TimelineEventObj> eventObjs;
|
||||
List<TimelineEventObj> lastEventObjs;
|
||||
private List<Guid> toDeleteIds;
|
||||
private List<RiqEntityMore> deletedEntities = new();
|
||||
|
||||
public Selection(List<TimelineEventObj> eventObjs)
|
||||
struct RiqEntityMore
|
||||
{
|
||||
this.eventObjs = eventObjs;
|
||||
public RiqEntity riqEntity;
|
||||
public bool selected;
|
||||
}
|
||||
|
||||
public Delete(List<Guid> ids)
|
||||
{
|
||||
toDeleteIds = ids;
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
}
|
||||
|
||||
public void Redo()
|
||||
{
|
||||
for (int i = 0; i < lastEventObjs.Count; i++)
|
||||
for (var i = 0; i < toDeleteIds.Count; i++)
|
||||
{
|
||||
Selections.instance.ShiftClickSelect(lastEventObjs[i]);
|
||||
var entity = GameManager.instance.Beatmap.Entities.Find(c => c.guid == toDeleteIds[i]);
|
||||
if (entity != null)
|
||||
{
|
||||
var marker = TimelineBlockManager.Instance.EntityMarkers[entity.guid];
|
||||
|
||||
var clonedEntity = entity.DeepCopy();
|
||||
clonedEntity.guid = entity.guid; // We have to do this because entities (as of when I'm typing this), do not have Guids.
|
||||
|
||||
deletedEntities.Add(new() { riqEntity = clonedEntity, selected = marker.selected });
|
||||
|
||||
|
||||
Selections.instance.Deselect(marker);
|
||||
|
||||
GameManager.instance.Beatmap.Entities.Remove(entity);
|
||||
|
||||
TimelineBlockManager.Instance.EntityMarkers.Remove(entity.guid);
|
||||
GameObject.Destroy(marker.gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
GameManager.instance.SortEventsList();
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
lastEventObjs = eventObjs;
|
||||
for (int i = 0; i < eventObjs.Count; i++)
|
||||
for (var i = 0; i < deletedEntities.Count; i++)
|
||||
{
|
||||
Selections.instance.ShiftClickSelect(eventObjs[i]);
|
||||
var deletedEntity = deletedEntities[i];
|
||||
GameManager.instance.Beatmap.Entities.Add(deletedEntity.riqEntity);
|
||||
var marker = TimelineBlockManager.Instance.CreateEntity(deletedEntity.riqEntity);
|
||||
|
||||
/*if (deletedEntities[i].selected)
|
||||
Selections.instance.ShiftClickSelect(marker);*/
|
||||
}
|
||||
GameManager.instance.SortEventsList();
|
||||
deletedEntities.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
public class Place : ICommand
|
||||
{
|
||||
private RiqEntity placedEntityData;
|
||||
private Guid placedEventID;
|
||||
|
||||
// Redo times basically
|
||||
private int placeTimes = 0;
|
||||
|
||||
public Place(RiqEntity entity, Guid placedEventID)
|
||||
{
|
||||
this.placedEntityData = entity.DeepCopy();
|
||||
this.placedEventID = placedEventID;
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
if (placeTimes > 0)
|
||||
{
|
||||
var entity = placedEntityData.DeepCopy();
|
||||
entity.guid = placedEventID;
|
||||
|
||||
GameManager.instance.Beatmap.Entities.Add(entity);
|
||||
|
||||
var marker = TimelineBlockManager.Instance.CreateEntity(entity);
|
||||
|
||||
GameManager.instance.SortEventsList();
|
||||
}
|
||||
placeTimes++;
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
var createdEntity = GameManager.instance.Beatmap.Entities.Find(c => c.guid == placedEventID);
|
||||
if (createdEntity != null)
|
||||
{
|
||||
placedEntityData = createdEntity.DeepCopy();
|
||||
|
||||
var marker = TimelineBlockManager.Instance.EntityMarkers[createdEntity.guid];
|
||||
|
||||
Selections.instance.Deselect(marker);
|
||||
|
||||
GameManager.instance.Beatmap.Entities.Remove(createdEntity);
|
||||
|
||||
TimelineBlockManager.Instance.EntityMarkers.Remove(createdEntity.guid);
|
||||
GameObject.Destroy(marker.gameObject);
|
||||
|
||||
GameManager.instance.SortEventsList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// I spent 7 hours trying to fix this instead of sleeping, which would've probably worked better.
|
||||
// I'll go fuck myself later I'm just glad it works
|
||||
// I give massive props to people who code undo/redo systems
|
||||
// -- Starpelly
|
||||
|
||||
public class Move : IAction
|
||||
public class Duplicate : ICommand
|
||||
{
|
||||
public List<Pos> pos = new List<Pos>();
|
||||
public List<RiqEntity> dupEntityData = new();
|
||||
private readonly List<Guid> placedEntityIDs = new();
|
||||
|
||||
public class Pos
|
||||
public Duplicate(List<TimelineEventObj> original)
|
||||
{
|
||||
public TimelineEventObj eventObj;
|
||||
var entities = original.Select(c => c.entity).ToList();
|
||||
|
||||
public Vector2 lastPos_;
|
||||
public Vector3 previousPos;
|
||||
}
|
||||
|
||||
public Move(List<TimelineEventObj> eventObjs)
|
||||
{
|
||||
pos.Clear();
|
||||
|
||||
for (int i = 0; i < eventObjs.Count; i++)
|
||||
foreach (var entity in entities)
|
||||
{
|
||||
Pos p = new Pos();
|
||||
p.eventObj = eventObjs[i];
|
||||
p.lastPos_ = eventObjs[i].moveStartPos;
|
||||
p.previousPos = eventObjs[i].transform.localPosition;
|
||||
this.pos.Add(p);
|
||||
dupEntityData.Add(entity.DeepCopy());
|
||||
}
|
||||
|
||||
for (var i = 0; i < original.Count; i++)
|
||||
{
|
||||
placedEntityIDs.Add(Guid.NewGuid());
|
||||
}
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
}
|
||||
|
||||
public void Redo()
|
||||
{
|
||||
for (int i = 0; i < pos.Count; i++)
|
||||
var entities = new List<RiqEntity>();
|
||||
foreach (var entity in dupEntityData)
|
||||
{
|
||||
EnsureEventObj(i);
|
||||
pos[i].eventObj.transform.localPosition = pos[i].previousPos;
|
||||
pos[i].eventObj.entity.beat = pos[i].eventObj.transform.localPosition.x;
|
||||
entities.Add(entity.DeepCopy());
|
||||
}
|
||||
|
||||
Selections.instance.DeselectAll();
|
||||
|
||||
for (var i = 0; i < entities.Count; i++)
|
||||
{
|
||||
var entity = entities[i];
|
||||
entity.guid = placedEntityIDs[i];
|
||||
|
||||
GameManager.instance.Beatmap.Entities.Add(entity);
|
||||
var marker = TimelineBlockManager.Instance.CreateEntity(entity);
|
||||
Selections.instance.DragSelect(marker);
|
||||
|
||||
if (i == entities.Count - 1)
|
||||
marker.BeginMoving(false);
|
||||
}
|
||||
GameManager.instance.SortEventsList();
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
for (int i = 0; i < pos.Count; i++)
|
||||
var deletedEntities = new List<RiqEntity>();
|
||||
for (var i = 0; i < placedEntityIDs.Count; i++)
|
||||
{
|
||||
EnsureEventObj(i);
|
||||
pos[i].eventObj.transform.localPosition = pos[i].lastPos_;
|
||||
pos[i].eventObj.entity.beat = pos[i].eventObj.transform.localPosition.x;
|
||||
}
|
||||
}
|
||||
var placedEntityID = placedEntityIDs[i];
|
||||
var createdEntity = GameManager.instance.Beatmap.Entities.Find(c => c.guid == placedEntityID);
|
||||
|
||||
private void EnsureEventObj(int id)
|
||||
{
|
||||
if (pos[id].eventObj == null)
|
||||
if (createdEntity != null)
|
||||
{
|
||||
deletedEntities.Add(createdEntity);
|
||||
|
||||
if (TimelineBlockManager.Instance.EntityMarkers.ContainsKey(placedEntityID))
|
||||
{
|
||||
var marker = TimelineBlockManager.Instance.EntityMarkers[placedEntityID];
|
||||
Selections.instance.Deselect(marker);
|
||||
|
||||
TimelineBlockManager.Instance.EntityMarkers.Remove(placedEntityID);
|
||||
GameObject.Destroy(marker.gameObject);
|
||||
}
|
||||
|
||||
GameManager.instance.Beatmap.Entities.Remove(createdEntity);
|
||||
}
|
||||
}
|
||||
GameManager.instance.SortEventsList();
|
||||
dupEntityData.Clear();
|
||||
foreach (var entity in deletedEntities)
|
||||
{
|
||||
pos[id].eventObj = Timeline.instance.eventObjs.Find(c => c.eventObjID == pos[id].eventObj.eventObjID);
|
||||
dupEntityData.Add(entity.DeepCopy());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class Place : IAction
|
||||
public class Paste : ICommand
|
||||
{
|
||||
TimelineEventObj eventObj;
|
||||
TimelineEventObj deletedObj;
|
||||
private List<RiqEntity> pasteEntityData = new();
|
||||
private readonly List<Guid> entityIds = new();
|
||||
|
||||
public Place(TimelineEventObj eventObj)
|
||||
public Paste(List<RiqEntity> original)
|
||||
{
|
||||
this.eventObj = eventObj;
|
||||
original.Sort((x, y) => x.beat.CompareTo(y.beat));
|
||||
var firstEntityBeat = original[0].beat;
|
||||
for (var i = 0; i < original.Count; i++)
|
||||
{
|
||||
var entity = original[i].DeepCopy();
|
||||
entity.beat = Conductor.instance.songPositionInBeatsAsDouble + (entity.beat - firstEntityBeat);
|
||||
entityIds.Add(Guid.NewGuid());
|
||||
|
||||
pasteEntityData.Add(entity);
|
||||
}
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
}
|
||||
var entities = new List<RiqEntity>();
|
||||
foreach (var entity in pasteEntityData)
|
||||
{
|
||||
entities.Add(entity.DeepCopy());
|
||||
}
|
||||
|
||||
public void Redo()
|
||||
{
|
||||
deletedObj = Timeline.instance.AddEventObject(deletedObj.entity.datamodel, false, new Vector3((float) deletedObj.entity.beat, -deletedObj.entity["track"] * Timeline.instance.LayerHeight()), deletedObj.entity, true);
|
||||
Selections.instance.DeselectAll();
|
||||
for (var i = 0; i < entities.Count; i++)
|
||||
{
|
||||
var entity = entities[i];
|
||||
entity.guid = entityIds[i];
|
||||
|
||||
GameManager.instance.Beatmap.Entities.Add(entity);
|
||||
var marker = TimelineBlockManager.Instance.CreateEntity(entity);
|
||||
|
||||
Selections.instance.DragSelect(marker);
|
||||
}
|
||||
|
||||
GameManager.instance.SortEventsList();
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
deletedObj = eventObj;
|
||||
Selections.instance.Deselect(eventObj);
|
||||
Timeline.instance.DestroyEventObject(eventObj.entity);
|
||||
// RiqEntity e = deletedObjs[i].entity;
|
||||
// Timeline.instance.AddEventObject(e.datamodel, false, new Vector3(e.beat, -e.track * Timeline.instance.LayerHeight()), e, true, e.eventObj.eventObjID);
|
||||
}
|
||||
}
|
||||
|
||||
public class Deletion : IAction
|
||||
{
|
||||
List<TimelineEventObj> eventObjs;
|
||||
List<TimelineEventObj> deletedObjs;
|
||||
|
||||
public Deletion(List<TimelineEventObj> eventObjs)
|
||||
{
|
||||
this.eventObjs = eventObjs;
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
deletedObjs = eventObjs;
|
||||
for (int i = 0; i < eventObjs.Count; i++)
|
||||
var deletedEntities = new List<RiqEntity>();
|
||||
for (var i = 0; i < entityIds.Count; i++)
|
||||
{
|
||||
Selections.instance.Deselect(eventObjs[i]);
|
||||
Timeline.instance.DestroyEventObject(eventObjs[i].entity);
|
||||
var pastedEntityID = entityIds[i];
|
||||
var pastedEntity = GameManager.instance.Beatmap.Entities.Find(c => c.guid == pastedEntityID);
|
||||
|
||||
if (pastedEntity != null)
|
||||
{
|
||||
deletedEntities.Add(pastedEntity);
|
||||
|
||||
if (TimelineBlockManager.Instance.EntityMarkers.ContainsKey(pastedEntityID))
|
||||
{
|
||||
var marker = TimelineBlockManager.Instance.EntityMarkers[pastedEntityID];
|
||||
Selections.instance.Deselect(marker);
|
||||
|
||||
TimelineBlockManager.Instance.EntityMarkers.Remove(pastedEntityID);
|
||||
GameObject.Destroy(marker.gameObject);
|
||||
}
|
||||
|
||||
GameManager.instance.Beatmap.Entities.Remove(pastedEntity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Redo()
|
||||
{
|
||||
deletedObjs = eventObjs;
|
||||
for (int i = 0; i < eventObjs.Count; i++)
|
||||
GameManager.instance.SortEventsList();
|
||||
pasteEntityData.Clear();
|
||||
foreach (var entity in deletedEntities)
|
||||
{
|
||||
Selections.instance.Deselect(eventObjs[i]);
|
||||
Timeline.instance.DestroyEventObject(eventObjs[i].entity);
|
||||
}
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
for (int i = 0; i < deletedObjs.Count; i++)
|
||||
{
|
||||
RiqEntity e = deletedObjs[i].entity;
|
||||
eventObjs[i] = Timeline.instance.AddEventObject(e.datamodel, false, new Vector3((float)e.beat, -e["track"] * Timeline.instance.LayerHeight()), e, true);
|
||||
pasteEntityData.Add(entity.DeepCopy());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class Duplicate : IAction
|
||||
public class Move : ICommand
|
||||
{
|
||||
List<TimelineEventObj> eventObjs;
|
||||
List<TimelineEventObj> copiedObjs;
|
||||
private readonly List<Guid> entityIDs = new();
|
||||
private EntityMove newMove;
|
||||
private EntityMove lastMove;
|
||||
|
||||
public Duplicate(List<TimelineEventObj> eventObjs)
|
||||
private struct EntityMove
|
||||
{
|
||||
this.eventObjs = eventObjs;
|
||||
public List<double> beat;
|
||||
public List<int> layer;
|
||||
|
||||
public EntityMove(List<double> beat, List<int> layer)
|
||||
{
|
||||
this.beat = beat;
|
||||
this.layer = layer;
|
||||
}
|
||||
}
|
||||
|
||||
public Move(List<RiqEntity> originalEntities, List<double> newBeat, List<int> newLayer)
|
||||
{
|
||||
entityIDs = originalEntities.Select(c => c.guid).ToList();
|
||||
newMove = new EntityMove(newBeat, newLayer);
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
}
|
||||
lastMove = new EntityMove();
|
||||
lastMove.beat = new();
|
||||
lastMove.layer = new();
|
||||
|
||||
public void Redo()
|
||||
{
|
||||
for (int i = 0; i < copiedObjs.Count; i++)
|
||||
for (var i = 0; i < entityIDs.Count; i++)
|
||||
{
|
||||
RiqEntity e = copiedObjs[i].entity;
|
||||
eventObjs[i] = Timeline.instance.AddEventObject(e.datamodel, false, new Vector3((float)e.beat, -e["track"] * Timeline.instance.LayerHeight()), e, true);
|
||||
var entity = GameManager.instance.Beatmap.Entities.Find(c => c.guid == entityIDs[i]);
|
||||
|
||||
lastMove.beat.Add(entity.beat);
|
||||
lastMove.layer.Add((int)entity["track"]);
|
||||
|
||||
entity.beat = newMove.beat[i];
|
||||
entity["track"] = newMove.layer[i];
|
||||
|
||||
if (TimelineBlockManager.Instance.EntityMarkers.ContainsKey(entity.guid))
|
||||
TimelineBlockManager.Instance.EntityMarkers[entity.guid].SetColor((int)entity["track"]);
|
||||
}
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
copiedObjs = eventObjs;
|
||||
for (int i = 0; i < eventObjs.Count; i++)
|
||||
for (var i = 0; i < entityIDs.Count; i++)
|
||||
{
|
||||
Selections.instance.Deselect(eventObjs[i]);
|
||||
Timeline.instance.DestroyEventObject(eventObjs[i].entity);
|
||||
var entity = GameManager.instance.Beatmap.Entities.Find(c => c.guid == entityIDs[i]);
|
||||
|
||||
entity.beat = lastMove.beat[i];
|
||||
entity["track"] = lastMove.layer[i];
|
||||
|
||||
if (TimelineBlockManager.Instance.EntityMarkers.ContainsKey(entity.guid))
|
||||
TimelineBlockManager.Instance.EntityMarkers[entity.guid].SetColor((int)entity["track"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class Resize : ICommand
|
||||
{
|
||||
public Guid entityId;
|
||||
private EntityResize newResize;
|
||||
private EntityResize lastResize;
|
||||
|
||||
public struct EntityResize
|
||||
{
|
||||
public double beat;
|
||||
public float length;
|
||||
|
||||
public EntityResize(double beat, float length)
|
||||
{
|
||||
this.beat = beat;
|
||||
this.length = length;
|
||||
}
|
||||
}
|
||||
|
||||
public Resize(Guid entityId, double newBeat, float newLength)
|
||||
{
|
||||
this.entityId = entityId;
|
||||
newResize = new EntityResize(newBeat, newLength);
|
||||
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
var entity = GameManager.instance.Beatmap.Entities.Find(c => c.guid == entityId);
|
||||
|
||||
lastResize = new EntityResize(entity.beat, entity.length);
|
||||
|
||||
entity.beat = newResize.beat;
|
||||
entity.length = newResize.length;
|
||||
|
||||
if (TimelineBlockManager.Instance.EntityMarkers.ContainsKey(entityId))
|
||||
TimelineBlockManager.Instance.EntityMarkers[entityId].SetWidthHeight();
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
var entity = GameManager.instance.Beatmap.Entities.Find(c => c.guid == entityId);
|
||||
|
||||
entity.beat = lastResize.beat;
|
||||
entity.length = lastResize.length;
|
||||
|
||||
if (TimelineBlockManager.Instance.EntityMarkers.ContainsKey(entityId))
|
||||
TimelineBlockManager.Instance.EntityMarkers[entityId].SetWidthHeight();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -8,37 +8,30 @@ namespace HeavenStudio.Editor
|
|||
{
|
||||
public class CommandManager : MonoBehaviour
|
||||
{
|
||||
private Stack<IAction> historyStack = new Stack<IAction>();
|
||||
private Stack<IAction> redoHistoryStack = new Stack<IAction>();
|
||||
public static CommandManager Instance { get; private set; }
|
||||
|
||||
int maxItems = 128;
|
||||
private Stack<ICommand> historyStack = new Stack<ICommand>();
|
||||
private Stack<ICommand> redoHistoryStack = new Stack<ICommand>();
|
||||
|
||||
public bool canUndo()
|
||||
{
|
||||
return historyStack.Count > 0;
|
||||
}
|
||||
public bool canRedo()
|
||||
{
|
||||
return redoHistoryStack.Count > 0;
|
||||
}
|
||||
public int HistoryCount => historyStack.Count;
|
||||
|
||||
public static CommandManager instance { get; private set; }
|
||||
private int maxItems = 128;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
instance = this;
|
||||
Instance = this;
|
||||
}
|
||||
|
||||
public void Execute(IAction action)
|
||||
public void AddCommand(ICommand command)
|
||||
{
|
||||
action.Execute();
|
||||
historyStack.Push(action);
|
||||
command.Execute();
|
||||
historyStack.Push(command);
|
||||
redoHistoryStack.Clear();
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
public void UndoCommand()
|
||||
{
|
||||
if (!canUndo() || Conductor.instance.NotStopped()) return;
|
||||
if (!CanUndo() || Conductor.instance.NotStopped()) return;
|
||||
|
||||
if (historyStack.Count > 0)
|
||||
{
|
||||
|
@ -47,22 +40,14 @@ namespace HeavenStudio.Editor
|
|||
}
|
||||
}
|
||||
|
||||
public void Redo()
|
||||
public void RedoCommand()
|
||||
{
|
||||
if (!canRedo() || Conductor.instance.NotStopped()) return;
|
||||
if (!CanRedo() || Conductor.instance.NotStopped()) return;
|
||||
|
||||
if (redoHistoryStack.Count > 0)
|
||||
{
|
||||
historyStack.Push(redoHistoryStack.Peek());
|
||||
redoHistoryStack.Pop().Redo();
|
||||
}
|
||||
}
|
||||
|
||||
// this is here as to not hog up memory, "max undos" basically
|
||||
private void EnsureCapacity()
|
||||
{
|
||||
if (maxItems > 0)
|
||||
{
|
||||
redoHistoryStack.Pop().Execute();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -71,5 +56,15 @@ namespace HeavenStudio.Editor
|
|||
historyStack.Clear();
|
||||
redoHistoryStack.Clear();
|
||||
}
|
||||
|
||||
public bool CanUndo()
|
||||
{
|
||||
return historyStack.Count > 0;
|
||||
}
|
||||
public bool CanRedo()
|
||||
{
|
||||
return redoHistoryStack.Count > 0;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace HeavenStudio.Editor.Commands
|
||||
{
|
||||
public interface IAction
|
||||
{
|
||||
void Execute();
|
||||
void Undo();
|
||||
void Redo();
|
||||
}
|
||||
}
|
8
Assets/Scripts/LevelEditor/Commands/ICommand.cs
Normal file
|
@ -0,0 +1,8 @@
|
|||
namespace HeavenStudio.Editor.Commands
|
||||
{
|
||||
public interface ICommand
|
||||
{
|
||||
void Execute();
|
||||
void Undo();
|
||||
}
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d6a4c5ae13e9de743befd392956aaea7
|
||||
guid: 3e3bd3cc84702894b8dff6ecfc62e943
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
238
Assets/Scripts/LevelEditor/Commands/SpecialMarker.cs
Normal file
|
@ -0,0 +1,238 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using Jukebox;
|
||||
|
||||
using HeavenStudio.Editor.Track;
|
||||
using Newtonsoft.Json;
|
||||
using UnityEditor;
|
||||
using UnityEngine.Timeline;
|
||||
|
||||
namespace HeavenStudio.Editor.Commands
|
||||
{
|
||||
public class AddMarker : ICommand
|
||||
{
|
||||
private RiqEntity placedEntityData;
|
||||
private Guid placedEventID;
|
||||
|
||||
private int placedTimes = 0;
|
||||
private SpecialTimeline.HoveringTypes type;
|
||||
|
||||
public AddMarker(RiqEntity placedEntityData, Guid placedEventID, SpecialTimeline.HoveringTypes type)
|
||||
{
|
||||
this.placedEntityData = placedEntityData.DeepCopy();
|
||||
this.placedEventID = placedEventID;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
if (placedTimes > 0)
|
||||
{
|
||||
var entity = placedEntityData.DeepCopy();
|
||||
entity.guid = placedEventID;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case SpecialTimeline.HoveringTypes.TempoChange:
|
||||
GameManager.instance.Beatmap.TempoChanges.Add(entity);
|
||||
SpecialTimeline.instance.AddTempoChange(false, entity);
|
||||
break;
|
||||
case SpecialTimeline.HoveringTypes.VolumeChange:
|
||||
GameManager.instance.Beatmap.VolumeChanges.Add(entity);
|
||||
SpecialTimeline.instance.AddVolumeChange(false, entity);
|
||||
break;
|
||||
case SpecialTimeline.HoveringTypes.SectionChange:
|
||||
GameManager.instance.Beatmap.SectionMarkers.Add(entity);
|
||||
SpecialTimeline.instance.AddChartSection(false, entity);
|
||||
break;
|
||||
}
|
||||
|
||||
GameManager.instance.SortEventsList();
|
||||
}
|
||||
placedTimes++;
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
RiqEntity createdEntity = null;
|
||||
switch (type)
|
||||
{
|
||||
case SpecialTimeline.HoveringTypes.TempoChange:
|
||||
createdEntity = GameManager.instance.Beatmap.TempoChanges.Find(x => x.guid == placedEventID);
|
||||
break;
|
||||
case SpecialTimeline.HoveringTypes.VolumeChange:
|
||||
createdEntity = GameManager.instance.Beatmap.VolumeChanges.Find(x => x.guid == placedEventID);
|
||||
break;
|
||||
case SpecialTimeline.HoveringTypes.SectionChange:
|
||||
createdEntity = GameManager.instance.Beatmap.SectionMarkers.Find(x => x.guid == placedEventID);
|
||||
break;
|
||||
}
|
||||
if (createdEntity != null)
|
||||
{
|
||||
placedEntityData = createdEntity.DeepCopy();
|
||||
|
||||
var marker = SpecialTimeline.instance.specialTimelineObjs[createdEntity.guid];
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case SpecialTimeline.HoveringTypes.TempoChange:
|
||||
GameManager.instance.Beatmap.TempoChanges.Remove(createdEntity);
|
||||
break;
|
||||
case SpecialTimeline.HoveringTypes.VolumeChange:
|
||||
GameManager.instance.Beatmap.VolumeChanges.Remove(createdEntity);
|
||||
break;
|
||||
case SpecialTimeline.HoveringTypes.SectionChange:
|
||||
GameManager.instance.Beatmap.SectionMarkers.Remove(createdEntity);
|
||||
break;
|
||||
}
|
||||
|
||||
SpecialTimeline.instance.specialTimelineObjs.Remove(createdEntity.guid);
|
||||
GameObject.Destroy(marker.gameObject);
|
||||
|
||||
GameManager.instance.SortEventsList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class DeleteMarker : ICommand
|
||||
{
|
||||
private RiqEntity deletedEntityData;
|
||||
private Guid deletedEventID;
|
||||
private SpecialTimeline.HoveringTypes type;
|
||||
|
||||
public DeleteMarker(Guid deletedEventID, SpecialTimeline.HoveringTypes type)
|
||||
{
|
||||
this.deletedEventID = deletedEventID;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
RiqEntity deletedEntity = null;
|
||||
switch (type)
|
||||
{
|
||||
case SpecialTimeline.HoveringTypes.TempoChange:
|
||||
deletedEntity = GameManager.instance.Beatmap.TempoChanges.Find(x => x.guid == deletedEventID);
|
||||
break;
|
||||
case SpecialTimeline.HoveringTypes.VolumeChange:
|
||||
deletedEntity = GameManager.instance.Beatmap.VolumeChanges.Find(x => x.guid == deletedEventID);
|
||||
break;
|
||||
case SpecialTimeline.HoveringTypes.SectionChange:
|
||||
deletedEntity = GameManager.instance.Beatmap.SectionMarkers.Find(x => x.guid == deletedEventID);
|
||||
break;
|
||||
}
|
||||
if (deletedEntity != null)
|
||||
{
|
||||
var marker = SpecialTimeline.instance.specialTimelineObjs[deletedEntity.guid];
|
||||
|
||||
deletedEntityData = deletedEntity.DeepCopy();
|
||||
deletedEntityData.guid = deletedEntity.guid;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case SpecialTimeline.HoveringTypes.TempoChange:
|
||||
GameManager.instance.Beatmap.TempoChanges.Remove(deletedEntity);
|
||||
break;
|
||||
case SpecialTimeline.HoveringTypes.VolumeChange:
|
||||
GameManager.instance.Beatmap.VolumeChanges.Remove(deletedEntity);
|
||||
break;
|
||||
case SpecialTimeline.HoveringTypes.SectionChange:
|
||||
GameManager.instance.Beatmap.SectionMarkers.Remove(deletedEntity);
|
||||
break;
|
||||
}
|
||||
|
||||
SpecialTimeline.instance.specialTimelineObjs.Remove(deletedEntity.guid);
|
||||
GameObject.Destroy(marker.gameObject);
|
||||
|
||||
GameManager.instance.SortEventsList();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
if (deletedEntityData != null)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case SpecialTimeline.HoveringTypes.TempoChange:
|
||||
GameManager.instance.Beatmap.TempoChanges.Add(deletedEntityData);
|
||||
SpecialTimeline.instance.AddTempoChange(false, deletedEntityData);
|
||||
break;
|
||||
case SpecialTimeline.HoveringTypes.VolumeChange:
|
||||
GameManager.instance.Beatmap.VolumeChanges.Add(deletedEntityData);
|
||||
SpecialTimeline.instance.AddVolumeChange(false, deletedEntityData);
|
||||
break;
|
||||
case SpecialTimeline.HoveringTypes.SectionChange:
|
||||
GameManager.instance.Beatmap.SectionMarkers.Add(deletedEntityData);
|
||||
SpecialTimeline.instance.AddChartSection(false, deletedEntityData);
|
||||
break;
|
||||
}
|
||||
deletedEntityData = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class MoveMarker : ICommand
|
||||
{
|
||||
private Guid entityId;
|
||||
private double newBeat, lastBeat;
|
||||
private SpecialTimeline.HoveringTypes type;
|
||||
|
||||
public MoveMarker(Guid entityId, double newBeat, SpecialTimeline.HoveringTypes type)
|
||||
{
|
||||
this.entityId = entityId;
|
||||
this.newBeat = newBeat;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
RiqEntity movedEntity = null;
|
||||
switch (type)
|
||||
{
|
||||
case SpecialTimeline.HoveringTypes.TempoChange:
|
||||
movedEntity = GameManager.instance.Beatmap.TempoChanges.Find(x => x.guid == entityId);
|
||||
break;
|
||||
case SpecialTimeline.HoveringTypes.VolumeChange:
|
||||
movedEntity = GameManager.instance.Beatmap.VolumeChanges.Find(x => x.guid == entityId);
|
||||
break;
|
||||
case SpecialTimeline.HoveringTypes.SectionChange:
|
||||
movedEntity = GameManager.instance.Beatmap.SectionMarkers.Find(x => x.guid == entityId);
|
||||
break;
|
||||
}
|
||||
if (movedEntity != null)
|
||||
{
|
||||
lastBeat = movedEntity.beat;
|
||||
movedEntity.beat = newBeat;
|
||||
}
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
RiqEntity movedEntity = null;
|
||||
switch (type)
|
||||
{
|
||||
case SpecialTimeline.HoveringTypes.TempoChange:
|
||||
movedEntity = GameManager.instance.Beatmap.TempoChanges.Find(x => x.guid == entityId);
|
||||
break;
|
||||
case SpecialTimeline.HoveringTypes.VolumeChange:
|
||||
movedEntity = GameManager.instance.Beatmap.VolumeChanges.Find(x => x.guid == entityId);
|
||||
break;
|
||||
case SpecialTimeline.HoveringTypes.SectionChange:
|
||||
movedEntity = GameManager.instance.Beatmap.SectionMarkers.Find(x => x.guid == entityId);
|
||||
break;
|
||||
}
|
||||
if (movedEntity != null)
|
||||
{
|
||||
movedEntity.beat = lastBeat;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 64b35e3b4d623144a82ed956ee52a136
|
||||
guid: 7052872845575e443816f75abb8e7e49
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
|
@ -4,7 +4,7 @@ using UnityEngine;
|
|||
|
||||
using HeavenStudio.Editor.Commands;
|
||||
|
||||
public class TestCommand : IAction
|
||||
public class TestCommand : ICommand
|
||||
{
|
||||
private GameObject prefab;
|
||||
private Vector3 pos;
|
||||
|
|
|
@ -1,27 +1,20 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using UnityEngine.Networking;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using TMPro;
|
||||
using Starpelly;
|
||||
using SFB;
|
||||
|
||||
using HeavenStudio.Common;
|
||||
using HeavenStudio.Editor.Track;
|
||||
using HeavenStudio.Util;
|
||||
using HeavenStudio.StudioDance;
|
||||
|
||||
using Jukebox;
|
||||
|
||||
using System.IO.Compression;
|
||||
using System.Text;
|
||||
using UnityEditor;
|
||||
using System.Linq;
|
||||
|
||||
namespace HeavenStudio.Editor
|
||||
{
|
||||
|
@ -50,6 +43,8 @@ namespace HeavenStudio.Editor
|
|||
[SerializeField] private Button SaveBTN;
|
||||
[SerializeField] private Button UndoBTN;
|
||||
[SerializeField] private Button RedoBTN;
|
||||
[SerializeField] private Button CopyBTN;
|
||||
[SerializeField] private Button PasteBTN;
|
||||
[SerializeField] private Button MusicSelectBTN;
|
||||
[SerializeField] private Button FullScreenBTN;
|
||||
[SerializeField] private Button TempoFinderBTN;
|
||||
|
@ -63,6 +58,8 @@ namespace HeavenStudio.Editor
|
|||
[SerializeField] private Button EditorThemeBTN;
|
||||
[SerializeField] private Button EditorSettingsBTN;
|
||||
|
||||
[SerializeField] private GameObject DebugHolder;
|
||||
|
||||
[Header("Dialogs")]
|
||||
[SerializeField] private Dialog[] Dialogs;
|
||||
|
||||
|
@ -84,6 +81,8 @@ namespace HeavenStudio.Editor
|
|||
|
||||
public bool isShortcutsEnabled { get { return (!inAuthorativeMenu) && (!editingInputField); } }
|
||||
|
||||
private Vector2 lastScreenSize = Vector2.zero;
|
||||
|
||||
public static Editor instance { get; private set; }
|
||||
|
||||
private void Start()
|
||||
|
@ -110,6 +109,8 @@ namespace HeavenStudio.Editor
|
|||
Tooltip.AddTooltip(SaveBTN.gameObject, "Save Project <color=#adadad>[Ctrl+S]</color>\nSave Project As <color=#adadad>[Ctrl+Alt+S]</color>");
|
||||
Tooltip.AddTooltip(UndoBTN.gameObject, "Undo <color=#adadad>[Ctrl+Z]</color>");
|
||||
Tooltip.AddTooltip(RedoBTN.gameObject, "Redo <color=#adadad>[Ctrl+Y or Ctrl+Shift+Z]</color>");
|
||||
Tooltip.AddTooltip(CopyBTN.gameObject, "Copy <color=#adadad>[Ctrl+C]</color>");
|
||||
Tooltip.AddTooltip(PasteBTN.gameObject, "Paste <color=#adadad>[Ctrl+V]</color>");
|
||||
Tooltip.AddTooltip(MusicSelectBTN.gameObject, "Music Select");
|
||||
Tooltip.AddTooltip(FullScreenBTN.gameObject, "Preview <color=#adadad>[Tab]</color>");
|
||||
Tooltip.AddTooltip(TempoFinderBTN.gameObject, "Tempo Finder");
|
||||
|
@ -145,6 +146,12 @@ namespace HeavenStudio.Editor
|
|||
|
||||
public void LateUpdate()
|
||||
{
|
||||
if (lastScreenSize != new Vector2(UnityEngine.Screen.width, UnityEngine.Screen.height))
|
||||
{
|
||||
// Timeline.OnScreenResize();
|
||||
}
|
||||
lastScreenSize = new Vector2(UnityEngine.Screen.width, UnityEngine.Screen.height);
|
||||
|
||||
#region Keyboard Shortcuts
|
||||
if (isShortcutsEnabled)
|
||||
{
|
||||
|
@ -155,9 +162,7 @@ namespace HeavenStudio.Editor
|
|||
|
||||
if (Input.GetKeyDown(KeyCode.Delete) || Input.GetKeyDown(KeyCode.Backspace))
|
||||
{
|
||||
List<TimelineEventObj> ev = new List<TimelineEventObj>();
|
||||
for (int i = 0; i < Selections.instance.eventsSelected.Count; i++) ev.Add(Selections.instance.eventsSelected[i]);
|
||||
CommandManager.instance.Execute(new Commands.Deletion(ev));
|
||||
CommandManager.Instance.AddCommand(new Commands.Delete(Selections.instance.eventsSelected.Select(c => c.entity.guid).ToList()));
|
||||
}
|
||||
|
||||
if (Input.GetKey(KeyCode.LeftControl))
|
||||
|
@ -165,13 +170,21 @@ namespace HeavenStudio.Editor
|
|||
if (Input.GetKeyDown(KeyCode.Z))
|
||||
{
|
||||
if (Input.GetKey(KeyCode.LeftShift))
|
||||
CommandManager.instance.Redo();
|
||||
CommandManager.Instance.RedoCommand();
|
||||
else
|
||||
CommandManager.instance.Undo();
|
||||
CommandManager.Instance.UndoCommand();
|
||||
}
|
||||
else if (Input.GetKeyDown(KeyCode.Y))
|
||||
{
|
||||
CommandManager.instance.Redo();
|
||||
CommandManager.Instance.RedoCommand();
|
||||
}
|
||||
else if (Input.GetKeyDown(KeyCode.C))
|
||||
{
|
||||
Timeline.instance.CopySelected();
|
||||
}
|
||||
else if (Input.GetKeyDown(KeyCode.V))
|
||||
{
|
||||
Timeline.instance.Paste();
|
||||
}
|
||||
|
||||
if (Input.GetKey(KeyCode.LeftShift))
|
||||
|
@ -205,21 +218,38 @@ namespace HeavenStudio.Editor
|
|||
SaveRemix(false);
|
||||
}
|
||||
}
|
||||
|
||||
if (Input.GetKeyDown(KeyCode.F12))
|
||||
{
|
||||
DebugHolder.gameObject.SetActive(!DebugHolder.activeInHierarchy);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
if (CommandManager.instance.canUndo())
|
||||
// Undo+Redo
|
||||
if (CommandManager.Instance.CanUndo())
|
||||
UndoBTN.transform.GetChild(0).GetComponent<Image>().color = Color.white;
|
||||
else
|
||||
UndoBTN.transform.GetChild(0).GetComponent<Image>().color = Color.gray;
|
||||
|
||||
if (CommandManager.instance.canRedo())
|
||||
if (CommandManager.Instance.CanRedo())
|
||||
RedoBTN.transform.GetChild(0).GetComponent<Image>().color = Color.white;
|
||||
else
|
||||
RedoBTN.transform.GetChild(0).GetComponent<Image>().color = Color.gray;
|
||||
|
||||
// Copy+Paste
|
||||
if (Selections.instance.eventsSelected.Count > 0)
|
||||
CopyBTN.transform.GetChild(0).GetComponent<Image>().color = Color.white;
|
||||
else
|
||||
CopyBTN.transform.GetChild(0).GetComponent<Image>().color = Color.gray;
|
||||
if (Timeline.instance.CopiedEntities.Count > 0)
|
||||
PasteBTN.transform.GetChild(0).GetComponent<Image>().color = Color.white;
|
||||
else
|
||||
PasteBTN.transform.GetChild(0).GetComponent<Image>().color = Color.gray;
|
||||
|
||||
|
||||
if (Timeline.instance.timelineState.selected && Editor.instance.canSelect)
|
||||
{
|
||||
/*
|
||||
if (Input.GetMouseButtonUp(0))
|
||||
{
|
||||
List<TimelineEventObj> selectedEvents = Timeline.instance.eventObjs.FindAll(c => c.selected == true && c.eligibleToMove == true);
|
||||
|
@ -240,6 +270,7 @@ namespace HeavenStudio.Editor
|
|||
CommandManager.instance.Execute(new Commands.Move(result));
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -357,6 +388,7 @@ namespace HeavenStudio.Editor
|
|||
{
|
||||
try
|
||||
{
|
||||
RiqFileHandler.UnlockCache();
|
||||
RiqFileHandler.WriteRiq(GameManager.instance.Beatmap);
|
||||
RiqFileHandler.PackRiq(path, true);
|
||||
Debug.Log("Packed RIQ successfully!");
|
||||
|
@ -407,6 +439,7 @@ namespace HeavenStudio.Editor
|
|||
|
||||
try
|
||||
{
|
||||
RiqFileHandler.UnlockCache();
|
||||
string tmpDir = RiqFileHandler.ExtractRiq(path);
|
||||
Debug.Log("Imported RIQ successfully!");
|
||||
LoadRemix();
|
||||
|
@ -424,7 +457,7 @@ namespace HeavenStudio.Editor
|
|||
currentRemixPath = path;
|
||||
remixName = Path.GetFileName(path);
|
||||
UpdateEditorStatus(false);
|
||||
CommandManager.instance.Clear();
|
||||
CommandManager.Instance.Clear();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -28,16 +28,39 @@ namespace HeavenStudio.Editor
|
|||
|
||||
private void Awake()
|
||||
{
|
||||
var defaultTheme = JsonConvert.DeserializeObject<Theme>(ThemeTXT.text);
|
||||
if (File.Exists(Application.persistentDataPath + "/editorTheme.json"))
|
||||
{
|
||||
string json = File.ReadAllText(Application.persistentDataPath + "/editorTheme.json");
|
||||
theme = JsonConvert.DeserializeObject<Theme>(json);
|
||||
|
||||
// Naive way of doing it? Possibly, but we should have a theme editor in the future.
|
||||
if (defaultTheme.properties.LayerColors != null)
|
||||
{
|
||||
theme.properties.LayerColors = new string[]
|
||||
{
|
||||
theme.properties.Layer1Col,
|
||||
theme.properties.Layer2Col,
|
||||
theme.properties.Layer3Col,
|
||||
theme.properties.Layer4Col,
|
||||
theme.properties.Layer5Col
|
||||
};
|
||||
// Create a function for this in the future.
|
||||
var savedTheme = JsonConvert.SerializeObject(theme, Formatting.Indented, new JsonSerializerSettings()
|
||||
{
|
||||
TypeNameHandling = TypeNameHandling.None,
|
||||
NullValueHandling = NullValueHandling.Include,
|
||||
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
|
||||
});
|
||||
PersistentDataManager.SaveTheme(savedTheme);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
PersistentDataManager.SaveTheme(ThemeTXT.text);
|
||||
theme = JsonConvert.DeserializeObject<Theme>(ThemeTXT.text);
|
||||
theme = defaultTheme;
|
||||
}
|
||||
theme.SetLayersGradient();
|
||||
}
|
||||
|
||||
private void Start()
|
||||
|
@ -61,30 +84,12 @@ namespace HeavenStudio.Editor
|
|||
layer.SetActive(true);
|
||||
layer.transform.GetChild(0).GetComponent<TMP_Text>().text = $"Track {i + 1}";
|
||||
|
||||
Color c = Color.white;
|
||||
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
c = theme.properties.Layer1Col.Hex2RGB();
|
||||
break;
|
||||
case 1:
|
||||
c = theme.properties.Layer2Col.Hex2RGB();
|
||||
break;
|
||||
case 2:
|
||||
c = theme.properties.Layer3Col.Hex2RGB();
|
||||
break;
|
||||
case 3:
|
||||
c = theme.properties.Layer4Col.Hex2RGB();
|
||||
break;
|
||||
case 4:
|
||||
c = theme.properties.Layer5Col.Hex2RGB();
|
||||
break;
|
||||
}
|
||||
|
||||
Color c = theme.LayersGradient.Evaluate(i / (float)(Timeline.instance.LayerCount - 1));
|
||||
|
||||
layer.GetComponent<Image>().color = c;
|
||||
Tooltip.AddTooltip(layer, $"Track {i + 1}");
|
||||
}
|
||||
|
||||
Destroy(layer);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -89,8 +89,8 @@ namespace HeavenStudio.Editor
|
|||
eventSelector.SetActive(false);
|
||||
this.entity = entity;
|
||||
|
||||
string col = TrackToThemeColour(entity["track"]);
|
||||
Editor.instance.SetGameEventTitle($"Properties for <color=#{col}>{action.displayName}</color> on Beat {entity.beat}");
|
||||
string col = TrackToThemeColour((int)entity["track"]);
|
||||
Editor.instance.SetGameEventTitle($"Properties for <color=#{col}>{action.displayName}</color> on Beat {entity.beat.ToString("F2")} on <color=#{col}>Track {(int)entity["track"] + 1}</color>");
|
||||
|
||||
DestroyParams();
|
||||
|
||||
|
@ -194,7 +194,7 @@ namespace HeavenStudio.Editor
|
|||
GameObject input = Instantiate(prefab);
|
||||
input.transform.SetParent(this.gameObject.transform);
|
||||
input.SetActive(true);
|
||||
input.transform.localScale = Vector2.one;
|
||||
input.transform.localScale = Vector3.one;
|
||||
|
||||
if(tooltip != string.Empty)
|
||||
Tooltip.AddTooltip(input, "", tooltip);
|
||||
|
|
|
@ -10,9 +10,11 @@ using DG.Tweening;
|
|||
using Starpelly;
|
||||
|
||||
using HeavenStudio.Editor.Track;
|
||||
using System.Text;
|
||||
|
||||
namespace HeavenStudio.Editor
|
||||
{
|
||||
// I hate the antichrist.
|
||||
public class GridGameSelector : MonoBehaviour
|
||||
{
|
||||
public Minigames.Minigame SelectedMinigame;
|
||||
|
@ -39,6 +41,7 @@ namespace HeavenStudio.Editor
|
|||
private bool gameOpen;
|
||||
private float selectorHeight;
|
||||
private float eventSize;
|
||||
private float timeSinceUpdateIndex = 0.0f;
|
||||
|
||||
public static GridGameSelector instance;
|
||||
|
||||
|
@ -93,6 +96,7 @@ namespace HeavenStudio.Editor
|
|||
currentEventIndex = 0;
|
||||
|
||||
CurrentSelected.transform.DOLocalMoveY(eventsParent.transform.GetChild(currentEventIndex).localPosition.y + eventsParent.transform.localPosition.y, 0.35f).SetEase(Ease.OutExpo);
|
||||
timeSinceUpdateIndex = 0;
|
||||
}
|
||||
|
||||
private void UpdateScrollPosition()
|
||||
|
@ -115,6 +119,13 @@ namespace HeavenStudio.Editor
|
|||
Mathf.Lerp(lastPos.y, end, 12 * Time.deltaTime),
|
||||
lastPos.z
|
||||
);
|
||||
|
||||
timeSinceUpdateIndex += Time.deltaTime;
|
||||
|
||||
CurrentSelected.GetComponent<RectTransform>().anchoredPosition =
|
||||
new Vector2(
|
||||
(Mathf.Cos(timeSinceUpdateIndex * 2.65f) * 12) + 12,
|
||||
CurrentSelected.GetComponent<RectTransform>().anchoredPosition.y);
|
||||
SetColors();
|
||||
}
|
||||
|
||||
|
@ -156,21 +167,31 @@ namespace HeavenStudio.Editor
|
|||
if (!EventCaller.FXOnlyGames().Contains(SelectedMinigame))
|
||||
{
|
||||
GameObject sg = Instantiate(EventRef, eventsParent);
|
||||
sg.GetComponent<TMP_Text>().text = "Switch Game";
|
||||
sg.GetComponentInChildren<TMP_Text>().text = "Switch Game";
|
||||
sg.SetActive(true);
|
||||
if (index == 0) sg.GetComponent<TMP_Text>().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
|
||||
if (index == 0) sg.GetComponentInChildren<TMP_Text>().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
|
||||
} else {
|
||||
index++;
|
||||
if (SelectedMinigame.name == "gameManager") index++;
|
||||
}
|
||||
|
||||
for (int i = 0; i < SelectedMinigame.actions.Count; i++)
|
||||
for (var i = 0; i < SelectedMinigame.actions.Count; i++)
|
||||
{
|
||||
if (SelectedMinigame.actions[i].actionName == "switchGame" || SelectedMinigame.actions[i].hidden) continue;
|
||||
GameObject g = Instantiate(EventRef, eventsParent);
|
||||
g.GetComponent<TMP_Text>().text = SelectedMinigame.actions[i].displayName;
|
||||
var action = SelectedMinigame.actions[i];
|
||||
if (action.actionName == "switchGame" || action.hidden) continue;
|
||||
|
||||
var g = Instantiate(EventRef, eventsParent);
|
||||
var label = g.GetComponentInChildren<TMP_Text>();
|
||||
|
||||
label.text = action.displayName;
|
||||
if (action.parameters != null && action.parameters.Count > 0)
|
||||
g.transform.GetChild(1).gameObject.SetActive(true);
|
||||
|
||||
if (index - 1 == i)
|
||||
label.color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
|
||||
|
||||
g.SetActive(true);
|
||||
if (index - 1 == i) g.GetComponent<TMP_Text>().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -192,9 +213,23 @@ namespace HeavenStudio.Editor
|
|||
//CurrentSelected.GetComponent<Image>().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
|
||||
|
||||
for (int i = 0; i < eventsParent.transform.childCount; i++)
|
||||
eventsParent.GetChild(i).GetComponent<TMP_Text>().color = EditorTheme.theme.properties.EventNormalCol.Hex2RGB();
|
||||
|
||||
eventsParent.GetChild(currentEventIndex).GetComponent<TMP_Text>().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
|
||||
{
|
||||
var eventTxt = eventsParent.GetChild(i).GetChild(0).GetComponent<TMP_Text>();
|
||||
var goalX = -25;
|
||||
if (i == currentEventIndex)
|
||||
{
|
||||
eventTxt.color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
|
||||
goalX = 16;
|
||||
}
|
||||
else
|
||||
{
|
||||
eventTxt.color = EditorTheme.theme.properties.EventNormalCol.Hex2RGB();
|
||||
}
|
||||
eventTxt.rectTransform.anchoredPosition =
|
||||
new Vector2(
|
||||
Mathf.Lerp(eventTxt.rectTransform.anchoredPosition.x, goalX, Time.deltaTime * 12f),
|
||||
eventTxt.rectTransform.anchoredPosition.y);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: find the equation to get the sizes automatically, nobody's been able to figure one out yet (might have to be manual?)
|
||||
|
@ -353,7 +388,7 @@ namespace HeavenStudio.Editor
|
|||
{
|
||||
if (Conductor.instance.NotStopped() || Editor.instance.inAuthorativeMenu) return;
|
||||
|
||||
if (Timeline.instance.CheckIfMouseInTimeline() && dragTimes < 1)
|
||||
if (Timeline.instance.MouseInTimeline && dragTimes < 1)
|
||||
{
|
||||
Timeline.instance.timelineState.SetState(Timeline.CurrentTimelineState.State.Selection);
|
||||
dragTimes++;
|
||||
|
|
|
@ -19,6 +19,8 @@ namespace HeavenStudio.Editor
|
|||
public TMP_Dropdown dropdown;
|
||||
private Array enumVals;
|
||||
|
||||
private bool openedDropdown = false;
|
||||
|
||||
new public void SetProperties(string propertyName, object type, string caption)
|
||||
{
|
||||
InitProperties(propertyName, caption);
|
||||
|
@ -51,6 +53,24 @@ namespace HeavenStudio.Editor
|
|||
|
||||
private void Update()
|
||||
{
|
||||
var scrollbar = GetComponentInChildren<ScrollRect>()?.verticalScrollbar;
|
||||
|
||||
// This is bad but we'll fix it later.
|
||||
if (scrollbar != null)
|
||||
{
|
||||
if (openedDropdown == false)
|
||||
{
|
||||
openedDropdown = true;
|
||||
|
||||
var valuePos = (float)dropdown.value / (dropdown.options.Count - 1);
|
||||
var scrollVal = scrollbar.direction == Scrollbar.Direction.TopToBottom ? valuePos : 1.0f - valuePos;
|
||||
scrollbar.value = Mathf.Max(0.001f, scrollVal);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
openedDropdown = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -28,7 +28,7 @@ namespace HeavenStudio.Editor
|
|||
colorPreview.colorPicker.onColorChanged += _ =>
|
||||
parameterManager.chart[propertyName] = colorPreview.colorPicker.color;
|
||||
|
||||
Color paramCol = parameterManager.chart[propertyName];
|
||||
Color paramCol = (Color)parameterManager.chart[propertyName];
|
||||
|
||||
ColorBTN.onClick.AddListener(
|
||||
() =>
|
||||
|
|
|
@ -20,12 +20,15 @@ namespace HeavenStudio.Editor
|
|||
|
||||
private void Update()
|
||||
{
|
||||
// Should never happen to begin with.
|
||||
/*
|
||||
var buggedSelections = eventsSelected.FindAll(c => c == null);
|
||||
if (buggedSelections.Count > 0)
|
||||
{
|
||||
for (int i = 0; i < buggedSelections.Count; i++)
|
||||
Deselect(buggedSelections[i]);
|
||||
}
|
||||
*/
|
||||
if (Editor.instance.isShortcutsEnabled)
|
||||
{
|
||||
if (Input.GetKey(KeyCode.LeftControl))
|
||||
|
@ -38,6 +41,10 @@ namespace HeavenStudio.Editor
|
|||
{
|
||||
DeselectAll();
|
||||
eventsSelected.Add(eventToAdd);
|
||||
eventToAdd.selected = true;
|
||||
eventToAdd.OnSelect();
|
||||
|
||||
TimelineBlockManager.Instance.SortMarkers();
|
||||
|
||||
// CommandManager.instance.Execute(new Commands.Selection(new List<TimelineEventObj>() { eventToAdd } ));
|
||||
}
|
||||
|
@ -46,41 +53,66 @@ namespace HeavenStudio.Editor
|
|||
{
|
||||
if (!eventsSelected.Contains(eventToAdd))
|
||||
{
|
||||
eventToAdd.selected = true;
|
||||
eventToAdd.OnSelect();
|
||||
eventsSelected.Add(eventToAdd);
|
||||
}
|
||||
else
|
||||
{
|
||||
eventToAdd.selected = false;
|
||||
eventToAdd.OnDeselect();
|
||||
eventsSelected.Remove(eventToAdd);
|
||||
}
|
||||
TimelineBlockManager.Instance.SortMarkers();
|
||||
}
|
||||
|
||||
public void DragSelect(TimelineEventObj eventToAdd)
|
||||
{
|
||||
if (!eventsSelected.Contains(eventToAdd))
|
||||
{
|
||||
eventToAdd.selected = true;
|
||||
eventsSelected.Add(eventToAdd);
|
||||
eventToAdd.OnSelect();
|
||||
}
|
||||
}
|
||||
|
||||
public void SelectAll()
|
||||
{
|
||||
return;
|
||||
/*
|
||||
DeselectAll();
|
||||
var eventObjs = Timeline.instance.eventObjs;
|
||||
for (int i = 0; i < eventObjs.Count; i++)
|
||||
{
|
||||
eventObjs[i].selected = true;
|
||||
eventObjs[i].OnSelect();
|
||||
|
||||
eventsSelected.Add(eventObjs[i]);
|
||||
}
|
||||
TimelineBlockManager.Instance.SortMarkers();
|
||||
*/
|
||||
}
|
||||
|
||||
public void DeselectAll()
|
||||
{
|
||||
foreach (var @event in eventsSelected)
|
||||
{
|
||||
@event.selected = false;
|
||||
@event.OnSelect();
|
||||
}
|
||||
eventsSelected.Clear();
|
||||
TimelineBlockManager.Instance.SortMarkers();
|
||||
}
|
||||
|
||||
public void Deselect(TimelineEventObj eventToDeselect)
|
||||
{
|
||||
if (eventsSelected.Contains(eventToDeselect))
|
||||
{
|
||||
eventToDeselect.selected = false;
|
||||
eventToDeselect.OnDeselect();
|
||||
eventsSelected.Remove(eventToDeselect);
|
||||
}
|
||||
TimelineBlockManager.Instance.SortMarkers();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,4 +1,7 @@
|
|||
using Newtonsoft.Json;
|
||||
using Starpelly;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace HeavenStudio.Editor
|
||||
|
@ -23,6 +26,8 @@ namespace HeavenStudio.Editor
|
|||
public string Layer4Col;
|
||||
public string Layer5Col;
|
||||
|
||||
public string[] LayerColors = null;
|
||||
|
||||
public string EventSelectedCol;
|
||||
public string EventNormalCol;
|
||||
|
||||
|
@ -32,5 +37,23 @@ namespace HeavenStudio.Editor
|
|||
public string BoxSelectionCol;
|
||||
public string BoxSelectionOutlineCol;
|
||||
}
|
||||
|
||||
[JsonIgnore]
|
||||
public Gradient LayersGradient { get; private set; }
|
||||
|
||||
public void SetLayersGradient()
|
||||
{
|
||||
if (properties.LayerColors == null) return;
|
||||
|
||||
LayersGradient = new Gradient();
|
||||
var colorKeys = new List<GradientColorKey>();
|
||||
for (var i = 0; i < properties.LayerColors.Length; i++)
|
||||
{
|
||||
var color = properties.LayerColors[i];
|
||||
colorKeys.Add(new GradientColorKey(color.Hex2RGB(), (float)i / (properties.LayerColors.Length - 1)));
|
||||
}
|
||||
|
||||
LayersGradient.colorKeys = colorKeys.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace HeavenStudio.Editor.Track
|
||||
{
|
||||
public class KeepSizeRelativeToContent : MonoBehaviour
|
||||
{
|
||||
private RectTransform rectTransform;
|
||||
|
||||
public float sizeDeltaXInternal;
|
||||
|
||||
public float sizeDeltaX = 1.0f;
|
||||
public float multiply;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
rectTransform = GetComponent<RectTransform>();
|
||||
SetScale(Timeline.instance.TimelineContent.localScale.x);
|
||||
}
|
||||
|
||||
private void LateUpdate()
|
||||
{
|
||||
SetScale(Timeline.instance.TimelineContent.localScale.x);
|
||||
}
|
||||
|
||||
private void SetScale(float scale)
|
||||
{
|
||||
rectTransform.localScale = new Vector3((1.0f / scale) * multiply, transform.localScale.y, 1);
|
||||
LayoutRebuilder.ForceRebuildLayoutImmediate(rectTransform);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -30,8 +30,8 @@ public class SectionDialog : Dialog
|
|||
public void SetSectionObj(SectionTimelineObj sectionObj)
|
||||
{
|
||||
this.sectionObj = sectionObj;
|
||||
sectionName.text = sectionObj.chartSection["sectionName"];
|
||||
challengeEnable.isOn = sectionObj.chartSection["startPerfect"];
|
||||
sectionName.text = sectionObj.chartEntity["sectionName"];
|
||||
challengeEnable.isOn = sectionObj.chartEntity["startPerfect"];
|
||||
}
|
||||
|
||||
public void DeleteSection()
|
||||
|
@ -41,20 +41,19 @@ public class SectionDialog : Dialog
|
|||
Editor.instance.inAuthorativeMenu = false;
|
||||
}
|
||||
if (sectionObj == null) return;
|
||||
GameManager.instance.Beatmap.SectionMarkers.Remove(sectionObj.chartSection);
|
||||
sectionObj.DeleteObj();
|
||||
}
|
||||
|
||||
public void ChangeSectionName(string name)
|
||||
{
|
||||
if (sectionObj == null) return;
|
||||
sectionObj.chartSection["sectionName"] = name;
|
||||
sectionObj.chartEntity["sectionName"] = name;
|
||||
sectionObj.UpdateLabel();
|
||||
}
|
||||
|
||||
public void SetSectionChallenge()
|
||||
{
|
||||
if (sectionObj == null) return;
|
||||
sectionObj.chartSection["startPerfect"] = challengeEnable.isOn;
|
||||
sectionObj.chartEntity["startPerfect"] = challengeEnable.isOn;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ namespace HeavenStudio.Editor.Track
|
|||
[Header("Components")]
|
||||
private RectTransform rectTransform;
|
||||
|
||||
public List<SpecialTimelineObj> specialTimelineObjs = new List<SpecialTimelineObj>();
|
||||
public Dictionary<Guid, SpecialTimelineObj> specialTimelineObjs = new();
|
||||
|
||||
[System.Flags]
|
||||
public enum HoveringTypes
|
||||
|
@ -48,7 +48,7 @@ namespace HeavenStudio.Editor.Track
|
|||
{
|
||||
ClearSpecialTimeline();
|
||||
GameManager.instance.SortEventsList();
|
||||
|
||||
|
||||
bool first = true;
|
||||
foreach (var tempoChange in GameManager.instance.Beatmap.TempoChanges)
|
||||
{
|
||||
|
@ -110,7 +110,7 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
public void FixObjectsVisibility()
|
||||
{
|
||||
foreach (SpecialTimelineObj obj in specialTimelineObjs)
|
||||
foreach (SpecialTimelineObj obj in specialTimelineObjs.Values)
|
||||
{
|
||||
obj.SetVisibility(Timeline.instance.timelineState.currentState);
|
||||
}
|
||||
|
@ -118,7 +118,7 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
public void ClearSpecialTimeline()
|
||||
{
|
||||
foreach (SpecialTimelineObj obj in specialTimelineObjs)
|
||||
foreach (SpecialTimelineObj obj in specialTimelineObjs.Values)
|
||||
{
|
||||
Destroy(obj.gameObject);
|
||||
}
|
||||
|
@ -126,7 +126,16 @@ namespace HeavenStudio.Editor.Track
|
|||
}
|
||||
|
||||
public void AddTempoChange(bool create, RiqEntity tempoChange_ = null, bool first = false)
|
||||
{
|
||||
{
|
||||
if (create)
|
||||
{
|
||||
foreach (var e in GameManager.instance.Beatmap.TempoChanges)
|
||||
{
|
||||
if (Timeline.instance.MousePos2BeatSnap > e.beat - Timeline.instance.snapInterval && Timeline.instance.MousePos2BeatSnap < e.beat + Timeline.instance.snapInterval)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
GameObject tempoChange = Instantiate(RefTempoChange.gameObject, this.transform);
|
||||
|
||||
tempoChange.transform.GetChild(0).GetComponent<Image>().color = EditorTheme.theme.properties.TempoLayerCol.Hex2RGB();
|
||||
|
@ -136,39 +145,46 @@ namespace HeavenStudio.Editor.Track
|
|||
tempoChange.SetActive(true);
|
||||
|
||||
TempoTimelineObj tempoTimelineObj = tempoChange.GetComponent<TempoTimelineObj>();
|
||||
tempoTimelineObj.type = HoveringTypes.TempoChange;
|
||||
|
||||
if (create == true)
|
||||
if (create)
|
||||
{
|
||||
tempoChange.transform.position = new Vector3(Editor.instance.EditorCamera.ScreenToWorldPoint(Input.mousePosition).x + 0.08f, tempoChange.transform.position.y);
|
||||
tempoChange.transform.localPosition = new Vector3(Starpelly.Mathp.Round2Nearest(tempoChange.transform.localPosition.x, Timeline.SnapInterval()), tempoChange.transform.localPosition.y);
|
||||
|
||||
float lastTempo = Conductor.instance.GetBpmAtBeat(tempoChange.transform.localPosition.x);
|
||||
if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))
|
||||
{
|
||||
lastTempo = lastTempo * 2f;
|
||||
lastTempo *= 2f;
|
||||
}
|
||||
else if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl))
|
||||
{
|
||||
lastTempo = lastTempo / 2f;
|
||||
lastTempo /= 2f;
|
||||
}
|
||||
RiqEntity tempoC = GameManager.instance.Beatmap.AddNewTempoChange(tempoChange.transform.localPosition.x, lastTempo);
|
||||
tempoTimelineObj.tempoChange = tempoC;
|
||||
RiqEntity tempoC = GameManager.instance.Beatmap.AddNewTempoChange(Timeline.instance.MousePos2BeatSnap, lastTempo);
|
||||
tempoTimelineObj.chartEntity = tempoC;
|
||||
CommandManager.Instance.AddCommand(new Commands.AddMarker(tempoC, tempoC.guid, HoveringTypes.TempoChange));
|
||||
}
|
||||
else
|
||||
{
|
||||
tempoTimelineObj.tempoChange = tempoChange_;
|
||||
tempoChange.transform.localPosition = new Vector3((float) tempoTimelineObj.tempoChange.beat, tempoChange.transform.localPosition.y);
|
||||
tempoTimelineObj.chartEntity = tempoChange_;
|
||||
tempoTimelineObj.first = first;
|
||||
}
|
||||
tempoTimelineObj.SetVisibility(Timeline.instance.timelineState.currentState);
|
||||
|
||||
specialTimelineObjs.Add(tempoTimelineObj);
|
||||
specialTimelineObjs.Add(tempoTimelineObj.chartEntity.guid, tempoTimelineObj);
|
||||
|
||||
Timeline.instance.FitToSong();
|
||||
}
|
||||
|
||||
public void AddVolumeChange(bool create, RiqEntity volumeChange_ = null, bool first = false)
|
||||
{
|
||||
{
|
||||
if (create)
|
||||
{
|
||||
foreach (var e in GameManager.instance.Beatmap.VolumeChanges)
|
||||
{
|
||||
if (Timeline.instance.MousePos2BeatSnap > e.beat - Timeline.instance.snapInterval && Timeline.instance.MousePos2BeatSnap < e.beat + Timeline.instance.snapInterval)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
GameObject volumeChange = Instantiate(RefVolumeChange.gameObject, this.transform);
|
||||
|
||||
volumeChange.transform.GetChild(0).GetComponent<Image>().color = EditorTheme.theme.properties.MusicLayerCol.Hex2RGB();
|
||||
|
@ -178,29 +194,36 @@ namespace HeavenStudio.Editor.Track
|
|||
volumeChange.SetActive(true);
|
||||
|
||||
VolumeTimelineObj volumeTimelineObj = volumeChange.GetComponent<VolumeTimelineObj>();
|
||||
volumeTimelineObj.type = HoveringTypes.VolumeChange;
|
||||
|
||||
if (create == true)
|
||||
if (create)
|
||||
{
|
||||
volumeChange.transform.position = new Vector3(Editor.instance.EditorCamera.ScreenToWorldPoint(Input.mousePosition).x + 0.08f, volumeChange.transform.position.y);
|
||||
volumeChange.transform.localPosition = new Vector3(Starpelly.Mathp.Round2Nearest(volumeChange.transform.localPosition.x, Timeline.SnapInterval()), volumeChange.transform.localPosition.y);
|
||||
|
||||
RiqEntity volumeC = GameManager.instance.Beatmap.AddNewVolumeChange(volumeChange.transform.localPosition.x, 100f);
|
||||
volumeTimelineObj.volumeChange = volumeC;
|
||||
RiqEntity volumeC = GameManager.instance.Beatmap.AddNewVolumeChange(Timeline.instance.MousePos2BeatSnap, 100f);
|
||||
volumeTimelineObj.chartEntity = volumeC;
|
||||
GameManager.instance.Beatmap.VolumeChanges.Add(volumeC);
|
||||
CommandManager.Instance.AddCommand(new Commands.AddMarker(volumeC, volumeC.guid, HoveringTypes.VolumeChange));
|
||||
}
|
||||
else
|
||||
{
|
||||
volumeTimelineObj.volumeChange = volumeChange_;
|
||||
volumeChange.transform.localPosition = new Vector3((float) volumeTimelineObj.volumeChange.beat, volumeChange.transform.localPosition.y);
|
||||
volumeTimelineObj.chartEntity = volumeChange_;
|
||||
volumeTimelineObj.first = first;
|
||||
}
|
||||
volumeTimelineObj.SetVisibility(Timeline.instance.timelineState.currentState);
|
||||
|
||||
specialTimelineObjs.Add(volumeTimelineObj);
|
||||
specialTimelineObjs.Add(volumeTimelineObj.chartEntity.guid, volumeTimelineObj);
|
||||
}
|
||||
|
||||
public void AddChartSection(bool create, RiqEntity chartSection_ = null)
|
||||
{
|
||||
{
|
||||
if (create)
|
||||
{
|
||||
foreach (var e in GameManager.instance.Beatmap.SectionMarkers)
|
||||
{
|
||||
if (Timeline.instance.MousePos2BeatSnap > e.beat - Timeline.instance.snapInterval && Timeline.instance.MousePos2BeatSnap < e.beat + Timeline.instance.snapInterval)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
GameObject chartSection = Instantiate(RefSectionChange.gameObject, this.transform);
|
||||
|
||||
chartSection.transform.GetChild(0).GetComponent<Image>().color = EditorTheme.theme.properties.SectionLayerCol.Hex2RGB();
|
||||
|
@ -211,32 +234,26 @@ namespace HeavenStudio.Editor.Track
|
|||
chartSection.SetActive(true);
|
||||
|
||||
SectionTimelineObj sectionTimelineObj = chartSection.GetComponent<SectionTimelineObj>();
|
||||
sectionTimelineObj.type = HoveringTypes.SectionChange;
|
||||
|
||||
if (create == true)
|
||||
if (create)
|
||||
{
|
||||
chartSection.transform.position = new Vector3(Editor.instance.EditorCamera.ScreenToWorldPoint(Input.mousePosition).x + 0.08f, chartSection.transform.position.y);
|
||||
chartSection.transform.localPosition = new Vector3(Starpelly.Mathp.Round2Nearest(chartSection.transform.localPosition.x, Timeline.SnapInterval()), chartSection.transform.localPosition.y);
|
||||
RiqEntity sectionC = GameManager.instance.Beatmap.AddNewSectionMarker(Timeline.instance.MousePos2BeatSnap, "New Section");
|
||||
|
||||
RiqEntity sectionC = GameManager.instance.Beatmap.AddNewSectionMarker(chartSection.transform.localPosition.x, "New Section");
|
||||
|
||||
sectionTimelineObj.chartSection = sectionC;
|
||||
sectionTimelineObj.chartEntity = sectionC;
|
||||
GameManager.instance.Beatmap.SectionMarkers.Add(sectionC);
|
||||
CommandManager.Instance.AddCommand(new Commands.AddMarker(sectionC, sectionC.guid, HoveringTypes.SectionChange));
|
||||
}
|
||||
else
|
||||
{
|
||||
sectionTimelineObj.chartSection = chartSection_;
|
||||
chartSection.transform.localPosition = new Vector3((float) sectionTimelineObj.chartSection.beat, chartSection.transform.localPosition.y);
|
||||
sectionTimelineObj.chartEntity = chartSection_;
|
||||
}
|
||||
sectionTimelineObj.SetVisibility(Timeline.instance.timelineState.currentState);
|
||||
|
||||
specialTimelineObjs.Add(sectionTimelineObj);
|
||||
specialTimelineObjs.Add(sectionTimelineObj.chartEntity.guid, sectionTimelineObj);
|
||||
//auto-open the dialog
|
||||
sectionTimelineObj.OnRightClick();
|
||||
}
|
||||
|
||||
public bool InteractingWithEvents()
|
||||
{
|
||||
return specialTimelineObjs.FindAll(c => c.hovering == true).Count > 0 || specialTimelineObjs.FindAll(c => c.moving == true).Count > 0;
|
||||
if (create)
|
||||
sectionTimelineObj.OnRightClick();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,8 +16,6 @@ namespace HeavenStudio.Editor.Track
|
|||
[SerializeField] private GameObject chartLine;
|
||||
[SerializeField] private SectionDialog sectionDialog;
|
||||
|
||||
public RiqEntity chartSection;
|
||||
|
||||
new private void Update()
|
||||
{
|
||||
base.Update();
|
||||
|
@ -31,7 +29,9 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
public void UpdateLabel()
|
||||
{
|
||||
sectionLabel.text = chartSection["sectionName"];
|
||||
sectionLabel.text = chartEntity["sectionName"];
|
||||
if (!moving)
|
||||
SetX(chartEntity);
|
||||
}
|
||||
|
||||
public override void Init()
|
||||
|
@ -54,16 +54,19 @@ namespace HeavenStudio.Editor.Track
|
|||
}
|
||||
}
|
||||
|
||||
public override bool OnMove(float beat)
|
||||
public override bool OnMove(float beat, bool final = false)
|
||||
{
|
||||
foreach (RiqEntity sectionChange in GameManager.instance.Beatmap.SectionMarkers)
|
||||
{
|
||||
if (this.chartSection == sectionChange)
|
||||
if (this.chartEntity == sectionChange)
|
||||
continue;
|
||||
if (beat > sectionChange.beat - Timeline.instance.snapInterval && beat < sectionChange.beat + Timeline.instance.snapInterval)
|
||||
return false;
|
||||
}
|
||||
this.chartSection.beat = beat;
|
||||
if (final)
|
||||
CommandManager.Instance.AddCommand(new Commands.MoveMarker(chartEntity.guid, beat, type));
|
||||
else
|
||||
SetX(beat);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ using UnityEngine;
|
|||
using TMPro;
|
||||
|
||||
using DG.Tweening;
|
||||
using Jukebox;
|
||||
|
||||
namespace HeavenStudio.Editor.Track
|
||||
{
|
||||
|
@ -17,10 +18,13 @@ namespace HeavenStudio.Editor.Track
|
|||
private float startPosX;
|
||||
private float lastPosX;
|
||||
|
||||
public SpecialTimeline.HoveringTypes type;
|
||||
public bool moving = false;
|
||||
public bool hovering;
|
||||
public bool first = false;
|
||||
|
||||
public RiqEntity chartEntity;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
rectTransform = GetComponent<RectTransform>();
|
||||
|
@ -49,23 +53,22 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
if (moving)
|
||||
{
|
||||
Vector3 mousePos = Editor.instance.EditorCamera.ScreenToWorldPoint(Input.mousePosition);
|
||||
|
||||
transform.position = new Vector3(mousePos.x - startPosX, transform.position.y, 0);
|
||||
transform.localPosition = new Vector3(Mathf.Clamp(Starpelly.Mathp.Round2Nearest(transform.localPosition.x, Timeline.SnapInterval()), 0, Mathf.Infinity), transform.localPosition.y);
|
||||
OnMove(Timeline.instance.MousePos2BeatSnap);
|
||||
|
||||
if (Input.GetMouseButtonUp(0))
|
||||
{
|
||||
if (!OnMove(transform.localPosition.x))
|
||||
transform.localPosition = new Vector3(lastPosX, transform.localPosition.y);
|
||||
/*if (!OnMove(transform.localPosition.x))
|
||||
transform.localPosition = new Vector3(lastPosX, transform.localPosition.y);*/
|
||||
|
||||
moving = false;
|
||||
OnMove(Timeline.instance.MousePos2BeatSnap, true);
|
||||
lastPosX = transform.localPosition.x;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
if (moving)
|
||||
{
|
||||
if (!OnMove(transform.localPosition.x))
|
||||
|
@ -73,10 +76,21 @@ namespace HeavenStudio.Editor.Track
|
|||
moving = false;
|
||||
lastPosX = transform.localPosition.x;
|
||||
}
|
||||
*/
|
||||
hovering = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetX(RiqEntity entity)
|
||||
{
|
||||
rectTransform.anchoredPosition = new Vector2((float)entity.beat * Timeline.instance.PixelsPerBeat, rectTransform.anchoredPosition.y);
|
||||
}
|
||||
|
||||
public void SetX(float beat)
|
||||
{
|
||||
rectTransform.anchoredPosition = new Vector2(beat * Timeline.instance.PixelsPerBeat, rectTransform.anchoredPosition.y);
|
||||
}
|
||||
|
||||
public void StartMove()
|
||||
{
|
||||
if (first) return;
|
||||
|
@ -89,18 +103,19 @@ namespace HeavenStudio.Editor.Track
|
|||
public void DeleteObj()
|
||||
{
|
||||
if (first) return;
|
||||
transform.parent.GetComponent<SpecialTimeline>().specialTimelineObjs.Remove(this);
|
||||
Destroy(this.gameObject);
|
||||
CommandManager.Instance.AddCommand(new Commands.DeleteMarker(chartEntity.guid, type));
|
||||
// transform.parent.GetComponent<SpecialTimeline>().specialTimelineObjs.Remove(this);
|
||||
// Destroy(this.gameObject);
|
||||
}
|
||||
|
||||
//events
|
||||
public virtual void Init() {}
|
||||
public virtual void OnLeftClick() {}
|
||||
public virtual void OnRightClick() {}
|
||||
public virtual bool OnMove(float beat)
|
||||
public virtual void Init() { }
|
||||
public virtual void OnLeftClick() { }
|
||||
public virtual void OnRightClick() { }
|
||||
public virtual bool OnMove(float beat, bool final = false)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public virtual void SetVisibility(Timeline.CurrentTimelineState.State state) {}
|
||||
public virtual void SetVisibility(Timeline.CurrentTimelineState.State state) { }
|
||||
}
|
||||
}
|
|
@ -16,8 +16,6 @@ namespace HeavenStudio.Editor.Track
|
|||
[SerializeField] private TMP_Text tempoTXT;
|
||||
[SerializeField] private GameObject tempoLine;
|
||||
|
||||
public RiqEntity tempoChange;
|
||||
|
||||
new private void Update()
|
||||
{
|
||||
base.Update();
|
||||
|
@ -31,16 +29,18 @@ namespace HeavenStudio.Editor.Track
|
|||
if (Input.GetKey(KeyCode.LeftShift))
|
||||
newTempo *= 5f;
|
||||
if (Input.GetKey(KeyCode.LeftControl))
|
||||
newTempo /= 100f;
|
||||
newTempo *= 0.01f;
|
||||
|
||||
tempoChange["tempo"] += newTempo;
|
||||
chartEntity["tempo"] += newTempo;
|
||||
|
||||
//make sure tempo is positive
|
||||
if (tempoChange["tempo"] < 1)
|
||||
tempoChange["tempo"] = 1;
|
||||
if (chartEntity["tempo"] < 1)
|
||||
chartEntity["tempo"] = 1;
|
||||
|
||||
if (first && newTempo != 0)
|
||||
Timeline.instance.UpdateStartingBPMText();
|
||||
|
||||
Timeline.instance.FitToSong();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -49,8 +49,9 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
private void UpdateTempo()
|
||||
{
|
||||
tempoTXT.text = $"{tempoChange["tempo"]} BPM";
|
||||
Timeline.instance.FitToSong();
|
||||
tempoTXT.text = chartEntity["tempo"].ToString("F") + $" BPM";
|
||||
if (!moving)
|
||||
SetX(chartEntity);
|
||||
}
|
||||
|
||||
public override void Init()
|
||||
|
@ -69,21 +70,23 @@ namespace HeavenStudio.Editor.Track
|
|||
if (first) return;
|
||||
if (Timeline.instance.timelineState.currentState == Timeline.CurrentTimelineState.State.TempoChange)
|
||||
{
|
||||
GameManager.instance.Beatmap.TempoChanges.Remove(tempoChange);
|
||||
DeleteObj();
|
||||
}
|
||||
}
|
||||
|
||||
public override bool OnMove(float beat)
|
||||
public override bool OnMove(float beat, bool final = false)
|
||||
{
|
||||
foreach (var tempoChange in GameManager.instance.Beatmap.TempoChanges)
|
||||
{
|
||||
if (this.tempoChange == tempoChange)
|
||||
if (this.chartEntity == tempoChange)
|
||||
continue;
|
||||
if (beat > tempoChange.beat - Timeline.instance.snapInterval && beat < tempoChange.beat + Timeline.instance.snapInterval)
|
||||
return false;
|
||||
}
|
||||
this.tempoChange.beat = beat;
|
||||
if (final)
|
||||
CommandManager.Instance.AddCommand(new Commands.MoveMarker(chartEntity.guid, beat, type));
|
||||
else
|
||||
SetX(beat);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -16,8 +16,6 @@ namespace HeavenStudio.Editor.Track
|
|||
[SerializeField] private TMP_Text volumeTXT;
|
||||
[SerializeField] private GameObject volumeLine;
|
||||
|
||||
public RiqEntity volumeChange;
|
||||
|
||||
new private void Update()
|
||||
{
|
||||
base.Update();
|
||||
|
@ -31,12 +29,12 @@ namespace HeavenStudio.Editor.Track
|
|||
if (Input.GetKey(KeyCode.LeftShift))
|
||||
newVolume *= 5f;
|
||||
if (Input.GetKey(KeyCode.LeftControl))
|
||||
newVolume /= 100f;
|
||||
newVolume *= 0.01f;
|
||||
|
||||
volumeChange["volume"] += newVolume;
|
||||
chartEntity["volume"] += newVolume;
|
||||
|
||||
//make sure volume is positive
|
||||
volumeChange["volume"] = Mathf.Clamp(volumeChange["volume"], 0, 100);
|
||||
chartEntity["volume"] = Mathf.Clamp(chartEntity["volume"], 0, 100);
|
||||
|
||||
if (first && newVolume != 0)
|
||||
Timeline.instance.UpdateStartingVolText();
|
||||
|
@ -47,7 +45,9 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
private void UpdateVolume()
|
||||
{
|
||||
volumeTXT.text = $"{volumeChange["volume"]}%";
|
||||
volumeTXT.text = $"{chartEntity["volume"].ToString("F")}%";
|
||||
if (!moving)
|
||||
SetX(chartEntity);
|
||||
}
|
||||
|
||||
public override void Init()
|
||||
|
@ -66,21 +66,23 @@ namespace HeavenStudio.Editor.Track
|
|||
if (first) return;
|
||||
if (Timeline.instance.timelineState.currentState == Timeline.CurrentTimelineState.State.MusicVolume)
|
||||
{
|
||||
GameManager.instance.Beatmap.VolumeChanges.Remove(volumeChange);
|
||||
DeleteObj();
|
||||
}
|
||||
}
|
||||
|
||||
public override bool OnMove(float beat)
|
||||
public override bool OnMove(float beat, bool final = false)
|
||||
{
|
||||
foreach (var volumeChange in GameManager.instance.Beatmap.VolumeChanges)
|
||||
{
|
||||
if (this.volumeChange == volumeChange)
|
||||
if (this.chartEntity == volumeChange)
|
||||
continue;
|
||||
if (beat > volumeChange.beat - Timeline.instance.snapInterval && beat < volumeChange.beat + Timeline.instance.snapInterval)
|
||||
return false;
|
||||
}
|
||||
this.volumeChange.beat = beat;
|
||||
if (final)
|
||||
CommandManager.Instance.AddCommand(new Commands.MoveMarker(chartEntity.guid, beat, type));
|
||||
else
|
||||
SetX(beat);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -8,7 +8,8 @@ using UnityEngine.EventSystems;
|
|||
using TMPro;
|
||||
using Starpelly;
|
||||
using Jukebox;
|
||||
using Jukebox.Legacy;
|
||||
using Newtonsoft.Json;
|
||||
using System.Linq;
|
||||
|
||||
namespace HeavenStudio.Editor.Track
|
||||
{
|
||||
|
@ -20,9 +21,6 @@ namespace HeavenStudio.Editor.Track
|
|||
[SerializeField] private TMP_Text CurrentTempo;
|
||||
|
||||
[Header("Timeline Properties")]
|
||||
private float lastBeatPos = 0;
|
||||
private Vector2 lastMousePos;
|
||||
public List<TimelineEventObj> eventObjs = new List<TimelineEventObj>();
|
||||
private bool lastFrameDrag;
|
||||
public int LayerCount = 5;
|
||||
public bool metronomeEnabled;
|
||||
|
@ -33,8 +31,22 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
[Header("Components")]
|
||||
[SerializeField] private RawImage waveform;
|
||||
[SerializeField] private Image layerBG;
|
||||
[SerializeField] private TimelineZoom zoomComponent;
|
||||
public Texture2D resizeCursor;
|
||||
|
||||
public float WidthPerBeat { get; private set; } = 100.0f;
|
||||
public float PixelsPerBeat => WidthPerBeat * Zoom;
|
||||
public float Zoom { get; private set; } = 1.0f;
|
||||
public float MousePos2Beat { get; private set; }
|
||||
public float MousePos2Layer { get; private set; }
|
||||
public float MousePos2BeatSnap => Mathp.Round2Nearest(MousePos2Beat + (SnapInterval() * 0.5f), SnapInterval());
|
||||
public bool MouseInTimeline { get; private set; }
|
||||
|
||||
private Vector2 relativeMousePos;
|
||||
public Vector2 RelativeMousePos => relativeMousePos;
|
||||
public float PlaybackBeat = 0.0f;
|
||||
|
||||
public static float SnapInterval() { return instance.snapInterval; }
|
||||
|
||||
public void SetSnap(float snap) { snapInterval = snap; }
|
||||
|
@ -123,16 +135,24 @@ namespace HeavenStudio.Editor.Track
|
|||
}
|
||||
}
|
||||
|
||||
[Header("Panels")]
|
||||
[SerializeField] private RectTransform TopPanel;
|
||||
[SerializeField] private RectTransform TopPanelContent;
|
||||
[SerializeField] private RectTransform ContentPanel;
|
||||
[SerializeField] private RectTransform OverlayPanel, OverlayPanelContent;
|
||||
|
||||
[Header("Timeline Components")]
|
||||
[SerializeField] private RectTransform TimelineSlider;
|
||||
[SerializeField] private RectTransform TimelineGridSelect;
|
||||
[SerializeField] private RectTransform TimelineEventGrid;
|
||||
[SerializeField] private TMP_Text TimelinePlaybackBeat;
|
||||
public ScrollRect TimelineScroll;
|
||||
public RectTransform TimelineContent;
|
||||
[SerializeField] private ZoomComponent zoomComponent;
|
||||
[SerializeField] private RectTransform RealTimelineContent;
|
||||
[SerializeField] private RectTransform TimelineContent;
|
||||
public RectTransform EventContent;
|
||||
[SerializeField] private RectTransform TimelineSongPosLineRef;
|
||||
[SerializeField] private RectTransform TimelineEventObjRef;
|
||||
public RectTransform TimelineEventsHolder;
|
||||
[SerializeField] private RectTransform LayersRect;
|
||||
|
||||
[Header("Timeline Inputs")]
|
||||
|
@ -162,11 +182,16 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
public Vector3[] LayerCorners = new Vector3[4];
|
||||
|
||||
public float leftSide => (TimelineContent.localPosition.x / TimelineContent.localScale.x) * -1;
|
||||
public float rightSide => (TimelineScroll.viewport.rect.width / TimelineContent.localScale.x) + leftSide;
|
||||
|
||||
public float leftSide => (RealTimelineContent.anchoredPosition.x / PixelsPerBeat) * -1;
|
||||
public float rightSide => (TimelineScroll.viewport.rect.width / PixelsPerBeat) + leftSide;
|
||||
|
||||
private Vector2 lastScreenSize;
|
||||
|
||||
public static Timeline instance { get; private set; }
|
||||
|
||||
[HideInInspector]
|
||||
public List<RiqEntity> CopiedEntities = new();
|
||||
|
||||
public bool userIsEditingInputField
|
||||
{
|
||||
get
|
||||
|
@ -180,19 +205,16 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
public void LoadRemix()
|
||||
{
|
||||
// beatmap entities
|
||||
for (int i = 0; i < eventObjs.Count; i++)
|
||||
{
|
||||
Destroy(eventObjs[i].gameObject);
|
||||
}
|
||||
eventObjs.Clear();
|
||||
|
||||
/*
|
||||
for (int i = 0; i < GameManager.instance.Beatmap.Entities.Count; i++)
|
||||
{
|
||||
var e = GameManager.instance.Beatmap.Entities[i];
|
||||
|
||||
AddEventObject(e.datamodel, false, new Vector3((float)e.beat, -e["track"] * LayerHeight()), e, false);
|
||||
}
|
||||
*/
|
||||
|
||||
TimelineBlockManager.Instance.Load();
|
||||
|
||||
SpecialInfo.Setup();
|
||||
UpdateOffsetText();
|
||||
|
@ -206,6 +228,13 @@ namespace HeavenStudio.Editor.Track
|
|||
{
|
||||
instance = this;
|
||||
|
||||
for (var i = 0; i < LayerCount; i++)
|
||||
{
|
||||
var bg = Instantiate(layerBG.gameObject, layerBG.rectTransform.parent).GetComponent<Image>();
|
||||
if (i % 2 == 0) bg.enabled = false;
|
||||
}
|
||||
layerBG.gameObject.SetActive(false);
|
||||
|
||||
LoadRemix();
|
||||
|
||||
TimelineSlider.GetChild(0).GetComponent<Image>().color = EditorTheme.theme.properties.BeatMarkerCol.Hex2RGB();
|
||||
|
@ -214,25 +243,25 @@ namespace HeavenStudio.Editor.Track
|
|||
TimelineSlider.GetChild(3).GetComponent<TMP_Text>().color = EditorTheme.theme.properties.BeatMarkerCol.Hex2RGB();
|
||||
TimelineSongPosLineRef.GetComponent<Image>().color = EditorTheme.theme.properties.CurrentTimeMarkerCol.Hex2RGB();
|
||||
|
||||
PlayBTN.onClick.AddListener(delegate
|
||||
PlayBTN.onClick.AddListener(delegate
|
||||
{
|
||||
if (Conductor.instance.isPaused)
|
||||
PlayCheck(false);
|
||||
else
|
||||
PlayCheck(true);
|
||||
PlayCheck(true);
|
||||
});
|
||||
PauseBTN.onClick.AddListener(delegate
|
||||
PauseBTN.onClick.AddListener(delegate
|
||||
{
|
||||
if (Conductor.instance.isPlaying && !Conductor.instance.isPaused)
|
||||
PlayCheck(false);
|
||||
PlayCheck(false);
|
||||
});
|
||||
StopBTN.onClick.AddListener(delegate
|
||||
StopBTN.onClick.AddListener(delegate
|
||||
{
|
||||
if (Conductor.instance.isPlaying || Conductor.instance.isPaused)
|
||||
PlayCheck(true);
|
||||
PlayCheck(true);
|
||||
});
|
||||
|
||||
MetronomeBTN.onClick.AddListener(delegate
|
||||
MetronomeBTN.onClick.AddListener(delegate
|
||||
{
|
||||
MetronomeToggle();
|
||||
});
|
||||
|
@ -260,11 +289,11 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
ZoomInBTN.onClick.AddListener(delegate
|
||||
{
|
||||
zoomComponent.ZoomIn(0.015f * TimelineContent.localScale.x, Vector2.zero);
|
||||
zoomComponent.Zoom(0.25f * zoomComponent.Scale.x, Vector2.zero);
|
||||
});
|
||||
ZoomOutBTN.onClick.AddListener(delegate
|
||||
{
|
||||
zoomComponent.ZoomOut(-0.0125f * TimelineContent.localScale.x, Vector2.zero);
|
||||
zoomComponent.Zoom(-0.2f * zoomComponent.Scale.x, Vector2.zero);
|
||||
});
|
||||
ZoomResetBTN.onClick.AddListener(delegate
|
||||
{
|
||||
|
@ -304,6 +333,8 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
SetTimeButtonColors(true, false, false);
|
||||
MetronomeBTN.transform.GetChild(0).GetComponent<Image>().color = Color.gray;
|
||||
MetronomeBTN.transform.GetChild(1).GetComponent<Image>().color = Color.gray;
|
||||
MetronomeBTN.transform.GetChild(2).GetComponent<Image>().color = Color.gray;
|
||||
|
||||
timelineState.SetState(CurrentTimelineState.State.Selection);
|
||||
|
||||
|
@ -314,12 +345,14 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
public void FitToSong()
|
||||
{
|
||||
var currentSizeDelta = TimelineContent.sizeDelta;
|
||||
var currentSizeDelta = RealTimelineContent.sizeDelta;
|
||||
float songBeats = Conductor.instance.SongLengthInBeats();
|
||||
if (songBeats == 0) songBeats = 320;
|
||||
else songBeats += 10;
|
||||
TimelineContent.sizeDelta = new Vector2(songBeats, currentSizeDelta.y);
|
||||
TimelineEventGrid.sizeDelta = new Vector2(songBeats, currentSizeDelta.y);
|
||||
|
||||
TimelineContent.sizeDelta = new Vector2(songBeats * PixelsPerBeat, currentSizeDelta.y);
|
||||
// TimelineEventGrid.sizeDelta = new Vector2(songBeats * PixelsPerBeat, currentSizeDelta.y);
|
||||
RealTimelineContent.sizeDelta = new Vector2(TimelineContent.sizeDelta.x / Zoom, RealTimelineContent.sizeDelta.y);
|
||||
}
|
||||
|
||||
public void CreateWaveform()
|
||||
|
@ -349,17 +382,20 @@ namespace HeavenStudio.Editor.Track
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public void MetronomeToggle()
|
||||
{
|
||||
if (!Conductor.instance.metronome)
|
||||
{
|
||||
MetronomeBTN.transform.GetChild(0).GetComponent<Image>().color = "009FC6".Hex2RGB();
|
||||
MetronomeBTN.transform.GetChild(1).GetComponent<Image>().color = "009FC6".Hex2RGB();
|
||||
MetronomeBTN.transform.GetChild(2).GetComponent<Image>().color = "009FC6".Hex2RGB();
|
||||
Conductor.instance.metronome = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
MetronomeBTN.transform.GetChild(0).GetComponent<Image>().color = Color.gray;
|
||||
MetronomeBTN.transform.GetChild(1).GetComponent<Image>().color = Color.gray;
|
||||
MetronomeBTN.transform.GetChild(2).GetComponent<Image>().color = Color.gray;
|
||||
Conductor.instance.metronome = false;
|
||||
}
|
||||
}
|
||||
|
@ -373,6 +409,54 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
private void Update()
|
||||
{
|
||||
RectTransformUtility.ScreenPointToLocalPointInRectangle(EventContent, Input.mousePosition, Editor.instance.EditorCamera, out relativeMousePos);
|
||||
|
||||
MouseInTimeline = this.gameObject.activeSelf && RectTransformUtility.RectangleContainsScreenPoint(EventContent, Input.mousePosition, Editor.instance.EditorCamera);
|
||||
|
||||
|
||||
/*
|
||||
if (MouseInTimeline)
|
||||
{
|
||||
var wheel = Input.mouseScrollDelta.y;
|
||||
|
||||
if (wheel != 0)
|
||||
{
|
||||
var incre = 0.0f;
|
||||
if (wheel > 0)
|
||||
{
|
||||
incre += wheel * (Zoom * 0.25f);
|
||||
}
|
||||
else
|
||||
{
|
||||
incre += wheel * (Zoom * 0.2f);
|
||||
}
|
||||
|
||||
var v = new Vector3[4];
|
||||
TimelineScroll.viewport.GetWorldCorners(v);
|
||||
var viewportPos = Editor.instance.EditorCamera.WorldToScreenPoint(v[0]);
|
||||
|
||||
var left = leftSide;
|
||||
var viewportWidth = TimelineScroll.viewport.rect.width;
|
||||
var localPointRec = Mathf.Lerp(left, left + (viewportWidth / Zoom),
|
||||
Mathp.Normalize(Input.mousePosition.x, viewportPos.x, viewportPos.x + viewportWidth));
|
||||
|
||||
var xPixels = (localPointRec * incre);
|
||||
xPixels *= (Zoom);
|
||||
|
||||
TimelineContent.anchoredPosition = new Vector2(
|
||||
TimelineContent.anchoredPosition.x - xPixels,
|
||||
TimelineContent.anchoredPosition.y
|
||||
);
|
||||
|
||||
Zoom += incre;
|
||||
Zoom = Mathf.Clamp(Zoom, 1, 1000);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
MousePos2Beat = relativeMousePos.x / PixelsPerBeat;
|
||||
MousePos2Layer = Mathf.Clamp(Mathf.FloorToInt(-(relativeMousePos.y) / LayerHeight()), 0, LayerCount - 1);
|
||||
|
||||
Conductor cond = Conductor.instance;
|
||||
// waveform.rectTransform.anchoredPosition = new Vector2(
|
||||
// -(GameManager.instance.Beatmap.data.offset / (60.0f / GameManager.instance.Beatmap.bpm)),
|
||||
|
@ -382,8 +466,8 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
if (!cond.isPlaying && !cond.isPaused)
|
||||
{
|
||||
SongBeat.text = $"Beat {string.Format("{0:0.000}", TimelineSlider.localPosition.x)}";
|
||||
SongPos.text = FormatTime(cond.GetSongPosFromBeat(TimelineSlider.localPosition.x));
|
||||
SongBeat.text = $"Beat {string.Format("{0:0.000}", PlaybackBeat)}";
|
||||
SongPos.text = FormatTime(cond.GetSongPosFromBeat(PlaybackBeat));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -391,12 +475,35 @@ namespace HeavenStudio.Editor.Track
|
|||
SongPos.text = FormatTime(cond.songPositionAsDouble);
|
||||
}
|
||||
|
||||
// Metronome animation
|
||||
{
|
||||
var rectTransform = MetronomeBTN.transform.GetChild(1).GetComponent<RectTransform>();
|
||||
var rot = 0.0f;
|
||||
if (Conductor.instance.metronome)
|
||||
{
|
||||
var startBeat = Mathf.FloorToInt(Conductor.instance.songPositionInBeats - 0.5f);
|
||||
var nm = Conductor.instance.GetLoopPositionFromBeat(0.5f, 1f);
|
||||
var loop = (startBeat % 2 == 0) ? Mathf.SmoothStep(-1.1f, 1f, nm) : Mathf.SmoothStep(1f, -1f, nm);
|
||||
|
||||
rot = loop * 45f;
|
||||
}
|
||||
else
|
||||
{
|
||||
rot = Mathf.LerpAngle(rectTransform.localEulerAngles.z, 0.0f, Time.deltaTime * 16);
|
||||
}
|
||||
|
||||
rectTransform.localEulerAngles =
|
||||
new Vector3(rectTransform.localEulerAngles.x, rectTransform.localEulerAngles.y,
|
||||
rot);
|
||||
}
|
||||
|
||||
|
||||
SliderControl();
|
||||
|
||||
#region Keyboard Shortcuts
|
||||
if ((!userIsEditingInputField) && Editor.instance.isShortcutsEnabled)
|
||||
{
|
||||
|
||||
|
||||
if (Input.GetKeyDown(KeyCode.Space))
|
||||
{
|
||||
if (Input.GetKey(KeyCode.LeftShift))
|
||||
|
@ -446,11 +553,11 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
if (Input.GetKey(KeyCode.LeftArrow) || (!Input.GetKey(KeyCode.LeftControl) && Input.GetKey(KeyCode.A)))
|
||||
{
|
||||
TimelineContent.transform.localPosition += new Vector3(moveSpeed * Time.deltaTime, 0);
|
||||
RealTimelineContent.transform.localPosition += new Vector3(moveSpeed * Time.deltaTime, 0);
|
||||
}
|
||||
else if (Input.GetKey(KeyCode.RightArrow) || (!Input.GetKey(KeyCode.LeftControl) && Input.GetKey(KeyCode.D)))
|
||||
{
|
||||
TimelineContent.transform.localPosition += new Vector3(-moveSpeed * Time.deltaTime, 0);
|
||||
RealTimelineContent.transform.localPosition += new Vector3(-moveSpeed * Time.deltaTime, 0);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
@ -465,29 +572,59 @@ namespace HeavenStudio.Editor.Track
|
|||
}
|
||||
if (movingPlayback)
|
||||
{
|
||||
RectTransformUtility.ScreenPointToLocalPointInRectangle(TimelineContent, Input.mousePosition, Editor.instance.EditorCamera, out lastMousePos);
|
||||
TimelineSlider.localPosition = new Vector3(Mathf.Max(Mathp.Round2Nearest(lastMousePos.x + 0.12f, Timeline.SnapInterval()), 0), TimelineSlider.transform.localPosition.y);
|
||||
var playbackBeat = Mathf.Max(MousePos2BeatSnap, 0);
|
||||
TimelineSlider.localPosition = new Vector3(playbackBeat * PixelsPerBeat, TimelineSlider.transform.localPosition.y);
|
||||
|
||||
if (TimelineSlider.localPosition.x != lastBeatPos)
|
||||
cond.SetBeat(TimelineSlider.transform.localPosition.x);
|
||||
|
||||
lastBeatPos = TimelineSlider.localPosition.x;
|
||||
cond.SetBeat(playbackBeat);
|
||||
this.PlaybackBeat = playbackBeat;
|
||||
}
|
||||
|
||||
if (cond.isPlaying)
|
||||
PlaybackFocus(true);
|
||||
|
||||
TimelineContent.transform.localPosition = new Vector3(Mathf.Clamp(TimelineContent.transform.localPosition.x, Mathf.NegativeInfinity, 0), TimelineContent.transform.localPosition.y);
|
||||
RealTimelineContent.transform.localPosition = new Vector3(Mathf.Clamp(RealTimelineContent.transform.localPosition.x, Mathf.NegativeInfinity, 0), RealTimelineContent.transform.localPosition.y);
|
||||
|
||||
CurrentTempo.text = $" = {cond.songBpm}";
|
||||
|
||||
LayersRect.GetWorldCorners(LayerCorners);
|
||||
|
||||
for (var i = 0; i < LayersRect.childCount; i++)
|
||||
{
|
||||
var layerRect = LayersRect.GetChild(i).GetComponent<RectTransform>();
|
||||
layerRect.anchoredPosition = new Vector2(layerRect.anchoredPosition.x, -LayerHeight() * (i - 1));
|
||||
layerRect.sizeDelta = new Vector2(layerRect.sizeDelta.x, LayerHeight());
|
||||
}
|
||||
|
||||
for (var i = 0; i < layerBG.rectTransform.parent.childCount; i++)
|
||||
{
|
||||
var layerRect = layerBG.rectTransform.parent.GetChild(i).GetComponent<RectTransform>();
|
||||
layerRect.anchoredPosition = new Vector2(layerRect.anchoredPosition.x, -LayerHeight() * (i - 1));
|
||||
layerRect.sizeDelta = new Vector2(layerRect.sizeDelta.x, LayerHeight());
|
||||
}
|
||||
|
||||
RealTimelineContent.sizeDelta = new Vector2(RealTimelineContent.sizeDelta.x, LayerHeight() * LayerCount);
|
||||
}
|
||||
|
||||
public void LateUpdate()
|
||||
{
|
||||
TimelineBlockManager.Instance.UpdateMarkers();
|
||||
BoxSelection.instance.LayerSelectUpdate();
|
||||
|
||||
TimelineContent.anchoredPosition = RealTimelineContent.anchoredPosition;
|
||||
|
||||
TopPanelContent.anchoredPosition = new Vector2(TimelineContent.anchoredPosition.x, TopPanelContent.anchoredPosition.y);
|
||||
TopPanelContent.sizeDelta = new Vector2(TimelineContent.sizeDelta.x, TopPanelContent.sizeDelta.y);
|
||||
|
||||
OverlayPanelContent.anchoredPosition = new Vector2(TimelineContent.anchoredPosition.x, OverlayPanelContent.anchoredPosition.y);
|
||||
OverlayPanelContent.sizeDelta = new Vector2(TimelineContent.sizeDelta.x, OverlayPanelContent.sizeDelta.y);
|
||||
|
||||
LayersRect.anchoredPosition = new Vector2(LayersRect.anchoredPosition.x, TimelineContent.anchoredPosition.y);
|
||||
}
|
||||
|
||||
public static float GetScaleModifier()
|
||||
{
|
||||
Camera cam = Editor.instance.EditorCamera;
|
||||
return Mathf.Pow(cam.pixelWidth/1280f, 1f) * Mathf.Pow(cam.pixelHeight/720f, 0f);
|
||||
return Mathf.Pow(cam.pixelWidth / 1280f, 1f) * Mathf.Pow(cam.pixelHeight / 720f, 0f);
|
||||
}
|
||||
|
||||
public Vector2 LayerCornersToDist()
|
||||
|
@ -498,12 +635,11 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
private void SliderControl()
|
||||
{
|
||||
TimelinePlaybackBeat.text = $"Beat {string.Format("{0:0.000}", TimelineSlider.localPosition.x)}";
|
||||
TimelinePlaybackBeat.text = $"Beat {string.Format("{0:0.000}", PlaybackBeat)}";
|
||||
|
||||
if (TimelineSongPosLine != null)
|
||||
{
|
||||
TimelineSongPosLine.transform.localPosition = new Vector3(Conductor.instance.songPositionInBeats, TimelineSongPosLine.transform.localPosition.y);
|
||||
TimelineSongPosLine.transform.localScale = new Vector3(1f / TimelineContent.transform.localScale.x, TimelineSongPosLine.transform.localScale.y, 1);
|
||||
TimelineSongPosLine.transform.localPosition = new Vector3(Conductor.instance.songPositionInBeats * PixelsPerBeat, TimelineSongPosLine.transform.localPosition.y);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -514,13 +650,13 @@ namespace HeavenStudio.Editor.Track
|
|||
{
|
||||
if (!Conductor.instance.isPlaying && !Conductor.instance.isPaused)
|
||||
{
|
||||
Play(false, TimelineSlider.transform.localPosition.x);
|
||||
Play(false, PlaybackBeat);
|
||||
}
|
||||
else
|
||||
{
|
||||
Stop(TimelineSlider.transform.localPosition.x);
|
||||
Stop(PlaybackBeat);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -528,11 +664,11 @@ namespace HeavenStudio.Editor.Track
|
|||
{
|
||||
if (TimelineSongPosLine == null)
|
||||
{
|
||||
Play(false, TimelineSlider.transform.localPosition.x);
|
||||
Play(false, PlaybackBeat);
|
||||
}
|
||||
else
|
||||
{
|
||||
Play(false, TimelineSongPosLine.transform.localPosition.x);
|
||||
Play(false, Conductor.instance.songPositionInBeats);
|
||||
}
|
||||
}
|
||||
else if (!Conductor.instance.isPaused)
|
||||
|
@ -571,7 +707,7 @@ namespace HeavenStudio.Editor.Track
|
|||
// timelineSlider.value = 0;
|
||||
|
||||
if (TimelineSongPosLine != null)
|
||||
Destroy(TimelineSongPosLine.gameObject);
|
||||
Destroy(TimelineSongPosLine.gameObject);
|
||||
|
||||
GameManager.instance.Stop(time);
|
||||
|
||||
|
@ -597,10 +733,11 @@ namespace HeavenStudio.Editor.Track
|
|||
PauseBTN.transform.GetChild(0).GetComponent<Image>().color = Color.white;
|
||||
}
|
||||
else
|
||||
{ PauseBTN.transform.GetChild(0).GetComponent<Image>().color = Color.gray;
|
||||
{
|
||||
PauseBTN.transform.GetChild(0).GetComponent<Image>().color = Color.gray;
|
||||
PauseBTN.enabled = false;
|
||||
}
|
||||
|
||||
|
||||
if (stopEnabled)
|
||||
{
|
||||
StopBTN.enabled = true;
|
||||
|
@ -624,11 +761,6 @@ namespace HeavenStudio.Editor.Track
|
|||
return string.Format("{0:00}:{1:00}:{2:000}", minutes, seconds, milliseconds);
|
||||
}
|
||||
|
||||
public bool CheckIfMouseInTimeline()
|
||||
{
|
||||
return (this.gameObject.activeSelf && RectTransformUtility.RectangleContainsScreenPoint(TimelineEventGrid, Input.mousePosition, Editor.instance.EditorCamera));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Functions
|
||||
|
@ -637,9 +769,10 @@ namespace HeavenStudio.Editor.Track
|
|||
{
|
||||
var lerpSpd = (lerp) ? 12f : 10000000; // im lazy
|
||||
|
||||
var newPos = new Vector3((-Conductor.instance.songPositionInBeats * TimelineContent.localScale.x) + 200, TimelineContent.transform.localPosition.y);
|
||||
TimelineContent.transform.localPosition =
|
||||
Vector3.Lerp(TimelineContent.transform.localPosition, newPos, Time.deltaTime * lerpSpd);
|
||||
var newPos = new Vector3((-Conductor.instance.songPositionInBeats * PixelsPerBeat) + 200, RealTimelineContent.transform.localPosition.y);
|
||||
newPos.x = Mathf.Max(newPos.x, -(TimelineContent.rect.width - TimelineScroll.viewport.rect.width));
|
||||
RealTimelineContent.transform.localPosition =
|
||||
Vector3.Lerp(RealTimelineContent.transform.localPosition, newPos, Time.deltaTime * lerpSpd);
|
||||
}
|
||||
|
||||
public void WaveformToggle()
|
||||
|
@ -740,6 +873,107 @@ namespace HeavenStudio.Editor.Track
|
|||
return tex2D;
|
||||
}
|
||||
|
||||
public TimelineEventObj AddEventObject(string eventName, bool dragNDrop = false, Vector3 pos = new Vector3(), RiqEntity entity = null, bool addEvent = false)
|
||||
{
|
||||
var game = EventCaller.instance.GetMinigame(eventName.Split(0));
|
||||
var action = EventCaller.instance.GetGameAction(game, eventName.Split(1));
|
||||
|
||||
var gameAction = EventCaller.instance.GetGameAction(EventCaller.instance.GetMinigame(eventName.Split(0)), eventName.Split(1));
|
||||
|
||||
if (addEvent)
|
||||
{
|
||||
RiqEntity tempEntity = entity;
|
||||
|
||||
if (entity == null)
|
||||
{
|
||||
RiqEntity en = GameManager.instance.Beatmap.AddNewEntity(eventName, 0, gameAction.defaultLength);
|
||||
|
||||
tempEntity = en;
|
||||
|
||||
// default param values
|
||||
var ep = action.parameters;
|
||||
|
||||
if (ep != null)
|
||||
{
|
||||
for (int i = 0; i < ep.Count; i++)
|
||||
{
|
||||
object returnVal = ep[i].parameter;
|
||||
|
||||
var propertyType = returnVal.GetType();
|
||||
if (propertyType == typeof(EntityTypes.Integer))
|
||||
{
|
||||
returnVal = ((EntityTypes.Integer)ep[i].parameter).val;
|
||||
}
|
||||
else if (propertyType == typeof(EntityTypes.Float))
|
||||
{
|
||||
returnVal = ((EntityTypes.Float)ep[i].parameter).val;
|
||||
}
|
||||
else if (propertyType.IsEnum)
|
||||
{
|
||||
returnVal = (int)ep[i].parameter;
|
||||
}
|
||||
|
||||
//tempEntity[ep[i].propertyName] = returnVal;
|
||||
tempEntity.CreateProperty(ep[i].propertyName, returnVal);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// GameManager.instance.Beatmap.Entities.Add(tempEntity);
|
||||
Debug.LogWarning("Weird as fuck case called?");
|
||||
}
|
||||
|
||||
GameManager.instance.SortEventsList();
|
||||
TimelineBlockManager.Instance.SetEntityToSet(tempEntity);
|
||||
}
|
||||
else
|
||||
{
|
||||
TimelineBlockManager.Instance.SetEntityToSet(entity);
|
||||
}
|
||||
|
||||
var marker = TimelineBlockManager.Instance.Pool.Get();
|
||||
|
||||
marker.SetMarkerInfo();
|
||||
|
||||
if (dragNDrop)
|
||||
{
|
||||
Selections.instance.ClickSelect(marker);
|
||||
marker.moving = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
entity["track"] = marker.GetTrack();
|
||||
}
|
||||
|
||||
CommandManager.Instance.AddCommand(new Commands.Place(marker.entity, marker.entity.guid));
|
||||
|
||||
return marker;
|
||||
}
|
||||
|
||||
public void CopySelected()
|
||||
{
|
||||
CopyEntities(Selections.instance.eventsSelected.Select(c => c.entity).ToList());
|
||||
}
|
||||
|
||||
public void CopyEntities(List<RiqEntity> original)
|
||||
{
|
||||
if (original.Count <= 0) return;
|
||||
|
||||
CopiedEntities.Clear();
|
||||
|
||||
foreach (RiqEntity entity in original)
|
||||
{
|
||||
CopiedEntities.Add(entity.DeepCopy());
|
||||
}
|
||||
}
|
||||
|
||||
public void Paste()
|
||||
{
|
||||
CommandManager.Instance.AddCommand(new Commands.Paste(CopiedEntities));
|
||||
}
|
||||
|
||||
/*
|
||||
public TimelineEventObj AddEventObject(string eventName, bool dragNDrop = false, Vector3 pos = new Vector3(), RiqEntity entity = null, bool addEvent = false)
|
||||
{
|
||||
var game = EventCaller.instance.GetMinigame(eventName.Split(0));
|
||||
|
@ -761,7 +995,7 @@ namespace HeavenStudio.Editor.Track
|
|||
{
|
||||
if (gameAction.resizable == false)
|
||||
{
|
||||
g.GetComponent<RectTransform>().sizeDelta = new Vector2(gameAction.defaultLength, LayerHeight());
|
||||
g.GetComponent<RectTransform>().sizeDelta = new Vector2(gameAction.defaultLength * Timeline.instance.PixelsPerBeat, LayerHeight());
|
||||
float length = gameAction.defaultLength;
|
||||
eventObj.length = length;
|
||||
}
|
||||
|
@ -770,11 +1004,11 @@ namespace HeavenStudio.Editor.Track
|
|||
eventObj.resizable = true;
|
||||
if (entity != null && gameAction.defaultLength != entity.length && dragNDrop == false)
|
||||
{
|
||||
g.GetComponent<RectTransform>().sizeDelta = new Vector2(entity.length, LayerHeight());
|
||||
g.GetComponent<RectTransform>().sizeDelta = new Vector2(entity.length * Timeline.instance.PixelsPerBeat, LayerHeight());
|
||||
}
|
||||
else
|
||||
{
|
||||
g.GetComponent<RectTransform>().sizeDelta = new Vector2(gameAction.defaultLength, LayerHeight());
|
||||
g.GetComponent<RectTransform>().sizeDelta = new Vector2(gameAction.defaultLength * Timeline.instance.PixelsPerBeat, LayerHeight());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -850,6 +1084,7 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
return eventObj;
|
||||
}
|
||||
*/
|
||||
|
||||
private List<TimelineEventObj> duplicatedEventObjs = new List<TimelineEventObj>();
|
||||
public TimelineEventObj CopyEventObject(TimelineEventObj e)
|
||||
|
@ -861,51 +1096,22 @@ namespace HeavenStudio.Editor.Track
|
|||
return dup;
|
||||
}
|
||||
|
||||
public void FinalizeDuplicateEventStack()
|
||||
{
|
||||
CommandManager.instance.Execute(new Commands.Duplicate(duplicatedEventObjs));
|
||||
duplicatedEventObjs = new List<TimelineEventObj>();
|
||||
}
|
||||
|
||||
public void DestroyEventObject(RiqEntity entity)
|
||||
{
|
||||
if (EventParameterManager.instance.entity == entity)
|
||||
EventParameterManager.instance.Disable();
|
||||
|
||||
// eventObjs.Remove(entity.eventObj);
|
||||
foreach (TimelineEventObj e in eventObjs)
|
||||
{
|
||||
if (e.entity == entity)
|
||||
{
|
||||
Destroy(e.gameObject);
|
||||
eventObjs.Remove(e);
|
||||
break;
|
||||
}
|
||||
}
|
||||
GameManager.instance.Beatmap.Entities.Remove(entity);
|
||||
|
||||
GameManager.instance.SortEventsList();
|
||||
}
|
||||
|
||||
public bool IsMouseAboveEvents()
|
||||
{
|
||||
return Timeline.instance.eventObjs.FindAll(c => c.mouseHovering == true).Count > 0;
|
||||
}
|
||||
|
||||
public bool InteractingWithEvents()
|
||||
{
|
||||
return eventObjs.FindAll(c => c.moving == true).Count > 0 || eventObjs.FindAll(c => c.resizing == true).Count > 0;
|
||||
}
|
||||
|
||||
public float SnapToLayer(float y)
|
||||
{
|
||||
float size = LayerHeight();
|
||||
return Mathf.Clamp(Mathp.Round2Nearest(y, size), -size * 4f, 0f);
|
||||
return Mathf.Clamp(Mathp.Round2Nearest(y, size), -size * (LayerCount - 1), 0f);
|
||||
}
|
||||
|
||||
public float LayerHeight()
|
||||
{
|
||||
return LayersRect.rect.height / 5f;
|
||||
var defaultHeight = 32;
|
||||
return Mathf.Max(defaultHeight, (LayersRect.rect.height / LayerCount));
|
||||
// return LayersRect.rect.height / LayerCount;
|
||||
}
|
||||
|
||||
public float LayerToY(int layer)
|
||||
{
|
||||
return (-layer * LayerHeight());
|
||||
}
|
||||
|
||||
const float SpeedSnap = 0.25f;
|
||||
|
@ -927,6 +1133,16 @@ namespace HeavenStudio.Editor.Track
|
|||
}
|
||||
}
|
||||
|
||||
public void OnZoom(float zoom)
|
||||
{
|
||||
Zoom = zoom;
|
||||
|
||||
TimelineSlider.localPosition = new Vector3(Conductor.instance.songPositionInBeats * PixelsPerBeat, TimelineSlider.transform.localPosition.y);
|
||||
|
||||
FitToSong();
|
||||
TimelineBlockManager.Instance.OnZoom();
|
||||
}
|
||||
|
||||
public void UpdateOffsetText()
|
||||
{
|
||||
// show up to 4 decimal places
|
||||
|
@ -938,7 +1154,7 @@ namespace HeavenStudio.Editor.Track
|
|||
// Failsafe against empty string.
|
||||
if (String.IsNullOrEmpty(FirstBeatOffset.text))
|
||||
FirstBeatOffset.text = "0";
|
||||
|
||||
|
||||
// Convert ms to s.
|
||||
double newOffset = Convert.ToDouble(FirstBeatOffset.text) / 1000f;
|
||||
|
||||
|
@ -960,7 +1176,7 @@ namespace HeavenStudio.Editor.Track
|
|||
// Failsafe against empty string.
|
||||
if (String.IsNullOrEmpty(text))
|
||||
text = "120";
|
||||
|
||||
|
||||
var newBPM = Convert.ToDouble(text);
|
||||
|
||||
// Failsafe against negative BPM.
|
||||
|
@ -974,7 +1190,7 @@ namespace HeavenStudio.Editor.Track
|
|||
newBPM = System.Math.Round(newBPM, 4);
|
||||
|
||||
RiqEntity tempoChange = GameManager.instance.Beatmap.TempoChanges[0];
|
||||
tempoChange["tempo"] = (float) newBPM;
|
||||
tempoChange["tempo"] = (float)newBPM;
|
||||
GameManager.instance.Beatmap.TempoChanges[0] = tempoChange;
|
||||
|
||||
// In case the newBPM ended up differing from the inputted string.
|
||||
|
@ -993,7 +1209,7 @@ namespace HeavenStudio.Editor.Track
|
|||
// Failsafe against empty string.
|
||||
if (String.IsNullOrEmpty(StartingVolumeSpecialVolume.text))
|
||||
StartingVolumeSpecialVolume.text = "100";
|
||||
|
||||
|
||||
var newVol = Convert.ToInt32(StartingVolumeSpecialVolume.text);
|
||||
newVol = Mathf.Clamp(newVol, 0, 100);
|
||||
|
||||
|
@ -1009,7 +1225,7 @@ namespace HeavenStudio.Editor.Track
|
|||
#region Commands
|
||||
|
||||
public void Move()
|
||||
{
|
||||
{
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
|
|
191
Assets/Scripts/LevelEditor/Timeline/TimelineBlockManager.cs
Normal file
|
@ -0,0 +1,191 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Pool;
|
||||
|
||||
using Jukebox;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Header;
|
||||
using System.Linq;
|
||||
|
||||
namespace HeavenStudio.Editor.Track
|
||||
{
|
||||
public class TimelineBlockManager : MonoBehaviour
|
||||
{
|
||||
public static TimelineBlockManager Instance { get; private set; }
|
||||
|
||||
public TimelineEventObj EntityTemplate;
|
||||
public Dictionary<Guid, TimelineEventObj> EntityMarkers = new();
|
||||
public ObjectPool<TimelineEventObj> Pool { get; private set; }
|
||||
|
||||
private int firstMarkerToCareAbout = 0;
|
||||
private int lastMarkerToCareAbout = 0;
|
||||
private Timeline timeline;
|
||||
|
||||
|
||||
private RiqEntity entityToSet;
|
||||
|
||||
public bool InteractingWithEvents { get; private set; } = false;
|
||||
public bool MovingAnyEvents { get; private set; } = false;
|
||||
|
||||
public void SetEntityToSet(RiqEntity entity)
|
||||
{
|
||||
entityToSet = entity;
|
||||
}
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Instance = this;
|
||||
|
||||
timeline = GetComponent<Timeline>();
|
||||
|
||||
Pool = new ObjectPool<TimelineEventObj>(CreateMarker, OnTakeMarkerFromPool, OnReturnMarkerToPool, OnDestroyMarker, true, 125, 1500);
|
||||
}
|
||||
|
||||
public void Load()
|
||||
{
|
||||
var timeLeft = timeline.leftSide;
|
||||
var timeRight = timeline.rightSide;
|
||||
|
||||
foreach (var marker in EntityMarkers)
|
||||
{
|
||||
Destroy(marker.Value.gameObject);
|
||||
}
|
||||
|
||||
EntityMarkers.Clear();
|
||||
Pool.Clear();
|
||||
|
||||
foreach (var entity in GameManager.instance.Beatmap.Entities)
|
||||
{
|
||||
var vLeft = entity.beat + entity.length >= timeLeft;
|
||||
var vRight = entity.beat < timeRight;
|
||||
var active = vLeft && vRight;
|
||||
|
||||
if (!active) continue;
|
||||
|
||||
entityToSet = entity;
|
||||
Pool.Get();
|
||||
|
||||
Debug.Log(entity.datamodel);
|
||||
}
|
||||
}
|
||||
|
||||
public TimelineEventObj CreateEntity(RiqEntity entity)
|
||||
{
|
||||
entityToSet = entity;
|
||||
var marker = Pool.Get();
|
||||
marker.UpdateMarker();
|
||||
|
||||
return marker;
|
||||
}
|
||||
|
||||
public void OnZoom()
|
||||
{
|
||||
foreach (var marker in EntityMarkers.Values)
|
||||
{
|
||||
marker.SetWidthHeight();
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateMarkers()
|
||||
{
|
||||
var timeLeft = timeline.leftSide;
|
||||
var timeRight = timeline.rightSide;
|
||||
|
||||
var markersActiveBeats = new List<float>();
|
||||
foreach (var marker in EntityMarkers.Values)
|
||||
{
|
||||
if (marker.selected || marker.moving)
|
||||
{
|
||||
markersActiveBeats.Add((float)marker.entity.beat);
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < GameManager.instance.Beatmap.Entities.Count; i++)
|
||||
{
|
||||
var entity = GameManager.instance.Beatmap.Entities[i];
|
||||
|
||||
var vLeft = entity.beat + entity.length >= timeLeft;
|
||||
var vRight = entity.beat < timeRight;
|
||||
|
||||
var active = vLeft && vRight;
|
||||
|
||||
var containsMarker = EntityMarkers.ContainsKey(entity.guid);
|
||||
|
||||
if (containsMarker)
|
||||
{
|
||||
var marker = EntityMarkers[entity.guid];
|
||||
if (marker.selected || marker.moving) active = true;
|
||||
}
|
||||
|
||||
if (active)
|
||||
{
|
||||
if (!containsMarker)
|
||||
{
|
||||
entityToSet = entity;
|
||||
Pool.Get();
|
||||
}
|
||||
EntityMarkers[entity.guid].UpdateMarker();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (EntityMarkers.ContainsKey(entity.guid))
|
||||
Pool.Release(EntityMarkers[entity.guid]);
|
||||
}
|
||||
}
|
||||
|
||||
InteractingWithEvents = false;
|
||||
MovingAnyEvents = false;
|
||||
foreach (var marker in EntityMarkers.Values)
|
||||
{
|
||||
if (marker.moving || marker.resizing || marker.mouseHovering)
|
||||
InteractingWithEvents = true;
|
||||
if (marker.moving)
|
||||
MovingAnyEvents = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void SortMarkers()
|
||||
{
|
||||
// Debug.Log("Sorted timeline blocks.");
|
||||
|
||||
var sortedBlocks = EntityMarkers.Values.OrderByDescending(c => c.entity.length).ToList();
|
||||
|
||||
var i = 0;
|
||||
foreach (var block in EntityMarkers.Values)
|
||||
{
|
||||
var index = sortedBlocks.FindIndex(c => c.entity.guid == block.entity.guid);
|
||||
block.transform.SetSiblingIndex(index + 1);
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
private TimelineEventObj CreateMarker()
|
||||
{
|
||||
TimelineEventObj marker = Instantiate(EntityTemplate.gameObject, Timeline.instance.TimelineEventsHolder).GetComponent<TimelineEventObj>();
|
||||
return marker;
|
||||
}
|
||||
|
||||
private void OnTakeMarkerFromPool(TimelineEventObj marker)
|
||||
{
|
||||
marker.SetEntity(entityToSet);
|
||||
marker.SetMarkerInfo();
|
||||
|
||||
SortMarkers();
|
||||
|
||||
marker.gameObject.SetActive(true);
|
||||
EntityMarkers.Add(entityToSet.guid, marker);
|
||||
}
|
||||
|
||||
private void OnReturnMarkerToPool(TimelineEventObj marker)
|
||||
{
|
||||
EntityMarkers.Remove(marker.entity.guid);
|
||||
marker.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
private void OnDestroyMarker(TimelineEventObj marker)
|
||||
{
|
||||
Destroy(marker.gameObject);
|
||||
}
|
||||
}
|
||||
}
|