diff --git a/.DS_Store b/.DS_Store index 31a71f4b..ac13a987 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/Assets/.DS_Store b/Assets/.DS_Store index 97b40c90..58751690 100644 Binary files a/Assets/.DS_Store and b/Assets/.DS_Store differ diff --git a/Assets/Plugins/Easy Save 3/Resources/ES3/ES3GlobalReferences.asset b/Assets/Plugins/Easy Save 3/Resources/ES3/ES3GlobalReferences.asset index 0fb2b6fa..cffecd68 100644 --- a/Assets/Plugins/Easy Save 3/Resources/ES3/ES3GlobalReferences.asset +++ b/Assets/Plugins/Easy Save 3/Resources/ES3/ES3GlobalReferences.asset @@ -1142,4 +1142,9 @@ MonoBehaviour: - {fileID: -1654692200621890270, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} - {fileID: 11500000, guid: fc1515ab76e54f068e2f2207940fab32, type: 3} - {fileID: 11500000, guid: 4d97c1cf488304279b0c7c7bdb1fb3d8, type: 3} - _Values: 526a8851fe85233e7cc810cd2b8a733faa68e71a62b99912cf2f06228873853005edfb00aa354575a31cc8ad1ac7b966f52afefc8351b636e2b71574be99675b6400dfc3607f0069e96d5112b3681f5fcf550a7f3749f10c2c006f2e23d1db370e64801184e106752a681216ffa3837998b5a5688fe7245230fcd93d5728ea479cf46b8ba7516b16ed2e96b5bbb6e20e0c6272c125d7806f67cd366983232521642549cf9088373b29cf12c86a843666a9d2726c53c784328db49f8d499d2140c6bf413c35ce7d12821326d7a7c36313210e18f42f147d60db1f64f3ada3bb2d6666d31a094491222bbde8f495825a4e2f05ece33b3881253ca117543370bf2531ac8ebf10b7f565a03ac9712b88ca58c516c5a7b6d8f161d84e972e95f1f208f318fcbd24a42f1a1594d13a0cca1e4d0b9a28c0e4238a4cd5432183fe0a3d37c5600352a5affe32a0f1cca64d60c95d6de43a2f1ab3ec2f8dafe7e182ac1c0b579975acc6cca75b9cf61ff356e4ff757ac4f0e2446c5178b3cc3b0938e3500b2c3eb04c15e369388d95cb10d3df8656069a951142fc403ed6b4a90102e5146519f66f6d35134e18b132d9ec6c3ec954f282992fe09c9f2a9752fc7c47b5d52b06e06eab61a6d10e4d7cc274d62caa67eb540f7f4be5844b6a66281ce82d2f664f7483a3a0ebff69576b98633aaa8921a5ddbe04814bd97aac297cdb1235373261c4cec06828ec556592c57c95cb2c5c853ad052230733029b09f8776f245772a3ca0276dcc8b833ca146a1411560f76a926a9289a1bf169092fa58ddf9c3a7517c82635364a7f4df403890f9d1ef144fb812196cd7f0c77286780f491baec2cdaf4fd482fda400ba6f61b9da4000716c29e6ca1845b5768bcaf0ecfc98bbb39185d35a921a8142041153dc39aaa1c286f97b630278db035fff6d32e0ef214326ce60b1f02d1fa3100beb18fe2b7e76ee911c7c76ae00c14c122f29acc03601a51f08a4016e1082f6d7eea356c2d4766a7c4e03aa5e33455a9d65f214d9d8402a2681f2dbdd87b070a985bebf6d6a81097a7bf6f1b653f6d44ca68c07e191e3105186bfcf1e65731b726cef277b7a02e2f4f8ba6de14e73c29b17188403b8622b78df10f42a4017cfff026423332e5732a39eecea4c4101a0158da5ca71f8e0cacf1a805a8b07076b2f15811115bf709cdfeb27a2a54c77a62f3f016365a2b209de610da2415e4793787e44c9401f65bb01b6f5693eb1d01b923a2b5bf5a3f57c537732b4a1ce41e1dd3bc5c8f84196316b39ae5142b724ec80f2101722eba6ec83b11cc7422a66c365139bf2fc07134f6c0358c0bda930f573d9dc4051c541157fd8ac87b1d9952a64ba6e19ca69e2499417fddbe2caa24c1a561f21387762d2def8c67a4f06e2bc76e0cb0d75f9409b22d34593aa82d7ba7ae89207f8b652d5f423bce6076d56121e00caac4b88c2c7dcb083a94c883285aa4d5c6ce0a8162bfdd6753d123843ddced44e075745b023dbb7e5b896e8269c01328054c9b302a1ab4da484855f13539de7736f3892f04d9f6479188c48f2cd00d4fa9d9c99a7201753abb270b443240a506dad2e62f21bcf924dbc733497deec366e53a852b5d6e466fed752cfb7898b19bdc423679483d7065d2ed753932d34255148ed5933b2f9bb6e6a9e268170b63bcea6793c524c3515736dfa68f07f4c3e5cd2819166dba29f321139f0d5a074dc689b94fcb3f83cf281fd236e5292abdda6dc835402586d5d0c1605cee625fb13d2d6d18c0428f254a59f1f69a0ef2e209aa3a5f6e2ef35ef170e07360261e3a3ede074843437e1dfbee809a1671c43e2f82acbcd800430f3a0f274f621bc623782b35791639d9b3d6a7a4a251738a9dcae15d1d2c629ec1dee87cac94318016b3a41242a73e5469a8f9e5305b1a9e52653be5bb871d51da8e739a2dbc794808278eefad6148f68c8cf374337c311ef987ce12cf173b716a0b132fe4277edbdd4e22f732d40ef01d45592e93a97ca93fa95e5a129817e09c00a6478b8824b30bce51819f29142579bf2f14716a04ec784291717a27138999bca5ced2397ca56aa623c557fa0aea6b7c2b2d37d36ecd046c4031e66938e3bac7e8e2834609b33cd57e178eca6b83c7852308adbe3e94d428359a07b5400093c0f470edd76c4e79870e9eaba95c32283d069372be6e79067bb6ab7ca454796a807a3129056bd4516d76698e182e2bcd6bccd4d0d55bd256e985ffc3c546e2bb353081161d28e9f2b17c68842a61ffbca8999ef095525156bae067ce736817b45824c349af41156b1c1de1a70c577fb57abce4d3570d25e2df2a5b3cc1489ae5994cd4f9624895167ccd2c878e56b79ca0e2b6cfb2425d4b4aa628d99c27562c7d03f23f7d7819c328ce578ae1527135e0f7dda3ff6a97dca81f440971457a5478000a8b6376e1d8360c581b142d9608e7a1456bfa07b651858937153a686575e98014203e3e284564acf772d0414ace1d3510e7224a5ade01287e0be64f896976eb354cd453dd6c74b85fa2e828b9d4c8b9fdf7d24683ea1f5d51667f1d5e15238dfce40c6aa371127c5bdaaa470b279155bdd3ad6d9730674a2c76017713a8a6b681a4d32ac75e5c6e094fa25e94676779f8d5da313d6e0934833ec218748a6ab334f3c665ab98e2e4d0e388478e09b6c50e887e177c2785ed64615806e08b1e6b46aa6d77d33232a00d0a9e1f09ae3d730b78d804f67dd0a3864c364a40dbc45b01f48e388ad267be45e0da793a5a1c4adc1a0557652262c47b11fe1e96831e163005de15e0fb03221f68b5285849dde06880275b1fe340dba9ac4b77d44955c8fff1aa3ec7ce951ee81cc70492c6e23b11207815a53ccaebba464132d331f694d66968042f655630447ceb4524f930ad89858d64d39f505d3e46807a1100bbe767782751b8dbae93ee5fc7226db8ffaccc4a5544bcb047a020454d5b3229c26b55bebe32232d20cceb1df107ea74ef6b3011a50761a6801b71d94a7d2c046a22d1333431a134bf8204e4ed2af4022af362109e2f2bef44313d81ec1a66a47b3c19c878470a55a2690825a356561e72b38fd7ae01ae4a6e96bb747f192505286ef155af188deaeb8cd4eec2232870ac4269fb76048416d70ae562427dd5bc4403fc346500705927a4eb212c63f36e41d3df3e7d298f24eada7da53229579148e75640d90c0cacd20fd3d11862168be888de916169c0e48b27b6757d3627fefc7d6914ba33b8b137cc9492aa430c88f1098dba073930de2672b5b1567fd6f7162a2a64072a451ccf2c5994d52e5bbfe973432468198e568f78da72731274c4468ee18fc367d4dc573e3c894702f74d106b78d3cd639abd3cfef63523231af4bf491b069c3f6fa51cfe8a26f82a3862d4b8df032e395b7650edaecae8507bfae382678d6e456f60c0820b69a968c953246344f2490055701c155611592b394b9a3c1ee2f55a1bf1f247ccd2d2694ad889b2a6521d6ef8a3102955feb74a8770a5d5a1229266ec4babb2d341af68b75b7f20341902746809447bd2cc041cc65840a4d302386b6bef9ff2fdcf41490c571f4e8127805e731a6c98de179420d656ef8a3a32d12f111d50acd2e01727d13d91114c1fc636929d3615656a0a7bbc9bffa1e8fa965da8113e79c5a1a532ea7e69180454e3301d79c190e8d37329dca220b7df4ecc352b1196c41eb28f0f07fbff1c2bdc8067b8cfbd62bc27462b9e145567c25c1264b234edf3be1e113122b8fe0f916a78044273957140d5010ea7ddc4fa9baa221fb56a55f91470e032c3ed7b7ac540e3304aa888e7b67a23199892ea67d8a8886e3c1377a78f0b3b603c0fdb93fa5c2e4a7d24561caa96003a473b91a75a470a6a98d8a779cf888976dfb7c7ef7a257b79309bde95c7ed4c3e31f237a3cd6f326f0a0bcfdefe65af544078f6f57d7bd96bb14684e8d850aa19c651a98b6a058644e66f933b98d3f00b2986bcc9080f6c13622ba77a1bc4cc0bcdd33418335b655093c331b81c194e667a0d386610db497d85bc8c077879970f0f788481ef1da14bf438ddcf86935441de988d54da39ba18e886f1c49546fc655bb9abaac6878c5c94128d280185080d674ae51107ece948329c69750e65e03bf4c85e45f9d5f44230b5c90e524e0b3bb3cbf2f392c067444ffa037bccaf833cc7382a1dcc2e985810164f89baa0c11e6db27652245a744ccf5d09012d86897f338cd68b7928087b339ae27b70de891043de1680da2a9e6dc2da8aeb7d87841910cf4ee764334c589bab7b57cc374f33e8b0b4bff010953f3aa8bd48d085bc6c8f107a773d9bd8085ae78680199d8806d542fb322c3bd701c5f052438afb772099171a234e388e4c2754e52869eaa729cf3be1ed7e1066351884c3d112e46d5e6f651930b7ab540e30b7f427a95067244828744e1a89a15782afc42d049fa043e686b803d1777123e6d31c36058ddf691518771690e1bb19c4c1ae08e7270a3159380d2f096af52e49ae98b99394ae0b30a5bee3e9482c38bf2dc0f03696c440c8eb8e3d9b0f7256ddb7321eb7fe79589046c8721a11e50ff42a8e2455fb084deb57827e23eba63fe7ea3e5f84b41043a71961f0ce5126253061b78e7fb1fe1dafe4090f80f77b5b5f77a5faafbb6b40194bcb6f5cf81c67325c4fc13417bf66e95cafa0ab01c2616a42b0ba08de2b15cef7a8ca7d6d7a48c7a140dd473d9076360c11520bcb94177895fbe6b89da010779b0bc3910b1657d6f8d809c1e51a2db23983fccdd809677340ac188e6c6f65425065ac31cde52b0b4684ec0d74a95cb12999f1219ddd6091a34f505efdc96a778c388f7f92041aada8f9eca2098a1717f73748fa9f7920d239e571826b330710ef76803c19dc1d267e4578a3f1bd652d666756341165281418be46ac9298418b0e234c6df62403e5e6dd84a5ff83207c7f9fe8d2893c21ab6192dca5698e6d19fcfb4debf52d37bf9b8fb2cb1f7d12632035d30c5091144a44a00b64485e7ca8909556fccaca71aed62a36f98955353140f88e2c72327c9afae1cbeb46af06e4d646c1eb0bac6e8fbbe0957e22d632957122408c9b7a242f3ee5210169112a5ced08811d51173c1498e218ad38044230eba0a397106d475d2293ad258a6d25564a0d94d4a7b01976a0d20c469d880ac65d0dea36916d6c5a4fdd3fe5c56277d4439108b966e8286445e5c71c857105ab9d738398585c3b235fc67b358fcb4e3e5b38030c80505f8c1b790f545aaf2aded7ea8238e50f2c6133d4e7d39ca10cefcc763eb292062b112c088221b218375064a6f285b279584b0b643f553733108693df771b8e887022ea8ff32272f413b3f3c7c8bd6b6d5f46ce8abdf6468026070803712d5ee33e24caeb90be938541ff778b61706a531b2580bce919456724969712e6917d1912d705eb8756fd1e4d4948bd6ed2e296715c1f97ad1bcd5769330f2656a56bd27e5e798a6a7fcbc427626e326103d6f779d37cbe4feb38d15b5c55ba662474f323763ecd4b6d00f026e4be108a00b86c09089f8329ad839369b61af2d6efa2fc117b0fd742a342e62e736893d3d7b9a515c1c36dc4f81cd00dac6395520e1a3741c3fe060f90aeac4987b19c151667416f40f7684def3ef65fc13512f827c6c3729fd495d6c0b4a5709048b555461adb4423269305828430000b9ab1a5634bdd40ef2ab5ebfc172f7451f7dc38f44ca559a53229fecc4110240596ca2503000c2427f6671b65ef470af71e577a6168f5400ca800cede208b30c5260e6c1daa87511547a1154c3e416a7934f5eb998a856e74f4ce53ff24fd0595c81e74014cd75e59579ae6381f0b32986ab7ede988363aa09fdf1179db5010b56455eba24a932d5d979142ef9f366c00fe13962315110c91e4d3616cc5e57e068a30d4ca1f8f4dd6899052f7f44a01978cee8538451360adb6a64188ce3e684fecc49a919d5d1f913a3f667a40ea6299d2f8f8b46bb74c636f7e7e392f295bc8f9a0e4b8e5920730cff5fe06ade56c33bb25a539c8e246a51037221fdee56111e32e73e1ce1a4b3ff1278460b5524a8a12b2f554ce9500eaa57737e24bd950156c11dd818e75022a8e9ab75fa21a596382980c2cef0c414f2e8a3b57e369743587910b5c8b361888b5ccc634dda04674e22ba04c32db0587acd350e64fa645dad97d28eff102284d80847622460d718e44af390f09c167649684afb7e531381087a00e5ac9367d20fc133249add740a062c3a29f6c351c651b747a894e2067b0b499645a01e83cf1cde6ed0971e14a41bbf0aade71675dae7b56c1aa440b2e23541c02b9c3655fb4006b92acddd929024144bbc135ba3fb4c3492055d86e52c2b8c9b555df917daa6f0a21fa2a4f2e5fd3419600af921167234a82f2794b726ebdcff41324d423b0c664303fdc3a778be53d7d6928ae71b524e487d6eb8f2fdc686f4805bbbd7da86547c714c35042a23df12748362346f1a156c7f7a40563ab6bab29930e8d3027c025cf6f75850ed5a22914ddb6785abbd7c659ed7b8a0360e41da91826af4f35de0077eeab2966d89a0daa850e790cf3516ebb4734425c4a282e54922f2752f3d9dffeb6016b0fae6031888835886e5e29b6c7b7f308009da3c217da7df95673ba9d5fee78c30ee65f0ee602b9d47fb09db1bce5ee0a00d2df62123e543530992403bc2d18a329123a1ea71ade021dd042c7772fb63c7ab09d30cddad64d6e2add7f27bd91ad68fa88a9abd063e5501e80bc037342ff4f617e0c90e8d54e3c14502f07a1d6253d6aa08e48a018b54d491f50a5e6b6046b233177c462c2af25c79241df6d130e0aa6fa99d2b4b6af48374027f8da0bdd5d4cc32ad24eea9f570f97f1cca66b4534eebab31fb028e06c822ffba2e9a7ff45b6e493aae93bbb6f9af1e14ba87bef34fcf2e794bffc0d745c69ab821abdbe4969c8e93d2865b42a752385bf4695c3063fc69ddc8e930546d71f0753e63e8923ce681e206d4ef360a8110ae281cdba385b5bbdace01e442a3d5decb893f8ef4b545772504c1b8c7247017b60621737089b3107747f22bd51dc0c1cf09ec5325022be8f2a5a6aeb3ecf4b65dea2e4c82427e353c4ff64cb7615c42d58377d100bcc33c15c77f25205e4babd3577630b3ed440168219f64f42f31815963c9207503b5aabd6a6249c18c9a61eba5969004fb9ee2c789492242a1c80b06ff717be50b36cfa1db835980724d0478d286a165ce69b21b2997143573681ba25732c211f646f6dc5641d077ca9daaa3cb468fe4e6b5456923870ea2450ae18c8858c6c08b028f297d8dcc13793a408bfc606a2618009ba1fd68ee62a599175b6053ff61d6ea1ecdd5a9527726ce1da2286561549f548b870b8742021bd380e95ad88c3535314aedbe53af914cfd2734897f74e0384d355b10898291d3ef2e0dd796e3b1b1e86749b05f12e4650a33f8be869b839e90b1981dd745c46156e610da5e4643df370d6ef7c4c0174fd649e9ba661cb2c3aa6c78588bcf956d6d27a6970de5f34f78267886c364236f3717c86293f5f4b5dcab9b453163936788019aad29804233d2d5cdc06bd407016016de8c08dd3698dd1f35ada541e0e44620013b013f65993a7b5031d7cba608b48cb548322f604ac7cc85b73a0016fb495675b43d2402af8c75519d8cf4c11e96c1adcdf8c6e216cfcbf2ddb52cd0c5bb9b078eba1e25d8af54d4a770fdc2330b744e0bbdd4e410388c73f926d054a6c9e8c6e7f3b03478abd53ea3f23a95b209c5d9296adc737f70d848c97dd1009046820267c915b6bbb8c6a783139812631225e2eca98e142d754658cbf90df6731a21057bc30274ef9c84e23184069428c5e5a747ee13f6c86ddfcd1f6e82b4b6bd2468e28296901adbe560ac6716d0a5d4876ea0471c4019e5abf58082c97032fa9050c49353a01f6a1c74f47aefd354919b3373616445ccdab782e4a6a120a78d513294d19791340174152c0174e5e4c345e794d13ed33566936366fb9b255767c9f03f14739566925554f5f218e6271da857b3c542541e747b7479dacc820cceff4fd96cccc1d5543f00a5e6f4c0d57638c02646c1535a3e0eb38ff80f3425c351b4e158bf83da6a3cf7f452f9f566d3b10c6df394437fbd5a54a1f6ce22c51ae66938a9b22336b4e5bc19c95f02e8142ccc4702c636a7a525340e6ae1e3ac0a2d0f39533e02ee723ced16bf92b661b89349ec75962234bfc0edcee621943302100f9c5fc984b23faab93fa35d57f26ed5a6fe3bc011a05f43e9241bd1c4ac4ee5eb606ce5e1622807bccadcf2815d871fc234276d97320e6f4d1be06091f18f6d00cd61e780bb48e6e9cc732372be4ac462f3f07f739c8d2d6ecc230d4278a9bb5b7fe1c3e08e907d7d0e5753b52e3df4b95b3c7a1100169bbfcb774b77c46b8edd3837fd3396e3e1946dec81e3df1d7f51d1bc08b3dceaaec1a66c03614a16a1771cff409698427fa5248fdda77454a0a5cd01af12c13cfd85bb1677d2f550510a9164da141a98a7574396c8e2e308aa04e356c1a43a5bc7c61339be514a429a74d0d848d0856374bba5b830d5abf55d4d839d10618ebcc055ad1400e0d5a9ee69cec23c44b19a9a46cb8d49f27cad6208970be4d2cdd71c72675172669bba7a043638e92636f760e1d8a8d2e16d2216f05e07a631815ed87a215153e00843bb211345bc43b45bd1bf9af30a24f43b0f897872b49350bb82f7606ef4e58c8f266b125e31d2ee5aa499d965dc71b4b385f641da77957f27d077b2c4e34546fc2c1a196537425ce277d3175e7cb677fb5d4317015c46f6cbda2a2ea985b33df9e0c581f69b208c53a96f52a47e2094e60051edd993b7b88310d54f61610667d4feeec0bdb7915fe330a555345654ca0ac538a933d56456390e0507706ff52d6d08c86c931ea721a10e4ef5c6f3042333e0b5c956505400857778404d76103cca3d4dc2d14ea6e3f1e5c5bdeba5d2de66211e085c9c552961aacfcfe5ee93292fde55d0708af69d224e50c4b614d14e4e6e6a61d506675d74849db0d1bb0646112b9f17f5bdc224d574d55512d62347f8214402bb6de6227903a0b07b9a46e10669c6161acd20a2d9cc6dba4801f0b5941de172b9aa27fcab738c0cd60f93646942401c87bf669f9f9983d7592ac258f1fcf312c96a754f7e3d5e71b6c287295fd2138a421d4224b751f3101650a36f5edcd526e38f5501230f51b5af0b2732ed92c8d4c1a35500b0e1948898aad6e266123f6c6851e5df92fda8bd446373b28935fdb929783254982b99fe15338777d780b0732445257bbcf867cf4c12452bbab8fe31576ff41e5483f493ebd3e5a089df1a4c4cff71c420897611eff1a09a80ce436c45561057ac9ec7b839b9602902b7357cf808e75a3aca10ddf9e231b6248f14ba2751e5efef61d8dbc72a05a7394f1497371d92865a56ce84cabda24592e2133731e5a1bf4eba7279dff46154dfc9b4bacdaa82b2119e5fd083612531cf9338d516ce76f11f3aa78354d7464ec8134484625d1342ab2eda6c7a2ed2a0205bc69cd2b9946e40a5c9f8420612c5c7eef79fe36f309d80049fca572c94c202b8acf6ef4683f1811d3ae7d8e4709ae3eb4b74c8bd338073abe328b6a1371411080599591bd6717af61ec62458c4946bf551bd87e6754013c36cbcac94b53019e9293f1128c40fc1ccefbedbf9b3e518a86b440d0b540872aa52d3776ce1f044a11fe28e0c53433141fbcb06b6741a0f77a3f4296123117aef33893a0f7794daef7a2ad9d1671c552812bb0f88f1bc3648c3ffc8fdc6dc81fea292c02382b0b996f0274c493031ff7850fea187e0e3e0ffbf72d3676412f76953278c061377652e0e877725801d0895df314ec58505f2414e3f9bf0142f14ecf14a63a845d6ab26567c7696835b7fac8b69469561ad0e5919cd5453034abdd07d65cbba50bf344769d790f760abbdf99f387b8d779f8b445c0a8e788501d6543169d6d2772602c3baf0c465e3f708657b4df24bc0cfa7132efff9a4c0a44da7fec349f9329faf36ca583d8933ded7baede6f2b8e07aa361c2c3b37730588b994cd388df50e1b80bbebb8178921210b2385b7d585184b77966bbbbf643e7f99e236bc3afa7b70bdf8f0e77abf6daefa4d475bf8bc5cc052e74fdb9e3526e6f96b51f9c0de18ef57eb06236bce2fb72918b60dac9978aac18a96ac54602e88d2d6e0e5116613e3cba7fcf249c62c211697b2867e186d6d1c58c8c9b89365f7bc8ff542af1559c205d242059c850c7849473c13ec4b0ab96973c9b89e492bc9be0c502644912ed50e107f5429972f974c4f807057511cf7665054dc21ed244458f43c562acd432589eedd0335a11c005dcd93b1364420f0d7b8726a19f40afd343bfb345bd93e1993a5f9462f1f2cf892acc6107f290c14d42c2de240ae3e82071f310659175b848eac45dc3e663f497495023a45e57df4d1189fd154a359be1c88c0f011da5156f8bc7e2d1bcf2a6fede56eaaab0338ec9c3c3541788a27330587bfb5a54e379b4458320263aa26fe12f241c6eefc121a50ad8c4d0f92226d95b032a38ee03761522c99ad2eca4fb99ccdac95341244f68b599a073d16754dc95f68eb223673f329a2181a95bf471bfcd4b042e58c5ea7f53c18344530233cb64ce4ce616325d440b96c91f92a734aa1b50412c6b733ab413e091ae1c0385ac654d1e2a4167c61f9dd012b20cc5e1fafcd938f2c1075ff188f10a06d3f0e818112cba5599111b832640ca4b85f758a1fd63650ac377929362f05ccd8e232c6137f55f2ff46791186b6301b3c5f2a26212624c5156a3f0cf90cb59ea3515c7dd63cc2ce7f8e2b0eb6510ee4edb411c4853aefae55483ce9c5d5db45dc254cd812b445ff9d5c59af51150ec45b5b1e45fbf1186961ad2ee186536baa968f329005e6f6a1f911611f6cbfa3c0c6877196486ab615f31d393f1dd9790f38fc18c2e37ebf75647c4b1670c92adeae1158f23afe0cffb9b87bdedf487ce068ad5697279a5bbbb81805c6b6a1a429f25a112f316a493608187c9cf99c55adf82c533d8d3df9b793ec55acfcb8b6e7ecad148636ab12d2f78d710f1dbfc11cc35741e3f4e2b62f53c863bbeb62c6af9e6b4f4c87dae4a43e2534e65115662cd5c6165b886623319bbb316e4757e694c7c15277f08a6b178d6220e5e82e22c29dc81b264c6b2637471e18bdf3ad1469f3371e6f3c0fc4b5a500322746091acaddf30b1073c1485b9a1a2ed371af23df4eb626204db2858e036635b362ff0ec1fbb121005efb09cd113d09563e97265423112790e33a17907999122609044166d60f31dc2edcc2b63f0c0ef057d0b093c01f7051d79ea536c8b279f80ee2c40cfba37f2f654a26474f7030f0492739a9e97f182974f08e3869fb137c62c9a85d48021405af1f06f5ba47019a916a800f14dd1e73046568f4ebb93a96c9561a7a382d38b4c3c1a6f67af26fd311d8352b84dc6fc117e49d5295f70f97a56340ef9d84619bcdcb2d2a7bea13f7d495e313830e111218a59dac701949452fc26322cda1358d77d0f95009993c03f7a67eff14fc1368adacf7bcddf22a4d7d8ea6c2b2ca29cd9fa9644cea3f1c4f1e5f5ce867b63033aecbcf7998f26a6afaadd27bf27a50d382b460429fa07e6e8f45db3d4e121b38a28cec19044f656eec31b868ee675b5bf0d094e3e98c2db0b6c2f7213258470ec80a1e7f666a31334ece2fd158e65cf7a07f4c7d7d384f155e3b634258445f4679ab9fe349dc3d5b0261941b5d5c58cf650080b20cc975025933dea2cd74250a6e744a0385404084420f84e45bcc48fe1c6c23a73b5352bddf6176ea026528768789ace911544a25bf03f51b4e595a72141f799eaf8246c1c68d2323ca557aa937fb6be579310e8e49b798c0b6926e7af8fc291c1475380543eb228330265b977761acb63bbf14452deb55f7e9850a341e9d1cc67f976c3d3d8fd69bab6d5ddea3d0c8e7c1da3ec61890b5ff35cf1b431f119b6cf56b1510ceeaf3ca95b0664072cd6445b20d0af9db55aeeee26c086d7318bbbd08ca18c74447e729198c5cc8f6f57203346170edf96bb7b4e6fb0e3cf2613eae6c23483de62c8af9f533204ff8e5f7edfa0538ee57323c62ed9c1e4938221b7aca0b34e7c151169f13961d2f813f059e6b342fa0d5159fc30d391566ff5f447dea9c7ac83ccfc8ec611221bb04331c4b96497043b23255c4a67f191dba3c629b6b423ec3f4f31141e07f0da9f7328743d69d2c3956c790313e0a38958e062baf626036ba26ad32bd84a705d36690bb1af263056cfe9b761e374d529e25520342f46a2f1527de36e78b234aafc16398cfc6525d2b01c0b0c7e9180e74ffd0e3d6ab4821039f580decd2e120dc5026e09ae6216379afd94034ba682bf0305519a4f9de04b01b92c5bd221b03f565081080c4f9175490be2b82298645f00e6b57100340420e58a2c078558b466cb5ca52b624f11405f7a5393b49e0290d51b201f435834593f8bc5b2b6bfa7afc8f31a467ae29034596141dac03be1b1ab623948b61d64d3255a4874220037d0d0b4482494dcb703ba076e18e8e055d9980a331a55b1d573a2d4f01a7455e05b2a5867f1d54046a65c44a80257a583ea5fe123d822d284dededbc779dcd170bbd8f6bcceb7a8545c1c6f52624358c65 + - {fileID: 2800000, guid: ee148e281f3c41c5b4ff5f8a5afe5a6c, type: 3} + - {fileID: 11500000, guid: dcc87ae8f9fe04833b49d5d7396d9693, type: 3} + - {fileID: 11500000, guid: 914dd73ddae7943148ea71537167542b, type: 3} + - {fileID: 11500000, guid: f39aaf316b5904be48688dae23e2e35f, type: 3} + - {fileID: 11500000, guid: 6bc62b724b099426b9121ce12d1dc1cd, type: 3} + _Values: 526a8851fe85233e7cc810cd2b8a733faa68e71a62b99912cf2f06228873853005edfb00aa354575a31cc8ad1ac7b966f52afefc8351b636e2b71574be99675b6400dfc3607f0069e96d5112b3681f5fcf550a7f3749f10c2c006f2e23d1db370e64801184e106752a681216ffa3837998b5a5688fe7245230fcd93d5728ea479cf46b8ba7516b16ed2e96b5bbb6e20e0c6272c125d7806f67cd366983232521642549cf9088373b29cf12c86a843666a9d2726c53c784328db49f8d499d2140c6bf413c35ce7d12821326d7a7c36313210e18f42f147d60db1f64f3ada3bb2d6666d31a094491222bbde8f495825a4e2f05ece33b3881253ca117543370bf2531ac8ebf10b7f565a03ac9712b88ca58c516c5a7b6d8f161d84e972e95f1f208f318fcbd24a42f1a1594d13a0cca1e4d0b9a28c0e4238a4cd5432183fe0a3d37c5600352a5affe32a0f1cca64d60c95d6de43a2f1ab3ec2f8dafe7e182ac1c0b579975acc6cca75b9cf61ff356e4ff757ac4f0e2446c5178b3cc3b0938e3500b2c3eb04c15e369388d95cb10d3df8656069a951142fc403ed6b4a90102e5146519f66f6d35134e18b132d9ec6c3ec954f282992fe09c9f2a9752fc7c47b5d52b06e06eab61a6d10e4d7cc274d62caa67eb540f7f4be5844b6a66281ce82d2f664f7483a3a0ebff69576b98633aaa8921a5ddbe04814bd97aac297cdb1235373261c4cec06828ec556592c57c95cb2c5c853ad052230733029b09f8776f245772a3ca0276dcc8b833ca146a1411560f76a926a9289a1bf169092fa58ddf9c3a7517c82635364a7f4df403890f9d1ef144fb812196cd7f0c77286780f491baec2cdaf4fd482fda400ba6f61b9da4000716c29e6ca1845b5768bcaf0ecfc98bbb39185d35a921a8142041153dc39aaa1c286f97b630278db035fff6d32e0ef214326ce60b1f02d1fa3100beb18fe2b7e76ee911c7c76ae00c14c122f29acc03601a51f08a4016e1082f6d7eea356c2d4766a7c4e03aa5e33455a9d65f214d9d8402a2681f2dbdd87b070a985bebf6d6a81097a7bf6f1b653f6d44ca68c07e191e3105186bfcf1e65731b726cef277b7a02e2f4f8ba6de14e73c29b17188403b8622b78df10f42a4017cfff026423332e5732a39eecea4c4101a0158da5ca71f8e0cacf1a805a8b07076b2f15811115bf709cdfeb27a2a54c77a62f3f016365a2b209de610da2415e4793787e44c9401f65bb01b6f5693eb1d01b923a2b5bf5a3f57c537732b4a1ce41e1dd3bc5c8f84196316b39ae5142b724ec80f2101722eba6ec83b11cc7422a66c365139bf2fc07134f6c0358c0bda930f573d9dc4051c541157fd8ac87b1d9952a64ba6e19ca69e2499417fddbe2caa24c1a561f21387762d2def8c67a4f06e2bc76e0cb0d75f9409b22d34593aa82d7ba7ae89207f8b652d5f423bce6076d56121e00caac4b88c2c7dcb083a94c883285aa4d5c6ce0a8162bfdd6753d123843ddced44e075745b023dbb7e5b896e8269c01328054c9b302a1ab4da484855f13539de7736f3892f04d9f6479188c48f2cd00d4fa9d9c99a7201753abb270b443240a506dad2e62f21bcf924dbc733497deec366e53a852b5d6e466fed752cfb7898b19bdc423679483d7065d2ed753932d34255148ed5933b2f9bb6e6a9e268170b63bcea6793c524c3515736dfa68f07f4c3e5cd2819166dba29f321139f0d5a074dc689b94fcb3f83cf281fd236e5292abdda6dc835402586d5d0c1605cee625fb13d2d6d18c0428f254a59f1f69a0ef2e209aa3a5f6e2ef35ef170e07360261e3a3ede074843437e1dfbee809a1671c43e2f82acbcd800430f3a0f274f621bc623782b35791639d9b3d6a7a4a251738a9dcae15d1d2c629ec1dee87cac94318016b3a41242a73e5469a8f9e5305b1a9e52653be5bb871d51da8e739a2dbc794808278eefad6148f68c8cf374337c311ef987ce12cf173b716a0b132fe4277edbdd4e22f732d40ef01d45592e93a97ca93fa95e5a129817e09c00a6478b8824b30bce51819f29142579bf2f14716a04ec784291717a27138999bca5ced2397ca56aa623c557fa0aea6b7c2b2d37d36ecd046c4031e66938e3bac7e8e2834609b33cd57e178eca6b83c7852308adbe3e94d428359a07b5400093c0f470edd76c4e79870e9eaba95c32283d069372be6e79067bb6ab7ca454796a807a3129056bd4516d76698e182e2bcd6bccd4d0d55bd256e985ffc3c546e2bb353081161d28e9f2b17c68842a61ffbca8999ef095525156bae067ce736817b45824c349af41156b1c1de1a70c577fb57abce4d3570d25e2df2a5b3cc1489ae5994cd4f9624895167ccd2c878e56b79ca0e2b6cfb2425d4b4aa628d99c27562c7d03f23f7d7819c328ce578ae1527135e0f7dda3ff6a97dca81f440971457a5478000a8b6376e1d8360c581b142d9608e7a1456bfa07b651858937153a686575e98014203e3e284564acf772d0414ace1d3510e7224a5ade01287e0be64f896976eb354cd453dd6c74b85fa2e828b9d4c8b9fdf7d24683ea1f5d51667f1d5e15238dfce40c6aa371127c5bdaaa470b279155bdd3ad6d9730674a2c76017713a8a6b681a4d32ac75e5c6e094fa25e94676779f8d5da313d6e0934833ec218748a6ab334f3c665ab98e2e4d0e388478e09b6c50e887e177c2785ed64615806e08b1e6b46aa6d77d33232a00d0a9e1f09ae3d730b78d804f67dd0a3864c364a40dbc45b01f48e388ad267be45e0da793a5a1c4adc1a0557652262c47b11fe1e96831e163005de15e0fb03221f68b5285849dde06880275b1fe340dba9ac4b77d44955c8fff1aa3ec7ce951ee81cc70492c6e23b11207815a53ccaebba464132d331f694d66968042f655630447ceb4524f930ad89858d64d39f505d3e46807a1100bbe767782751b8dbae93ee5fc7226db8ffaccc4a5544bcb047a020454d5b3229c26b55bebe32232d20cceb1df107ea74ef6b3011a50761a6801b71d94a7d2c046a22d1333431a134bf8204e4ed2af4022af362109e2f2bef44313d81ec1a66a47b3c19c878470a55a2690825a356561e72b38fd7ae01ae4a6e96bb747f192505286ef155af188deaeb8cd4eec2232870ac4269fb76048416d70ae562427dd5bc4403fc346500705927a4eb212c63f36e41d3df3e7d298f24eada7da53229579148e75640d90c0cacd20fd3d11862168be888de916169c0e48b27b6757d3627fefc7d6914ba33b8b137cc9492aa430c88f1098dba073930de2672b5b1567fd6f7162a2a64072a451ccf2c5994d52e5bbfe973432468198e568f78da72731274c4468ee18fc367d4dc573e3c894702f74d106b78d3cd639abd3cfef63523231af4bf491b069c3f6fa51cfe8a26f82a3862d4b8df032e395b7650edaecae8507bfae382678d6e456f60c0820b69a968c953246344f2490055701c155611592b394b9a3c1ee2f55a1bf1f247ccd2d2694ad889b2a6521d6ef8a3102955feb74a8770a5d5a1229266ec4babb2d341af68b75b7f20341902746809447bd2cc041cc65840a4d302386b6bef9ff2fdcf41490c571f4e8127805e731a6c98de179420d656ef8a3a32d12f111d50acd2e01727d13d91114c1fc636929d3615656a0a7bbc9bffa1e8fa965da8113e79c5a1a532ea7e69180454e3301d79c190e8d37329dca220b7df4ecc352b1196c41eb28f0f07fbff1c2bdc8067b8cfbd62bc27462b9e145567c25c1264b234edf3be1e113122b8fe0f916a78044273957140d5010ea7ddc4fa9baa221fb56a55f91470e032c3ed7b7ac540e3304aa888e7b67a23199892ea67d8a8886e3c1377a78f0b3b603c0fdb93fa5c2e4a7d24561caa96003a473b91a75a470a6a98d8a779cf888976dfb7c7ef7a257b79309bde95c7ed4c3e31f237a3cd6f326f0a0bcfdefe65af544078f6f57d7bd96bb14684e8d850aa19c651a98b6a058644e66f933b98d3f00b2986bcc9080f6c13622ba77a1bc4cc0bcdd33418335b655093c331b81c194e667a0d386610db497d85bc8c077879970f0f788481ef1da14bf438ddcf86935441de988d54da39ba18e886f1c49546fc655bb9abaac6878c5c94128d280185080d674ae51107ece948329c69750e65e03bf4c85e45f9d5f44230b5c90e524e0b3bb3cbf2f392c067444ffa037bccaf833cc7382a1dcc2e985810164f89baa0c11e6db27652245a744ccf5d09012d86897f338cd68b7928087b339ae27b70de891043de1680da2a9e6dc2da8aeb7d87841910cf4ee764334c589bab7b57cc374f33e8b0b4bff010953f3aa8bd48d085bc6c8f107a773d9bd8085ae78680199d8806d542fb322c3bd701c5f052438afb772099171a234e388e4c2754e52869eaa729cf3be1ed7e1066351884c3d112e46d5e6f651930b7ab540e30b7f427a95067244828744e1a89a15782afc42d049fa043e686b803d1777123e6d31c36058ddf691518771690e1bb19c4c1ae08e7270a3159380d2f096af52e49ae98b99394ae0b30a5bee3e9482c38bf2dc0f03696c440c8eb8e3d9b0f7256ddb7321eb7fe79589046c8721a11e50ff42a8e2455fb084deb57827e23eba63fe7ea3e5f84b41043a71961f0ce5126253061b78e7fb1fe1dafe4090f80f77b5b5f77a5faafbb6b40194bcb6f5cf81c67325c4fc13417bf66e95cafa0ab01c2616a42b0ba08de2b15cef7a8ca7d6d7a48c7a140dd473d9076360c11520bcb94177895fbe6b89da010779b0bc3910b1657d6f8d809c1e51a2db23983fccdd809677340ac188e6c6f65425065ac31cde52b0b4684ec0d74a95cb12999f1219ddd6091a34f505efdc96a778c388f7f92041aada8f9eca2098a1717f73748fa9f7920d239e571826b330710ef76803c19dc1d267e4578a3f1bd652d666756341165281418be46ac9298418b0e234c6df62403e5e6dd84a5ff83207c7f9fe8d2893c21ab6192dca5698e6d19fcfb4debf52d37bf9b8fb2cb1f7d12632035d30c5091144a44a00b64485e7ca8909556fccaca71aed62a36f98955353140f88e2c72327c9afae1cbeb46af06e4d646c1eb0bac6e8fbbe0957e22d632957122408c9b7a242f3ee5210169112a5ced08811d51173c1498e218ad38044230eba0a397106d475d2293ad258a6d25564a0d94d4a7b01976a0d20c469d880ac65d0dea36916d6c5a4fdd3fe5c56277d4439108b966e8286445e5c71c857105ab9d738398585c3b235fc67b358fcb4e3e5b38030c80505f8c1b790f545aaf2aded7ea8238e50f2c6133d4e7d39ca10cefcc763eb292062b112c088221b218375064a6f285b279584b0b643f553733108693df771b8e887022ea8ff32272f413b3f3c7c8bd6b6d5f46ce8abdf6468026070803712d5ee33e24caeb90be938541ff778b61706a531b2580bce919456724969712e6917d1912d705eb8756fd1e4d4948bd6ed2e296715c1f97ad1bcd5769330f2656a56bd27e5e798a6a7fcbc427626e326103d6f779d37cbe4feb38d15b5c55ba662474f323763ecd4b6d00f026e4be108a00b86c09089f8329ad839369b61af2d6efa2fc117b0fd742a342e62e736893d3d7b9a515c1c36dc4f81cd00dac6395520e1a3741c3fe060f90aeac4987b19c151667416f40f7684def3ef65fc13512f827c6c3729fd495d6c0b4a5709048b555461adb4423269305828430000b9ab1a5634bdd40ef2ab5ebfc172f7451f7dc38f44ca559a53229fecc4110240596ca2503000c2427f6671b65ef470af71e577a6168f5400ca800cede208b30c5260e6c1daa87511547a1154c3e416a7934f5eb998a856e74f4ce53ff24fd0595c81e74014cd75e59579ae6381f0b32986ab7ede988363aa09fdf1179db5010b56455eba24a932d5d979142ef9f366c00fe13962315110c91e4d3616cc5e57e068a30d4ca1f8f4dd6899052f7f44a01978cee8538451360adb6a64188ce3e684fecc49a919d5d1f913a3f667a40ea6299d2f8f8b46bb74c636f7e7e392f295bc8f9a0e4b8e5920730cff5fe06ade56c33bb25a539c8e246a51037221fdee56111e32e73e1ce1a4b3ff1278460b5524a8a12b2f554ce9500eaa57737e24bd950156c11dd818e75022a8e9ab75fa21a596382980c2cef0c414f2e8a3b57e369743587910b5c8b361888b5ccc634dda04674e22ba04c32db0587acd350e64fa645dad97d28eff102284d80847622460d718e44af390f09c167649684afb7e531381087a00e5ac9367d20fc133249add740a062c3a29f6c351c651b747a894e2067b0b499645a01e83cf1cde6ed0971e14a41bbf0aade71675dae7b56c1aa440b2e23541c02b9c3655fb4006b92acddd929024144bbc135ba3fb4c3492055d86e52c2b8c9b555df917daa6f0a21fa2a4f2e5fd3419600af921167234a82f2794b726ebdcff41324d423b0c664303fdc3a778be53d7d6928ae71b524e487d6eb8f2fdc686f4805bbbd7da86547c714c35042a23df12748362346f1a156c7f7a40563ab6bab29930e8d3027c025cf6f75850ed5a22914ddb6785abbd7c659ed7b8a0360e41da91826af4f35de0077eeab2966d89a0daa850e790cf3516ebb4734425c4a282e54922f2752f3d9dffeb6016b0fae6031888835886e5e29b6c7b7f308009da3c217da7df95673ba9d5fee78c30ee65f0ee602b9d47fb09db1bce5ee0a00d2df62123e543530992403bc2d18a329123a1ea71ade021dd042c7772fb63c7ab09d30cddad64d6e2add7f27bd91ad68fa88a9abd063e5501e80bc037342ff4f617e0c90e8d54e3c14502f07a1d6253d6aa08e48a018b54d491f50a5e6b6046b233177c462c2af25c79241df6d130e0aa6fa99d2b4b6af48374027f8da0bdd5d4cc32ad24eea9f570f97f1cca66b4534eebab31fb028e06c822ffba2e9a7ff45b6e493aae93bbb6f9af1e14ba87bef34fcf2e794bffc0d745c69ab821abdbe4969c8e93d2865b42a752385bf4695c3063fc69ddc8e930546d71f0753e63e8923ce681e206d4ef360a8110ae281cdba385b5bbdace01e442a3d5decb893f8ef4b545772504c1b8c7247017b60621737089b3107747f22bd51dc0c1cf09ec5325022be8f2a5a6aeb3ecf4b65dea2e4c82427e353c4ff64cb7615c42d58377d100bcc33c15c77f25205e4babd3577630b3ed440168219f64f42f31815963c9207503b5aabd6a6249c18c9a61eba5969004fb9ee2c789492242a1c80b06ff717be50b36cfa1db835980724d0478d286a165ce69b21b2997143573681ba25732c211f646f6dc5641d077ca9daaa3cb468fe4e6b5456923870ea2450ae18c8858c6c08b028f297d8dcc13793a408bfc606a2618009ba1fd68ee62a599175b6053ff61d6ea1ecdd5a9527726ce1da2286561549f548b870b8742021bd380e95ad88c3535314aedbe53af914cfd2734897f74e0384d355b10898291d3ef2e0dd796e3b1b1e86749b05f12e4650a33f8be869b839e90b1981dd745c46156e610da5e4643df370d6ef7c4c0174fd649e9ba661cb2c3aa6c78588bcf956d6d27a6970de5f34f78267886c364236f3717c86293f5f4b5dcab9b453163936788019aad29804233d2d5cdc06bd407016016de8c08dd3698dd1f35ada541e0e44620013b013f65993a7b5031d7cba608b48cb548322f604ac7cc85b73a0016fb495675b43d2402af8c75519d8cf4c11e96c1adcdf8c6e216cfcbf2ddb52cd0c5bb9b078eba1e25d8af54d4a770fdc2330b744e0bbdd4e410388c73f926d054a6c9e8c6e7f3b03478abd53ea3f23a95b209c5d9296adc737f70d848c97dd1009046820267c915b6bbb8c6a783139812631225e2eca98e142d754658cbf90df6731a21057bc30274ef9c84e23184069428c5e5a747ee13f6c86ddfcd1f6e82b4b6bd2468e28296901adbe560ac6716d0a5d4876ea0471c4019e5abf58082c97032fa9050c49353a01f6a1c74f47aefd354919b3373616445ccdab782e4a6a120a78d513294d19791340174152c0174e5e4c345e794d13ed33566936366fb9b255767c9f03f14739566925554f5f218e6271da857b3c542541e747b7479dacc820cceff4fd96cccc1d5543f00a5e6f4c0d57638c02646c1535a3e0eb38ff80f3425c351b4e158bf83da6a3cf7f452f9f566d3b10c6df394437fbd5a54a1f6ce22c51ae66938a9b22336b4e5bc19c95f02e8142ccc4702c636a7a525340e6ae1e3ac0a2d0f39533e02ee723ced16bf92b661b89349ec75962234bfc0edcee621943302100f9c5fc984b23faab93fa35d57f26ed5a6fe3bc011a05f43e9241bd1c4ac4ee5eb606ce5e1622807bccadcf2815d871fc234276d97320e6f4d1be06091f18f6d00cd61e780bb48e6e9cc732372be4ac462f3f07f739c8d2d6ecc230d4278a9bb5b7fe1c3e08e907d7d0e5753b52e3df4b95b3c7a1100169bbfcb774b77c46b8edd3837fd3396e3e1946dec81e3df1d7f51d1bc08b3dceaaec1a66c03614a16a1771cff409698427fa5248fdda77454a0a5cd01af12c13cfd85bb1677d2f550510a9164da141a98a7574396c8e2e308aa04e356c1a43a5bc7c61339be514a429a74d0d848d0856374bba5b830d5abf55d4d839d10618ebcc055ad1400e0d5a9ee69cec23c44b19a9a46cb8d49f27cad6208970be4d2cdd71c72675172669bba7a043638e92636f760e1d8a8d2e16d2216f05e07a631815ed87a215153e00843bb211345bc43b45bd1bf9af30a24f43b0f897872b49350bb82f7606ef4e58c8f266b125e31d2ee5aa499d965dc71b4b385f641da77957f27d077b2c4e34546fc2c1a196537425ce277d3175e7cb677fb5d4317015c46f6cbda2a2ea985b33df9e0c581f69b208c53a96f52a47e2094e60051edd993b7b88310d54f61610667d4feeec0bdb7915fe330a555345654ca0ac538a933d56456390e0507706ff52d6d08c86c931ea721a10e4ef5c6f3042333e0b5c956505400857778404d76103cca3d4dc2d14ea6e3f1e5c5bdeba5d2de66211e085c9c552961aacfcfe5ee93292fde55d0708af69d224e50c4b614d14e4e6e6a61d506675d74849db0d1bb0646112b9f17f5bdc224d574d55512d62347f8214402bb6de6227903a0b07b9a46e10669c6161acd20a2d9cc6dba4801f0b5941de172b9aa27fcab738c0cd60f93646942401c87bf669f9f9983d7592ac258f1fcf312c96a754f7e3d5e71b6c287295fd2138a421d4224b751f3101650a36f5edcd526e38f5501230f51b5af0b2732ed92c8d4c1a35500b0e1948898aad6e266123f6c6851e5df92fda8bd446373b28935fdb929783254982b99fe15338777d780b0732445257bbcf867cf4c12452bbab8fe31576ff41e5483f493ebd3e5a089df1a4c4cff71c420897611eff1a09a80ce436c45561057ac9ec7b839b9602902b7357cf808e75a3aca10ddf9e231b6248f14ba2751e5efef61d8dbc72a05a7394f1497371d92865a56ce84cabda24592e2133731e5a1bf4eba7279dff46154dfc9b4bacdaa82b2119e5fd083612531cf9338d516ce76f11f3aa78354d7464ec8134484625d1342ab2eda6c7a2ed2a0205bc69cd2b9946e40a5c9f8420612c5c7eef79fe36f309d80049fca572c94c202b8acf6ef4683f1811d3ae7d8e4709ae3eb4b74c8bd338073abe328b6a1371411080599591bd6717af61ec62458c4946bf551bd87e6754013c36cbcac94b53019e9293f1128c40fc1ccefbedbf9b3e518a86b440d0b540872aa52d3776ce1f044a11fe28e0c53433141fbcb06b6741a0f77a3f4296123117aef33893a0f7794daef7a2ad9d1671c552812bb0f88f1bc3648c3ffc8fdc6dc81fea292c02382b0b996f0274c493031ff7850fea187e0e3e0ffbf72d3676412f76953278c061377652e0e877725801d0895df314ec58505f2414e3f9bf0142f14ecf14a63a845d6ab26567c7696835b7fac8b69469561ad0e5919cd5453034abdd07d65cbba50bf344769d790f760abbdf99f387b8d779f8b445c0a8e788501d6543169d6d2772602c3baf0c465e3f708657b4df24bc0cfa7132efff9a4c0a44da7fec349f9329faf36ca583d8933ded7baede6f2b8e07aa361c2c3b37730588b994cd388df50e1b80bbebb8178921210b2385b7d585184b77966bbbbf643e7f99e236bc3afa7b70bdf8f0e77abf6daefa4d475bf8bc5cc052e74fdb9e3526e6f96b51f9c0de18ef57eb06236bce2fb72918b60dac9978aac18a96ac54602e88d2d6e0e5116613e3cba7fcf249c62c211697b2867e186d6d1c58c8c9b89365f7bc8ff542af1559c205d242059c850c7849473c13ec4b0ab96973c9b89e492bc9be0c502644912ed50e107f5429972f974c4f807057511cf7665054dc21ed244458f43c562acd432589eedd0335a11c005dcd93b1364420f0d7b8726a19f40afd343bfb345bd93e1993a5f9462f1f2cf892acc6107f290c14d42c2de240ae3e82071f310659175b848eac45dc3e663f497495023a45e57df4d1189fd154a359be1c88c0f011da5156f8bc7e2d1bcf2a6fede56eaaab0338ec9c3c3541788a27330587bfb5a54e379b4458320263aa26fe12f241c6eefc121a50ad8c4d0f92226d95b032a38ee03761522c99ad2eca4fb99ccdac95341244f68b599a073d16754dc95f68eb223673f329a2181a95bf471bfcd4b042e58c5ea7f53c18344530233cb64ce4ce616325d440b96c91f92a734aa1b50412c6b733ab413e091ae1c0385ac654d1e2a4167c61f9dd012b20cc5e1fafcd938f2c1075ff188f10a06d3f0e818112cba5599111b832640ca4b85f758a1fd63650ac377929362f05ccd8e232c6137f55f2ff46791186b6301b3c5f2a26212624c5156a3f0cf90cb59ea3515c7dd63cc2ce7f8e2b0eb6510ee4edb411c4853aefae55483ce9c5d5db45dc254cd812b445ff9d5c59af51150ec45b5b1e45fbf1186961ad2ee186536baa968f329005e6f6a1f911611f6cbfa3c0c6877196486ab615f31d393f1dd9790f38fc18c2e37ebf75647c4b1670c92adeae1158f23afe0cffb9b87bdedf487ce068ad5697279a5bbbb81805c6b6a1a429f25a112f316a493608187c9cf99c55adf82c533d8d3df9b793ec55acfcb8b6e7ecad148636ab12d2f78d710f1dbfc11cc35741e3f4e2b62f53c863bbeb62c6af9e6b4f4c87dae4a43e2534e65115662cd5c6165b886623319bbb316e4757e694c7c15277f08a6b178d6220e5e82e22c29dc81b264c6b2637471e18bdf3ad1469f3371e6f3c0fc4b5a500322746091acaddf30b1073c1485b9a1a2ed371af23df4eb626204db2858e036635b362ff0ec1fbb121005efb09cd113d09563e97265423112790e33a17907999122609044166d60f31dc2edcc2b63f0c0ef057d0b093c01f7051d79ea536c8b279f80ee2c40cfba37f2f654a26474f7030f0492739a9e97f182974f08e3869fb137c62c9a85d48021405af1f06f5ba47019a916a800f14dd1e73046568f4ebb93a96c9561a7a382d38b4c3c1a6f67af26fd311d8352b84dc6fc117e49d5295f70f97a56340ef9d84619bcdcb2d2a7bea13f7d495e313830e111218a59dac701949452fc26322cda1358d77d0f95009993c03f7a67eff14fc1368adacf7bcddf22a4d7d8ea6c2b2ca29cd9fa9644cea3f1c4f1e5f5ce867b63033aecbcf7998f26a6afaadd27bf27a50d382b460429fa07e6e8f45db3d4e121b38a28cec19044f656eec31b868ee675b5bf0d094e3e98c2db0b6c2f7213258470ec80a1e7f666a31334ece2fd158e65cf7a07f4c7d7d384f155e3b634258445f4679ab9fe349dc3d5b0261941b5d5c58cf650080b20cc975025933dea2cd74250a6e744a0385404084420f84e45bcc48fe1c6c23a73b5352bddf6176ea026528768789ace911544a25bf03f51b4e595a72141f799eaf8246c1c68d2323ca557aa937fb6be579310e8e49b798c0b6926e7af8fc291c1475380543eb228330265b977761acb63bbf14452deb55f7e9850a341e9d1cc67f976c3d3d8fd69bab6d5ddea3d0c8e7c1da3ec61890b5ff35cf1b431f119b6cf56b1510ceeaf3ca95b0664072cd6445b20d0af9db55aeeee26c086d7318bbbd08ca18c74447e729198c5cc8f6f57203346170edf96bb7b4e6fb0e3cf2613eae6c23483de62c8af9f533204ff8e5f7edfa0538ee57323c62ed9c1e4938221b7aca0b34e7c151169f13961d2f813f059e6b342fa0d5159fc30d391566ff5f447dea9c7ac83ccfc8ec611221bb04331c4b96497043b23255c4a67f191dba3c629b6b423ec3f4f31141e07f0da9f7328743d69d2c3956c790313e0a38958e062baf626036ba26ad32bd84a705d36690bb1af263056cfe9b761e374d529e25520342f46a2f1527de36e78b234aafc16398cfc6525d2b01c0b0c7e9180e74ffd0e3d6ab4821039f580decd2e120dc5026e09ae6216379afd94034ba682bf0305519a4f9de04b01b92c5bd221b03f565081080c4f9175490be2b82298645f00e6b57100340420e58a2c078558b466cb5ca52b624f11405f7a5393b49e0290d51b201f435834593f8bc5b2b6bfa7afc8f31a467ae29034596141dac03be1b1ab623948b61d64d3255a4874220037d0d0b4482494dcb703ba076e18e8e055d9980a331a55b1d573a2d4f01a7455e05b2a5867f1d54046a65c44a80257a583ea5fe123d822d284dededbc779dcd170bbd8f6bcceb7a8545c1c6f52624358c65a186450174a4af0ab970aefb7201680586aa7039c85377484be253c5424b626f7c7d27a25cc7c274 diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/EditorScene.unity similarity index 93% rename from Assets/Scenes/SampleScene.unity rename to Assets/Scenes/EditorScene.unity index 36ed6286..36eba4bf 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/EditorScene.unity @@ -447,6 +447,59 @@ RectTransform: m_AnchoredPosition: {x: 832.5, y: 0} m_SizeDelta: {x: 1665, y: 60} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &134500156 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 134500157} + - component: {fileID: 134500158} + m_Layer: 5 + m_Name: MainPage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &134500157 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 134500156} + 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: 1100229419} + - {fileID: 698213482} + m_Father: {fileID: 1647473499} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &134500158 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 134500156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dcc87ae8f9fe04833b49d5d7396d9693, type: 3} + m_Name: + m_EditorClassIdentifier: + mainCanvas: {fileID: 1647473502} + toolBar: {fileID: 1100229420} + resolutionHints: {fileID: 698213484} --- !u!1 &147050167 GameObject: m_ObjectHideFlags: 0 @@ -2636,13 +2689,14 @@ GameObject: m_Component: - component: {fileID: 698213482} - component: {fileID: 698213483} + - component: {fileID: 698213484} m_Layer: 5 m_Name: ResolutionHints m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &698213482 RectTransform: m_ObjectHideFlags: 0 @@ -2650,7 +2704,7 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 698213481} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + 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 @@ -2658,7 +2712,7 @@ RectTransform: - {fileID: 887261416} - {fileID: 1191279292} - {fileID: 1173389078} - m_Father: {fileID: 1647473499} + m_Father: {fileID: 134500157} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2677,6 +2731,21 @@ CanvasGroup: m_Interactable: 0 m_BlocksRaycasts: 0 m_IgnoreParentGroups: 0 +--- !u!114 &698213484 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 698213481} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f39aaf316b5904be48688dae23e2e35f, type: 3} + m_Name: + m_EditorClassIdentifier: + phoneFrame: {fileID: 887261417} + iPadFrame: {fileID: 1191279293} + safeAreaFrame: {fileID: 1173389079} --- !u!1 &719302917 GameObject: m_ObjectHideFlags: 0 @@ -3268,7 +3337,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &887261416 RectTransform: m_ObjectHideFlags: 0 @@ -3706,6 +3775,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1039576899} + - component: {fileID: 1039576900} m_Layer: 0 m_Name: EditorUI m_TagString: Untagged @@ -3732,6 +3802,22 @@ Transform: - {fileID: 1243045559} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1039576900 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1039576898} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8a2ccc95906d14353beb4e727c00ffb0, type: 3} + m_Name: + m_EditorClassIdentifier: + mainPage: {fileID: 134500158} + hierarchy: {fileID: 1648907612} + inspector: {fileID: 1295357895} + timeline: {fileID: 30852810} --- !u!1 &1100229418 GameObject: m_ObjectHideFlags: 0 @@ -3741,6 +3827,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1100229419} + - component: {fileID: 1100229420} m_Layer: 5 m_Name: ToolBar m_TagString: Untagged @@ -3755,20 +3842,36 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1100229418} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + 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: 870751055} - {fileID: 305380821} - m_Father: {fileID: 1647473499} + m_Father: {fileID: 134500157} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 1} m_AnchorMax: {x: 0.5, y: 1} m_AnchoredPosition: {x: 0.00002769, y: -30} m_SizeDelta: {x: 1920, y: 60} m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1100229420 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1100229418} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 914dd73ddae7943148ea71537167542b, type: 3} + m_Name: + m_EditorClassIdentifier: + projectInfoButton: {fileID: 932077333} + songInfoButton: {fileID: 1907989930} + saveButton: {fileID: 695359561} + exportButton: {fileID: 1491057508} --- !u!1 &1109724662 GameObject: m_ObjectHideFlags: 0 @@ -4034,7 +4137,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &1173389078 RectTransform: m_ObjectHideFlags: 0 @@ -4211,7 +4314,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &1191279292 RectTransform: m_ObjectHideFlags: 0 @@ -4281,7 +4384,7 @@ GameObject: - component: {fileID: 1197505578} - component: {fileID: 1197505581} - component: {fileID: 1197505582} - - component: {fileID: 1197505583} + - component: {fileID: 1197505584} m_Layer: 0 m_Name: EditorManager m_TagString: Untagged @@ -4328,7 +4431,7 @@ MonoBehaviour: - Name: commandScripts Entry: 6 Data: - uiManager: {fileID: 1197505583} + uiManager: {fileID: 1039576900} currentJudgeType: 2 basePrefabs: {fileID: 11400000, guid: 266f4a39c512c46eea7e44336e4fc600, type: 2} --- !u!4 &1197505579 @@ -4378,7 +4481,7 @@ MonoBehaviour: selectedThemeBundleList: [] loadedThemeBundleList: [] waitingBundleAmount: 0 ---- !u!114 &1197505583 +--- !u!114 &1197505584 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4387,12 +4490,9 @@ MonoBehaviour: m_GameObject: {fileID: 1197505577} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 8a2ccc95906d14353beb4e727c00ffb0, type: 3} + m_Script: {fileID: 11500000, guid: 6bc62b724b099426b9121ce12d1dc1cd, type: 3} m_Name: m_EditorClassIdentifier: - hierarchy: {fileID: 1648907612} - inspector: {fileID: 1295357895} - timeline: {fileID: 30852810} --- !u!1 &1214558124 GameObject: m_ObjectHideFlags: 0 @@ -6099,7 +6199,7 @@ GameObject: - component: {fileID: 1647473501} - component: {fileID: 1647473500} m_Layer: 5 - m_Name: Main + m_Name: MainCanvas m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -6117,8 +6217,7 @@ RectTransform: m_LocalScale: {x: 0, y: 0, z: 0} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1100229419} - - {fileID: 698213482} + - {fileID: 134500157} m_Father: {fileID: 1039576899} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -7859,7 +7958,7 @@ MonoBehaviour: openPrefabs: 0 prefabs: [] idRef: - _Keys: 526a8851fe85233e7cc810cd2b8a733faa68e71a62b99912cf2f06228873853005edfb00aa354575a31cc8ad1ac7b966f52afefc8351b636e2b71574be99675b6400dfc3607f0069e96d5112b3681f5fcf550a7f3749f10c2c006f2e23d1db370e64801184e106752a681216ffa3837998b5a5688fe724520d14109f10d172186ee5fbb117f224110b067c1b61cb6e75d9b619fa92551a320786221b3b03ec208e22f046f695e21830fcd93d5728ea479cf46b8ba7516b16ed2e96b5bbb6e20e0c6272c125d7806f67cd366983232521642549cf9088373bbcb047a020454d5bb82aa5499ca2e04b4891be89dac6ab0e659c5a08b1215a41b815970146d88b119ec54e97b8c60707cd2b47c307f6a055723ad0f074e03e69319b6e78f521fa20e22f14eb87ebaa2c5d9ec5792568c53e74417380a87c864288e4671d588e1210db981f281d4a325d1a036b29e53abc3829cf12c86a843666a9d2726c53c784328db49f8d499d214074d166a5105c5d3da29f4627a1da7a5e317a2d1042614f5281c64a6625b57e38c6bf413c35ce7d12821326d7a7c36313210e18f42f147d60db1f64f3ada3bb2d6666d31a094491222bbde8f495825a4e2f05ece33b3881253ca117543370bf2531ac8ebf10b7f565a03ac9712b88ca58c516c5a7b6d8f161e8f9dd682d3dee657e0ec3e9f39a3e76118743006e0ffa3a958fe6b6ca98245845d258f66aa26d222a2ff31dc5e16529d84e972e95f1f208f318fcbd24a42f1a1594d13a0cca1e4d0b9a28c0e4238a4cd5432183fe0a3d37c5600352a5affe32a0f1cca64d60c95d6de43a2f1ab3ec2f8dafe7e182ac1c0b579975acc6cca75b9cf61ff356e4ff757ac4f0e2446c5178b3cc3b0938e3500b2c3eb04c15e369388d95cb10d3df8656508d984144c6391548fc5f9307b1937f462b1e94944b8a5d47e5baaa4a0ec664069a951142fc403ed6b4a90102e5146519f66f6d35134e18b132d9ec6c3ec954f282992fe09c9f2a9752fc7c47b5d52b06e06eab61a6d10e4d7cc274d62caa67eb540f7f4be5844b6a66281ce82d2f660704e68bd01df34b4f7483a3a0ebff69576b98633aaa8921a5ddbe04814bd97aac297cdb1235373261c4cec06828ec556592c57c95cb2c5c853ad052230733029b09f8776f245772a3ca0276dcc8b833ca146a1411560f76a926a9289a1bf169092fa58ddf9c3a7517c82635364a7f4df403890f9d1ef144fb812196cd7f0c77286780f491baec2cdaf4fd482fda400ba6f61b9da4000716c29e6ca1845b5768bcaf0ecfc98bbb39185d35a921a8142041153dc39aaa1c286f97b630278db035b399727f338ebd32b154b50236b0376b4d721d6667e4fc106c1a9fcd2a75ee765300a244e46bac30d36f74ee5f1e5e1ecf22e3b47049ce6796831219efef073b663eaf360df286471f4d94f76f0eb074884263b2a75d1863ce0aae615892403e884faa62326ad43eaa2a9522b5d7f75bcc785fcdad451c3b561268034425ee4e712d804046ec580d17a1097cc8f6ad5afff6d32e0ef214326ce60b1f02d1fa31e71c6c1ca8c75d472e9349f4c45f8c4dc0c2013af81c5d63b2032b19179f0c5109edb220eddd4a554c13b12cb5d56721429066885700c558f421713be1a14442bb774cca3425cb341fcaf3fbd03ccf786c4d5ba70595a869cf6fe72c22325567a5649773f2357847af0759d10313b725cfe3c24772aa470214482b6154a356625d3cfd5f01ca892d756a72e68478521c260cfa05f49dda051e95883b60da9c51a244d0c0efe9d8666defd20837617d7266b7c4b857af913f62f77c9653c48e6531de7737b6edf43c4fb65263c69d520ca31f8267043c187cb4a2308b15597153743145a4f867105aca84b71279cbaf66bfaa5ba7832ffb560a905f13c6ddfc56d95928071c08fb3b1fb5c7c5200b0056ee483116cf9b411d5add2ab42d68210eab747ff3c96d3a504da8889e1b9f6a76e44a45824db5863649a09878ada45b093fff39b97a41162843c42da16cac080e6d98e7aec85f367b53fb8ec0f6007f0600beb18fe2b7e76ee911c7c76ae00c14c122f29acc03601a51f08a4016e1082f6d7eea356c2d4766a7c4e03aa5e33455a9d65f214d9d8402a2681f2dbdd87b070a985bebf6d6a81097a7bf6f1b653f6d44ca68c07e191e3105186bfcf1e65731b726cef277b7a02e2f4f8ba6de14e73c29b17188403b8622b78df10f42a4017cfff026423332e5732a39eecea4c4101a0158da5ca71f8e0cacf1a805a8b07076b2f15811115bf709cdfeb27a2a54c77a62f3f016365a2b209de610da2415e4793787e44c9401f65bb01b6f5693eb1d01b923a2b5bf5a3f57c537732b4a1ce41e1dd3bc5c8f84196316b39ae5142b724ec80f2101722eba6ec83b11cc7422a66c365139bf2fc07134f6c0358c0bda930f573d9dc4051c541157fd8ac87b1d9952a64ba6e19ca69e2499417fddbe2caa24c1a561f21387762d2def8c67a4f06e2bc76e0cb0d75f9409b22d34593aa82d7ba7ae89207f8b652d5f423bce6076d56121e00caac4b88c2c7dcb083a94c883285aa4d5c6ce0a8162bfdd6753d123843ddced44e075745b023dbb7e5b896e8269c01328054c9b302a1ab4da484855f13539de7736f3892f04d9f6479188c48f2cd00d4fa9d9c99a7201753abb270b443240a506dad2e62f21bcf924dbc733497deec366e53a852b5d6e466fed752cfb7898b19bdc423679483d7065d2ed753932d34255148ed5933b2f9bb6e6a9e268170b63bcea6793c524c3515736dfa68f07f4c3e5cd2819166dba29f321139f0d5a074dc689b94fcb3f83cf281fd236e5292abdda6dc835402586d5d0c1605cee625fb13d2d6d18c0428f254a59f1f69a0ef2e209aa3a5f6e2ef35ef170e07360261e3a3ede074843437e1dfbee809a1671c43e2f82acbcd800430f3a0f274f621bc623782b35791639d9b3d6a7a4a251738a9dcae15d1d2c629ec1dee87cac94318016b3a41242a73e5469a8f9e5305b1a9e52653be5bb871d51da8e739a2dbc794808278eefad6148f68c8cf374337c311ef987ce12cf173b716a0b132fe4277edbdd4e22f732d40ef01d45592e93a97ca93fa95e5a129817e09c00a6478b8824b30bce51819f29142579bf2f14716a04ec784291717a27138999bca5ced2397ca56aa623c557fa0aea6b7c2b2d37d36ecd046c4031e66938e3bac7e8e2834609b33cd57e178eca6b83c7852308adbe3e94d428359a07b5400093c0f470edd76c4e79870e9eaba95c32283d069372be6e79067bb6ab7ca454796a807a3129056bd4516d76698e182e2bcd6bccd4d0d55bd256e985ffc3c546e2bb353081161d28e9f2b17c68842a61ffbca8999ef095525156bae067ce736817b45824c349af41156b1c1de1a70c577fb57abce4d3570d25e2df2a5b3cc1489ae5994cd4f9624895167ccd2c878e56b79ca0e2b6cfb2425d4b4aa628d99c27562c7d03f23f7d7819c328ce578ae1527135e0f7dda3ff6a97dca81f440971457a5478000a8b6376e1d8360c581b142d9608e7a1456bfa07b11db9cad86b165ea900c6a33576f6669b6509fca26e78181e3ede275a8dd608e99eab8ab79fb62091b490f2856d9b4217a75c73f0925d24f926913197ec393b9de88cf0bdbdcf010bcbb3426c6c6d7e45accf53ccbe9060865688a783570c0b104493af50b47d63cdef662cf94f80351be43050530347601dddf3f456dd262d70d44b89935d88372e86a8cee0b3492bd7bd8d9f26bbb70cfe339272c1880d54ea6c44dbfb085e779397802554e9bf30d9e0e167af78f92c74a879380f050748667067538e266767fc005c1939ca0c1ea78a5417c0d02940b651858937153a68779e2ac44926202b6575e98014203e3ea29e6086c3ac7102284564acf772d0414ace1d3510e7224a5ade01287e0be64f896976eb354cd453dd6c74b85fa2e828b9d4c8b9fdf7d24683ea1f5d51667f1d5e15238dfce40c6aa371127c5bdaaa470b279155bdd3ad6d9730674a2c76017713a8a6b681a4d32ac75e5c6e094fa25e94676779f8d5da313d6e0934833ec218748a6ab334f3c665ab98e2e4d0e388478e09b6c50e887e177c2785ed64615806e08b1e6b46aa6d77d33232a00d0a9e1f09ae3d730b78d804f67dd0a3864c364a40dbc45b01f48e388ad267be45e0da793a5a1c4adc1a0557652262c47b11fe1e96831e163005de15e0fb03221f68b5285849dde06880275b1fe340dba9ac4b77d44955c8fff1aa3ec7ce951ee81cc70492c6e23b11207815a53ccaebba464132d331f694d66968042f655630447ceb4524f930ad89858d646db8ffaccc4a5544b8dbae93ee5fc7221100bbe767782751d39f505d3e46807a33ea248231afbc4820d464750dae792b485f35f3da671b68c470c6f7a0e967032bfc144474afdf073229c26b55bebe32404fecaaae93c74ce2f2e2b42f0a3340f1adc28705b45160767200e0055d2a29c8d707be4a4cbf309d7b188aeeb4396969bfa396f9cdaa0a5fb2ccc36c18b83e1d0c7c0612f18a3d6df22581ccdb4f3ec869b63bff3fdd6a7eede202e67d624acca95905cebf8377cb9ad6f957d6c17c9c7103fc9e83c122d0ed77dbf077a81090dbb52382496f07e63f079a15d6c254af5f9f58805fe84e95842a43c8a098540f3976cd731b00191ff41e2175a4c759503476afe9fe6e300d9847f88b4d2f7928a47323a00b1f6ca17ac673be392639b47c6c03e9b7c20fcb46da0c63f9a56c2597491a17ebf95a54e25163c4e2ef2b8ff153f745cd9d20997c11191ad330651f32975683415037232d20cceb1df1072bef44313d81ec1af4022af362109e2f2c046a22d133343118402fce0841ce4eea74ef6b3011a50766a47b3c19c87847a134bf8204e4ed2a61a6801b71d94a7d2505286ef155af18ae4a6e96bb747f19561e72b38fd7ae012870ac4269fb76048deaeb8cd4eec2230a55a2690825a3568416d70ae562427dd5bc4403fc346500705927a4eb212c63f36e41d3df3e7d298f24eada7da53229579148e75640d90c0cacd20fd3d11862168be888de916169c0e48b27b6757d3627fefc7d6914ba33b8b137cc9492aa430c88f1098dba073930de2672b5b1567fd6f7162a2a64072a451ccf2c5994d52e5bbfe973432468198e568f78da72731274c4468ee18fc367d4dc573e3c894702f74d106b78d3cd639abd3cfef63523236f60c0820b69a9687bfae382678d6e451af4bf491b069c3f5b7650edaecae8503862d4b8df032e396fa51cfe8a26f82ac953246344f2490055701c155611592b394b9a3c1ee2f55a1bf1f247ccd2d2694ad889b2a6521d6ef8a3102955feb74a8770a5d5a1229266ec4babb2d341af68b75b7f20341902746809447bd2cc041cc65840a4d302386b6bef9ff2fdcf41490c571f4e8127805e731a6c98de179420d656ef8a3a32d12f111d50acd2e01727d13d91114c1fc636929d3615656a0a7bbc9bffa1e8fa965da8113e79c5a1a532ea7e69180454e3301d79c190e8d37329dca220b7df4ecc352b1196c41eb28f0f07fbff1c2bdc8067b8cfbd62bc27462b9e145567c25c1264b234edf3be1e113122b8fe0f916a78044273957140d5010ea7ddc4fa9baa221fb56a55f91470e032c3ed7b7ac540e3304aa888e7b67a23199892ea67d8a8886e3c1377a78f0b3b603c0fdb93fa5c2e4a7d24561caa96003a473b91a75a470a6a98d8a779cf888976dfb7c7ef7a257b79309bde95c7ed4c3e31f237a3cd6f326f0a0bcfdefe65af544078f6f57d7bd96bb14684e8d850aa19c651a98b6a058644e66f933b98d3f00b2986bcc9080f6c13622ba77a1bc4cc0bcdd33418335b655093c331b81c194e667a0d386610db497d85bc8c077879970f0f788481ef1da14bf438ddcf86935441de988d54da39ba18e886f1c49546fc655bb9abaac6878c5c94128d280185080d674ae51107ece948329c69750e65e03b43de1680da2a9e6d339ae27b70de8910f4c85e45f9d5f44230b5c90e524e0b3bb3cbf2f392c067444ffa037bccaf833cc7382a1dcc2e985810164f89baa0c11e6db27652245a744ccf5d09012d86897f338cd68b7928087baed62a36f9895535a8909556fccaca71c2da8aeb7d87841910cf4ee764334c589bab7b57cc374f33e8b0b4bff010953f3aa8bd48d085bc6c8f107a773d9bd8085ae78680199d8806d542fb322c3bd701c5f052438afb772099171a234e388e4c2754e52869eaa729cf3be1ed7e1066351884c3d112e46d5e6f651930b7ab540e30b7f427a95067244828744e1a89a15782afc42d049fa043e686b803d1777123e6d31c36058ddf691518771690e1bb19c4c1ae08e7270a3159380d2f096af52e49ae98b99394ae0b30a5bee3e9482c38bf2dc0f03696c440c8eb8e3d9b0f7256ddb7321eb7fe79589046c8721a11e50ff42a8e2455fb084deb57827e23eba63fe7ea3e5f84b41043a71961f0ce5126253061b78e7fb1fe1dafe4090f80f77b5b5f77a5faafbb6b40194bcb6f5cf81c67325c4fc13417bf66e95cafa0ab01c2616a42b0ba08de2b15cef7a8ca7d6d7a48c7a140dd473d9076360c11520bcb94177895fbe6b89da010779b0bc3910b1657d6f8d809c1e51a2db23983fccdd809677340ac188e6c6f65425065ac31cde52b0b4684ec0d74a95cb12999f1219ddd6091a34f505efdc96a778c388f7f92041aada8f9eca2098a1717f73748fa9f7920d239e571826b330710ef76803c19dc1d267e4578a3f1bd652d666756341165281418be46ac9298418b0e234c6df62403e5e6dd84a5ff83207c7f9fe8d2893c21ab6192dca5698e6d19fcfb4debf52d37bf9b8fb2cb1f7d12632035d30c5091144a44a00b64485e7c3140f88e2c72327c9afae1cbeb46af06e4d646c1eb0bac6e8fbbe0957e22d632957122408c9b7a242f3ee5210169112a5ced08811d51173c1498e218ad38044230eba0a397106d475d2293ad258a6d25564a0d94d4a7b01976a0d20c469d880ac65d0dea36916d6c5a4fdd3fe5c56277d4439108b966e8286445e5c71c857105ab9d738398585c3b235fc67b358fcb4e3e5b38030c80505f8c1b790f545aaf2aded7ea8238e50f2c6133d4e7d39ca10cefcc763eb292062b112c088221b218375064a6f285b279584b0b643f553733108693df771b8e887022ea8ff32272f413b3f3c7c8bd6b6d5f46ce8abdf6468026070803712d5ee33e24caeb90be938541ff778b61706a531b2580bce919456724969712e6917d1912d705eb8756fd1e4d4948bd6ed2e296715c1f97ad1bcd5769330f2656a56bd27e5e798a6a7fcbc427626e326103d6f779d37cbe4feb38d15b5c55ba662474f323763ecd4b6d00f026e4be108a00b86c09089f8329ad839369b61af2d6efa2fc117b0fd742a342e62e736893d3d7b9a515c1c36dc4f81cd00dac6395520e1a3741c3fe060f90aeac4987b19c151667416f40f7684def3ef65fc13512f827c6c3729fd495d6c0b4a5709048b555461adb4423269305828430000b9ab1a5634bdd40ef2ab5ebfc172f7451f7dc38f44ca559a53229fecc4110240596ca2503000c2427f6671b65ef470af71e577a6168f5400ca800cede208b30c5260e6c1daa87511547a1154c3e416a7934f5eb998a856e74f4ce53ff24fd0595c81e74014cd75e59579ae6381f0b32986ab7ede988363aa09fdf1179db5010b56455eba24a932d5d979142ef9f366c00fe13962315110c91e4d3616cc5e57e068a30d4ca1f8f4dd6899052f7f44a01978cee8538451360adb6a64188ce3e684fecc49a919d5d1f913a3f667a40ea6299d2f8f8b46bb74c636f7e7e392f295bc8f9a0e4b8e5920730cff5fe06ade56c33bb25a539c8e246a51037221fdee56111e32e73e1ce1a4b3ff1278460b5524a8a12b2f554ce9500eaa57737e24bd950156c11dd818e75022a8e9ab75fa21a596382980c2cef0c414f2e8a3b57e369743587910b5c8b361888b5ccc634dda04674e22ba04c32db0587acd350e64fa645dad97d28eff102284d80847622460d718e44af390f09c167649684afb7e531381087a00e5ac9367d20fc133249add740a062c3a29f6c351c651b747a894e2067b0b499645a01e83cf1cde6ed0971e14a41bbf0aade71675dae7b56c1aa440b2e23541c02b9c3655fb4006b92acddd929024144bbc135ba3fb4c3492055d86e52c2b8c9b555df917daa6f0a21fa2a4f2e5fd3419600af921167234a82f2794b726ebdcff41324d423b0c664303fdc3a778be53d7d6928ae71b524e487d6eb8f2fdc686f4805bbbd7da86547c714c35042a23df12748362346f1a156c7f7a40563ab6bab29930e8d3027c025cf6f75850ed5a22914ddb6785abbd7c659ed7b8a0360e41da91826af4f35de0077eeab2966d89a0daa850e790cf3516ebb4734425c4a282e54922f2752f3d9dffeb6016b0fae6031888835886e5e29b6c7b7f308009da3c217da7df95673ba9d5fee78c30ee65f0ee602b9d47fb09db1bce5ee0a00d2df62123e543530992403bc2d18a329123a1ea71ade021dd042c7772fb63c7ab09d30cddad64d6e2add7f27bd91ad68fa88a9abd063e5501e80bc037342ff4f617e0c90e8d54e3c14502f07a1d6253d6aa08e48a018b54d491f50a5e6b6046b233177c462c2af25c79241df6d130e0aa6fa99d2b4b6af48374027f8da0bdd5d4cc32ad24eea9f570f97f1cca66b4534eebab31fb028e06c822ffba2e9a7ff45b6e493aae93bbb6f9af1e14ba87bef34fcf2e794bffc0d745c69ab821abdbe4969c8e93d2865b42a752385bf4695c3063fc69ddc8e930546d71f0753e63e8923ce681e206d4ef360a8110ae281cdba385b5bbdace01e442a3d5decb893f8ef4b545772504c1b8c7247017b60621737089b3107747f22bd51dc0c1cf09ec5325022be8f2a5a6aeb3ecf4b65dea2e4c82427e353c4ff64cb7615c42d58377d100bcc33c15c77f25205e4babd3577630b3ed440168219f64f42f31815963c9207503b5aabd6a6249c18c9a61eba5969004fb9ee2c789492242a1c80b06ff717be50b36cfa1db835980724d0478d286a165ce69b21b2997143573681ba25732c211f646f6dc5641d077ca9daaa3cb468fe4e6b5456923870ea2450ae18c8858c6c08b028f297d8dcc13793a408bfc606a2618009ba1fd68ee62a599175b6053ff61d6ea1ecdd5a9527726ce1da2286561549f548b870b8742021bd380e95ad88c3535314aedbe53af914cfd2734897f74e0384d355b10898291d3ef2e0dd796e3b1b1e86749b05f12e4650a33f8be869b839e90b1981dd745c46156e610da5e4643df370d6ef7c4c0174fd649e9ba661cb2c3aa6c78588bcf956d6d27a6970de5f34f78267886c364236f3717c86293f5f4b5dcab9b453163936788019aad29804233d2d5cdc06bd407016016de8c08dd3698dd1f35ada541e0e44620013b013f65993a7b5031d7cba608b48cb548322f604ac7cc85b73a0016fb495675b43d2402af8c75519d8cf4c11e96c1adcdf8c6e216cfcbf2ddb52cd0c5bb9b078eba1e25d8af54d4a770fdc2330b744e0bbdd4e410388c73f926d054a6c9e8c6e7f3b03478abd53ea3f23a95b209c5d9296adc737f70d848c97dd1009046820267c915b6bbb8c6a783139812631225e2eca98e142d754658cbf90df6731a21057bc30274ef9c84e23184069428c5e5a747ee13f6c86ddfcd1f6e82b4b6bd2468e28296901adbe560ac6716d0a5d4876ea0471c4019e5abf58082c97032fa9050c49353a01f6a1c74f47aefd354919b3373616445ccdab782e4a6a120a78d513294d19791340174152c0174e5e4c345e794d13ed33566936366fb9b2554d574d55512d62346112b9f17f5bdc22d74849db0d1bb064e4e6e6a61d506675d224e50c4b614d1492fde55d0708af69961aacfcfe5ee932e66211e085c9c55227903a0b07b9a46e7f8214402bb6de623f1e5c5bdeba5d2dcca3d4dc2d14ea6e0857778404d76103333e0b5c956505401a10e4ef5c6f3042d6d08c86c931ea726390e0507706ff52a0ac538a933d5645fe330a555345654c7d4feeec0bdb791588310d54f61610664e60051edd993b7bc53a96f52a47e209df9e0c581f69b2086cbda2a2ea985b337fb5d4317015c46fce277d3175e7cb676fc2c1a196537425f27d077b2c4e34544b385f641da77957e5aa499d965dc71bc8f266b125e31d2e0bb82f7606ef4e5843b0f897872b493545bd1bf9af30a24f843bb211345bc43b15ed87a215153e00d2216f05e07a63186f760e1d8a8d2e16bba7a043638e9263dd71c72675172669cad6208970be4d2c19a9a46cb8d49f275a9ee69cec23c44bebcc055ad1400e0dbf55d4d839d1061856374bba5b830d5aa429a74d0d848d08a5bc7c61339be514308aa04e356c1a43a98a7574396c8e2e550510a9164da14113cfd85bb1677d2f454a0a5cd01af12c8427fa5248fdda77a16a1771cff40969ceaaec1a66c03614767c9f03f14739566925554f5f218e6271da857b3c542541e747b7479dacc820cceff4fd96cccc1d5543f00a5e6f4c0d57638c02646c1535a3e0eb38ff80f3425c351b4e158bf83da6a3cf7f452f9f566d3b10c6df394437fbd5a54a1f6ce22c51ae66938a9b22336b4e5bc19c95f02e8142ccc4702c636a7a525340e6ae1e3ac0a2d0f39533e02ee723ced16bf92b661b89349ec75962234bfc0edcee621943302100f9c5fc984b23faab93fa35d57f26ed5a6fe3bc011a05f43e9241bd1c4ac4ee5eb606ce5e1622807bccadcf2815d871fc234276d97320e6f4d1be06091f18f6d00cd61e780bb48e6e9cc732372be4ac462f3f07f739c8d2d6ecc230d4278a9bb5b7fe1c3e08e907d7d0e5753b52e3df4b95b3c7a1100169bbfcb774b77c46b8edd3837fd3396e3e1946dec81e3df1d7f51d1bc08b3d10669c6161acd20a2d9cc6dba4801f0b5941de172b9aa27fcab738c0cd60f93646942401c87bf669f9f9983d7592ac258f1fcf312c96a754f7e3d5e71b6c287295fd2138a421d4224b751f3101650a36f5edcd526e38f5501230f51b5af0b2732ed92c8d4c1a35500b0e1948898aad6e266123f6c6851e5df92fda8bd446373b28935fdb929783254982b99fe15338777d780b0732445257bbcf867cf4c12452bbab8fe31576ff41e5483f493ebd3e5a089df1a4c4cff71c420897611eff1a09a80ce436c45561057ac9ec7b839b9602902b7357cf808e75a3aca10ddf9e231b6248f14ba2751e5efef61d8dbc72a05a7394f1497371d92865a56ce84cabda24592e2133731e5a1bf4eba7279dff46154dfc9b4bacdaa82b2119e5fd083612531cf9338d516ce76f11f3aa78354d7464ec8134484625d1342ab2eda6c7a2ed2a0205bc69cd2b9946e40a5c9f8420612c5c7eef79fe36f309d80049fca572c94c202b8acf6ef4683f1811d3ae7d8e4709ae3eb4b74c8bd338073abe328b6a1371411080599591bd6717af61ec62458c4946bf551bd87e6754013c36cbcac94b53019e9293f1128c40fc1ccefbedbf9b3e518a86b440d0b540872aa52d3776ce1f044a11fe28e0c53433141fbcb06b6741a0f77a3f4296123117aef33893a0f7794daef7a2ad9d1671c552812bb0f88f1bc3648c3ffc8fdc6dc81fea292c02382b0b996f0274c493031ff7850fea187e0e3e0ffbf72d3676412f76953278c061377652e0e877725801d0895df314ec58505f2414e3f9bf0142f14ecf14a63a845d6ab26567c7696835b7fac8b69469561ad0e5919cd5453034abdd07d65cbba50bf344769d790f760abbdf99f387b8d779f8b445c0a8e788501d6543169d6d2772602c3baf0c465e3f708657b4df24bc0cfa7132efff9a4c0a44da7fec349f9329faf36ca583d8933ded7baede6f2b8e07aa361c2c3b37730588b994cd388df50e1b80bbebb8178921210b2385b7d585184b77966bbbbf643e7f99e236bc3afa7b70bdf8f0e77abf6daefa4d475bf8bc5cc052e74fdb9e3526e6f96b51f9c0de18ef57eb06236bce2fb72918b60dac9978aac18a96ac54602e88d2d6e0e5116613e3cba7fcf249c62c211697b2867e186d6d1c58c8c9b89365f7bc8ff542af1559c205d242059c850c7849473c13ec4b0ab96973c9b89e492bc9be0c502644912ed50e107f5429972f974c4f807057511cf7665054dc21ed244458f43c562acd432589eedd0335a11c005dcd93b1364420f0d7b8726a19f40afd343bfb345bd93e1993a5f9462f1f2cf892acc6107f290c14d42c2de240ae3e82071f310659175b848eac45dc3e663f497495023a45e57df4d1189fd154a359be1c88c0f011da5156f8bc7e2d1bcf2a6fede56eaaab0338ec9c3c3541788a27330587bfb5a54e379b4458320263aa26fe12f241c6eefc121a50ad8c4d0f92226d95b032a38ee03761522c99ad2eca4fb99ccdac95341244f68b599a073d16754dc95f68eb223673f329a2181a95bf471bfcd4b042e58c5ea7f53c18344530233cb64ce4ce616325d440b96c91f92a734aa1b50412c6b733ab413e091ae1c0385ac654d1e2a4167c61f9dd012b20cc5e1fafcd938f2c1075ff188f10a06d3f0e818112cba5599111b832640ca4b85f758a1fd63650ac377929362f05ccd8e232c6137f55f2ff4679a96aef0674743d1c3ee94bb8a5cc487bd86eefe4fea7401ea837983fcf2d274070d834b607467463eb1ba0055548d31d4d7d8ea6c2b2ca29025933dea2cd74254d92259736e2d552c117e49d5295f70fc2e37ebf75647c4b96c9561a7a382d38452fc26322cda1354072cd6445b20d0a768789ace911544ac61890b5ff35cf1b05af1f06f5ba4701e3f4e2b62f53c863acfcb8b6e7ecad14e5e82e22c29dc81bb0b6c2f721325847f9db55aeeee26c086eec31b868ee675b6e4757e694c7c152e186536baa968f32d382b460429fa07e0543eb228330265bbdf3ad1469f3371e0f1dbfc11cc35741431f119b6cf56b15204db2858e0366356f3c0fc4b5a5003297a56340ef9d84616afaadd27bf27a5073046568f4ebb93ad371af23df4eb6260eb6510ee4edb411155e3b634258445f38a28cec19044f65bddf6176ea026528334ece2fd158e65c6d7318bbbd08ca18f057d0b093c01f70a937fb6be579310e264c6b2637471e1877f08a6b178d62202974f08e3869fb1390e33a17907999123cf2613eae6c234825bf03f51b4e595ae7c151169f13961df0492739a9e97f187dd63cc2ce7f8e2b0ec80a1e7f666a312f316a493608187c03f7a67eff14fc1372141f799eaf8246edf96bb7b4e6fb0e5b886623319bbb319cf99c55adf82c533d8d3df9b793ec552746091acaddf30b8636ab12d2f78d71f23afe0cffb9b87bdc2edcc2b63f0c0e3d3d8fd69bab6d5d45fbf1186961ad2e1218a59dac7019492f654a26474f70304c87dae4a43e25347af8fc291c147538c74447e729198c5c10ceeaf3ca95b0663f1dd9790f38fc187c62c9a85d480214c6b6a1a429f25a114938221b7aca0b34563e972654231127f80ee2c40cfba37f33aecbcf7998f26af7a07f4c7d7d384f341e9d1cc67f976c005efb09cd113d09452deb55f7e9850ad311d8352b84dc6f1f6cbfa3c0c6877126212624c5156a3fc4853aefae55483cb362ff0ec1fbb121dedf487ce068ad5684420f84e45bcc481186b6301b3c5f2a8e49b798c0b6926e4679ab9fe349dc3ddea3d0c8e7c1da3e5b0261941b5d5c58c1c68d2323ca557af7d495e313830e116e8f45db3d4e121b1073c1485b9a1a2ecf650080b20cc9755bf0d094e3e98c2d9a916a800f14dd1ecd9fa9644cea3f1ce65115662cd5c616c8f6f5720334617096486ab615f31d398d77d0f95009993c97279a5bbbb81805d812b445ff9d5c599bcdcb2d2a7bea13e9c5d5db45dc254c4f1e5f5ce867b630af51150ec45b5b1e68adacf7bcddf22a977761acb63bbf140a6e744a03854040bbeb62c6af9e6b4f1670c92adeae11583de62c8af9f533204ff8e5f7edfa053851d79ea536c8b279fe1c6c23a73b53522609044166d60f31b4c3c1a6f67af26f9005e6f6a1f91161ee57323c62ed9c1e0cf90cb59ea3515cf2cc3c8f756df66d3e978f4db8a4ff1609cb5b1e058bed59eb2bc09435ac821c74ae6d29a0d64541e3cf3f9cad7708147f80a661ac786567ea340bf1c307984a0e5a6e4c07e90667adb19d8fd556d77a50d0b76c46b42e697af14c0425296e40f3792a6db9ca087a9d7dc8cd566462012f813f059e6b342fa0d5159fc30d391566ff5f447dea9c7ac83ccfc8ec611221a5c02825591d4e78bb04331c4b96497043b23255c4a67f191dba3c629b6b423ec3f4f31141e07f0d4e361d79b2e4f35e0da018f23895e305f5c41574e6569a02df2ca091b2217e6a051c7ac358ac5f5cc9688e3d2b3c4e579bd73af14ab9d3749631e8d039456c2f3c5e9198a49480468172460335e3757fa9f7328743d69d2cf9e996a1567ccb7ec89d9649fa9b1f3b7b382491bbcb502f638a08b51ca1625aec460a260c968a78f03a73e95283b94fb2620c555af5984fbfe42906921e9c2f4312db0e2b3b9729dbf0c3282ba0920fab495fa5474e961e20a597d8937c190ed7a2a53fa8aa2377351cd0b5473e841d531ab1dc7d41770a854312795c406956f52dff31b92d480026e8d9641f4b655e2ab52aad2df58c1919b0c3ecbd9dd30cb37aaa743db6d77f9d4efd9ae424d52faa70a4116b1783006019e8f696a4bc77ec32e8660925631f7456f020080dca0ada93962d42e477640955eadb311f17410a7585160d3b397b0d849e152663f751b0222ed5c515462f56b290a1f0c0ae6d6e322b7d92e117605a1a3ac7838d8b6cb3c4d4f00fbe830a2f55c05aab978b32340ba8f43779be6dc67085552480533748d1b5f5e84ca53753817ba96aeb8733341d61acc58f5d75a81b18a67ec05c02f85ab04dc855a640051e6049e6c66547c70b0ec3445e4c4775409d03654cb61221815d3b632b0376c5a1b2e4efa65b1e4a2e208d4e6742650d68c108f3aaa5512b8dd89b97d61c63079787e610313732e57fb9362c29c4763c3cd10496057d6e4804ba61cec0867312bc94e5ef287624cf70128d9c238101369ea0a4fbe7320dec09d2eb1467fe24f945257094de8713c7ac3625f3efd2237d4767939fd49006f0a1fae5568a1067f0305519a4f9de0479afd94034ba682bdc5026e09ae62163039f580decd2e12074ffd0e3d6ab48212b01c0b0c7e9180eafc16398cfc6525d1527de36e78b234a9e25520342f46a2f6cfe9b761e374d52d36690bb1af26305ba26ad32bd84a705958e062baf62603693745e240f3958653956c790313e0a3844f280233079167371130a98a0cf9d14be55feba11ec3a7f6bf8b82e92948e0e78e07bfa8bb4d20880d201ae7a24662640c364622057a61b4ba7d17926690e50d1f51d134d63fc5fd2a80b13effb5e489398a8fc2a9cf24acbfd5e2737d7da2ed3bdeb48a3c9ab4e6279af2f972d9977b01b92c5bd221b035e3f167d46b4b956c96e7015af21ec498eba01ef13d72b76e9b947b2842c045d6cbdbed3da521d6b5a5f34edccddd471d1b7c9fdded40f79ed606b7292f82e6297ed7f921f40dc1f2892b68cf4e7bc388eb8833bf6023c69af45e779e6abd960ce2ea920a1bdad6fdbaad64b1e8284045cccffb48496a6672ae8e4da5962387ca72fa9707f068e4d71b919778c85d12c7193aad22764d27db670edcde5af035e6e105ada3755467eb3fcfa5ba1401313779aa76c485e610c012626f0f35b323fb6ba097b2af7f41ab3d37adba0d1e10a7bfebb80a98f58348d9924a183c98d57cabb115c498f3e6e8ec1b875e3866b30bbe38b0a5f4d6a45133d09c41b969e15bbddee1a3f7b3f14b621cf313914e27d12156d162b9baf690e314b8f2ba3796ccab12583f1030270b1643d050c25aa4983ef85023961333df860a1f35c38ff12589d0515c59a900d14fdc790d8b4751779fef4c3e189cc2a1a9c84ad5a0a3378642a5ca92bbf0f1e816de9c8d63ce953d6b96b5a2dc3f432d1db2f621f3e681d323ff503111e4338f2edbc8b60fcac567a28285e6127b45ecbd586f9118dc24105cc979646e6410afca368400668d23358458d755b34d305f072f45052f98d46cae89008d8a59f36dcaaef0850488569cef96c222863247b2a8a3c214e4d191faca0cf78856d0b4d5aa8664fbb344b58ec8a81588d6b1d663dea22b29682187191d0b3f118fdef3b05b97cd0ca74365f2a6bca3c343f6e16d28bb4aaa9999305f565081080c4f9175490be2b82298645f00e6b57100340427d5255e2140a7021ece52eeeae6a3a539873ab37790e032e8d7f93bfea9fbc65bed72855086ceb74645171270eba6f74bf3562142098e550bc25e6361275ac307c5970f776ca3703a1e02cd76223df2df0e081e0fe2f7926f2d798e286b46126ffa2abb54978fe76949a8cbf94f2116645b84532f4cc3255d396e94d62198a137e05d504cf95776922088c6744c7451be9ff9cce6e2f3135d501e2b28fb0137910793d9ac816364f89b5748b518f2c36f12808bb2e0efb6fd7b6de059d73b17ce71854e35585225c8da181e88f91a7070e58a2c078558b466cb5ca52b624f11405f7a5393b49e0290d51b201f43583458d0d77a0bbcfa66750921c671491343c7978b427a2895235328544de2dac4313f414ad2dd23f6e3c55b5ad78ae14a65f0c33cc583ddced02ea347e88ed278d1095b174ff2f39e47598f21f7e173bba2d5ee5380934d747778806fc5d0559b7614c482526835caf2bb7f815e9e15c726ce7c5f6097e0e367793f8bc5b2b6bfa7afc8f31a467ae29034596141dac03be1b1ab623948b61d64db866ac7bde64a3183255a4874220037d0d0b4482494dcb703ba076e18e8e055d9980a331a55b1d573a2d4f01a7455e05b2a5867f1d54046a65c44a80257a583ea5fe123d822d284dededbc779dcd170bbd8f6bcceb7a85452e081e29b60a13601bb9af0cd6dd5f10497c9c232bfb2659724f1efdeb8cfa01f0903e9396e9673c456286cf159682577bccd5cdbd793941ad3afd3059142572c0ae1c469fcc7a5eeba020378aa9bc24cec6821eb72c447657fd40d1e79895597707ef9986c34752ad8947a2668e34037ed8fd1f9743296d6ba6efa28ca8777c357ac083b9239d6ff12a33bf8c19231bcebcb03f6a4a0e33dd82032db3e9de5600c36decceb0495b3a8e2e6c1069e17cca0a704858b6e6156b8ca5371f70bb084cddbfc8ab374c1e725504db1ca123735f780841a5d95149567d7fbdf4edc4352ed9dfcd55e72f01588ebaadbbc231366831969779fdad26c1c6f52624358c654ca14d92e419dd62cc26fdea659f9b15 + _Keys: 526a8851fe85233e7cc810cd2b8a733faa68e71a62b99912cf2f06228873853005edfb00aa354575a31cc8ad1ac7b966f52afefc8351b636e2b71574be99675b6400dfc3607f0069e96d5112b3681f5fcf550a7f3749f10c2c006f2e23d1db370e64801184e106752a681216ffa3837998b5a5688fe724520d14109f10d172186ee5fbb117f224110b067c1b61cb6e75d9b619fa92551a320786221b3b03ec208e22f046f695e21830fcd93d5728ea479cf46b8ba7516b16ed2e96b5bbb6e20e0c6272c125d7806f67cd366983232521642549cf9088373bbcb047a020454d5bb82aa5499ca2e04b4891be89dac6ab0e659c5a08b1215a41b815970146d88b119ec54e97b8c60707cd2b47c307f6a055723ad0f074e03e69319b6e78f521fa20e22f14eb87ebaa2c5d9ec5792568c53e74417380a87c864288e4671d588e1210db981f281d4a325d1a036b29e53abc3829cf12c86a843666a9d2726c53c784328db49f8d499d214074d166a5105c5d3da29f4627a1da7a5e317a2d1042614f5281c64a6625b57e38c6bf413c35ce7d12821326d7a7c36313210e18f42f147d60db1f64f3ada3bb2d6666d31a094491222bbde8f495825a4e2f05ece33b3881253ca117543370bf2531ac8ebf10b7f565a03ac9712b88ca58c516c5a7b6d8f161e8f9dd682d3dee657e0ec3e9f39a3e76118743006e0ffa3a958fe6b6ca98245845d258f66aa26d222a2ff31dc5e16529d84e972e95f1f208f318fcbd24a42f1a1594d13a0cca1e4d0b9a28c0e4238a4cd5432183fe0a3d37c5600352a5affe32a0f1cca64d60c95d6de43a2f1ab3ec2f8dafe7e182ac1c0b579975acc6cca75b9cf61ff356e4ff757ac4f0e2446c5178b3cc3b0938e3500b2c3eb04c15e369388d95cb10d3df8656508d984144c6391548fc5f9307b1937f462b1e94944b8a5d47e5baaa4a0ec664069a951142fc403ed6b4a90102e5146519f66f6d35134e18b132d9ec6c3ec954f282992fe09c9f2a9752fc7c47b5d52b06e06eab61a6d10e4d7cc274d62caa67eb540f7f4be5844b6a66281ce82d2f660704e68bd01df34b4f7483a3a0ebff69576b98633aaa8921a5ddbe04814bd97aac297cdb1235373261c4cec06828ec556592c57c95cb2c5c853ad052230733029b09f8776f245772a3ca0276dcc8b833ca146a1411560f76a926a9289a1bf169092fa58ddf9c3a7517c82635364a7f4df403890f9d1ef144fb812196cd7f0c77286780f491baec2cdaf4fd482fda400ba6f61b9da4000716c29e6ca1845b5768bcaf0ecfc98bbb39185d35a921a8142041153dc39aaa1c286f97b630278db035b399727f338ebd32b154b50236b0376b4d721d6667e4fc106c1a9fcd2a75ee765300a244e46bac30d36f74ee5f1e5e1ecf22e3b47049ce6796831219efef073b663eaf360df286471f4d94f76f0eb074884263b2a75d1863ce0aae615892403e884faa62326ad43eaa2a9522b5d7f75bcc785fcdad451c3b561268034425ee4e712d804046ec580d17a1097cc8f6ad5afff6d32e0ef214326ce60b1f02d1fa31e71c6c1ca8c75d472e9349f4c45f8c4dc0c2013af81c5d63b2032b19179f0c5109edb220eddd4a554c13b12cb5d56721429066885700c558f421713be1a14442bb774cca3425cb341fcaf3fbd03ccf786c4d5ba70595a869cf6fe72c22325567a5649773f2357847af0759d10313b725cfe3c24772aa470214482b6154a356625d3cfd5f01ca892d756a72e68478521c260cfa05f49dda051e95883b60da9c51a244d0c0efe9d8666defd20837617d7266b7c4b857af913f62f77c9653c48e6531de7737b6edf43c4fb65263c69d520ca31f8267043c187cb4a2308b15597153743145a4f867105aca84b71279cbaf66bfaa5ba7832ffb560a905f13c6ddfc56d95928071c08fb3b1fb5c7c5200b0056ee483116cf9b411d5add2ab42d68210eab747ff3c96d3a504da8889e1b9f6a76e44a45824db5863649a09878ada45b093fff39b97a41162843c42da16cac080e6d98e7aec85f367b53fb8ec0f6007f0600beb18fe2b7e76ee911c7c76ae00c14c122f29acc03601a51f08a4016e1082f6d7eea356c2d4766a7c4e03aa5e33455a9d65f214d9d8402a2681f2dbdd87b070a985bebf6d6a81097a7bf6f1b653f6d44ca68c07e191e3105186bfcf1e65731b726cef277b7a02e2f4f8ba6de14e73c29b17188403b8622b78df10f42a4017cfff026423332e5732a39eecea4c4101a0158da5ca71f8e0cacf1a805a8b07076b2f15811115bf709cdfeb27a2a54c77a62f3f016365a2b209de610da2415e4793787e44c9401f65bb01b6f5693eb1d01b923a2b5bf5a3f57c537732b4a1ce41e1dd3bc5c8f84196316b39ae5142b724ec80f2101722eba6ec83b11cc7422a66c365139bf2fc07134f6c0358c0bda930f573d9dc4051c541157fd8ac87b1d9952a64ba6e19ca69e2499417fddbe2caa24c1a561f21387762d2def8c67a4f06e2bc76e0cb0d75f9409b22d34593aa82d7ba7ae89207f8b652d5f423bce6076d56121e00caac4b88c2c7dcb083a94c883285aa4d5c6ce0a8162bfdd6753d123843ddced44e075745b023dbb7e5b896e8269c01328054c9b302a1ab4da484855f13539de7736f3892f04d9f6479188c48f2cd00d4fa9d9c99a7201753abb270b443240a506dad2e62f21bcf924dbc733497deec366e53a852b5d6e466fed752cfb7898b19bdc423679483d7065d2ed753932d34255148ed5933b2f9bb6e6a9e268170b63bcea6793c524c3515736dfa68f07f4c3e5cd2819166dba29f321139f0d5a074dc689b94fcb3f83cf281fd236e5292abdda6dc835402586d5d0c1605cee625fb13d2d6d18c0428f254a59f1f69a0ef2e209aa3a5f6e2ef35ef170e07360261e3a3ede074843437e1dfbee809a1671c43e2f82acbcd800430f3a0f274f621bc623782b35791639d9b3d6a7a4a251738a9dcae15d1d2c629ec1dee87cac94318016b3a41242a73e5469a8f9e5305b1a9e52653be5bb871d51da8e739a2dbc794808278eefad6148f68c8cf374337c311ef987ce12cf173b716a0b132fe4277edbdd4e22f732d40ef01d45592e93a97ca93fa95e5a129817e09c00a6478b8824b30bce51819f29142579bf2f14716a04ec784291717a27138999bca5ced2397ca56aa623c557fa0aea6b7c2b2d37d36ecd046c4031e66938e3bac7e8e2834609b33cd57e178eca6b83c7852308adbe3e94d428359a07b5400093c0f470edd76c4e79870e9eaba95c32283d069372be6e79067bb6ab7ca454796a807a3129056bd4516d76698e182e2bcd6bccd4d0d55bd256e985ffc3c546e2bb353081161d28e9f2b17c68842a61ffbca8999ef095525156bae067ce736817b45824c349af41156b1c1de1a70c577fb57abce4d3570d25e2df2a5b3cc1489ae5994cd4f9624895167ccd2c878e56b79ca0e2b6cfb2425d4b4aa628d99c27562c7d03f23f7d7819c328ce578ae1527135e0f7dda3ff6a97dca81f440971457a5478000a8b6376e1d8360c581b142d9608e7a1456bfa07b11db9cad86b165ea900c6a33576f6669b6509fca26e78181e3ede275a8dd608e99eab8ab79fb62091b490f2856d9b4217a75c73f0925d24f926913197ec393b9de88cf0bdbdcf010bcbb3426c6c6d7e45accf53ccbe9060865688a783570c0b104493af50b47d63cdef662cf94f80351be43050530347601dddf3f456dd262d70d44b89935d88372e86a8cee0b3492bd7bd8d9f26bbb70cfe339272c1880d54ea6c44dbfb085e779397802554e9bf30d9e0e167af78f92c74a879380f050748667067538e266767fc005c1939ca0c1ea78a5417c0d02940b651858937153a686575e98014203e3ea29e6086c3ac7102284564acf772d0414ace1d3510e7224a5ade01287e0be64f896976eb354cd453dd6c74b85fa2e828b9d4c8b9fdf7d24683ea1f5d51667f1d5e15238dfce40c6aa371127c5bdaaa470b279155bdd3ad6d9730674a2c76017713a8a6b681a4d32ac75e5c6e094fa25e94676779f8d5da313d6e0934833ec218748a6ab334f3c665ab98e2e4d0e388478e09b6c50e887e177c2785ed64615806e08b1e6b46aa6d77d33232a00d0a9e1f09ae3d730b78d804f67dd0a3864c364a40dbc45b01f48e388ad267be45e0da793a5a1c4adc1a0557652262c47b11fe1e96831e163005de15e0fb03221f68b5285849dde06880275b1fe340dba9ac4b77d44955c8fff1aa3ec7ce951ee81cc70492c6e23b11207815a53ccaebba464132d331f694d66968042f655630447ceb4524f930ad89858d646db8ffaccc4a5544b8dbae93ee5fc7221100bbe767782751d39f505d3e46807a33ea248231afbc4820d464750dae792b485f35f3da671b68c470c6f7a0e967032bfc144474afdf073229c26b55bebe32404fecaaae93c74ce2f2e2b42f0a3340f1adc28705b45160767200e0055d2a29c8d707be4a4cbf309d7b188aeeb4396969bfa396f9cdaa0a5fb2ccc36c18b83e1d0c7c0612f18a3d6df22581ccdb4f3ec869b63bff3fdd6a7eede202e67d624acca95905cebf8377cb9ad6f957d6c17c9c7103fc9e83c122d0ed77dbf077a81090dbb52382496f07e63f079a15d6c254af5f9f58805fe84e95842a43c8a098540f3976cd731b00191ff41e2175a4c759503476afe9fe6e300d9847f88b4d2f7928a47323a00b1f6ca17ac673be392639b47c6c03e9b7c20fcb46da0c63f9a56c2597491a17ebf95a54e25163c4e2ef2b8ff153f745cd9d20997c11191ad330651f32975683415037232d20cceb1df1072bef44313d81ec1af4022af362109e2f2c046a22d133343118402fce0841ce4eea74ef6b3011a50766a47b3c19c87847a134bf8204e4ed2a61a6801b71d94a7d2505286ef155af18ae4a6e96bb747f19561e72b38fd7ae012870ac4269fb76048deaeb8cd4eec2230a55a2690825a3568416d70ae562427dd5bc4403fc346500705927a4eb212c63f36e41d3df3e7d298f24eada7da53229579148e75640d90c0cacd20fd3d11862168be888de916169c0e48b27b6757d3627fefc7d6914ba33b8b137cc9492aa430c88f1098dba073930de2672b5b1567fd6f7162a2a64072a451ccf2c5994d52e5bbfe973432468198e568f78da72731274c4468ee18fc367d4dc573e3c894702f74d106b78d3cd639abd3cfef63523236f60c0820b69a9687bfae382678d6e451af4bf491b069c3f5b7650edaecae8503862d4b8df032e396fa51cfe8a26f82ac953246344f2490055701c155611592b394b9a3c1ee2f55a1bf1f247ccd2d2694ad889b2a6521d6ef8a3102955feb74a8770a5d5a1229266ec4babb2d341af68b75b7f20341902746809447bd2cc041cc65840a4d302386b6bef9ff2fdcf41490c571f4e8127805e731a6c98de179420d656ef8a3a32d12f111d50acd2e01727d13d91114c1fc636929d3615656a0a7bbc9bffa1e8fa965da8113e79c5a1a532ea7e69180454e3301d79c190e8d37329dca220b7df4ecc352b1196c41eb28f0f07fbff1c2bdc8067b8cfbd62bc27462b9e145567c25c1264b234edf3be1e113122b8fe0f916a78044273957140d5010ea7ddc4fa9baa221fb56a55f91470e032c3ed7b7ac540e3304aa888e7b67a23199892ea67d8a8886e3c1377a78f0b3b603c0fdb93fa5c2e4a7d24561caa96003a473b91a75a470a6a98d8a779cf888976dfb7c7ef7a257b79309bde95c7ed4c3e31f237a3cd6f326f0a0bcfdefe65af544078f6f57d7bd96bb14684e8d850aa19c651a98b6a058644e66f933b98d3f00b2986bcc9080f6c13622ba77a1bc4cc0bcdd33418335b655093c331b81c194e667a0d386610db497d85bc8c077879970f0f788481ef1da14bf438ddcf86935441de988d54da39ba18e886f1c49546fc655bb9abaac6878c5c94128d280185080d674ae51107ece948329c69750e65e03b43de1680da2a9e6d339ae27b70de8910f4c85e45f9d5f44230b5c90e524e0b3bb3cbf2f392c067444ffa037bccaf833cc7382a1dcc2e985810164f89baa0c11e6db27652245a744ccf5d09012d86897f338cd68b7928087baed62a36f9895535a8909556fccaca71c2da8aeb7d87841910cf4ee764334c589bab7b57cc374f33e8b0b4bff010953f3aa8bd48d085bc6c8f107a773d9bd8085ae78680199d8806d542fb322c3bd701c5f052438afb772099171a234e388e4c2754e52869eaa729cf3be1ed7e1066351884c3d112e46d5e6f651930b7ab540e30b7f427a95067244828744e1a89a15782afc42d049fa043e686b803d1777123e6d31c36058ddf691518771690e1bb19c4c1ae08e7270a3159380d2f096af52e49ae98b99394ae0b30a5bee3e9482c38bf2dc0f03696c440c8eb8e3d9b0f7256ddb7321eb7fe79589046c8721a11e50ff42a8e2455fb084deb57827e23eba63fe7ea3e5f84b41043a71961f0ce5126253061b78e7fb1fe1dafe4090f80f77b5b5f77a5faafbb6b40194bcb6f5cf81c67325c4fc13417bf66e95cafa0ab01c2616a42b0ba08de2b15cef7a8ca7d6d7a48c7a140dd473d9076360c11520bcb94177895fbe6b89da010779b0bc3910b1657d6f8d809c1e51a2db23983fccdd809677340ac188e6c6f65425065ac31cde52b0b4684ec0d74a95cb12999f1219ddd6091a34f505efdc96a778c388f7f92041aada8f9eca2098a1717f73748fa9f7920d239e571826b330710ef76803c19dc1d267e4578a3f1bd652d666756341165281418be46ac9298418b0e234c6df62403e5e6dd84a5ff83207c7f9fe8d2893c21ab6192dca5698e6d19fcfb4debf52d37bf9b8fb2cb1f7d12632035d30c5091144a44a00b64485e7c3140f88e2c72327c9afae1cbeb46af06e4d646c1eb0bac6e8fbbe0957e22d632957122408c9b7a242f3ee5210169112a5ced08811d51173c1498e218ad38044230eba0a397106d475d2293ad258a6d25564a0d94d4a7b01976a0d20c469d880ac65d0dea36916d6c5a4fdd3fe5c56277d4439108b966e8286445e5c71c857105ab9d738398585c3b235fc67b358fcb4e3e5b38030c80505f8c1b790f545aaf2aded7ea8238e50f2c6133d4e7d39ca10cefcc763eb292062b112c088221b218375064a6f285b279584b0b643f553733108693df771b8e887022ea8ff32272f413b3f3c7c8bd6b6d5f46ce8abdf6468026070803712d5ee33e24caeb90be938541ff778b61706a531b2580bce919456724969712e6917d1912d705eb8756fd1e4d4948bd6ed2e296715c1f97ad1bcd5769330f2656a56bd27e5e798a6a7fcbc427626e326103d6f779d37cbe4feb38d15b5c55ba662474f323763ecd4b6d00f026e4be108a00b86c09089f8329ad839369b61af2d6efa2fc117b0fd742a342e62e736893d3d7b9a515c1c36dc4f81cd00dac6395520e1a3741c3fe060f90aeac4987b19c151667416f40f7684def3ef65fc13512f827c6c3729fd495d6c0b4a5709048b555461adb4423269305828430000b9ab1a5634bdd40ef2ab5ebfc172f7451f7dc38f44ca559a53229fecc4110240596ca2503000c2427f6671b65ef470af71e577a6168f5400ca800cede208b30c5260e6c1daa87511547a1154c3e416a7934f5eb998a856e74f4ce53ff24fd0595c81e74014cd75e59579ae6381f0b32986ab7ede988363aa09fdf1179db5010b56455eba24a932d5d979142ef9f366c00fe13962315110c91e4d3616cc5e57e068a30d4ca1f8f4dd6899052f7f44a01978cee8538451360adb6a64188ce3e684fecc49a919d5d1f913a3f667a40ea6299d2f8f8b46bb74c636f7e7e392f295bc8f9a0e4b8e5920730cff5fe06ade56c33bb25a539c8e246a51037221fdee56111e32e73e1ce1a4b3ff1278460b5524a8a12b2f554ce9500eaa57737e24bd950156c11dd818e75022a8e9ab75fa21a596382980c2cef0c414f2e8a3b57e369743587910b5c8b361888b5ccc634dda04674e22ba04c32db0587acd350e64fa645dad97d28eff102284d80847622460d718e44af390f09c167649684afb7e531381087a00e5ac9367d20fc133249add740a062c3a29f6c351c651b747a894e2067b0b499645a01e83cf1cde6ed0971e14a41bbf0aade71675dae7b56c1aa440b2e23541c02b9c3655fb4006b92acddd929024144bbc135ba3fb4c3492055d86e52c2b8c9b555df917daa6f0a21fa2a4f2e5fd3419600af921167234a82f2794b726ebdcff41324d423b0c664303fdc3a778be53d7d6928ae71b524e487d6eb8f2fdc686f4805bbbd7da86547c714c35042a23df12748362346f1a156c7f7a40563ab6bab29930e8d3027c025cf6f75850ed5a22914ddb6785abbd7c659ed7b8a0360e41da91826af4f35de0077eeab2966d89a0daa850e790cf3516ebb4734425c4a282e54922f2752f3d9dffeb6016b0fae6031888835886e5e29b6c7b7f308009da3c217da7df95673ba9d5fee78c30ee65f0ee602b9d47fb09db1bce5ee0a00d2df62123e543530992403bc2d18a329123a1ea71ade021dd042c7772fb63c7ab09d30cddad64d6e2add7f27bd91ad68fa88a9abd063e5501e80bc037342ff4f617e0c90e8d54e3c14502f07a1d6253d6aa08e48a018b54d491f50a5e6b6046b233177c462c2af25c79241df6d130e0aa6fa99d2b4b6af48374027f8da0bdd5d4cc32ad24eea9f570f97f1cca66b4534eebab31fb028e06c822ffba2e9a7ff45b6e493aae93bbb6f9af1e14ba87bef34fcf2e794bffc0d745c69ab821abdbe4969c8e93d2865b42a752385bf4695c3063fc69ddc8e930546d71f0753e63e8923ce681e206d4ef360a8110ae281cdba385b5bbdace01e442a3d5decb893f8ef4b545772504c1b8c7247017b60621737089b3107747f22bd51dc0c1cf09ec5325022be8f2a5a6aeb3ecf4b65dea2e4c82427e353c4ff64cb7615c42d58377d100bcc33c15c77f25205e4babd3577630b3ed440168219f64f42f31815963c9207503b5aabd6a6249c18c9a61eba5969004fb9ee2c789492242a1c80b06ff717be50b36cfa1db835980724d0478d286a165ce69b21b2997143573681ba25732c211f646f6dc5641d077ca9daaa3cb468fe4e6b5456923870ea2450ae18c8858c6c08b028f297d8dcc13793a408bfc606a2618009ba1fd68ee62a599175b6053ff61d6ea1ecdd5a9527726ce1da2286561549f548b870b8742021bd380e95ad88c3535314aedbe53af914cfd2734897f74e0384d355b10898291d3ef2e0dd796e3b1b1e86749b05f12e4650a33f8be869b839e90b1981dd745c46156e610da5e4643df370d6ef7c4c0174fd649e9ba661cb2c3aa6c78588bcf956d6d27a6970de5f34f78267886c364236f3717c86293f5f4b5dcab9b453163936788019aad29804233d2d5cdc06bd407016016de8c08dd3698dd1f35ada541e0e44620013b013f65993a7b5031d7cba608b48cb548322f604ac7cc85b73a0016fb495675b43d2402af8c75519d8cf4c11e96c1adcdf8c6e216cfcbf2ddb52cd0c5bb9b078eba1e25d8af54d4a770fdc2330b744e0bbdd4e410388c73f926d054a6c9e8c6e7f3b03478abd53ea3f23a95b209c5d9296adc737f70d848c97dd1009046820267c915b6bbb8c6a783139812631225e2eca98e142d754658cbf90df6731a21057bc30274ef9c84e23184069428c5e5a747ee13f6c86ddfcd1f6e82b4b6bd2468e28296901adbe560ac6716d0a5d4876ea0471c4019e5abf58082c97032fa9050c49353a01f6a1c74f47aefd354919b3373616445ccdab782e4a6a120a78d513294d19791340174152c0174e5e4c345e794d13ed33566936366fb9b2554d574d55512d62346112b9f17f5bdc22d74849db0d1bb064e4e6e6a61d506675d224e50c4b614d1492fde55d0708af69961aacfcfe5ee932e66211e085c9c55227903a0b07b9a46e7f8214402bb6de623f1e5c5bdeba5d2dcca3d4dc2d14ea6e0857778404d76103333e0b5c956505401a10e4ef5c6f3042d6d08c86c931ea726390e0507706ff52a0ac538a933d5645fe330a555345654c7d4feeec0bdb791588310d54f61610664e60051edd993b7bc53a96f52a47e209df9e0c581f69b2086cbda2a2ea985b337fb5d4317015c46fce277d3175e7cb676fc2c1a196537425f27d077b2c4e34544b385f641da77957e5aa499d965dc71bc8f266b125e31d2e0bb82f7606ef4e5843b0f897872b493545bd1bf9af30a24f843bb211345bc43b15ed87a215153e00d2216f05e07a63186f760e1d8a8d2e16bba7a043638e9263dd71c72675172669cad6208970be4d2c19a9a46cb8d49f275a9ee69cec23c44bebcc055ad1400e0dbf55d4d839d1061856374bba5b830d5aa429a74d0d848d08a5bc7c61339be514308aa04e356c1a43a98a7574396c8e2e550510a9164da14113cfd85bb1677d2f454a0a5cd01af12c8427fa5248fdda77a16a1771cff40969ceaaec1a66c03614767c9f03f14739566925554f5f218e6271da857b3c542541e747b7479dacc820cceff4fd96cccc1d5543f00a5e6f4c0d57638c02646c1535a3e0eb38ff80f3425c351b4e158bf83da6a3cf7f452f9f566d3b10c6df394437fbd5a54a1f6ce22c51ae66938a9b22336b4e5bc19c95f02e8142ccc4702c636a7a525340e6ae1e3ac0a2d0f39533e02ee723ced16bf92b661b89349ec75962234bfc0edcee621943302100f9c5fc984b23faab93fa35d57f26ed5a6fe3bc011a05f43e9241bd1c4ac4ee5eb606ce5e1622807bccadcf2815d871fc234276d97320e6f4d1be06091f18f6d00cd61e780bb48e6e9cc732372be4ac462f3f07f739c8d2d6ecc230d4278a9bb5b7fe1c3e08e907d7d0e5753b52e3df4b95b3c7a1100169bbfcb774b77c46b8edd3837fd3396e3e1946dec81e3df1d7f51d1bc08b3d10669c6161acd20a2d9cc6dba4801f0b5941de172b9aa27fcab738c0cd60f93646942401c87bf669f9f9983d7592ac258f1fcf312c96a754f7e3d5e71b6c287295fd2138a421d4224b751f3101650a36f5edcd526e38f5501230f51b5af0b2732ed92c8d4c1a35500b0e1948898aad6e266123f6c6851e5df92fda8bd446373b28935fdb929783254982b99fe15338777d780b0732445257bbcf867cf4c12452bbab8fe31576ff41e5483f493ebd3e5a089df1a4c4cff71c420897611eff1a09a80ce436c45561057ac9ec7b839b9602902b7357cf808e75a3aca10ddf9e231b6248f14ba2751e5efef61d8dbc72a05a7394f1497371d92865a56ce84cabda24592e2133731e5a1bf4eba7279dff46154dfc9b4bacdaa82b2119e5fd083612531cf9338d516ce76f11f3aa78354d7464ec8134484625d1342ab2eda6c7a2ed2a0205bc69cd2b9946e40a5c9f8420612c5c7eef79fe36f309d80049fca572c94c202b8acf6ef4683f1811d3ae7d8e4709ae3eb4b74c8bd338073abe328b6a1371411080599591bd6717af61ec62458c4946bf551bd87e6754013c36cbcac94b53019e9293f1128c40fc1ccefbedbf9b3e518a86b440d0b540872aa52d3776ce1f044a11fe28e0c53433141fbcb06b6741a0f77a3f4296123117aef33893a0f7794daef7a2ad9d1671c552812bb0f88f1bc3648c3ffc8fdc6dc81fea292c02382b0b996f0274c493031ff7850fea187e0e3e0ffbf72d3676412f76953278c061377652e0e877725801d0895df314ec58505f2414e3f9bf0142f14ecf14a63a845d6ab26567c7696835b7fac8b69469561ad0e5919cd5453034abdd07d65cbba50bf344769d790f760abbdf99f387b8d779f8b445c0a8e788501d6543169d6d2772602c3baf0c465e3f708657b4df24bc0cfa7132efff9a4c0a44da7fec349f9329faf36ca583d8933ded7baede6f2b8e07aa361c2c3b37730588b994cd388df50e1b80bbebb8178921210b2385b7d585184b77966bbbbf643e7f99e236bc3afa7b70bdf8f0e77abf6daefa4d475bf8bc5cc052e74fdb9e3526e6f96b51f9c0de18ef57eb06236bce2fb72918b60dac9978aac18a96ac54602e88d2d6e0e5116613e3cba7fcf249c62c211697b2867e186d6d1c58c8c9b89365f7bc8ff542af1559c205d242059c850c7849473c13ec4b0ab96973c9b89e492bc9be0c502644912ed50e107f5429972f974c4f807057511cf7665054dc21ed244458f43c562acd432589eedd0335a11c005dcd93b1364420f0d7b8726a19f40afd343bfb345bd93e1993a5f9462f1f2cf892acc6107f290c14d42c2de240ae3e82071f310659175b848eac45dc3e663f497495023a45e57df4d1189fd154a359be1c88c0f011da5156f8bc7e2d1bcf2a6fede56eaaab0338ec9c3c3541788a27330587bfb5a54e379b4458320263aa26fe12f241c6eefc121a50ad8c4d0f92226d95b032a38ee03761522c99ad2eca4fb99ccdac95341244f68b599a073d16754dc95f68eb223673f329a2181a95bf471bfcd4b042e58c5ea7f53c18344530233cb64ce4ce616325d440b96c91f92a734aa1b50412c6b733ab413e091ae1c0385ac654d1e2a4167c61f9dd012b20cc5e1fafcd938f2c1075ff188f10a06d3f0e818112cba5599111b832640ca4b85f758a1fd63650ac377929362f05ccd8e232c6137f55f2ff4679a96aef0674743d1c3ee94bb8a5cc487bd86eefe4fea7401ea837983fcf2d274070d834b607467463eb1ba0055548d31d4d7d8ea6c2b2ca29025933dea2cd74254d92259736e2d552c117e49d5295f70fc2e37ebf75647c4b96c9561a7a382d38452fc26322cda1354072cd6445b20d0a768789ace911544ac61890b5ff35cf1b05af1f06f5ba4701e3f4e2b62f53c863acfcb8b6e7ecad14e5e82e22c29dc81bb0b6c2f721325847f9db55aeeee26c086eec31b868ee675b6e4757e694c7c152e186536baa968f32d382b460429fa07e0543eb228330265bbdf3ad1469f3371e0f1dbfc11cc35741431f119b6cf56b15204db2858e0366356f3c0fc4b5a5003297a56340ef9d84616afaadd27bf27a5073046568f4ebb93ad371af23df4eb6260eb6510ee4edb411155e3b634258445f38a28cec19044f65bddf6176ea026528334ece2fd158e65c6d7318bbbd08ca18f057d0b093c01f70a937fb6be579310e264c6b2637471e1877f08a6b178d62202974f08e3869fb1390e33a17907999123cf2613eae6c234825bf03f51b4e595ae7c151169f13961df0492739a9e97f187dd63cc2ce7f8e2b0ec80a1e7f666a312f316a493608187c03f7a67eff14fc1372141f799eaf8246edf96bb7b4e6fb0e5b886623319bbb319cf99c55adf82c533d8d3df9b793ec552746091acaddf30b8636ab12d2f78d71f23afe0cffb9b87bdc2edcc2b63f0c0e3d3d8fd69bab6d5d45fbf1186961ad2e1218a59dac7019492f654a26474f70304c87dae4a43e25347af8fc291c147538c74447e729198c5c10ceeaf3ca95b0663f1dd9790f38fc187c62c9a85d480214c6b6a1a429f25a114938221b7aca0b34563e972654231127f80ee2c40cfba37f33aecbcf7998f26af7a07f4c7d7d384f341e9d1cc67f976c005efb09cd113d09452deb55f7e9850ad311d8352b84dc6f1f6cbfa3c0c6877126212624c5156a3fc4853aefae55483cb362ff0ec1fbb121dedf487ce068ad5684420f84e45bcc481186b6301b3c5f2a8e49b798c0b6926e4679ab9fe349dc3ddea3d0c8e7c1da3e5b0261941b5d5c58c1c68d2323ca557af7d495e313830e116e8f45db3d4e121b1073c1485b9a1a2ecf650080b20cc9755bf0d094e3e98c2d9a916a800f14dd1ecd9fa9644cea3f1ce65115662cd5c616c8f6f5720334617096486ab615f31d398d77d0f95009993c97279a5bbbb81805d812b445ff9d5c599bcdcb2d2a7bea13e9c5d5db45dc254c4f1e5f5ce867b630af51150ec45b5b1e68adacf7bcddf22a977761acb63bbf140a6e744a03854040bbeb62c6af9e6b4f1670c92adeae11583de62c8af9f533204ff8e5f7edfa053851d79ea536c8b279fe1c6c23a73b53522609044166d60f31b4c3c1a6f67af26f9005e6f6a1f91161ee57323c62ed9c1e0cf90cb59ea3515cf2cc3c8f756df66d3e978f4db8a4ff1609cb5b1e058bed59eb2bc09435ac821c74ae6d29a0d64541e3cf3f9cad7708147f80a661ac786567ea340bf1c307984a0e5a6e4c07e90667adb19d8fd556d77a50d0b76c46b42e697af14c0425296e40f3792a6db9ca087a9d7dc8cd566462012f813f059e6b342fa0d5159fc30d391566ff5f447dea9c7ac83ccfc8ec611221a5c02825591d4e78bb04331c4b96497043b23255c4a67f191dba3c629b6b423ec3f4f31141e07f0d4e361d79b2e4f35e0da018f23895e305f5c41574e6569a02df2ca091b2217e6a051c7ac358ac5f5cc9688e3d2b3c4e579bd73af14ab9d3749631e8d039456c2f3c5e9198a49480468172460335e3757fa9f7328743d69d2cf9e996a1567ccb7ec89d9649fa9b1f3b7b382491bbcb502f638a08b51ca1625aec460a260c968a78f03a73e95283b94fb2620c555af5984fbfe42906921e9c2f4312db0e2b3b9729dbf0c3282ba0920fab495fa5474e961e20a597d8937c190ed7a2a53fa8aa2377351cd0b5473e841d531ab1dc7d41770a854312795c406956f52dff31b92d480026e8d9641f4b655e2ab52aad2df58c1919b0c3ecbd9dd30cb37aaa743db6d77f9d4efd9ae424d52faa70a4116b1783006019e8f696a4bc77ec32e8660925631f7456f020080dca0ada93962d42e477640955eadb311f17410a7585160d3b397b0d849e152663f751b0222ed5c515462f56b290a1f0c0ae6d6e322b7d92e117605a1a3ac7838d8b6cb3c4d4f00fbe830a2f55c05aab978b32340ba8f43779be6dc67085552480533748d1b5f5e84ca53753817ba96aeb8733341d61acc58f5d75a81b18a67ec05c02f85ab04dc855a640051e6049e6c66547c70b0ec3445e4c4775409d03654cb61221815d3b632b0376c5a1b2e4efa65b1e4a2e208d4e6742650d68c108f3aaa5512b8dd89b97d61c63079787e610313732e57fb9362c29c4763c3cd10496057d6e4804ba61cec0867312bc94e5ef287624cf70128d9c238101369ea0a4fbe7320dec09d2eb1467fe24f945257094de8713c7ac3625f3efd2237d4767939fd49006f0a1fae5568a1067f0305519a4f9de0479afd94034ba682bdc5026e09ae62163039f580decd2e12074ffd0e3d6ab48212b01c0b0c7e9180eafc16398cfc6525d1527de36e78b234a9e25520342f46a2f6cfe9b761e374d52d36690bb1af26305ba26ad32bd84a705958e062baf62603693745e240f3958653956c790313e0a3844f280233079167371130a98a0cf9d14be55feba11ec3a7f6bf8b82e92948e0e78e07bfa8bb4d20880d201ae7a24662640c364622057a61b4ba7d17926690e50d1f51d134d63fc5fd2a80b13effb5e489398a8fc2a9cf24acbfd5e2737d7da2ed3bdeb48a3c9ab4e6279af2f972d9977b01b92c5bd221b035e3f167d46b4b956c96e7015af21ec498eba01ef13d72b76e9b947b2842c045d6cbdbed3da521d6b5a5f34edccddd471d1b7c9fdded40f79ed606b7292f82e6297ed7f921f40dc1f2892b68cf4e7bc388eb8833bf6023c69af45e779e6abd960ce2ea920a1bdad6fdbaad64b1e8284045cccffb48496a6672ae8e4da5962387ca72fa9707f068e4d71b919778c85d12c7193aad22764d27db670edcde5af035e6e105ada3755467eb3fcfa5ba1401313779aa76c485e610c012626f0f35b323fb6ba097b2af7f41ab3d37adba0d1e10a7bfebb80a98f58348d9924a183c98d57cabb115c498f3e6e8ec1b875e3866b30bbe38b0a5f4d6a45133d09c41b969e15bbddee1a3f7b3f14b621cf313914e27d12156d162b9baf690e314b8f2ba3796ccab12583f1030270b1643d050c25aa4983ef85023961333df860a1f35c38ff12589d0515c59a900d14fdc790d8b4751779fef4c3e189cc2a1a9c84ad5a0a3378642a5ca92bbf0f1e816de9c8d63ce953d6b96b5a2dc3f432d1db2f621f3e681d323ff503111e4338f2edbc8b60fcac567a28285e6127b45ecbd586f9118dc24105cc979646e6410afca368400668d23358458d755b34d305f072f45052f98d46cae89008d8a59f36dcaaef0850488569cef96c222863247b2a8a3c214e4d191faca0cf78856d0b4d5aa8664fbb344b58ec8a81588d6b1d663dea22b29682187191d0b3f118fdef3b05b97cd0ca74365f2a6bca3c343f6e16d28bb4aaa9999305f565081080c4f9175490be2b82298645f00e6b57100340427d5255e2140a7021ece52eeeae6a3a539873ab37790e032e8d7f93bfea9fbc65bed72855086ceb74645171270eba6f74bf3562142098e550bc25e6361275ac307c5970f776ca3703a1e02cd76223df2df0e081e0fe2f7926f2d798e286b46126ffa2abb54978fe76949a8cbf94f2116645b84532f4cc3255d396e94d62198a137e05d504cf95776922088c6744c7451be9ff9cce6e2f3135d501e2b28fb0137910793d9ac816364f89b5748b518f2c36f12808bb2e0efb6fd7b6de059d73b17ce71854e35585225c8da181e88f91a7070e58a2c078558b466cb5ca52b624f11405f7a5393b49e0290d51b201f43583458d0d77a0bbcfa66750921c671491343c7978b427a2895235328544de2dac4313f414ad2dd23f6e3c55b5ad78ae14a65f0c33cc583ddced02ea347e88ed278d1095b174ff2f39e47598f21f7e173bba2d5ee5380934d747778806fc5d0559b7614c482526835caf2bb7f815e9e15c726ce7c5f6097e0e367793f8bc5b2b6bfa7afc8f31a467ae29034596141dac03be1b1ab623948b61d64db866ac7bde64a3183255a4874220037d0d0b4482494dcb703ba076e18e8e055d9980a331a55b1d573a2d4f01a7455e05b2a5867f1d54046a65c44a80257a583ea5fe123d822d284dededbc779dcd170bbd8f6bcceb7a85452e081e29b60a13601bb9af0cd6dd5f10497c9c232bfb2659724f1efdeb8cfa01f0903e9396e9673c456286cf159682577bccd5cdbd793941ad3afd3059142572c0ae1c469fcc7a5eeba020378aa9bc24cec6821eb72c447657fd40d1e79895597707ef9986c34752ad8947a2668e34037ed8fd1f9743296d6ba6efa28ca8777c357ac083b9239d6ff12a33bf8c19231bcebcb03f6a4a0e33dd82032db3e9de5600c36decceb0495b3a8e2e6c1069e17cca0a704858b6e6156b8ca5371f70bb084cddbfc8ab374c1e725504db1ca123735f780841a5d95149567d7fbdf4edc4352ed9dfcd55e72f01588ebaadbbc231366831969779fdad26c1c6f52624358c654ca14d92e419dd62cc26fdea659f9b1526d74591b277e9687f4c6fa02d75b111b970aefb72016805fe6748b5ca3df71186aa7039c8537748bd690ca772da683fc171c4063da68e294be253c5424b626f7c7d27a25cc7c274332e16c126c75a64bc363b98c0c76c2d _Values: - {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} @@ -8206,7 +8305,6 @@ MonoBehaviour: - {fileID: 1913580752} - {fileID: 1721727717} - {fileID: 11500000, guid: 8a2ccc95906d14353beb4e727c00ffb0, type: 3} - - {fileID: 1197505583} - {fileID: 11500000, guid: 54748045ed19d4ea6889de9b617f6f8b, type: 3} - {fileID: 1648907612} - {fileID: 6070703451560129462, guid: c6a552686f72142bb8708e162c31d3ff, type: 3} @@ -9407,6 +9505,17 @@ MonoBehaviour: - {fileID: 11500000, guid: 4d97c1cf488304279b0c7c7bdb1fb3d8, type: 3} - {fileID: 1502848757} - {fileID: 1502848756} + - {fileID: 134500156} + - {fileID: 134500157} + - {fileID: 11500000, guid: dcc87ae8f9fe04833b49d5d7396d9693, type: 3} + - {fileID: 134500158} + - {fileID: 11500000, guid: 914dd73ddae7943148ea71537167542b, type: 3} + - {fileID: 1100229420} + - {fileID: 698213484} + - {fileID: 11500000, guid: f39aaf316b5904be48688dae23e2e35f, type: 3} + - {fileID: 11500000, guid: 6bc62b724b099426b9121ce12d1dc1cd, type: 3} + - {fileID: 1197505584} + - {fileID: 1039576900} --- !u!4 &1926461710 Transform: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/SampleScene.unity.meta b/Assets/Scenes/EditorScene.unity.meta similarity index 100% rename from Assets/Scenes/SampleScene.unity.meta rename to Assets/Scenes/EditorScene.unity.meta diff --git a/Assets/Scenes/StartPage.unity b/Assets/Scenes/StartPage.unity new file mode 100644 index 00000000..72de54f0 --- /dev/null +++ b/Assets/Scenes/StartPage.unity @@ -0,0 +1,316 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &87189950 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 87189953} + - component: {fileID: 87189952} + - component: {fileID: 87189951} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &87189951 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 87189950} + m_Enabled: 1 +--- !u!20 &87189952 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 87189950} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &87189953 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 87189950} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1800672650 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1800672652} + - component: {fileID: 1800672651} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1800672651 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1800672650} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1800672652 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1800672650} + serializedVersion: 2 + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 87189953} + - {fileID: 1800672652} diff --git a/Assets/Scenes/StartPage.unity.meta b/Assets/Scenes/StartPage.unity.meta new file mode 100644 index 00000000..dd7d295c --- /dev/null +++ b/Assets/Scenes/StartPage.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 28c134965d47644a98d3ba8a1343674a +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Base/ProjectFiles/EditorSettings.cs b/Assets/Scripts/Base/ProjectFiles/EditorSettings.cs deleted file mode 100644 index 545208f3..00000000 --- a/Assets/Scripts/Base/ProjectFiles/EditorSettings.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using Ichni.RhythmGame; -using Ichni.RhythmGame.Beatmap; -using UnityEngine; - -namespace Ichni -{ - public class EditorSettings - { - public int autoSaveInterval = 300; - } -} \ No newline at end of file diff --git a/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIElement.cs b/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIElement.cs index a813c21a..c5b21705 100644 --- a/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIElement.cs +++ b/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIElement.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using Ichni.RhythmGame; using TMPro; using UnityEngine; +using UnityEngine.Events; namespace Ichni.Editor { diff --git a/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIInputField.cs b/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIInputField.cs index 67cc211f..17499afa 100644 --- a/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIInputField.cs +++ b/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIInputField.cs @@ -1,3 +1,4 @@ +using System; using System.Collections; using System.Collections.Generic; using Ichni.RhythmGame; @@ -20,7 +21,19 @@ namespace Ichni.Editor private void ApplyParameters(string text) { - connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, text); + Type type = connectedBaseElement.GetType().GetField(parameterName).FieldType; + if (type == typeof(int)) + { + connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, int.Parse(text)); + } + else if (type == typeof(float)) + { + connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, float.Parse(text)); + } + else if (type == typeof(string)) + { + connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, text); + } connectedBaseElement.Refresh(); } } diff --git a/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIToggle.cs b/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIToggle.cs index bd2758f6..a58ddab1 100644 --- a/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIToggle.cs +++ b/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIToggle.cs @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using Ichni.RhythmGame; using UnityEngine; +using UnityEngine.Events; using UnityEngine.UI; namespace Ichni.Editor @@ -22,5 +23,10 @@ namespace Ichni.Editor connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, value); connectedBaseElement.Refresh(); } + + public void AddListenerFunction(UnityAction action) + { + toggle.onValueChanged.AddListener(action); + } } } \ No newline at end of file diff --git a/Assets/Scripts/DynamicUI/EditorUIManager.cs b/Assets/Scripts/DynamicUI/EditorUIManager.cs index d7772889..a8f08262 100644 --- a/Assets/Scripts/DynamicUI/EditorUIManager.cs +++ b/Assets/Scripts/DynamicUI/EditorUIManager.cs @@ -6,9 +6,9 @@ namespace Ichni.Editor { public class EditorUIManager : MonoBehaviour { + public MainPage mainPage; public Hierarchy hierarchy; public Inspector inspector; public Timeline timeline; - } } \ No newline at end of file diff --git a/Assets/Scripts/DynamicUI/Inspector/Inspector.cs b/Assets/Scripts/DynamicUI/Inspector/Inspector.cs index 01f45137..b03ba545 100644 --- a/Assets/Scripts/DynamicUI/Inspector/Inspector.cs +++ b/Assets/Scripts/DynamicUI/Inspector/Inspector.cs @@ -72,6 +72,16 @@ namespace Ichni.Editor container.dynamicUIElements.Add(button); return button; } + + public DynamicUIToggle GenerateToggle(IBaseElement baseElement, DynamicUIContainer container, string title, + string parameterName) + { + DynamicUIToggle toggle = Instantiate(EditorManager.instance.basePrefabs.toggle, container.rect) + .GetComponent(); + toggle.Initialize(baseElement, title, parameterName); + container.dynamicUIElements.Add(toggle); + return toggle; + } public DynamicUIInputField GenerateInputField(IBaseElement baseElement, DynamicUIContainer container, string title, string parameterName) diff --git a/Assets/Scripts/DynamicUI/MainUI.meta b/Assets/Scripts/DynamicUI/MainUI.meta new file mode 100644 index 00000000..783483f1 --- /dev/null +++ b/Assets/Scripts/DynamicUI/MainUI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6795f50bfe6d14cb7a78043ec0d9b433 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/DynamicUI/MainUI/MainPage.cs b/Assets/Scripts/DynamicUI/MainUI/MainPage.cs new file mode 100644 index 00000000..537e46f3 --- /dev/null +++ b/Assets/Scripts/DynamicUI/MainUI/MainPage.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Ichni.Editor +{ + public class MainPage : StaticWindow + { + public Canvas mainCanvas; + public ToolBar toolBar; + public ResolutionHints resolutionHints; + } +} \ No newline at end of file diff --git a/Assets/Scripts/DynamicUI/MainUI/MainPage.cs.meta b/Assets/Scripts/DynamicUI/MainUI/MainPage.cs.meta new file mode 100644 index 00000000..e9a3d8b4 --- /dev/null +++ b/Assets/Scripts/DynamicUI/MainUI/MainPage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dcc87ae8f9fe04833b49d5d7396d9693 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/DynamicUI/MainUI/ResolusionHints.meta b/Assets/Scripts/DynamicUI/MainUI/ResolusionHints.meta new file mode 100644 index 00000000..00d04cf0 --- /dev/null +++ b/Assets/Scripts/DynamicUI/MainUI/ResolusionHints.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 77cef690bc8234daba9231732db8dfb4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/DynamicUI/MainUI/ResolusionHints/ResolutionHints.cs b/Assets/Scripts/DynamicUI/MainUI/ResolusionHints/ResolutionHints.cs new file mode 100644 index 00000000..c6ae73f6 --- /dev/null +++ b/Assets/Scripts/DynamicUI/MainUI/ResolusionHints/ResolutionHints.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace Ichni.Editor +{ + public partial class ResolutionHints : MonoBehaviour + { + public Image phoneFrame; + public Image iPadFrame; + public Image safeAreaFrame; + } + + public partial class ResolutionHints + { + public void SetPhoneFrame() + { + phoneFrame.gameObject.SetActive(!phoneFrame.gameObject.activeSelf); + } + + public void SetIPadFrame() + { + iPadFrame.gameObject.SetActive(!iPadFrame.gameObject.activeSelf); + } + + public void SetSafeAreaFrame() + { + safeAreaFrame.gameObject.SetActive(!safeAreaFrame.gameObject.activeSelf); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/DynamicUI/MainUI/ResolusionHints/ResolutionHints.cs.meta b/Assets/Scripts/DynamicUI/MainUI/ResolusionHints/ResolutionHints.cs.meta new file mode 100644 index 00000000..61ae4d57 --- /dev/null +++ b/Assets/Scripts/DynamicUI/MainUI/ResolusionHints/ResolutionHints.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f39aaf316b5904be48688dae23e2e35f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/DynamicUI/ToolBar.meta b/Assets/Scripts/DynamicUI/MainUI/ToolBar.meta similarity index 100% rename from Assets/Scripts/DynamicUI/ToolBar.meta rename to Assets/Scripts/DynamicUI/MainUI/ToolBar.meta diff --git a/Assets/Scripts/DynamicUI/MainUI/ToolBar/ToolBar.cs b/Assets/Scripts/DynamicUI/MainUI/ToolBar/ToolBar.cs new file mode 100644 index 00000000..f758dcf4 --- /dev/null +++ b/Assets/Scripts/DynamicUI/MainUI/ToolBar/ToolBar.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace Ichni.Editor +{ + public partial class ToolBar : MonoBehaviour + { + public Button projectInfoButton; + public Button songInfoButton; + public Button saveButton; + public Button exportButton; + + private void Start() + { + saveButton.onClick.AddListener(EditorManager.instance.projectManager.saveManager.Save); + exportButton.onClick.AddListener(EditorManager.instance.projectManager.exportManager.Export); + + } + } + + public partial class ToolBar + { + + } +} \ No newline at end of file diff --git a/Assets/Scripts/DynamicUI/ToolBar/ToolBar.cs.meta b/Assets/Scripts/DynamicUI/MainUI/ToolBar/ToolBar.cs.meta similarity index 100% rename from Assets/Scripts/DynamicUI/ToolBar/ToolBar.cs.meta rename to Assets/Scripts/DynamicUI/MainUI/ToolBar/ToolBar.cs.meta diff --git a/Assets/Scripts/EditorGame.meta b/Assets/Scripts/EditorGame.meta new file mode 100644 index 00000000..e4b91e27 --- /dev/null +++ b/Assets/Scripts/EditorGame.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7bf117e642611451c8562357254c1e83 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Animations.meta b/Assets/Scripts/EditorGame/Animations.meta similarity index 100% rename from Assets/Scripts/Animations.meta rename to Assets/Scripts/EditorGame/Animations.meta diff --git a/Assets/Scripts/Animations/AnimationBase.cs b/Assets/Scripts/EditorGame/Animations/AnimationBase.cs similarity index 100% rename from Assets/Scripts/Animations/AnimationBase.cs rename to Assets/Scripts/EditorGame/Animations/AnimationBase.cs diff --git a/Assets/Scripts/Animations/AnimationBase.cs.meta b/Assets/Scripts/EditorGame/Animations/AnimationBase.cs.meta similarity index 100% rename from Assets/Scripts/Animations/AnimationBase.cs.meta rename to Assets/Scripts/EditorGame/Animations/AnimationBase.cs.meta diff --git a/Assets/Scripts/Animations/Color.meta b/Assets/Scripts/EditorGame/Animations/Color.meta similarity index 100% rename from Assets/Scripts/Animations/Color.meta rename to Assets/Scripts/EditorGame/Animations/Color.meta diff --git a/Assets/Scripts/Animations/Color/BaseColorChange.cs b/Assets/Scripts/EditorGame/Animations/Color/BaseColorChange.cs similarity index 100% rename from Assets/Scripts/Animations/Color/BaseColorChange.cs rename to Assets/Scripts/EditorGame/Animations/Color/BaseColorChange.cs diff --git a/Assets/Scripts/Animations/Color/BaseColorChange.cs.meta b/Assets/Scripts/EditorGame/Animations/Color/BaseColorChange.cs.meta similarity index 100% rename from Assets/Scripts/Animations/Color/BaseColorChange.cs.meta rename to Assets/Scripts/EditorGame/Animations/Color/BaseColorChange.cs.meta diff --git a/Assets/Scripts/Animations/Color/EmissionColorChange.cs b/Assets/Scripts/EditorGame/Animations/Color/EmissionColorChange.cs similarity index 100% rename from Assets/Scripts/Animations/Color/EmissionColorChange.cs rename to Assets/Scripts/EditorGame/Animations/Color/EmissionColorChange.cs diff --git a/Assets/Scripts/Animations/Color/EmissionColorChange.cs.meta b/Assets/Scripts/EditorGame/Animations/Color/EmissionColorChange.cs.meta similarity index 100% rename from Assets/Scripts/Animations/Color/EmissionColorChange.cs.meta rename to Assets/Scripts/EditorGame/Animations/Color/EmissionColorChange.cs.meta diff --git a/Assets/Scripts/Animations/Track.meta b/Assets/Scripts/EditorGame/Animations/Track.meta similarity index 100% rename from Assets/Scripts/Animations/Track.meta rename to Assets/Scripts/EditorGame/Animations/Track.meta diff --git a/Assets/Scripts/Animations/Track/TrackTotalTimeChange.cs b/Assets/Scripts/EditorGame/Animations/Track/TrackTotalTimeChange.cs similarity index 100% rename from Assets/Scripts/Animations/Track/TrackTotalTimeChange.cs rename to Assets/Scripts/EditorGame/Animations/Track/TrackTotalTimeChange.cs diff --git a/Assets/Scripts/Animations/Track/TrackTotalTimeChange.cs.meta b/Assets/Scripts/EditorGame/Animations/Track/TrackTotalTimeChange.cs.meta similarity index 100% rename from Assets/Scripts/Animations/Track/TrackTotalTimeChange.cs.meta rename to Assets/Scripts/EditorGame/Animations/Track/TrackTotalTimeChange.cs.meta diff --git a/Assets/Scripts/Animations/Transform.meta b/Assets/Scripts/EditorGame/Animations/Transform.meta similarity index 100% rename from Assets/Scripts/Animations/Transform.meta rename to Assets/Scripts/EditorGame/Animations/Transform.meta diff --git a/Assets/Scripts/Animations/Transform/Displacement.cs b/Assets/Scripts/EditorGame/Animations/Transform/Displacement.cs similarity index 100% rename from Assets/Scripts/Animations/Transform/Displacement.cs rename to Assets/Scripts/EditorGame/Animations/Transform/Displacement.cs diff --git a/Assets/Scripts/Animations/Transform/Displacement.cs.meta b/Assets/Scripts/EditorGame/Animations/Transform/Displacement.cs.meta similarity index 100% rename from Assets/Scripts/Animations/Transform/Displacement.cs.meta rename to Assets/Scripts/EditorGame/Animations/Transform/Displacement.cs.meta diff --git a/Assets/Scripts/Animations/Transform/LookAt.cs b/Assets/Scripts/EditorGame/Animations/Transform/LookAt.cs similarity index 100% rename from Assets/Scripts/Animations/Transform/LookAt.cs rename to Assets/Scripts/EditorGame/Animations/Transform/LookAt.cs diff --git a/Assets/Scripts/Animations/Transform/LookAt.cs.meta b/Assets/Scripts/EditorGame/Animations/Transform/LookAt.cs.meta similarity index 100% rename from Assets/Scripts/Animations/Transform/LookAt.cs.meta rename to Assets/Scripts/EditorGame/Animations/Transform/LookAt.cs.meta diff --git a/Assets/Scripts/Animations/Transform/Scale.cs b/Assets/Scripts/EditorGame/Animations/Transform/Scale.cs similarity index 100% rename from Assets/Scripts/Animations/Transform/Scale.cs rename to Assets/Scripts/EditorGame/Animations/Transform/Scale.cs diff --git a/Assets/Scripts/Animations/Transform/Scale.cs.meta b/Assets/Scripts/EditorGame/Animations/Transform/Scale.cs.meta similarity index 100% rename from Assets/Scripts/Animations/Transform/Scale.cs.meta rename to Assets/Scripts/EditorGame/Animations/Transform/Scale.cs.meta diff --git a/Assets/Scripts/Animations/Transform/Swirl.cs b/Assets/Scripts/EditorGame/Animations/Transform/Swirl.cs similarity index 100% rename from Assets/Scripts/Animations/Transform/Swirl.cs rename to Assets/Scripts/EditorGame/Animations/Transform/Swirl.cs diff --git a/Assets/Scripts/Animations/Transform/Swirl.cs.meta b/Assets/Scripts/EditorGame/Animations/Transform/Swirl.cs.meta similarity index 100% rename from Assets/Scripts/Animations/Transform/Swirl.cs.meta rename to Assets/Scripts/EditorGame/Animations/Transform/Swirl.cs.meta diff --git a/Assets/Scripts/Base.meta b/Assets/Scripts/EditorGame/Base.meta similarity index 100% rename from Assets/Scripts/Base.meta rename to Assets/Scripts/EditorGame/Base.meta diff --git a/Assets/Scripts/Base/.DS_Store b/Assets/Scripts/EditorGame/Base/.DS_Store similarity index 100% rename from Assets/Scripts/Base/.DS_Store rename to Assets/Scripts/EditorGame/Base/.DS_Store diff --git a/Assets/Scripts/Base/BaseElement.cs b/Assets/Scripts/EditorGame/Base/BaseElement.cs similarity index 91% rename from Assets/Scripts/Base/BaseElement.cs rename to Assets/Scripts/EditorGame/Base/BaseElement.cs index 4806f4a2..8acf2b96 100644 --- a/Assets/Scripts/Base/BaseElement.cs +++ b/Assets/Scripts/EditorGame/Base/BaseElement.cs @@ -40,6 +40,7 @@ namespace Ichni.RhythmGame throw new NotImplementedException(); } + public Inspector inspector => EditorManager.instance.uiManager.inspector; public void SetUpInspector(); } diff --git a/Assets/Scripts/Base/BaseElement.cs.meta b/Assets/Scripts/EditorGame/Base/BaseElement.cs.meta similarity index 100% rename from Assets/Scripts/Base/BaseElement.cs.meta rename to Assets/Scripts/EditorGame/Base/BaseElement.cs.meta diff --git a/Assets/Scripts/Base/EaseCurve.meta b/Assets/Scripts/EditorGame/Base/EaseCurve.meta similarity index 100% rename from Assets/Scripts/Base/EaseCurve.meta rename to Assets/Scripts/EditorGame/Base/EaseCurve.meta diff --git a/Assets/Scripts/Base/EaseCurve/EaseCurve.cs b/Assets/Scripts/EditorGame/Base/EaseCurve/EaseCurve.cs similarity index 100% rename from Assets/Scripts/Base/EaseCurve/EaseCurve.cs rename to Assets/Scripts/EditorGame/Base/EaseCurve/EaseCurve.cs diff --git a/Assets/Scripts/Base/EaseCurve/EaseCurve.cs.meta b/Assets/Scripts/EditorGame/Base/EaseCurve/EaseCurve.cs.meta similarity index 100% rename from Assets/Scripts/Base/EaseCurve/EaseCurve.cs.meta rename to Assets/Scripts/EditorGame/Base/EaseCurve/EaseCurve.cs.meta diff --git a/Assets/Scripts/Base/FlexibleTypes.meta b/Assets/Scripts/EditorGame/Base/FlexibleTypes.meta similarity index 100% rename from Assets/Scripts/Base/FlexibleTypes.meta rename to Assets/Scripts/EditorGame/Base/FlexibleTypes.meta diff --git a/Assets/Scripts/Base/FlexibleTypes/FlexibleBool.cs b/Assets/Scripts/EditorGame/Base/FlexibleTypes/FlexibleBool.cs similarity index 100% rename from Assets/Scripts/Base/FlexibleTypes/FlexibleBool.cs rename to Assets/Scripts/EditorGame/Base/FlexibleTypes/FlexibleBool.cs diff --git a/Assets/Scripts/Base/FlexibleTypes/FlexibleBool.cs.meta b/Assets/Scripts/EditorGame/Base/FlexibleTypes/FlexibleBool.cs.meta similarity index 100% rename from Assets/Scripts/Base/FlexibleTypes/FlexibleBool.cs.meta rename to Assets/Scripts/EditorGame/Base/FlexibleTypes/FlexibleBool.cs.meta diff --git a/Assets/Scripts/Base/FlexibleTypes/FlexibleFloat.cs b/Assets/Scripts/EditorGame/Base/FlexibleTypes/FlexibleFloat.cs similarity index 100% rename from Assets/Scripts/Base/FlexibleTypes/FlexibleFloat.cs rename to Assets/Scripts/EditorGame/Base/FlexibleTypes/FlexibleFloat.cs diff --git a/Assets/Scripts/Base/FlexibleTypes/FlexibleFloat.cs.meta b/Assets/Scripts/EditorGame/Base/FlexibleTypes/FlexibleFloat.cs.meta similarity index 100% rename from Assets/Scripts/Base/FlexibleTypes/FlexibleFloat.cs.meta rename to Assets/Scripts/EditorGame/Base/FlexibleTypes/FlexibleFloat.cs.meta diff --git a/Assets/Scripts/Base/FlexibleTypes/FlexibleInt.cs b/Assets/Scripts/EditorGame/Base/FlexibleTypes/FlexibleInt.cs similarity index 100% rename from Assets/Scripts/Base/FlexibleTypes/FlexibleInt.cs rename to Assets/Scripts/EditorGame/Base/FlexibleTypes/FlexibleInt.cs diff --git a/Assets/Scripts/Base/FlexibleTypes/FlexibleInt.cs.meta b/Assets/Scripts/EditorGame/Base/FlexibleTypes/FlexibleInt.cs.meta similarity index 100% rename from Assets/Scripts/Base/FlexibleTypes/FlexibleInt.cs.meta rename to Assets/Scripts/EditorGame/Base/FlexibleTypes/FlexibleInt.cs.meta diff --git a/Assets/Scripts/Base/FlexibleTypes/FlexibleMain.cs b/Assets/Scripts/EditorGame/Base/FlexibleTypes/FlexibleMain.cs similarity index 100% rename from Assets/Scripts/Base/FlexibleTypes/FlexibleMain.cs rename to Assets/Scripts/EditorGame/Base/FlexibleTypes/FlexibleMain.cs diff --git a/Assets/Scripts/Base/FlexibleTypes/FlexibleMain.cs.meta b/Assets/Scripts/EditorGame/Base/FlexibleTypes/FlexibleMain.cs.meta similarity index 100% rename from Assets/Scripts/Base/FlexibleTypes/FlexibleMain.cs.meta rename to Assets/Scripts/EditorGame/Base/FlexibleTypes/FlexibleMain.cs.meta diff --git a/Assets/Scripts/Base/GeneralSubmodules.meta b/Assets/Scripts/EditorGame/Base/GeneralSubmodules.meta similarity index 100% rename from Assets/Scripts/Base/GeneralSubmodules.meta rename to Assets/Scripts/EditorGame/Base/GeneralSubmodules.meta diff --git a/Assets/Scripts/Base/GeneralSubmodules/ColorSubmodule.cs b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/ColorSubmodule.cs similarity index 91% rename from Assets/Scripts/Base/GeneralSubmodules/ColorSubmodule.cs rename to Assets/Scripts/EditorGame/Base/GeneralSubmodules/ColorSubmodule.cs index faa62e15..e1a8ef20 100644 --- a/Assets/Scripts/Base/GeneralSubmodules/ColorSubmodule.cs +++ b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/ColorSubmodule.cs @@ -81,15 +81,18 @@ namespace Ichni.RhythmGame { var container = inspector.GenerateContainer("Color"); var baseColor = inspector.GenerateBaseColorPicker(this, container, "Base Color", nameof(originalBaseColor)); - var emissionColor = inspector.GenerateEmissionColorPicker(this, container, "Emission Color", nameof(emissionEnabled), - nameof(originalEmissionColor), nameof(originalEmissionIntensity)); - + if ((attachedGameElement as IHaveColorSubmodule).haveEmission) + { + var emissionColor = inspector.GenerateEmissionColorPicker(this, container, "Emission Color", + nameof(emissionEnabled), nameof(originalEmissionColor), nameof(originalEmissionIntensity)); + } } } public interface IHaveColorSubmodule { public ColorSubmodule colorSubmodule { get; set; } + public bool haveEmission { get; } } namespace Beatmap diff --git a/Assets/Scripts/Base/GeneralSubmodules/ColorSubmodule.cs.meta b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/ColorSubmodule.cs.meta similarity index 100% rename from Assets/Scripts/Base/GeneralSubmodules/ColorSubmodule.cs.meta rename to Assets/Scripts/EditorGame/Base/GeneralSubmodules/ColorSubmodule.cs.meta diff --git a/Assets/Scripts/Base/GeneralSubmodules/EffectSubmodule.cs b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/EffectSubmodule.cs similarity index 80% rename from Assets/Scripts/Base/GeneralSubmodules/EffectSubmodule.cs rename to Assets/Scripts/EditorGame/Base/GeneralSubmodules/EffectSubmodule.cs index f57e2081..2a2f9695 100644 --- a/Assets/Scripts/Base/GeneralSubmodules/EffectSubmodule.cs +++ b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/EffectSubmodule.cs @@ -1,6 +1,8 @@ using System.Collections; using System.Collections.Generic; +using Ichni.Editor; using Ichni.RhythmGame.Beatmap; +using Sirenix.Utilities; using UnityEngine; namespace Ichni.RhythmGame @@ -47,11 +49,26 @@ namespace Ichni.RhythmGame effectCollection.Add(effect.Key, effectList); } } - + } + + public partial class EffectSubmodule + { public override void SaveBM() { matchedBM = new EffectSubmodule_BM(attachedGameElement); } + + public override void SetUpInspector() + { + foreach (var effect in effectCollection) + { + var container = inspector.GenerateContainer(effect.Key); + foreach (var effectBase in effect.Value) + { + effectBase.SetUpInspector(); + } + } + } } public partial class EffectSubmodule @@ -110,7 +127,7 @@ namespace Ichni.RhythmGame } } - public abstract class EffectBase + public abstract class EffectBase : IBaseElement { public enum EffectState { @@ -120,6 +137,9 @@ namespace Ichni.RhythmGame Error = 100 } + public BaseElement_BM matchedBM { get; set; } + public Inspector inspector => EditorManager.instance.uiManager.inspector; + /// /// 效果的持续时间,如果为0则表示瞬间效果 /// @@ -146,10 +166,15 @@ namespace Ichni.RhythmGame this.effectTime = effectTime; this.nowEffectState = EffectState.Before; } - - public virtual void UpdateEffect() + + public void SaveBM() { - EffectState state = CheckEffectState(); + throw new System.NotImplementedException(); + } + + public virtual void UpdateEffect(float triggerTime) + { + EffectState state = CheckEffectState(triggerTime); if (state == EffectState.Before && nowEffectState != EffectState.Before) { @@ -168,9 +193,27 @@ namespace Ichni.RhythmGame } } - public virtual EffectState CheckEffectState() + protected virtual EffectState CheckEffectState(float triggerTime) { - throw new System.NotImplementedException(); + float songTime = EditorManager.instance.songInformation.songTime; + + if (songTime < triggerTime) + { + return EffectState.Before; + } + + if (songTime >= triggerTime && + songTime <= triggerTime + effectTime) + { + return EffectState.Middle; + } + + if (songTime > triggerTime + effectTime) + { + return EffectState.After; + } + + return EffectState.Error; } /// @@ -203,6 +246,13 @@ namespace Ichni.RhythmGame /// /// public abstract EffectBase_BM ConvertToBM(); + + public void Refresh() + { + + } + + public abstract void SetUpInspector(); } namespace Beatmap diff --git a/Assets/Scripts/Base/GeneralSubmodules/EffectSubmodule.cs.meta b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/EffectSubmodule.cs.meta similarity index 100% rename from Assets/Scripts/Base/GeneralSubmodules/EffectSubmodule.cs.meta rename to Assets/Scripts/EditorGame/Base/GeneralSubmodules/EffectSubmodule.cs.meta diff --git a/Assets/Scripts/Base/GeneralSubmodules/SubmoduleBase.cs b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/SubmoduleBase.cs similarity index 95% rename from Assets/Scripts/Base/GeneralSubmodules/SubmoduleBase.cs rename to Assets/Scripts/EditorGame/Base/GeneralSubmodules/SubmoduleBase.cs index f0038c85..a73d7a1c 100644 --- a/Assets/Scripts/Base/GeneralSubmodules/SubmoduleBase.cs +++ b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/SubmoduleBase.cs @@ -13,6 +13,8 @@ namespace Ichni.RhythmGame public BaseElement_BM matchedBM { get; set; } + public Inspector inspector => EditorManager.instance.uiManager.inspector; + public SubmoduleBase(GameElement attachedGameElement) { this.attachedGameElement = attachedGameElement; @@ -34,9 +36,7 @@ namespace Ichni.RhythmGame { attachedGameElement.submoduleList.Remove(this); } - - public Inspector inspector => EditorManager.instance.uiManager.inspector; - + public virtual void SetUpInspector() { diff --git a/Assets/Scripts/Base/GeneralSubmodules/SubmoduleBase.cs.meta b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/SubmoduleBase.cs.meta similarity index 100% rename from Assets/Scripts/Base/GeneralSubmodules/SubmoduleBase.cs.meta rename to Assets/Scripts/EditorGame/Base/GeneralSubmodules/SubmoduleBase.cs.meta diff --git a/Assets/Scripts/Base/GeneralSubmodules/TimeDurationSubmodule.cs b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TimeDurationSubmodule.cs similarity index 79% rename from Assets/Scripts/Base/GeneralSubmodules/TimeDurationSubmodule.cs rename to Assets/Scripts/EditorGame/Base/GeneralSubmodules/TimeDurationSubmodule.cs index 6c341d67..05fa1e4b 100644 --- a/Assets/Scripts/Base/GeneralSubmodules/TimeDurationSubmodule.cs +++ b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TimeDurationSubmodule.cs @@ -7,7 +7,7 @@ using UnityEngine; namespace Ichni.RhythmGame { - public class TimeDurationSubmodule: SubmoduleBase + public partial class TimeDurationSubmodule : SubmoduleBase { public bool isOverridingDuration; //是否手动设置了时间区间,开启时,子物体的时间区间将被忽略,且在自动计算区间时跳过此模块 public float startTime, endTime; //起止时间 @@ -82,6 +82,28 @@ namespace Ichni.RhythmGame } } + public partial class TimeDurationSubmodule + { + public override void SetUpInspector() + { + var container = inspector.GenerateContainer("Time Duration"); + var overrideToggle = inspector.GenerateToggle(this, container, "Override Duration", nameof(isOverridingDuration)); + var startTimeInputField = inspector.GenerateInputField(this, container, "Start Time", nameof(startTime)); + var endTimeInputField = inspector.GenerateInputField(this, container, "End Time", nameof(endTime)); + + void SetInputFieldInteractable(bool interactable) + { + startTimeInputField.inputField.interactable = interactable; + endTimeInputField.inputField.interactable = interactable; + } + + SetInputFieldInteractable(isOverridingDuration); + overrideToggle.AddListenerFunction(SetInputFieldInteractable); + } + + + } + public interface IHaveTimeDurationSubmodule { public TimeDurationSubmodule timeDurationSubmodule { get; set; } diff --git a/Assets/Scripts/Base/GeneralSubmodules/TimeDurationSubmodule.cs.meta b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TimeDurationSubmodule.cs.meta similarity index 100% rename from Assets/Scripts/Base/GeneralSubmodules/TimeDurationSubmodule.cs.meta rename to Assets/Scripts/EditorGame/Base/GeneralSubmodules/TimeDurationSubmodule.cs.meta diff --git a/Assets/Scripts/Base/GeneralSubmodules/TransformSubmodule.cs b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TransformSubmodule.cs similarity index 100% rename from Assets/Scripts/Base/GeneralSubmodules/TransformSubmodule.cs rename to Assets/Scripts/EditorGame/Base/GeneralSubmodules/TransformSubmodule.cs diff --git a/Assets/Scripts/Base/GeneralSubmodules/TransformSubmodule.cs.meta b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TransformSubmodule.cs.meta similarity index 100% rename from Assets/Scripts/Base/GeneralSubmodules/TransformSubmodule.cs.meta rename to Assets/Scripts/EditorGame/Base/GeneralSubmodules/TransformSubmodule.cs.meta diff --git a/Assets/Scripts/Base/ProjectFiles.meta b/Assets/Scripts/EditorGame/Base/ProjectFiles.meta similarity index 100% rename from Assets/Scripts/Base/ProjectFiles.meta rename to Assets/Scripts/EditorGame/Base/ProjectFiles.meta diff --git a/Assets/Scripts/Base/ProjectFiles/BeatmapContainer.cs b/Assets/Scripts/EditorGame/Base/ProjectFiles/BeatmapContainer.cs similarity index 100% rename from Assets/Scripts/Base/ProjectFiles/BeatmapContainer.cs rename to Assets/Scripts/EditorGame/Base/ProjectFiles/BeatmapContainer.cs diff --git a/Assets/Scripts/Base/ProjectFiles/BeatmapContainer.cs.meta b/Assets/Scripts/EditorGame/Base/ProjectFiles/BeatmapContainer.cs.meta similarity index 100% rename from Assets/Scripts/Base/ProjectFiles/BeatmapContainer.cs.meta rename to Assets/Scripts/EditorGame/Base/ProjectFiles/BeatmapContainer.cs.meta diff --git a/Assets/Scripts/Base/ProjectFiles/CommandScripts.cs b/Assets/Scripts/EditorGame/Base/ProjectFiles/CommandScripts.cs similarity index 100% rename from Assets/Scripts/Base/ProjectFiles/CommandScripts.cs rename to Assets/Scripts/EditorGame/Base/ProjectFiles/CommandScripts.cs diff --git a/Assets/Scripts/Base/ProjectFiles/CommandScripts.cs.meta b/Assets/Scripts/EditorGame/Base/ProjectFiles/CommandScripts.cs.meta similarity index 100% rename from Assets/Scripts/Base/ProjectFiles/CommandScripts.cs.meta rename to Assets/Scripts/EditorGame/Base/ProjectFiles/CommandScripts.cs.meta diff --git a/Assets/Scripts/Base/ProjectFiles/ProjectInformation.cs b/Assets/Scripts/EditorGame/Base/ProjectFiles/ProjectInformation.cs similarity index 100% rename from Assets/Scripts/Base/ProjectFiles/ProjectInformation.cs rename to Assets/Scripts/EditorGame/Base/ProjectFiles/ProjectInformation.cs diff --git a/Assets/Scripts/Base/ProjectFiles/ProjectInformation.cs.meta b/Assets/Scripts/EditorGame/Base/ProjectFiles/ProjectInformation.cs.meta similarity index 100% rename from Assets/Scripts/Base/ProjectFiles/ProjectInformation.cs.meta rename to Assets/Scripts/EditorGame/Base/ProjectFiles/ProjectInformation.cs.meta diff --git a/Assets/Scripts/Base/ProjectFiles/SongInformation.cs b/Assets/Scripts/EditorGame/Base/ProjectFiles/SongInformation.cs similarity index 100% rename from Assets/Scripts/Base/ProjectFiles/SongInformation.cs rename to Assets/Scripts/EditorGame/Base/ProjectFiles/SongInformation.cs diff --git a/Assets/Scripts/Base/ProjectFiles/SongInformation.cs.meta b/Assets/Scripts/EditorGame/Base/ProjectFiles/SongInformation.cs.meta similarity index 100% rename from Assets/Scripts/Base/ProjectFiles/SongInformation.cs.meta rename to Assets/Scripts/EditorGame/Base/ProjectFiles/SongInformation.cs.meta diff --git a/Assets/Scripts/GameElements.meta b/Assets/Scripts/EditorGame/GameElements.meta similarity index 100% rename from Assets/Scripts/GameElements.meta rename to Assets/Scripts/EditorGame/GameElements.meta diff --git a/Assets/Scripts/GameElements/ElementFolder.meta b/Assets/Scripts/EditorGame/GameElements/ElementFolder.meta similarity index 100% rename from Assets/Scripts/GameElements/ElementFolder.meta rename to Assets/Scripts/EditorGame/GameElements/ElementFolder.meta diff --git a/Assets/Scripts/GameElements/ElementFolder/ElementFolder.cs b/Assets/Scripts/EditorGame/GameElements/ElementFolder/ElementFolder.cs similarity index 94% rename from Assets/Scripts/GameElements/ElementFolder/ElementFolder.cs rename to Assets/Scripts/EditorGame/GameElements/ElementFolder/ElementFolder.cs index a40e0a5d..0b9e90a5 100644 --- a/Assets/Scripts/GameElements/ElementFolder/ElementFolder.cs +++ b/Assets/Scripts/EditorGame/GameElements/ElementFolder/ElementFolder.cs @@ -17,11 +17,7 @@ namespace Ichni.RhythmGame public static ElementFolder GenerateElement(string name, Guid id, List tags, bool isFirstGenerated, GameElement parentElement) { ElementFolder elementFolder = Instantiate(EditorManager.instance.basePrefabs.elementFolder).GetComponent(); - elementFolder.Initialize(name, id, tags, isFirstGenerated, parentElement); - - //elementFolder.GenerateTab(parentElement); - return elementFolder; } @@ -33,7 +29,6 @@ namespace Ichni.RhythmGame submoduleList.Add(transformSubmodule); submoduleList.Add(timeDurationSubmodule); } - } diff --git a/Assets/Scripts/GameElements/ElementFolder/ElementFolder.cs.meta b/Assets/Scripts/EditorGame/GameElements/ElementFolder/ElementFolder.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/ElementFolder/ElementFolder.cs.meta rename to Assets/Scripts/EditorGame/GameElements/ElementFolder/ElementFolder.cs.meta diff --git a/Assets/Scripts/GameElements/EnvironmentObjects.meta b/Assets/Scripts/EditorGame/GameElements/EnvironmentObjects.meta similarity index 100% rename from Assets/Scripts/GameElements/EnvironmentObjects.meta rename to Assets/Scripts/EditorGame/GameElements/EnvironmentObjects.meta diff --git a/Assets/Scripts/GameElements/EnvironmentObjects/BackgroundController.cs b/Assets/Scripts/EditorGame/GameElements/EnvironmentObjects/BackgroundController.cs similarity index 100% rename from Assets/Scripts/GameElements/EnvironmentObjects/BackgroundController.cs rename to Assets/Scripts/EditorGame/GameElements/EnvironmentObjects/BackgroundController.cs diff --git a/Assets/Scripts/GameElements/EnvironmentObjects/BackgroundController.cs.meta b/Assets/Scripts/EditorGame/GameElements/EnvironmentObjects/BackgroundController.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/EnvironmentObjects/BackgroundController.cs.meta rename to Assets/Scripts/EditorGame/GameElements/EnvironmentObjects/BackgroundController.cs.meta diff --git a/Assets/Scripts/GameElements/EnvironmentObjects/EnvironmentObject.cs b/Assets/Scripts/EditorGame/GameElements/EnvironmentObjects/EnvironmentObject.cs similarity index 100% rename from Assets/Scripts/GameElements/EnvironmentObjects/EnvironmentObject.cs rename to Assets/Scripts/EditorGame/GameElements/EnvironmentObjects/EnvironmentObject.cs diff --git a/Assets/Scripts/GameElements/EnvironmentObjects/EnvironmentObject.cs.meta b/Assets/Scripts/EditorGame/GameElements/EnvironmentObjects/EnvironmentObject.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/EnvironmentObjects/EnvironmentObject.cs.meta rename to Assets/Scripts/EditorGame/GameElements/EnvironmentObjects/EnvironmentObject.cs.meta diff --git a/Assets/Scripts/GameElements/GameCamera.meta b/Assets/Scripts/EditorGame/GameElements/GameCamera.meta similarity index 100% rename from Assets/Scripts/GameElements/GameCamera.meta rename to Assets/Scripts/EditorGame/GameElements/GameCamera.meta diff --git a/Assets/Scripts/GameElements/GameCamera/GameCamera.cs b/Assets/Scripts/EditorGame/GameElements/GameCamera/GameCamera.cs similarity index 100% rename from Assets/Scripts/GameElements/GameCamera/GameCamera.cs rename to Assets/Scripts/EditorGame/GameElements/GameCamera/GameCamera.cs diff --git a/Assets/Scripts/GameElements/GameCamera/GameCamera.cs.meta b/Assets/Scripts/EditorGame/GameElements/GameCamera/GameCamera.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/GameCamera/GameCamera.cs.meta rename to Assets/Scripts/EditorGame/GameElements/GameCamera/GameCamera.cs.meta diff --git a/Assets/Scripts/GameElements/GameElement.cs b/Assets/Scripts/EditorGame/GameElements/GameElement.cs similarity index 96% rename from Assets/Scripts/GameElements/GameElement.cs rename to Assets/Scripts/EditorGame/GameElements/GameElement.cs index 6d8c50af..7f0397bf 100644 --- a/Assets/Scripts/GameElements/GameElement.cs +++ b/Assets/Scripts/EditorGame/GameElements/GameElement.cs @@ -39,6 +39,8 @@ namespace Ichni.RhythmGame //存档类 public BaseElement_BM matchedBM { get; set; } + public Inspector inspector => EditorManager.instance.uiManager.inspector; + /// /// 首次初始化 @@ -139,8 +141,6 @@ namespace Ichni.RhythmGame public abstract partial class GameElement { - public Inspector inspector => EditorManager.instance.uiManager.inspector; - public virtual void SetUpInspector() //被点击时设置第一层Inspector { var container = inspector.GenerateContainer("Element Info"); diff --git a/Assets/Scripts/GameElements/GameElement.cs.meta b/Assets/Scripts/EditorGame/GameElements/GameElement.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/GameElement.cs.meta rename to Assets/Scripts/EditorGame/GameElements/GameElement.cs.meta diff --git a/Assets/Scripts/GameElements/GeneralEffects.meta b/Assets/Scripts/EditorGame/GameElements/GeneralEffects.meta similarity index 100% rename from Assets/Scripts/GameElements/GeneralEffects.meta rename to Assets/Scripts/EditorGame/GameElements/GeneralEffects.meta diff --git a/Assets/Scripts/GameElements/GeneralEffects/BloomShake.cs b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/BloomShake.cs similarity index 84% rename from Assets/Scripts/GameElements/GeneralEffects/BloomShake.cs rename to Assets/Scripts/EditorGame/GameElements/GeneralEffects/BloomShake.cs index fce6e08a..8c7f894f 100644 --- a/Assets/Scripts/GameElements/GeneralEffects/BloomShake.cs +++ b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/BloomShake.cs @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; +using Ichni.Editor; using Ichni.RhythmGame.Beatmap; using Lean.Pool; using MoreMountains.Feedbacks; @@ -28,5 +29,10 @@ namespace Ichni.RhythmGame { throw new NotImplementedException(); } + + public override void SetUpInspector() + { + throw new NotImplementedException(); + } } } \ No newline at end of file diff --git a/Assets/Scripts/GameElements/GeneralEffects/BloomShake.cs.meta b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/BloomShake.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/GeneralEffects/BloomShake.cs.meta rename to Assets/Scripts/EditorGame/GameElements/GeneralEffects/BloomShake.cs.meta diff --git a/Assets/Scripts/EditorGame/GameElements/GeneralEffects/TimeEffectsCollection.cs b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/TimeEffectsCollection.cs new file mode 100644 index 00000000..0df28282 --- /dev/null +++ b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/TimeEffectsCollection.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using Sirenix.OdinInspector; +using UnityEngine; + +namespace Ichni.RhythmGame +{ + public partial class TimeEffectsCollection : GameElement, IHaveEffectSubmodule + { + public EffectSubmodule effectSubmodule { get; set; } + public float time; + + public static TimeEffectsCollection CreateTimeEffectsCollection(float time) + { + TimeEffectsCollection timeEffectsCollection = Instantiate(EditorManager.instance.basePrefabs.emptyObject) + .AddComponent(); + timeEffectsCollection.time = time; + return timeEffectsCollection; + } + + protected override void SetDefaultSubmodules() + { + effectSubmodule = new EffectSubmodule(this); + } + + private void Update() + { + effectSubmodule.effectCollection["Default"].ForEach(effect => effect.UpdateEffect(time)); + } + } + + public partial class TimeEffectsCollection + { + public override void SaveBM() + { + + } + + public override void SetUpInspector() + { + var container = inspector.GenerateContainer("Time Effects Collection"); + var timeInputField = inspector.GenerateInputField(this, container, "Time", nameof(time)); + } + } + + namespace Beatmap + { + + } +} \ No newline at end of file diff --git a/Assets/Scripts/GameElements/GeneralEffects/TimeEffectsCollection.cs.meta b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/TimeEffectsCollection.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/GeneralEffects/TimeEffectsCollection.cs.meta rename to Assets/Scripts/EditorGame/GameElements/GeneralEffects/TimeEffectsCollection.cs.meta diff --git a/Assets/Scripts/GameElements/Notes.meta b/Assets/Scripts/EditorGame/GameElements/Notes.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes.meta rename to Assets/Scripts/EditorGame/GameElements/Notes.meta diff --git a/Assets/Scripts/GameElements/Notes/JudgeSubmodules.meta b/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/JudgeSubmodules.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules.meta diff --git a/Assets/Scripts/GameElements/Notes/JudgeSubmodules/FullScreenBalancedJudgeUnit.cs b/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/FullScreenBalancedJudgeUnit.cs similarity index 100% rename from Assets/Scripts/GameElements/Notes/JudgeSubmodules/FullScreenBalancedJudgeUnit.cs rename to Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/FullScreenBalancedJudgeUnit.cs diff --git a/Assets/Scripts/GameElements/Notes/JudgeSubmodules/FullScreenBalancedJudgeUnit.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/FullScreenBalancedJudgeUnit.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/JudgeSubmodules/FullScreenBalancedJudgeUnit.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/FullScreenBalancedJudgeUnit.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/JudgeSubmodules/FullScreenNearTimeJudgeUnit.cs b/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/FullScreenNearTimeJudgeUnit.cs similarity index 100% rename from Assets/Scripts/GameElements/Notes/JudgeSubmodules/FullScreenNearTimeJudgeUnit.cs rename to Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/FullScreenNearTimeJudgeUnit.cs diff --git a/Assets/Scripts/GameElements/Notes/JudgeSubmodules/FullScreenNearTimeJudgeUnit.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/FullScreenNearTimeJudgeUnit.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/JudgeSubmodules/FullScreenNearTimeJudgeUnit.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/FullScreenNearTimeJudgeUnit.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/JudgeSubmodules/NoteJudgeSubmodule.cs b/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/NoteJudgeSubmodule.cs similarity index 100% rename from Assets/Scripts/GameElements/Notes/JudgeSubmodules/NoteJudgeSubmodule.cs rename to Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/NoteJudgeSubmodule.cs diff --git a/Assets/Scripts/GameElements/Notes/JudgeSubmodules/NoteJudgeSubmodule.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/NoteJudgeSubmodule.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/JudgeSubmodules/NoteJudgeSubmodule.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/NoteJudgeSubmodule.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/JudgeSubmodules/TouchAreaJudgeUnit.cs b/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/TouchAreaJudgeUnit.cs similarity index 100% rename from Assets/Scripts/GameElements/Notes/JudgeSubmodules/TouchAreaJudgeUnit.cs rename to Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/TouchAreaJudgeUnit.cs diff --git a/Assets/Scripts/GameElements/Notes/JudgeSubmodules/TouchAreaJudgeUnit.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/TouchAreaJudgeUnit.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/JudgeSubmodules/TouchAreaJudgeUnit.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/TouchAreaJudgeUnit.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/JudgeSubmodules/TriggerConnectJudgeUnit.cs b/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/TriggerConnectJudgeUnit.cs similarity index 100% rename from Assets/Scripts/GameElements/Notes/JudgeSubmodules/TriggerConnectJudgeUnit.cs rename to Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/TriggerConnectJudgeUnit.cs diff --git a/Assets/Scripts/GameElements/Notes/JudgeSubmodules/TriggerConnectJudgeUnit.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/TriggerConnectJudgeUnit.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/JudgeSubmodules/TriggerConnectJudgeUnit.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/TriggerConnectJudgeUnit.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects.meta b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteEffects.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects.meta diff --git a/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteBadEffect.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteBadEffect.cs new file mode 100644 index 00000000..0ad0d18a --- /dev/null +++ b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteBadEffect.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Ichni.RhythmGame +{ + public abstract class NoteBadEffect : NoteEffectBase + { + + } + + namespace Beatmap + { + public abstract class NoteBadEffect_BM : NoteEffectBase_BM + { + public NoteBadEffect_BM() + { + + } + + public NoteBadEffect_BM(float effectTime, Guid attachedNoteID) : base(effectTime, attachedNoteID) + { + + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteBadEffect.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteBadEffect.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteEffects/NoteBadEffect.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteBadEffect.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteEffectBase.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteEffectBase.cs similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteEffects/NoteEffectBase.cs rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteEffectBase.cs diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteEffectBase.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteEffectBase.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteEffects/NoteEffectBase.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteEffectBase.cs.meta diff --git a/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteGeneralJudgeEffect.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteGeneralJudgeEffect.cs new file mode 100644 index 00000000..626173af --- /dev/null +++ b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteGeneralJudgeEffect.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Ichni.RhythmGame +{ + public abstract class NoteGeneralJudgeEffect : NoteEffectBase + { + + } + + namespace Beatmap + { + public abstract class NoteGeneralJudgeEffect_BM : NoteEffectBase_BM + { + public NoteGeneralJudgeEffect_BM() + { + + } + + public NoteGeneralJudgeEffect_BM(float effectTime, Guid attachedNoteID) : base(effectTime, attachedNoteID) + { + + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGeneralJudgeEffect.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteGeneralJudgeEffect.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteEffects/NoteGeneralJudgeEffect.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteGeneralJudgeEffect.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGenerateEffect.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteGenerateEffect.cs similarity index 73% rename from Assets/Scripts/GameElements/Notes/NoteEffects/NoteGenerateEffect.cs rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteGenerateEffect.cs index 80f1368b..59a1c77a 100644 --- a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGenerateEffect.cs +++ b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteGenerateEffect.cs @@ -9,23 +9,23 @@ namespace Ichni.RhythmGame public abstract class NoteGenerateEffect : NoteEffectBase { public float generateTime; - - public override EffectState CheckEffectState() + + protected override EffectState CheckEffectState(float triggerTime) { float songTime = EditorManager.instance.songInformation.songTime; - if (songTime < note.exactJudgeTime - generateTime) + if (songTime < triggerTime - generateTime) { return EffectState.Before; } - if (songTime >= note.exactJudgeTime - generateTime && - songTime <= note.exactJudgeTime - generateTime + effectTime) + if (songTime >= triggerTime - generateTime && + songTime <= triggerTime - generateTime + effectTime) { return EffectState.Middle; } - if (songTime > note.exactJudgeTime - generateTime + effectTime) + if (songTime > triggerTime - generateTime + effectTime) { return EffectState.After; } diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGenerateEffect.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteGenerateEffect.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteEffects/NoteGenerateEffect.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteGenerateEffect.cs.meta diff --git a/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteGoodEffect.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteGoodEffect.cs new file mode 100644 index 00000000..07644fe0 --- /dev/null +++ b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteGoodEffect.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Ichni.RhythmGame +{ + public abstract class NoteGoodEffect : NoteEffectBase + { + + } + + namespace Beatmap + { + public abstract class NoteGoodEffect_BM : NoteEffectBase_BM + { + public NoteGoodEffect_BM() + { + + } + + public NoteGoodEffect_BM(float effectTime, Guid attachedNoteID) : base(effectTime, attachedNoteID) + { + + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGoodEffect.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteGoodEffect.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteEffects/NoteGoodEffect.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteGoodEffect.cs.meta diff --git a/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteMissEffect.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteMissEffect.cs new file mode 100644 index 00000000..3ece1e10 --- /dev/null +++ b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteMissEffect.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Ichni.RhythmGame +{ + public abstract class NoteMissEffect : NoteEffectBase + { + + } + + namespace Beatmap + { + public abstract class NoteMissEffect_BM : NoteEffectBase_BM + { + public NoteMissEffect_BM() + { + + } + + public NoteMissEffect_BM(float effectTime, Guid attachedNoteID) : base(effectTime, attachedNoteID) + { + + } + } + } + +} \ No newline at end of file diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteMissEffect.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteMissEffect.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteEffects/NoteMissEffect.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NoteMissEffect.cs.meta diff --git a/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NotePerfectEffect.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NotePerfectEffect.cs new file mode 100644 index 00000000..1931354e --- /dev/null +++ b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NotePerfectEffect.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using Ichni.RhythmGame.ThemeBundles.Basic; +using UnityEngine; + +namespace Ichni.RhythmGame +{ + public abstract class NotePerfectEffect : NoteEffectBase + { + + } + + namespace Beatmap + { + public abstract class NotePerfectEffect_BM : NoteEffectBase_BM + { + public NotePerfectEffect_BM() + { + + } + + public NotePerfectEffect_BM(float effectTime, Guid attachedNoteID) : base(effectTime, attachedNoteID) + { + + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NotePerfectEffect.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NotePerfectEffect.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteEffects/NotePerfectEffect.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteEffects/NotePerfectEffect.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/NoteObjects.meta b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteObjects.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects.meta diff --git a/Assets/Scripts/GameElements/Notes/NoteObjects/Flick.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Flick.cs similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteObjects/Flick.cs rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Flick.cs diff --git a/Assets/Scripts/GameElements/Notes/NoteObjects/Flick.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Flick.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteObjects/Flick.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Flick.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/NoteObjects/Hold.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Hold.cs similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteObjects/Hold.cs rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Hold.cs diff --git a/Assets/Scripts/GameElements/Notes/NoteObjects/Hold.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Hold.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteObjects/Hold.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Hold.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/NoteObjects/NoteBase.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/NoteBase.cs similarity index 91% rename from Assets/Scripts/GameElements/Notes/NoteObjects/NoteBase.cs rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/NoteBase.cs index 23a4ee00..8d6f281f 100644 --- a/Assets/Scripts/GameElements/Notes/NoteObjects/NoteBase.cs +++ b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/NoteBase.cs @@ -93,22 +93,22 @@ namespace Ichni.RhythmGame if (noteVisual != null) { - noteVisual.effectSubmodule.effectCollection["Generate"].ForEach(e => e.UpdateEffect()); - noteVisual.effectSubmodule.effectCollection["GeneralJudge"].ForEach(e => e.UpdateEffect()); + noteVisual.effectSubmodule.effectCollection["Generate"].ForEach(e => e.UpdateEffect(exactJudgeTime)); + noteVisual.effectSubmodule.effectCollection["GeneralJudge"].ForEach(e => e.UpdateEffect(exactJudgeTime)); switch (EditorManager.instance.currentJudgeType) { case NoteJudgeType.Perfect: - noteVisual.effectSubmodule.effectCollection["Perfect"].ForEach(e => e.UpdateEffect()); + noteVisual.effectSubmodule.effectCollection["Perfect"].ForEach(e => e.UpdateEffect(exactJudgeTime)); break; case NoteJudgeType.Good: - noteVisual.effectSubmodule.effectCollection["Good"].ForEach(e => e.UpdateEffect()); + noteVisual.effectSubmodule.effectCollection["Good"].ForEach(e => e.UpdateEffect(exactJudgeTime)); break; case NoteJudgeType.Bad: - noteVisual.effectSubmodule.effectCollection["Bad"].ForEach(e => e.UpdateEffect()); + noteVisual.effectSubmodule.effectCollection["Bad"].ForEach(e => e.UpdateEffect(exactJudgeTime)); break; case NoteJudgeType.Miss: - noteVisual.effectSubmodule.effectCollection["Miss"].ForEach(e => e.UpdateEffect()); + noteVisual.effectSubmodule.effectCollection["Miss"].ForEach(e => e.UpdateEffect(exactJudgeTime)); break; } } diff --git a/Assets/Scripts/GameElements/Notes/NoteObjects/NoteBase.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/NoteBase.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteObjects/NoteBase.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/NoteBase.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/NoteObjects/Stay.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Stay.cs similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteObjects/Stay.cs rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Stay.cs diff --git a/Assets/Scripts/GameElements/Notes/NoteObjects/Stay.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Stay.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteObjects/Stay.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Stay.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/NoteObjects/Tap.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Tap.cs similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteObjects/Tap.cs rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Tap.cs diff --git a/Assets/Scripts/GameElements/Notes/NoteObjects/Tap.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Tap.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteObjects/Tap.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Tap.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/NoteVisual.meta b/Assets/Scripts/EditorGame/GameElements/Notes/NoteVisual.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteVisual.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteVisual.meta diff --git a/Assets/Scripts/GameElements/Notes/NoteVisual/NoteVisualBase.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteVisual/NoteVisualBase.cs similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteVisual/NoteVisualBase.cs rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteVisual/NoteVisualBase.cs diff --git a/Assets/Scripts/GameElements/Notes/NoteVisual/NoteVisualBase.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/NoteVisual/NoteVisualBase.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteVisual/NoteVisualBase.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteVisual/NoteVisualBase.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/NoteVisual/NoteVisualBaseHold.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteVisual/NoteVisualBaseHold.cs similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteVisual/NoteVisualBaseHold.cs rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteVisual/NoteVisualBaseHold.cs diff --git a/Assets/Scripts/GameElements/Notes/NoteVisual/NoteVisualBaseHold.cs.meta b/Assets/Scripts/EditorGame/GameElements/Notes/NoteVisual/NoteVisualBaseHold.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteVisual/NoteVisualBaseHold.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Notes/NoteVisual/NoteVisualBaseHold.cs.meta diff --git a/Assets/Scripts/GameElements/SubstantialObject.cs b/Assets/Scripts/EditorGame/GameElements/SubstantialObject.cs similarity index 95% rename from Assets/Scripts/GameElements/SubstantialObject.cs rename to Assets/Scripts/EditorGame/GameElements/SubstantialObject.cs index 99baed05..09df1992 100644 --- a/Assets/Scripts/GameElements/SubstantialObject.cs +++ b/Assets/Scripts/EditorGame/GameElements/SubstantialObject.cs @@ -13,6 +13,7 @@ namespace Ichni.RhythmGame public TransformSubmodule transformSubmodule { get; set; } public TimeDurationSubmodule timeDurationSubmodule { get; set; } public ColorSubmodule colorSubmodule { get; set; } + public bool haveEmission { get; } public static SubstantialObject GenerateElement(string elementName, Guid id, List tags, bool isFirstGenerated, string themeBundleName, string objectName, GameElement parentElement) diff --git a/Assets/Scripts/GameElements/SubstantialObject.cs.meta b/Assets/Scripts/EditorGame/GameElements/SubstantialObject.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/SubstantialObject.cs.meta rename to Assets/Scripts/EditorGame/GameElements/SubstantialObject.cs.meta diff --git a/Assets/Scripts/GameElements/Track.meta b/Assets/Scripts/EditorGame/GameElements/Track.meta similarity index 100% rename from Assets/Scripts/GameElements/Track.meta rename to Assets/Scripts/EditorGame/GameElements/Track.meta diff --git a/Assets/Scripts/GameElements/Track/PathNode.cs b/Assets/Scripts/EditorGame/GameElements/Track/PathNode.cs similarity index 95% rename from Assets/Scripts/GameElements/Track/PathNode.cs rename to Assets/Scripts/EditorGame/GameElements/Track/PathNode.cs index af8db60f..d3063695 100644 --- a/Assets/Scripts/GameElements/Track/PathNode.cs +++ b/Assets/Scripts/EditorGame/GameElements/Track/PathNode.cs @@ -21,6 +21,7 @@ namespace Ichni.RhythmGame public TransformSubmodule transformSubmodule { get; set; } public TimeDurationSubmodule timeDurationSubmodule { get; set; } public ColorSubmodule colorSubmodule { get; set; } + public bool haveEmission => false; public static PathNode GenerateElement(string elementName, Guid id, List tags, bool isFirstGenerated, Track track) diff --git a/Assets/Scripts/GameElements/Track/PathNode.cs.meta b/Assets/Scripts/EditorGame/GameElements/Track/PathNode.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Track/PathNode.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Track/PathNode.cs.meta diff --git a/Assets/Scripts/GameElements/Track/Track.cs b/Assets/Scripts/EditorGame/GameElements/Track/Track.cs similarity index 100% rename from Assets/Scripts/GameElements/Track/Track.cs rename to Assets/Scripts/EditorGame/GameElements/Track/Track.cs diff --git a/Assets/Scripts/GameElements/Track/Track.cs.meta b/Assets/Scripts/EditorGame/GameElements/Track/Track.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Track/Track.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Track/Track.cs.meta diff --git a/Assets/Scripts/GameElements/Track/TrackPoints.meta b/Assets/Scripts/EditorGame/GameElements/Track/TrackPoints.meta similarity index 100% rename from Assets/Scripts/GameElements/Track/TrackPoints.meta rename to Assets/Scripts/EditorGame/GameElements/Track/TrackPoints.meta diff --git a/Assets/Scripts/GameElements/Track/TrackPoints/CrossTrackPoint.cs b/Assets/Scripts/EditorGame/GameElements/Track/TrackPoints/CrossTrackPoint.cs similarity index 100% rename from Assets/Scripts/GameElements/Track/TrackPoints/CrossTrackPoint.cs rename to Assets/Scripts/EditorGame/GameElements/Track/TrackPoints/CrossTrackPoint.cs diff --git a/Assets/Scripts/GameElements/Track/TrackPoints/CrossTrackPoint.cs.meta b/Assets/Scripts/EditorGame/GameElements/Track/TrackPoints/CrossTrackPoint.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Track/TrackPoints/CrossTrackPoint.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Track/TrackPoints/CrossTrackPoint.cs.meta diff --git a/Assets/Scripts/GameElements/Track/TrackPoints/TrackHeadPoint.cs b/Assets/Scripts/EditorGame/GameElements/Track/TrackPoints/TrackHeadPoint.cs similarity index 100% rename from Assets/Scripts/GameElements/Track/TrackPoints/TrackHeadPoint.cs rename to Assets/Scripts/EditorGame/GameElements/Track/TrackPoints/TrackHeadPoint.cs diff --git a/Assets/Scripts/GameElements/Track/TrackPoints/TrackHeadPoint.cs.meta b/Assets/Scripts/EditorGame/GameElements/Track/TrackPoints/TrackHeadPoint.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Track/TrackPoints/TrackHeadPoint.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Track/TrackPoints/TrackHeadPoint.cs.meta diff --git a/Assets/Scripts/GameElements/Track/TrackPoints/TrackPercentPoint.cs b/Assets/Scripts/EditorGame/GameElements/Track/TrackPoints/TrackPercentPoint.cs similarity index 100% rename from Assets/Scripts/GameElements/Track/TrackPoints/TrackPercentPoint.cs rename to Assets/Scripts/EditorGame/GameElements/Track/TrackPoints/TrackPercentPoint.cs diff --git a/Assets/Scripts/GameElements/Track/TrackPoints/TrackPercentPoint.cs.meta b/Assets/Scripts/EditorGame/GameElements/Track/TrackPoints/TrackPercentPoint.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Track/TrackPoints/TrackPercentPoint.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Track/TrackPoints/TrackPercentPoint.cs.meta diff --git a/Assets/Scripts/GameElements/Track/TrackSubmodules.meta b/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules.meta similarity index 100% rename from Assets/Scripts/GameElements/Track/TrackSubmodules.meta rename to Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules.meta diff --git a/Assets/Scripts/GameElements/Track/TrackSubmodules/TrackPathSubmodule.cs b/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackPathSubmodule.cs similarity index 100% rename from Assets/Scripts/GameElements/Track/TrackSubmodules/TrackPathSubmodule.cs rename to Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackPathSubmodule.cs diff --git a/Assets/Scripts/GameElements/Track/TrackSubmodules/TrackPathSubmodule.cs.meta b/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackPathSubmodule.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Track/TrackSubmodules/TrackPathSubmodule.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackPathSubmodule.cs.meta diff --git a/Assets/Scripts/GameElements/Track/TrackSubmodules/TrackRendererSubmodule.cs b/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackRendererSubmodule.cs similarity index 100% rename from Assets/Scripts/GameElements/Track/TrackSubmodules/TrackRendererSubmodule.cs rename to Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackRendererSubmodule.cs diff --git a/Assets/Scripts/GameElements/Track/TrackSubmodules/TrackRendererSubmodule.cs.meta b/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackRendererSubmodule.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Track/TrackSubmodules/TrackRendererSubmodule.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackRendererSubmodule.cs.meta diff --git a/Assets/Scripts/GameElements/Track/TrackSubmodules/TrackSubmodule.cs b/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackSubmodule.cs similarity index 100% rename from Assets/Scripts/GameElements/Track/TrackSubmodules/TrackSubmodule.cs rename to Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackSubmodule.cs diff --git a/Assets/Scripts/GameElements/Track/TrackSubmodules/TrackSubmodule.cs.meta b/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackSubmodule.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Track/TrackSubmodules/TrackSubmodule.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackSubmodule.cs.meta diff --git a/Assets/Scripts/GameElements/Track/TrackSubmodules/TrackTimeSubmodule.cs b/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackTimeSubmodule.cs similarity index 100% rename from Assets/Scripts/GameElements/Track/TrackSubmodules/TrackTimeSubmodule.cs rename to Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackTimeSubmodule.cs diff --git a/Assets/Scripts/GameElements/Track/TrackSubmodules/TrackTimeSubmodule.cs.meta b/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackTimeSubmodule.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Track/TrackSubmodules/TrackTimeSubmodule.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackTimeSubmodule.cs.meta diff --git a/Assets/Scripts/GameElements/Track/Trail.cs b/Assets/Scripts/EditorGame/GameElements/Track/Trail.cs similarity index 100% rename from Assets/Scripts/GameElements/Track/Trail.cs rename to Assets/Scripts/EditorGame/GameElements/Track/Trail.cs diff --git a/Assets/Scripts/GameElements/Track/Trail.cs.meta b/Assets/Scripts/EditorGame/GameElements/Track/Trail.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Track/Trail.cs.meta rename to Assets/Scripts/EditorGame/GameElements/Track/Trail.cs.meta diff --git a/Assets/Scripts/GameElements/GeneralEffects/TimeEffectsCollection.cs b/Assets/Scripts/GameElements/GeneralEffects/TimeEffectsCollection.cs deleted file mode 100644 index 80461049..00000000 --- a/Assets/Scripts/GameElements/GeneralEffects/TimeEffectsCollection.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using Sirenix.OdinInspector; -using UnityEngine; - -namespace Ichni.RhythmGame -{ - public class TimeEffectsCollection : SerializedMonoBehaviour - { - public List timeEffectUnits; - } - - public class TimeEffectUnit - { - public string unitName; - public float unitTime; - public EffectSubmodule effectSubmodule; - } -} \ No newline at end of file diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteBadEffect.cs b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteBadEffect.cs deleted file mode 100644 index cd4d2c37..00000000 --- a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteBadEffect.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace Ichni.RhythmGame -{ - public abstract class NoteBadEffect : NoteEffectBase - { - public override EffectState CheckEffectState() - { - float songTime = EditorManager.instance.songInformation.songTime; - - if (songTime < note.exactJudgeTime ) - { - return EffectState.Before; - } - - if (songTime >= note.exactJudgeTime && - songTime <= note.exactJudgeTime + effectTime) - { - return EffectState.Middle; - } - - if (songTime > note.exactJudgeTime + effectTime) - { - return EffectState.After; - } - - return EffectState.Error; - } - } - - namespace Beatmap - { - public abstract class NoteBadEffect_BM : NoteEffectBase_BM - { - public NoteBadEffect_BM() - { - - } - - public NoteBadEffect_BM(float effectTime, Guid attachedNoteID) : base(effectTime, attachedNoteID) - { - - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGeneralJudgeEffect.cs b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGeneralJudgeEffect.cs deleted file mode 100644 index b5c155df..00000000 --- a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGeneralJudgeEffect.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace Ichni.RhythmGame -{ - public abstract class NoteGeneralJudgeEffect : NoteEffectBase - { - public override EffectState CheckEffectState() - { - float songTime = EditorManager.instance.songInformation.songTime; - - if (songTime < note.exactJudgeTime ) - { - return EffectState.Before; - } - - if (songTime >= note.exactJudgeTime && - songTime <= note.exactJudgeTime + effectTime) - { - return EffectState.Middle; - } - - if (songTime > note.exactJudgeTime + effectTime) - { - return EffectState.After; - } - - return EffectState.Error; - } - } - - namespace Beatmap - { - public abstract class NoteGeneralJudgeEffect_BM : NoteEffectBase_BM - { - public NoteGeneralJudgeEffect_BM() - { - - } - - public NoteGeneralJudgeEffect_BM(float effectTime, Guid attachedNoteID) : base(effectTime, attachedNoteID) - { - - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGoodEffect.cs b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGoodEffect.cs deleted file mode 100644 index c49292f7..00000000 --- a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGoodEffect.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace Ichni.RhythmGame -{ - public abstract class NoteGoodEffect : NoteEffectBase - { - public override EffectState CheckEffectState() - { - float songTime = EditorManager.instance.songInformation.songTime; - - if (songTime < note.exactJudgeTime ) - { - return EffectState.Before; - } - - if (songTime >= note.exactJudgeTime && - songTime <= note.exactJudgeTime + effectTime) - { - return EffectState.Middle; - } - - if (songTime > note.exactJudgeTime + effectTime) - { - return EffectState.After; - } - - return EffectState.Error; - } - } - - namespace Beatmap - { - public abstract class NoteGoodEffect_BM : NoteEffectBase_BM - { - public NoteGoodEffect_BM() - { - - } - - public NoteGoodEffect_BM(float effectTime, Guid attachedNoteID) : base(effectTime, attachedNoteID) - { - - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteMissEffect.cs b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteMissEffect.cs deleted file mode 100644 index 2f8504c9..00000000 --- a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteMissEffect.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace Ichni.RhythmGame -{ - public abstract class NoteMissEffect : NoteEffectBase - { - public override EffectState CheckEffectState() - { - float songTime = EditorManager.instance.songInformation.songTime; - - if (songTime < note.exactJudgeTime ) - { - return EffectState.Before; - } - - if (songTime >= note.exactJudgeTime && - songTime <= note.exactJudgeTime + effectTime) - { - return EffectState.Middle; - } - - if (songTime > note.exactJudgeTime + effectTime) - { - return EffectState.After; - } - - return EffectState.Error; - } - } - - namespace Beatmap - { - public abstract class NoteMissEffect_BM : NoteEffectBase_BM - { - public NoteMissEffect_BM() - { - - } - - public NoteMissEffect_BM(float effectTime, Guid attachedNoteID) : base(effectTime, attachedNoteID) - { - - } - } - } - -} \ No newline at end of file diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NotePerfectEffect.cs b/Assets/Scripts/GameElements/Notes/NoteEffects/NotePerfectEffect.cs deleted file mode 100644 index 91ed52be..00000000 --- a/Assets/Scripts/GameElements/Notes/NoteEffects/NotePerfectEffect.cs +++ /dev/null @@ -1,51 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using Ichni.RhythmGame.ThemeBundles.Basic; -using UnityEngine; - -namespace Ichni.RhythmGame -{ - public abstract class NotePerfectEffect : NoteEffectBase - { - public override EffectState CheckEffectState() - { - float songTime = EditorManager.instance.songInformation.songTime; - - if (songTime < note.exactJudgeTime ) - { - return EffectState.Before; - } - - if (songTime >= note.exactJudgeTime && - songTime <= note.exactJudgeTime + effectTime) - { - return EffectState.Middle; - } - - if (songTime > note.exactJudgeTime + effectTime) - { - return EffectState.After; - } - - return EffectState.Error; - } - - } - - namespace Beatmap - { - public abstract class NotePerfectEffect_BM : NoteEffectBase_BM - { - public NotePerfectEffect_BM() - { - - } - - public NotePerfectEffect_BM(float effectTime, Guid attachedNoteID) : base(effectTime, attachedNoteID) - { - - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/Base/Manager.meta b/Assets/Scripts/Manager.meta similarity index 100% rename from Assets/Scripts/Base/Manager.meta rename to Assets/Scripts/Manager.meta diff --git a/Assets/Scripts/Base/Manager/BasePrefabsCollection.cs b/Assets/Scripts/Manager/BasePrefabsCollection.cs similarity index 100% rename from Assets/Scripts/Base/Manager/BasePrefabsCollection.cs rename to Assets/Scripts/Manager/BasePrefabsCollection.cs diff --git a/Assets/Scripts/Base/Manager/BasePrefabsCollection.cs.meta b/Assets/Scripts/Manager/BasePrefabsCollection.cs.meta similarity index 100% rename from Assets/Scripts/Base/Manager/BasePrefabsCollection.cs.meta rename to Assets/Scripts/Manager/BasePrefabsCollection.cs.meta diff --git a/Assets/Scripts/Base/Manager/EditorManager.cs b/Assets/Scripts/Manager/EditorManager.cs similarity index 90% rename from Assets/Scripts/Base/Manager/EditorManager.cs rename to Assets/Scripts/Manager/EditorManager.cs index 4225f579..dcdbbc56 100644 --- a/Assets/Scripts/Base/Manager/EditorManager.cs +++ b/Assets/Scripts/Manager/EditorManager.cs @@ -30,6 +30,15 @@ namespace Ichni { instance = this; projectManager = new ProjectManager(); + if (!ES3.FileExists(Application.streamingAssetsPath + "/EditorSettings.es3")) + { + editorSettings = new EditorSettings(300, 100, 100); + EditorSettings.SaveSettings(editorSettings); + } + else + { + EditorSettings.LoadSettings(ref editorSettings); + } } private void Start() diff --git a/Assets/Scripts/Base/Manager/EditorManager.cs.meta b/Assets/Scripts/Manager/EditorManager.cs.meta similarity index 100% rename from Assets/Scripts/Base/Manager/EditorManager.cs.meta rename to Assets/Scripts/Manager/EditorManager.cs.meta diff --git a/Assets/Scripts/Manager/InputListener.cs b/Assets/Scripts/Manager/InputListener.cs new file mode 100644 index 00000000..ad75d795 --- /dev/null +++ b/Assets/Scripts/Manager/InputListener.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.InputSystem; + +namespace Ichni.Editor +{ + public class InputListener : MonoBehaviour + { + private void Update() + { + if (Keyboard.current.leftCtrlKey.isPressed) + { + if (Keyboard.current.sKey.wasPressedThisFrame) + { + EditorManager.instance.projectManager.saveManager.Save(); + } + else if (Keyboard.current.eKey.wasPressedThisFrame) + { + EditorManager.instance.projectManager.exportManager.Export(); + } + else if (Keyboard.current.digit1Key.wasPressedThisFrame) + { + EditorManager.instance.uiManager.mainPage.resolutionHints.SetPhoneFrame(); + } + else if (Keyboard.current.digit2Key.wasPressedThisFrame) + { + EditorManager.instance.uiManager.mainPage.resolutionHints.SetIPadFrame(); + } + else if (Keyboard.current.digit3Key.wasPressedThisFrame) + { + EditorManager.instance.uiManager.mainPage.resolutionHints.SetSafeAreaFrame(); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Manager/InputListener.cs.meta b/Assets/Scripts/Manager/InputListener.cs.meta new file mode 100644 index 00000000..0f9c22eb --- /dev/null +++ b/Assets/Scripts/Manager/InputListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6bc62b724b099426b9121ce12d1dc1cd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Base/Manager/PostProcessingManager.cs b/Assets/Scripts/Manager/PostProcessingManager.cs similarity index 100% rename from Assets/Scripts/Base/Manager/PostProcessingManager.cs rename to Assets/Scripts/Manager/PostProcessingManager.cs diff --git a/Assets/Scripts/Base/Manager/PostProcessingManager.cs.meta b/Assets/Scripts/Manager/PostProcessingManager.cs.meta similarity index 100% rename from Assets/Scripts/Base/Manager/PostProcessingManager.cs.meta rename to Assets/Scripts/Manager/PostProcessingManager.cs.meta diff --git a/Assets/Scripts/Base/Manager/ProjectManager.cs b/Assets/Scripts/Manager/ProjectManager.cs similarity index 100% rename from Assets/Scripts/Base/Manager/ProjectManager.cs rename to Assets/Scripts/Manager/ProjectManager.cs diff --git a/Assets/Scripts/Base/Manager/ProjectManager.cs.meta b/Assets/Scripts/Manager/ProjectManager.cs.meta similarity index 100% rename from Assets/Scripts/Base/Manager/ProjectManager.cs.meta rename to Assets/Scripts/Manager/ProjectManager.cs.meta diff --git a/Assets/Scripts/Base/Manager/ThemeBundleManager.cs b/Assets/Scripts/Manager/ThemeBundleManager.cs similarity index 100% rename from Assets/Scripts/Base/Manager/ThemeBundleManager.cs rename to Assets/Scripts/Manager/ThemeBundleManager.cs diff --git a/Assets/Scripts/Base/Manager/ThemeBundleManager.cs.meta b/Assets/Scripts/Manager/ThemeBundleManager.cs.meta similarity index 100% rename from Assets/Scripts/Base/Manager/ThemeBundleManager.cs.meta rename to Assets/Scripts/Manager/ThemeBundleManager.cs.meta diff --git a/Assets/Scripts/Settings.meta b/Assets/Scripts/Settings.meta new file mode 100644 index 00000000..704f4542 --- /dev/null +++ b/Assets/Scripts/Settings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07ab448d61ff94ac690e3b81e9a8843e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Settings/EditorSettings.cs b/Assets/Scripts/Settings/EditorSettings.cs new file mode 100644 index 00000000..4aef2603 --- /dev/null +++ b/Assets/Scripts/Settings/EditorSettings.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Collections.Generic; +using Ichni.RhythmGame; +using Ichni.RhythmGame.Beatmap; +using UnityEngine; + +namespace Ichni.Editor +{ + public class EditorSettings + { + public int autoSaveInterval = 300; + public int musicVolume = 100; + public int soundFXVolume = 100; + + public EditorSettings(int autoSaveInterval, int musicVolume, int soundFXVolume) + { + this.autoSaveInterval = autoSaveInterval; + this.musicVolume = musicVolume; + this.soundFXVolume = soundFXVolume; + } + + public static void SaveSettings(EditorSettings settings) + { + ES3.Save("EditorSettings", settings, Application.streamingAssetsPath + "/EditorSettings.es3"); + } + + public static void LoadSettings(ref EditorSettings settings) + { + settings = ES3.Load("EditorSettings", Application.streamingAssetsPath + "/EditorSettings.es3"); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Base/ProjectFiles/EditorSettings.cs.meta b/Assets/Scripts/Settings/EditorSettings.cs.meta similarity index 100% rename from Assets/Scripts/Base/ProjectFiles/EditorSettings.cs.meta rename to Assets/Scripts/Settings/EditorSettings.cs.meta diff --git a/Assets/Scripts/StartPage.meta b/Assets/Scripts/StartPage.meta new file mode 100644 index 00000000..1dc37269 --- /dev/null +++ b/Assets/Scripts/StartPage.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eb36b4cc8a1c0497f9b844f9eff82994 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/DynamicUI/ToolBar/ToolBar.cs b/Assets/Scripts/StartPage/InformationTransistor.cs similarity index 78% rename from Assets/Scripts/DynamicUI/ToolBar/ToolBar.cs rename to Assets/Scripts/StartPage/InformationTransistor.cs index 8a5847ee..6770f599 100644 --- a/Assets/Scripts/DynamicUI/ToolBar/ToolBar.cs +++ b/Assets/Scripts/StartPage/InformationTransistor.cs @@ -2,7 +2,7 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; -public class ToolBar : MonoBehaviour +public class InformationTransistor : MonoBehaviour { // Start is called before the first frame update void Start() diff --git a/Assets/Scripts/StartPage/InformationTransistor.cs.meta b/Assets/Scripts/StartPage/InformationTransistor.cs.meta new file mode 100644 index 00000000..d0e8a57f --- /dev/null +++ b/Assets/Scripts/StartPage/InformationTransistor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bbeb2962c1e154154a56486889cc5843 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/.DS_Store b/Assets/StreamingAssets/.DS_Store index 5f58d690..156b1dbb 100644 Binary files a/Assets/StreamingAssets/.DS_Store and b/Assets/StreamingAssets/.DS_Store differ diff --git a/Assets/StreamingAssets/EditorSettings.es3 b/Assets/StreamingAssets/EditorSettings.es3 new file mode 100644 index 00000000..005c8711 --- /dev/null +++ b/Assets/StreamingAssets/EditorSettings.es3 @@ -0,0 +1,10 @@ +{ + "EditorSettings" : { + "__type" : "Ichni.Editor.EditorSettings,Assembly-CSharp", + "value" : { + "autoSaveInterval" : 300, + "musicVolume" : 100, + "soundFXVolume" : 100 + } + } +} \ No newline at end of file diff --git a/Assets/StreamingAssets/EditorSettings.es3.meta b/Assets/StreamingAssets/EditorSettings.es3.meta new file mode 100644 index 00000000..c71a4088 --- /dev/null +++ b/Assets/StreamingAssets/EditorSettings.es3.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3413474ed86934d839988a2698d15f3f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/Export/.DS_Store b/Assets/StreamingAssets/Export/.DS_Store index 70d45346..1adcff26 100644 Binary files a/Assets/StreamingAssets/Export/.DS_Store and b/Assets/StreamingAssets/Export/.DS_Store differ diff --git a/Assets/StreamingAssets/Projects/.DS_Store b/Assets/StreamingAssets/Projects/.DS_Store index 3d6a590a..55cf0dee 100644 Binary files a/Assets/StreamingAssets/Projects/.DS_Store and b/Assets/StreamingAssets/Projects/.DS_Store differ diff --git a/Assets/StreamingAssets/Projects/TestProject/Beatmap.json b/Assets/StreamingAssets/Projects/TestProject/Beatmap.json index 365b3a50..2b685163 100644 --- a/Assets/StreamingAssets/Projects/TestProject/Beatmap.json +++ b/Assets/StreamingAssets/Projects/TestProject/Beatmap.json @@ -7,7 +7,7 @@ "__type" : "Ichni.RhythmGame.Beatmap.ElementFolder_BM,Assembly-CSharp", "elementName" : "Folder", "tags" : [ - + "MAMA" ], "elementGuid" : { "value" : "ac931bb4-963e-473f-9ec6-4eb2121aed7d" diff --git a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteBadExpand.cs b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteBadExpand.cs index e027c7d9..bbe4a1bb 100644 --- a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteBadExpand.cs +++ b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteBadExpand.cs @@ -2,6 +2,7 @@ using System; using System.Collections; using System.Collections.Generic; using DG.Tweening; +using Ichni.Editor; using Ichni.RhythmGame.Beatmap; using UnityEngine; @@ -15,6 +16,7 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic this.note = note; this.noteVisual = note.noteVisual.GetComponent(); this.noteMainRenderer = noteVisual.noteMain.GetComponent(); + this.effectTime = 0.1f; } public override void Recover() @@ -26,14 +28,20 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic public override void Adjust() { - noteMainRenderer.material.DOColor(Color.clear, 0.2f).SetEase(Ease.OutQuad); - noteVisual.noteMain.transform.DOScale(Vector3.one * 1.5f, 0.2f).SetEase(Ease.OutQuad).OnComplete(() => noteVisual.noteMain.SetActive(false)); + noteMainRenderer.material.DOColor(Color.clear, effectTime).SetEase(Ease.OutQuad); + noteVisual.noteMain.transform.DOScale(Vector3.one * 1.5f, effectTime).SetEase(Ease.OutQuad).OnComplete(() => noteVisual.noteMain.SetActive(false)); } public override EffectBase_BM ConvertToBM() { return new Beatmap.BasicNoteBadExpand_BM(effectTime, note.elementGuid); } + + public override void SetUpInspector() + { + var container = inspector.GenerateContainer("Basic Note Bad Expand"); + var effectTimeField = inspector.GenerateInputField(this, container, "Effect Time", nameof(effectTime)); + } } namespace Beatmap diff --git a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteGenerateExpand.cs b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteGenerateExpand.cs index e76eda0c..c540c9dc 100644 --- a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteGenerateExpand.cs +++ b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteGenerateExpand.cs @@ -2,6 +2,7 @@ using System; using System.Collections; using System.Collections.Generic; using DG.Tweening; +using Ichni.Editor; using Ichni.RhythmGame; using Ichni.RhythmGame.Beatmap; using Ichni.RhythmGame.ThemeBundles.Basic.Beatmap; @@ -28,13 +29,20 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic public override void Adjust() { noteVisual.noteMain.SetActive(true); - noteVisual.noteMain.transform.DOScale(Vector3.one, 0.1f).SetEase(Ease.OutBack); + noteVisual.noteMain.transform.DOScale(Vector3.one, effectTime).SetEase(Ease.OutBack); } public override EffectBase_BM ConvertToBM() { return new BasicNoteGenerateExpand_BM(effectTime, generateTime, note.elementGuid); } + + public override void SetUpInspector() + { + var container = inspector.GenerateContainer("Basic Note Generate Expand"); + var generateTimeField = inspector.GenerateInputField(this, container, "Generate Time", nameof(generateTime)); + var effectTimeField = inspector.GenerateInputField(this, container, "Effect Time", nameof(effectTime)); + } } namespace Beatmap diff --git a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteGoodBurst.cs b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteGoodBurst.cs index 8dedd5e2..2c85e525 100644 --- a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteGoodBurst.cs +++ b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteGoodBurst.cs @@ -2,6 +2,7 @@ using System; using System.Collections; using System.Collections.Generic; using DG.Tweening; +using Ichni.Editor; using Ichni.RhythmGame.Beatmap; using Ichni.RhythmGame.ThemeBundles.Basic.Beatmap; using UnityEngine; @@ -17,6 +18,7 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic this.note = note; this.noteVisual = note.noteVisual.GetComponent(); this.effectRing = noteVisual.effectPartList[0]; + this.effectTime = 0.1f; } public override void Recover() @@ -30,8 +32,8 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic public override void Adjust() { effectRing.gameObject.SetActive(true); - effectRing.transform.DOScale(Vector3.one * 0.5f, 0.1f).SetEase(Ease.OutQuad); - effectRing.GetComponent().DOFade(0, 0.1f).SetEase(Ease.OutQuad).OnComplete(() => effectRing.SetActive(false)); + effectRing.transform.DOScale(Vector3.one * 0.5f, effectTime).SetEase(Ease.OutQuad); + effectRing.GetComponent().DOFade(0, effectTime).SetEase(Ease.OutQuad).OnComplete(() => effectRing.SetActive(false)); noteVisual.noteMain.SetActive(false); } @@ -39,6 +41,12 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic { return new BasicNoteGoodBurst_BM(effectTime, note.elementGuid); } + + public override void SetUpInspector() + { + var container = inspector.GenerateContainer("Basic Note Good Burst"); + var effectTimeField = inspector.GenerateInputField(this, container, "Effect Time", nameof(effectTime)); + } } namespace Beatmap diff --git a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteMissPale.cs b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteMissPale.cs index e079b872..376e0878 100644 --- a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteMissPale.cs +++ b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteMissPale.cs @@ -2,6 +2,7 @@ using System; using System.Collections; using System.Collections.Generic; using DG.Tweening; +using Ichni.Editor; using Ichni.RhythmGame.Beatmap; using UnityEngine; @@ -16,6 +17,7 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic this.note = note; this.noteVisual = note.noteVisual.GetComponent(); this.noteMainRenderer = noteVisual.noteMain.GetComponent(); + this.effectTime = 0.2f; } public override void Recover() @@ -28,13 +30,19 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic { noteVisual.noteMain.SetActive(true); noteMainRenderer.material.SetColor("_BaseColor", Color.white / 2f); - noteMainRenderer.material.DOColor(Color.clear, 0.2f).SetEase(Ease.OutQuad); + noteMainRenderer.material.DOColor(Color.clear, effectTime).SetEase(Ease.OutQuad); } public override EffectBase_BM ConvertToBM() { return new Beatmap.BasicNoteMissPale_BM(effectTime, note.elementGuid); } + + public override void SetUpInspector() + { + var container = inspector.GenerateContainer("Basic Note Miss Pale"); + var effectTimeField = inspector.GenerateInputField(this, container, "Effect Time", nameof(effectTime)); + } } namespace Beatmap diff --git a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNotePerfectBurst.cs b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNotePerfectBurst.cs index ed1ed0c4..d8f66dc6 100644 --- a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNotePerfectBurst.cs +++ b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNotePerfectBurst.cs @@ -2,6 +2,7 @@ using System; using System.Collections; using System.Collections.Generic; using DG.Tweening; +using Ichni.Editor; using Ichni.RhythmGame.Beatmap; using Ichni.RhythmGame.ThemeBundles.Basic.Beatmap; using UnityEngine; @@ -17,6 +18,7 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic this.note = note; this.noteVisual = note.noteVisual.GetComponent(); this.effectRing = noteVisual.effectPartList[0]; + this.effectTime = 0.1f; } public override void Recover() @@ -30,8 +32,8 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic public override void Adjust() { effectRing.gameObject.SetActive(true); - effectRing.transform.DOScale(Vector3.one, 0.1f).SetEase(Ease.OutQuad); - effectRing.GetComponent().DOFade(0, 0.1f).SetEase(Ease.OutQuad).OnComplete(() => effectRing.SetActive(false)); + effectRing.transform.DOScale(Vector3.one, effectTime).SetEase(Ease.OutQuad); + effectRing.GetComponent().DOFade(0, effectTime).SetEase(Ease.OutQuad).OnComplete(() => effectRing.SetActive(false)); noteVisual.noteMain.SetActive(false); } @@ -39,6 +41,12 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic { return new BasicNotePerfectBurst_BM(effectTime, note.elementGuid); } + + public override void SetUpInspector() + { + var container = inspector.GenerateContainer("Basic Note Perfect Burst"); + var effectTimeField = inspector.GenerateInputField(this, container, "Effect Time", nameof(effectTime)); + } } namespace Beatmap diff --git a/Assets/ThemeBundles/DepartureToMultiverse/Scripts.meta b/Assets/ThemeBundles/DepartureToMultiverse/Scripts.meta new file mode 100644 index 00000000..675792c5 --- /dev/null +++ b/Assets/ThemeBundles/DepartureToMultiverse/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2a572756a784a4e59929d3d7acf2e02c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index ea88784f..cc93559c 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -6,6 +6,6 @@ EditorBuildSettings: serializedVersion: 2 m_Scenes: - enabled: 1 - path: Assets/Scenes/SampleScene.unity + path: Assets/Scenes/EditorScene.unity guid: 99c9720ab356a0642a771bea13969a05 m_configObjects: {}