From 5349cde3816082fea16a2c0e975e182ad82b2317 Mon Sep 17 00:00:00 2001 From: SoulliesOfficial <77235731+SoulliesOfficial@users.noreply.github.com> Date: Wed, 19 Feb 2025 09:15:51 -0500 Subject: [PATCH] =?UTF-8?q?=E7=89=B9=E6=95=88=E8=8C=83=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Resources/ES3/ES3GlobalReferences.asset | 33 +++- Assets/Prefabs/BasePrefabsCollection.asset | 6 +- Assets/Prefabs/GameElements/GameCamera.prefab | 181 +----------------- Assets/Prefabs/GameElements/Stay.prefab | 83 ++++++++ Assets/Prefabs/GameElements/Stay.prefab.meta | 7 + Assets/Scenes/EditorScene.unity | 25 ++- .../Simple/DynamicUIVector3InputField.cs | 8 + .../Inspector/CompositeParameterWindow.cs | 69 +++++++ .../DynamicUI/MainUI/LogWindow/LogWindow.cs | 7 +- .../Base/GeneralSubmodules/EffectSubmodule.cs | 7 + .../TimeDurationSubmodule.cs | 1 + .../GeneralSubmodules/TransformSubmodule.cs | 16 +- .../ElementFolder/ElementFolder.cs | 3 + .../GameElements/GameCamera/GameCamera.cs | 17 +- .../EditorGame/GameElements/GameElement.cs | 1 + .../GameElements/GeneralEffects/BloomShake.cs | 42 +++- .../GeneralEffects/TimeEffectsCollection.cs | 44 ++++- .../Track/TrackPoints/CrossTrackPoint.cs | 37 ++++ Assets/Scripts/Manager/CameraManager.cs | 14 +- Assets/Scripts/Manager/EditorManager.cs | 19 +- Assets/Scripts/Manager/InputListener.cs | 2 +- Assets/Scripts/Manager/OperationManager.cs | 18 ++ .../Scripts/Manager/OperationManager.cs.meta | 11 ++ Assets/Scripts/Manager/ProjectManager.cs | 11 ++ .../Projects/TestProject/Beatmap.json | 83 +++++++- .../Projects/TestProject/ProjectInfo.json | 2 +- 26 files changed, 531 insertions(+), 216 deletions(-) create mode 100644 Assets/Prefabs/GameElements/Stay.prefab create mode 100644 Assets/Prefabs/GameElements/Stay.prefab.meta create mode 100644 Assets/Scripts/Manager/OperationManager.cs create mode 100644 Assets/Scripts/Manager/OperationManager.cs.meta diff --git a/Assets/Plugins/Easy Save 3/Resources/ES3/ES3GlobalReferences.asset b/Assets/Plugins/Easy Save 3/Resources/ES3/ES3GlobalReferences.asset index a51b0ead..6e1e883f 100644 --- a/Assets/Plugins/Easy Save 3/Resources/ES3/ES3GlobalReferences.asset +++ b/Assets/Plugins/Easy Save 3/Resources/ES3/ES3GlobalReferences.asset @@ -1231,7 +1231,6 @@ MonoBehaviour: - {fileID: 1230482840604333981, guid: 2f2e97c8a35330f49a9cb31ec0f075bf, type: 3} - {fileID: 4832900275935109613, guid: 2f2e97c8a35330f49a9cb31ec0f075bf, type: 3} - {fileID: 5922952087749752714, guid: 2f2e97c8a35330f49a9cb31ec0f075bf, type: 3} - - {fileID: 2800000, guid: f20112bdeec2e8d4d9f80e8390e37263, type: 3} - {fileID: 11500000, guid: 63e7ac45befe54908ba6c691211fcbfa, type: 3} - {fileID: 11500000, guid: 604e2c80e1fb64c2ba9608c11fb2f040, type: 3} - {fileID: 8863047526699937627, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} @@ -1253,4 +1252,34 @@ MonoBehaviour: - {fileID: 11500000, guid: d537bd381617a4941839f44c04840c28, type: 3} - {fileID: 1518651257440837964, guid: 1802da913767140929fbb149d8bb1bf5, type: 3} - {fileID: 11500000, guid: c627b09eb0f984c59b55367c47919d38, type: 3} - _Values: 526a8851fe85233e7cc810cd2b8a733faa68e71a62b99912cf2f06228873853005edfb00aa354575a31cc8ad1ac7b966f52afefc8351b636e2b71574be99675b6400dfc3607f0069e96d5112b3681f5fcf550a7f3749f10c2c006f2e23d1db370e64801184e106752a681216ffa3837998b5a5688fe7245230fcd93d5728ea479cf46b8ba7516b16ed2e96b5bbb6e20e0c6272c125d7806f67cd366983232521642549cf9088373b29cf12c86a843666a9d2726c53c784328db49f8d499d2140c6bf413c35ce7d12821326d7a7c36313210e18f42f147d60db1f64f3ada3bb2d6666d31a094491222bbde8f495825a4e2f05ece33b3881253ca117543370bf2531ac8ebf10b7f565a03ac9712b88ca58c516c5a7b6d8f161d84e972e95f1f208f318fcbd24a42f1a1594d13a0cca1e4d0b9a28c0e4238a4cd5432183fe0a3d37c5600352a5affe32a0f1cca64d60c95d6de43a2f1ab3ec2f8dafe7e182ac1c0b579975acc6cca75b9cf61ff356e4ff757ac4f0e2446c5178b3cc3b0938e3500b2c3eb04c15e369388d95cb10d3df8656069a951142fc403ed6b4a90102e5146519f66f6d35134e18b132d9ec6c3ec954f282992fe09c9f2a9752fc7c47b5d52b06e06eab61a6d10e4d7cc274d62caa67eb540f7f4be5844b6a66281ce82d2f664f7483a3a0ebff69576b98633aaa8921a5ddbe04814bd97aac297cdb1235373261c4cec06828ec556592c57c95cb2c5c853ad052230733029b09f8776f245772a3ca0276dcc8b833ca146a1411560f76a926a9289a1bf169092fa58ddf9c3a7517c82635364a7f4df403890f9d1ef144fb812196cd7f0c77286780f491baec2cdaf4fd482fda400ba6f61b9da4000716c29e6ca1845b5768bcaf0ecfc98bbb39185d35a921a8142041153dc39aaa1c286f97b630278db035fff6d32e0ef214326ce60b1f02d1fa3100beb18fe2b7e76ee911c7c76ae00c14c122f29acc03601a51f08a4016e1082f6d7eea356c2d4766a7c4e03aa5e33455a9d65f214d9d8402a2681f2dbdd87b070a985bebf6d6a81097a7bf6f1b653f6d44ca68c07e191e3105186bfcf1e65731b726cef277b7a02e2f4f8ba6de14e73c29b17188403b8622b78df10f42a4017cfff026423332e5732a39eecea4c4101a0158da5ca71f8e0cacf1a805a8b07076b2f15811115bf709cdfeb27a2a54c77a62f3f016365a2b209de610da2415e4793787e44c9401f65bb01b6f5693eb1d01b923a2b5bf5a3f57c537732b4a1ce41e1dd3bc5c8f84196316b39ae5142b724ec80f2101722eba6ec83b11cc7422a66c365139bf2fc07134f6c0358c0bda930f573d9dc4051c541157fd8ac87b1d9952a64ba6e19ca69e2499417fddbe2caa24c1a561f21387762d2def8c67a4f06e2bc76e0cb0d75f9409b22d34593aa82d7ba7ae89207f8b652d5f423bce6076d56121e00caac4b88c2c7dcb083a94c883285aa4d5c6ce0a8162bfdd6753d123843ddced44e075745b023dbb7e5b896e8269c01328054c9b302a1ab4da484855f13539de7736f3892f04d9f6479188c48f2cd00d4fa9d9c99a7201753abb270b443240a506dad2e62f21bcf924dbc733497deec366e53a852b5d6e466fed752cfb7898b19bdc423679483d7065d2ed753932d34255148ed5933b2f9bb6e6a9e268170b63bcea6793c524c3515736dfa68f07f4c3e5cd2819166dba29f321139f0d5a074dc689b94fcb3f83cf281fd236e5292abdda6dc835402586d5d0c1605cee625fb13d2d6d18c0428f254a59f1f69a0ef2e209aa3a5f6e2ef35ef170e07360261e3a3ede074843437e1dfbee809a1671c43e2f82acbcd800430f3a0f274f621bc623782b35791639d9b3d6a7a4a251738a9dcae15d1d2c629ec1dee87cac94318016b3a41242a73e5469a8f9e5305b1a9e52653be5bb871d51da8e739a2dbc794808278eefad6148f68c8cf374337c311ef987ce12cf173b716a0b132fe4277edbdd4e22f732d40ef01d45592e93a97ca93fa95e5a129817e09c00a6478b8824b30bce51819f29142579bf2f14716a04ec784291717a27138999bca5ced2397ca56aa623c557fa0aea6b7c2b2d37d36ecd046c4031e66938e3bac7e8e2834609b33cd57e178eca6b83c7852308adbe3e94d428359a07b5400093c0f470edd76c4e79870e9eaba95c32283d069372be6e79067bb6ab7ca454796a807a3129056bd4516d76698e182e2bcd6bccd4d0d55bd256e985ffc3c546e2bb353081161d28e9f2b17c68842a61ffbca8999ef095525156bae067ce736817b45824c349af41156b1c1de1a70c577fb57abce4d3570d25e2df2a5b3cc1489ae5994cd4f9624895167ccd2c878e56b79ca0e2b6cfb2425d4b4aa628d99c27562c7d03f23f7d7819c328ce578ae1527135e0f7dda3ff6a97dca81f440971457a5478000a8b6376e1d8360c581b142d9608e7a1456bfa07b651858937153a686575e98014203e3e284564acf772d0414ace1d3510e7224a5ade01287e0be64f896976eb354cd453dd6c74b85fa2e828b9d4c8b9fdf7d24683ea1f5d51667f1d5e15238dfce40c6aa371127c5bdaaa470b279155bdd3ad6d9730674a2c76017713a8a6b681a4d32ac75e5c6e094fa25e94676779f8d5da313d6e0934833ec218748a6ab334f3c665ab98e2e4d0e388478e09b6c50e887e177c2785ed64615806e08b1e6b46aa6d77d33232a00d0a9e1f09ae3d730b78d804f67dd0a3864c364a40dbc45b01f48e388ad267be45e0da793a5a1c4adc1a0557652262c47b11fe1e96831e163005de15e0fb03221f68b5285849dde06880275b1fe340dba9ac4b77d44955c8fff1aa3ec7ce951ee81cc70492c6e23b11207815a53ccaebba464132d331f694d66968042f655630447ceb4524f930ad89858d64d39f505d3e46807a1100bbe767782751b8dbae93ee5fc7226db8ffaccc4a5544bcb047a020454d5b3229c26b55bebe32232d20cceb1df107ea74ef6b3011a50761a6801b71d94a7d2c046a22d1333431a134bf8204e4ed2af4022af362109e2f2bef44313d81ec1a66a47b3c19c878470a55a2690825a356561e72b38fd7ae01ae4a6e96bb747f192505286ef155af188deaeb8cd4eec2232870ac4269fb76048416d70ae562427dd5bc4403fc346500705927a4eb212c63f36e41d3df3e7d298f24eada7da53229579148e75640d90c0cacd20fd3d11862168be888de916169c0e48b27b6757d3627fefc7d6914ba33b8b137cc9492aa430c88f1098dba073930de2672b5b1567fd6f7162a2a64072a451ccf2c5994d52e5bbfe973432468198e568f78da72731274c4468ee18fc367d4dc573e3c894702f74d106b78d3cd639abd3cfef63523231af4bf491b069c3f6fa51cfe8a26f82a3862d4b8df032e395b7650edaecae8507bfae382678d6e456f60c0820b69a968c953246344f2490055701c155611592b394b9a3c1ee2f55a1bf1f247ccd2d2694ad889b2a6521d6ef8a3102955feb74a8770a5d5a1229266ec4babb2d341af68b75b7f20341902746809447bd2cc041cc65840a4d302386b6bef9ff2fdcf41490c571f4e8127805e731a6c98de179420d656ef8a3a32d12f111d50acd2e01727d13d91114c1fc636929d3615656a0a7bbc9bffa1e8fa965da8113e79c5a1a532ea7e69180454e3301d79c190e8d37329dca220b7df4ecc352b1196c41eb28f0f07fbff1c2bdc8067b8cfbd62bc27462b9e145567c25c1264b234edf3be1e113122b8fe0f916a78044273957140d5010ea7ddc4fa9baa221fb56a55f91470e032c3ed7b7ac540e3304aa888e7b67a23199892ea67d8a8886e3c1377a78f0b3b603c0fdb93fa5c2e4a7d24561caa96003a473b91a75a470a6a98d8a779cf888976dfb7c7ef7a257b79309bde95c7ed4c3e31f237a3cd6f326f0a0bcfdefe65af544078f6f57d7bd96bb14684e8d850aa19c651a98b6a058644e66f933b98d3f00b2986bcc9080f6c13622ba77a1bc4cc0bcdd33418335b655093c331b81c194e667a0d386610db497d85bc8c077879970f0f788481ef1da14bf438ddcf86935441de988d54da39ba18e886f1c49546fc655bb9abaac6878c5c94128d280185080d674ae51107ece948329c69750e65e03bf4c85e45f9d5f44230b5c90e524e0b3bb3cbf2f392c067444ffa037bccaf833cc7382a1dcc2e985810164f89baa0c11e6db27652245a744ccf5d09012d86897f338cd68b7928087b339ae27b70de891043de1680da2a9e6dc2da8aeb7d87841910cf4ee764334c589bab7b57cc374f33e8b0b4bff010953f3aa8bd48d085bc6c8f107a773d9bd8085ae78680199d8806d542fb322c3bd701c5f052438afb772099171a234e388e4c2754e52869eaa729cf3be1ed7e1066351884c3d112e46d5e6f651930b7ab540e30b7f427a95067244828744e1a89a15782afc42d049fa043e686b803d1777123e6d31c36058ddf691518771690e1bb19c4c1ae08e7270a3159380d2f096af52e49ae98b99394ae0b30a5bee3e9482c38bf2dc0f03696c440c8eb8e3d9b0f7256ddb7321eb7fe79589046c8721a11e50ff42a8e2455fb084deb57827e23eba63fe7ea3e5f84b41043a71961f0ce5126253061b78e7fb1fe1dafe4090f80f77b5b5f77a5faafbb6b40194bcb6f5cf81c67325c4fc13417bf66e95cafa0ab01c2616a42b0ba08de2b15cef7a8ca7d6d7a48c7a140dd473d9076360c11520bcb94177895fbe6b89da010779b0bc3910b1657d6f8d809c1e51a2db23983fccdd809677340ac188e6c6f65425065ac31cde52b0b4684ec0d74a95cb12999f1219ddd6091a34f505efdc96a778c388f7f92041aada8f9eca2098a1717f73748fa9f7920d239e571826b330710ef76803c19dc1d267e4578a3f1bd652d666756341165281418be46ac9298418b0e234c6df62403e5e6dd84a5ff83207c7f9fe8d2893c21ab6192dca5698e6d19fcfb4debf52d37bf9b8fb2cb1f7d12632035d30c5091144a44a00b64485e7ca8909556fccaca71aed62a36f98955353140f88e2c72327c9afae1cbeb46af06e4d646c1eb0bac6e8fbbe0957e22d632957122408c9b7a242f3ee5210169112a5ced08811d51173c1498e218ad38044230eba0a397106d475d2293ad258a6d25564a0d94d4a7b01976a0d20c469d880ac65d0dea36916d6c5a4fdd3fe5c56277d4439108b966e8286445e5c71c857105ab9d738398585c3b235fc67b358fcb4e3e5b38030c80505f8c1b790f545aaf2aded7ea8238e50f2c6133d4e7d39ca10cefcc763eb292062b112c088221b218375064a6f285b279584b0b643f553733108693df771b8e887022ea8ff32272f413b3f3c7c8bd6b6d5f46ce8abdf6468026070803712d5ee33e24caeb90be938541ff778b61706a531b2580bce919456724969712e6917d1912d705eb8756fd1e4d4948bd6ed2e296715c1f97ad1bcd5769330f2656a56bd27e5e798a6a7fcbc427626e326103d6f779d37cbe4feb38d15b5c55ba662474f323763ecd4b6d00f026e4be108a00b86c09089f8329ad839369b61af2d6efa2fc117b0fd742a342e62e736893d3d7b9a515c1c36dc4f81cd00dac6395520e1a3741c3fe060f90aeac4987b19c151667416f40f7684def3ef65fc13512f827c6c3729fd495d6c0b4a5709048b555461adb4423269305828430000b9ab1a5634bdd40ef2ab5ebfc172f7451f7dc38f44ca559a53229fecc4110240596ca2503000c2427f6671b65ef470af71e577a6168f5400ca800cede208b30c5260e6c1daa87511547a1154c3e416a7934f5eb998a856e74f4ce53ff24fd0595c81e74014cd75e59579ae6381f0b32986ab7ede988363aa09fdf1179db5010b56455eba24a932d5d979142ef9f366c00fe13962315110c91e4d3616cc5e57e068a30d4ca1f8f4dd6899052f7f44a01978cee8538451360adb6a64188ce3e684fecc49a919d5d1f913a3f667a40ea6299d2f8f8b46bb74c636f7e7e392f295bc8f9a0e4b8e5920730cff5fe06ade56c33bb25a539c8e246a51037221fdee56111e32e73e1ce1a4b3ff1278460b5524a8a12b2f554ce9500eaa57737e24bd950156c11dd818e75022a8e9ab75fa21a596382980c2cef0c414f2e8a3b57e369743587910b5c8b361888b5ccc634dda04674e22ba04c32db0587acd350e64fa645dad97d28eff102284d80847622460d718e44af390f09c167649684afb7e531381087a00e5ac9367d20fc133249add740a062c3a29f6c351c651b747a894e2067b0b499645a01e83cf1cde6ed0971e14a41bbf0aade71675dae7b56c1aa440b2e23541c02b9c3655fb4006b92acddd929024144bbc135ba3fb4c3492055d86e52c2b8c9b555df917daa6f0a21fa2a4f2e5fd3419600af921167234a82f2794b726ebdcff41324d423b0c664303fdc3a778be53d7d6928ae71b524e487d6eb8f2fdc686f4805bbbd7da86547c714c35042a23df12748362346f1a156c7f7a40563ab6bab29930e8d3027c025cf6f75850ed5a22914ddb6785abbd7c659ed7b8a0360e41da91826af4f35de0077eeab2966d89a0daa850e790cf3516ebb4734425c4a282e54922f2752f3d9dffeb6016b0fae6031888835886e5e29b6c7b7f308009da3c217da7df95673ba9d5fee78c30ee65f0ee602b9d47fb09db1bce5ee0a00d2df62123e543530992403bc2d18a329123a1ea71ade021dd042c7772fb63c7ab09d30cddad64d6e2add7f27bd91ad68fa88a9abd063e5501e80bc037342ff4f617e0c90e8d54e3c14502f07a1d6253d6aa08e48a018b54d491f50a5e6b6046b233177c462c2af25c79241df6d130e0aa6fa99d2b4b6af48374027f8da0bdd5d4cc32ad24eea9f570f97f1cca66b4534eebab31fb028e06c822ffba2e9a7ff45b6e493aae93bbb6f9af1e14ba87bef34fcf2e794bffc0d745c69ab821abdbe4969c8e93d2865b42a752385bf4695c3063fc69ddc8e930546d71f0753e63e8923ce681e206d4ef360a8110ae281cdba385b5bbdace01e442a3d5decb893f8ef4b545772504c1b8c7247017b60621737089b3107747f22bd51dc0c1cf09ec5325022be8f2a5a6aeb3ecf4b65dea2e4c82427e353c4ff64cb7615c42d58377d100bcc33c15c77f25205e4babd3577630b3ed440168219f64f42f31815963c9207503b5aabd6a6249c18c9a61eba5969004fb9ee2c789492242a1c80b06ff717be50b36cfa1db835980724d0478d286a165ce69b21b2997143573681ba25732c211f646f6dc5641d077ca9daaa3cb468fe4e6b5456923870ea2450ae18c8858c6c08b028f297d8dcc13793a408bfc606a2618009ba1fd68ee62a599175b6053ff61d6ea1ecdd5a9527726ce1da2286561549f548b870b8742021bd380e95ad88c3535314aedbe53af914cfd2734897f74e0384d355b10898291d3ef2e0dd796e3b1b1e86749b05f12e4650a33f8be869b839e90b1981dd745c46156e610da5e4643df370d6ef7c4c0174fd649e9ba661cb2c3aa6c78588bcf956d6d27a6970de5f34f78267886c364236f3717c86293f5f4b5dcab9b453163936788019aad29804233d2d5cdc06bd407016016de8c08dd3698dd1f35ada541e0e44620013b013f65993a7b5031d7cba608b48cb548322f604ac7cc85b73a0016fb495675b43d2402af8c75519d8cf4c11e96c1adcdf8c6e216cfcbf2ddb52cd0c5bb9b078eba1e25d8af54d4a770fdc2330b744e0bbdd4e410388c73f926d054a6c9e8c6e7f3b03478abd53ea3f23a95b209c5d9296adc737f70d848c97dd1009046820267c915b6bbb8c6a783139812631225e2eca98e142d754658cbf90df6731a21057bc30274ef9c84e23184069428c5e5a747ee13f6c86ddfcd1f6e82b4b6bd2468e28296901adbe560ac6716d0a5d4876ea0471c4019e5abf58082c97032fa9050c49353a01f6a1c74f47aefd354919b3373616445ccdab782e4a6a120a78d513294d19791340174152c0174e5e4c345e794d13ed33566936366fb9b255767c9f03f14739566925554f5f218e6271da857b3c542541e747b7479dacc820cceff4fd96cccc1d5543f00a5e6f4c0d57638c02646c1535a3e0eb38ff80f3425c351b4e158bf83da6a3cf7f452f9f566d3b10c6df394437fbd5a54a1f6ce22c51ae66938a9b22336b4e5bc19c95f02e8142ccc4702c636a7a525340e6ae1e3ac0a2d0f39533e02ee723ced16bf92b661b89349ec75962234bfc0edcee621943302100f9c5fc984b23faab93fa35d57f26ed5a6fe3bc011a05f43e9241bd1c4ac4ee5eb606ce5e1622807bccadcf2815d871fc234276d97320e6f4d1be06091f18f6d00cd61e780bb48e6e9cc732372be4ac462f3f07f739c8d2d6ecc230d4278a9bb5b7fe1c3e08e907d7d0e5753b52e3df4b95b3c7a1100169bbfcb774b77c46b8edd3837fd3396e3e1946dec81e3df1d7f51d1bc08b3dceaaec1a66c03614a16a1771cff409698427fa5248fdda77454a0a5cd01af12c13cfd85bb1677d2f550510a9164da141a98a7574396c8e2e308aa04e356c1a43a5bc7c61339be514a429a74d0d848d0856374bba5b830d5abf55d4d839d10618ebcc055ad1400e0d5a9ee69cec23c44b19a9a46cb8d49f27cad6208970be4d2cdd71c72675172669bba7a043638e92636f760e1d8a8d2e16d2216f05e07a631815ed87a215153e00843bb211345bc43b45bd1bf9af30a24f43b0f897872b49350bb82f7606ef4e58c8f266b125e31d2ee5aa499d965dc71b4b385f641da77957f27d077b2c4e34546fc2c1a196537425ce277d3175e7cb677fb5d4317015c46f6cbda2a2ea985b33df9e0c581f69b208c53a96f52a47e2094e60051edd993b7b88310d54f61610667d4feeec0bdb7915fe330a555345654ca0ac538a933d56456390e0507706ff52d6d08c86c931ea721a10e4ef5c6f3042333e0b5c956505400857778404d76103cca3d4dc2d14ea6e3f1e5c5bdeba5d2de66211e085c9c552961aacfcfe5ee93292fde55d0708af69d224e50c4b614d14e4e6e6a61d506675d74849db0d1bb0646112b9f17f5bdc224d574d55512d62347f8214402bb6de6227903a0b07b9a46e10669c6161acd20a2d9cc6dba4801f0b5941de172b9aa27fcab738c0cd60f93646942401c87bf669f9f9983d7592ac258f1fcf312c96a754f7e3d5e71b6c287295fd2138a421d4224b751f3101650a36f5edcd526e38f5501230f51b5af0b2732ed92c8d4c1a35500b0e1948898aad6e266123f6c6851e5df92fda8bd446373b28935fdb929783254982b99fe15338777d780b0732445257bbcf867cf4c12452bbab8fe31576ff41e5483f493ebd3e5a089df1a4c4cff71c420897611eff1a09a80ce436c45561057ac9ec7b839b9602902b7357cf808e75a3aca10ddf9e231b6248f14ba2751e5efef61d8dbc72a05a7394f1497371d92865a56ce84cabda24592e2133731e5a1bf4eba7279dff46154dfc9b4bacdaa82b2119e5fd083612531cf9338d516ce76f11f3aa78354d7464ec8134484625d1342ab2eda6c7a2ed2a0205bc69cd2b9946e40a5c9f8420612c5c7eef79fe36f309d80049fca572c94c202b8acf6ef4683f1811d3ae7d8e4709ae3eb4b74c8bd338073abe328b6a1371411080599591bd6717af61ec62458c4946bf551bd87e6754013c36cbcac94b53019e9293f1128c40fc1ccefbedbf9b3e518a86b440d0b540872aa52d3776ce1f044a11fe28e0c53433141fbcb06b6741a0f77a3f4296123117aef33893a0f7794daef7a2ad9d1671c552812bb0f88f1bc3648c3ffc8fdc6dc81fea292c02382b0b996f0274c493031ff7850fea187e0e3e0ffbf72d3676412f76953278c061377652e0e877725801d0895df314ec58505f2414e3f9bf0142f14ecf14a63a845d6ab26567c7696835b7fac8b69469561ad0e5919cd5453034abdd07d65cbba50bf344769d790f760abbdf99f387b8d779f8b445c0a8e788501d6543169d6d2772602c3baf0c465e3f708657b4df24bc0cfa7132efff9a4c0a44da7fec349f9329faf36ca583d8933ded7baede6f2b8e07aa361c2c3b37730588b994cd388df50e1b80bbebb8178921210b2385b7d585184b77966bbbbf643e7f99e236bc3afa7b70bdf8f0e77abf6daefa4d475bf8bc5cc052e74fdb9e3526e6f96b51f9c0de18ef57eb06236bce2fb72918b60dac9978aac18a96ac54602e88d2d6e0e5116613e3cba7fcf249c62c211697b2867e186d6d1c58c8c9b89365f7bc8ff542af1559c205d242059c850c7849473c13ec4b0ab96973c9b89e492bc9be0c502644912ed50e107f5429972f974c4f807057511cf7665054dc21ed244458f43c562acd432589eedd0335a11c005dcd93b1364420f0d7b8726a19f40afd343bfb345bd93e1993a5f9462f1f2cf892acc6107f290c14d42c2de240ae3e82071f310659175b848eac45dc3e663f497495023a45e57df4d1189fd154a359be1c88c0f011da5156f8bc7e2d1bcf2a6fede56eaaab0338ec9c3c3541788a27330587bfb5a54e379b4458320263aa26fe12f241c6eefc121a50ad8c4d0f92226d95b032a38ee03761522c99ad2eca4fb99ccdac95341244f68b599a073d16754dc95f68eb223673f329a2181a95bf471bfcd4b042e58c5ea7f53c18344530233cb64ce4ce616325d440b96c91f92a734aa1b50412c6b733ab413e091ae1c0385ac654d1e2a4167c61f9dd012b20cc5e1fafcd938f2c1075ff188f10a06d3f0e818112cba5599111b832640ca4b85f758a1fd63650ac377929362f05ccd8e232c6137f55f2ff46791186b6301b3c5f2a26212624c5156a3f0cf90cb59ea3515c7dd63cc2ce7f8e2b0eb6510ee4edb411c4853aefae55483ce9c5d5db45dc254cd812b445ff9d5c59af51150ec45b5b1e45fbf1186961ad2ee186536baa968f329005e6f6a1f911611f6cbfa3c0c6877196486ab615f31d393f1dd9790f38fc18c2e37ebf75647c4b1670c92adeae1158f23afe0cffb9b87bdedf487ce068ad5697279a5bbbb81805c6b6a1a429f25a112f316a493608187c9cf99c55adf82c533d8d3df9b793ec55acfcb8b6e7ecad148636ab12d2f78d710f1dbfc11cc35741e3f4e2b62f53c863bbeb62c6af9e6b4f4c87dae4a43e2534e65115662cd5c6165b886623319bbb316e4757e694c7c15277f08a6b178d6220e5e82e22c29dc81b264c6b2637471e18bdf3ad1469f3371e6f3c0fc4b5a500322746091acaddf30b1073c1485b9a1a2ed371af23df4eb626204db2858e036635b362ff0ec1fbb121005efb09cd113d09563e97265423112790e33a17907999122609044166d60f31dc2edcc2b63f0c0ef057d0b093c01f7051d79ea536c8b279f80ee2c40cfba37f2f654a26474f7030f0492739a9e97f182974f08e3869fb137c62c9a85d48021405af1f06f5ba47019a916a800f14dd1e73046568f4ebb93a96c9561a7a382d38b4c3c1a6f67af26fd311d8352b84dc6fc117e49d5295f70f97a56340ef9d84619bcdcb2d2a7bea13f7d495e313830e111218a59dac701949452fc26322cda1358d77d0f95009993c03f7a67eff14fc1368adacf7bcddf22a4d7d8ea6c2b2ca29cd9fa9644cea3f1c4f1e5f5ce867b63033aecbcf7998f26a6afaadd27bf27a50d382b460429fa07e6e8f45db3d4e121b38a28cec19044f656eec31b868ee675b5bf0d094e3e98c2db0b6c2f7213258470ec80a1e7f666a31334ece2fd158e65cf7a07f4c7d7d384f155e3b634258445f4679ab9fe349dc3d5b0261941b5d5c58cf650080b20cc975025933dea2cd74250a6e744a0385404084420f84e45bcc48fe1c6c23a73b5352bddf6176ea026528768789ace911544a25bf03f51b4e595a72141f799eaf8246c1c68d2323ca557aa937fb6be579310e8e49b798c0b6926e7af8fc291c1475380543eb228330265b977761acb63bbf14452deb55f7e9850a341e9d1cc67f976c3d3d8fd69bab6d5ddea3d0c8e7c1da3ec61890b5ff35cf1b431f119b6cf56b1510ceeaf3ca95b0664072cd6445b20d0af9db55aeeee26c086d7318bbbd08ca18c74447e729198c5cc8f6f57203346170edf96bb7b4e6fb0e3cf2613eae6c23483de62c8af9f533204ff8e5f7edfa0538ee57323c62ed9c1e4938221b7aca0b34e7c151169f13961d2f813f059e6b342fa0d5159fc30d391566ff5f447dea9c7ac83ccfc8ec611221bb04331c4b96497043b23255c4a67f191dba3c629b6b423ec3f4f31141e07f0da9f7328743d69d2c3956c790313e0a38958e062baf626036ba26ad32bd84a705d36690bb1af263056cfe9b761e374d529e25520342f46a2f1527de36e78b234aafc16398cfc6525d2b01c0b0c7e9180e74ffd0e3d6ab4821039f580decd2e120dc5026e09ae6216379afd94034ba682bf0305519a4f9de04b01b92c5bd221b03f565081080c4f9175490be2b82298645f00e6b57100340420e58a2c078558b466cb5ca52b624f11405f7a5393b49e0290d51b201f435834593f8bc5b2b6bfa7afc8f31a467ae29034596141dac03be1b1ab623948b61d64d3255a4874220037d0d0b4482494dcb703ba076e18e8e055d9980a331a55b1d573a2d4f01a7455e05b2a5867f1d54046a65c44a80257a583ea5fe123d822d284dededbc779dcd170bbd8f6bcceb7a8545c1c6f52624358c65b970aefb7201680586aa7039c85377484be253c5424b626f7c7d27a25cc7c274a29ea858678d9a45038a08ad7f6666008e21cb0a19cfb231d60e54113f577a42f7bcf901e4550d0d48e6a6d7e4914a3bacbf1d200a43f97d3d3446174d53316ffe6047bb4caac55d30247f7b811a5432463bee4d24865642954cb9617714d773586e53e110b0f500fabf512ec275ff577687a277bd806b7b4876af669bd82a1bb4f42c1092c9bc0930ee46e4d885040b4b10eaf0725fb5282631d578a0a3642d15928432b7103b3fbd54b930c5785c3c8f5be57411c55613ab5436c39e35a9738a18ce4500d2533a2c545338e719126173eef8047626c024e997dd0c47ffde79ac45bbde46a13d6150dfb6428de1d46e43d451b03ca4fc4e270ca4970ab80c2acd33735ea1cce52f4f68aba922fc4d073d91b1e4ae714a06b69348c5025aa908141e8aa5918a330eba81ffa550a57123a553a587f8d8833e838658f17ce0d30bbfa2bc4187f2994ea15dd5d28e5b495c046c1fafb5210f145d36ddf4cdbe6d26aef464f362b2ab4cba56e59b02b1b022d0b4f6e80082c0626d571cafea5b7f1d11517f7d40c24048e9930aa1c38bee537a443b7e4aa9d82acbfe79f46a039d152bfc54abcfd29d0c8c52ff9387e1611f69c835a52000d26686abb7c1c3ca4c13cedf8839c8bc7b59a82e0a9ca96bb21664a5a3ccc6bcc9292bed327a895fd03dfb143b57a6d7a925458efef2f635bd0da232db9692e62574574e9c4911091d48a2335d6bcfa490746271a6e2cf774503c8d3a5213cc08213f71ee693acde2f63c410a0ddc25f112302bbc4ad9035870489fbea6f362e06418f4b74fdfae40b7cbebc591fe7dd3969c28222f8852fa33e97e21da8c99f996a0a5f4e77eb142919f9061ec65d46537df480134ab71e796640225157631bc309671356f98c67215bf721b492e01e312d4e024384d7c63f515aa2a457ea00382343142e709c4d0973a148ad699519795ee19387592e1f7f09876ac9dac0ad3a3605a296ce63ceff409e14c14ecc7a9748985b7577f84cc064e8ff940f8935b92b29dc7e86e4da3531e07cba3b9865c35864a083f5b51dd95089f1d76834d62a2cceec77a9f81d2c726e5967846d7a344dc3ed732ab8aee146b6cffcf302cdfc4aa8e66dacee1a5f45b6299bf50a7c2e1b17483d96f7866e1366d4b4a635eb2d59316ea6cd13baf91bc2e1b9640ea5a6130d18aa16cc20d00d2b23d92af82c4d63 + - {fileID: 8132557174609694425, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 5126086572364088879, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 2072332804138453357, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 816955147983443379, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 5840097170757975722, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 7025203609509180022, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 8526474044217039555, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 854107432770048664, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 1378655914364111770, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 10333948111691042, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 373065448631755357, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 261765279725222738, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 4681825519897212372, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 2202765603615894048, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 8182686472733940155, guid: 42665ed72d40a4b349f0cb89f825437e, type: 3} + - {fileID: 11500000, guid: 1ec53002feb264ae7b2bb0386ac37ad2, type: 3} + - {fileID: 3154956539503596607, guid: 42665ed72d40a4b349f0cb89f825437e, type: 3} + - {fileID: -8416968328479360239, guid: 42665ed72d40a4b349f0cb89f825437e, type: 3} + - {fileID: 2800000, guid: 188dfe7e559f13248ba2c41eb5a59328, type: 3} + - {fileID: 2800000, guid: f20112bdeec2e8d4d9f80e8390e37263, type: 3} + - {fileID: 2800000, guid: ee148e281f3c41c5b4ff5f8a5afe5a6c, type: 3} + - {fileID: 2800000, guid: a7ec9e7ad8b847b7ae4510af83c5d868, type: 3} + - {fileID: 2800000, guid: b0f85f7da5042c0448a526d5ecacbfa9, type: 3} + - {fileID: 2800000, guid: 3ee40aa79cd242a5b53b0b0ca4f13f0f, type: 3} + - {fileID: 2800000, guid: 2fd6421f253b4ef1a19526541f9ffc0c, type: 3} + - {fileID: 2800000, guid: f66c4aa44c09b6a42a2b5b9f9334d824, type: 3} + - {fileID: 2800000, guid: f87b5805002ec9649bcb1b96d8a16ba9, type: 3} + - {fileID: 2800000, guid: 3028dc075ba8c584d9bc7d1e0255e038, type: 3} + - {fileID: 2800000, guid: 93f09189124b21e479fc891dbc1b93bf, type: 3} + - {fileID: 2800000, guid: dcc0ed9263c0d524aabeb5f4bd75ecee, type: 3} + _Values: 526a8851fe85233e7cc810cd2b8a733faa68e71a62b99912cf2f06228873853005edfb00aa354575a31cc8ad1ac7b966f52afefc8351b636e2b71574be99675b6400dfc3607f0069e96d5112b3681f5fcf550a7f3749f10c2c006f2e23d1db370e64801184e106752a681216ffa3837998b5a5688fe7245230fcd93d5728ea479cf46b8ba7516b16ed2e96b5bbb6e20e0c6272c125d7806f67cd366983232521642549cf9088373b29cf12c86a843666a9d2726c53c784328db49f8d499d2140c6bf413c35ce7d12821326d7a7c36313210e18f42f147d60db1f64f3ada3bb2d6666d31a094491222bbde8f495825a4e2f05ece33b3881253ca117543370bf2531ac8ebf10b7f565a03ac9712b88ca58c516c5a7b6d8f161d84e972e95f1f208f318fcbd24a42f1a1594d13a0cca1e4d0b9a28c0e4238a4cd5432183fe0a3d37c5600352a5affe32a0f1cca64d60c95d6de43a2f1ab3ec2f8dafe7e182ac1c0b579975acc6cca75b9cf61ff356e4ff757ac4f0e2446c5178b3cc3b0938e3500b2c3eb04c15e369388d95cb10d3df8656069a951142fc403ed6b4a90102e5146519f66f6d35134e18b132d9ec6c3ec954f282992fe09c9f2a9752fc7c47b5d52b06e06eab61a6d10e4d7cc274d62caa67eb540f7f4be5844b6a66281ce82d2f664f7483a3a0ebff69576b98633aaa8921a5ddbe04814bd97aac297cdb1235373261c4cec06828ec556592c57c95cb2c5c853ad052230733029b09f8776f245772a3ca0276dcc8b833ca146a1411560f76a926a9289a1bf169092fa58ddf9c3a7517c82635364a7f4df403890f9d1ef144fb812196cd7f0c77286780f491baec2cdaf4fd482fda400ba6f61b9da4000716c29e6ca1845b5768bcaf0ecfc98bbb39185d35a921a8142041153dc39aaa1c286f97b630278db035fff6d32e0ef214326ce60b1f02d1fa3100beb18fe2b7e76ee911c7c76ae00c14c122f29acc03601a51f08a4016e1082f6d7eea356c2d4766a7c4e03aa5e33455a9d65f214d9d8402a2681f2dbdd87b070a985bebf6d6a81097a7bf6f1b653f6d44ca68c07e191e3105186bfcf1e65731b726cef277b7a02e2f4f8ba6de14e73c29b17188403b8622b78df10f42a4017cfff026423332e5732a39eecea4c4101a0158da5ca71f8e0cacf1a805a8b07076b2f15811115bf709cdfeb27a2a54c77a62f3f016365a2b209de610da2415e4793787e44c9401f65bb01b6f5693eb1d01b923a2b5bf5a3f57c537732b4a1ce41e1dd3bc5c8f84196316b39ae5142b724ec80f2101722eba6ec83b11cc7422a66c365139bf2fc07134f6c0358c0bda930f573d9dc4051c541157fd8ac87b1d9952a64ba6e19ca69e2499417fddbe2caa24c1a561f21387762d2def8c67a4f06e2bc76e0cb0d75f9409b22d34593aa82d7ba7ae89207f8b652d5f423bce6076d56121e00caac4b88c2c7dcb083a94c883285aa4d5c6ce0a8162bfdd6753d123843ddced44e075745b023dbb7e5b896e8269c01328054c9b302a1ab4da484855f13539de7736f3892f04d9f6479188c48f2cd00d4fa9d9c99a7201753abb270b443240a506dad2e62f21bcf924dbc733497deec366e53a852b5d6e466fed752cfb7898b19bdc423679483d7065d2ed753932d34255148ed5933b2f9bb6e6a9e268170b63bcea6793c524c3515736dfa68f07f4c3e5cd2819166dba29f321139f0d5a074dc689b94fcb3f83cf281fd236e5292abdda6dc835402586d5d0c1605cee625fb13d2d6d18c0428f254a59f1f69a0ef2e209aa3a5f6e2ef35ef170e07360261e3a3ede074843437e1dfbee809a1671c43e2f82acbcd800430f3a0f274f621bc623782b35791639d9b3d6a7a4a251738a9dcae15d1d2c629ec1dee87cac94318016b3a41242a73e5469a8f9e5305b1a9e52653be5bb871d51da8e739a2dbc794808278eefad6148f68c8cf374337c311ef987ce12cf173b716a0b132fe4277edbdd4e22f732d40ef01d45592e93a97ca93fa95e5a129817e09c00a6478b8824b30bce51819f29142579bf2f14716a04ec784291717a27138999bca5ced2397ca56aa623c557fa0aea6b7c2b2d37d36ecd046c4031e66938e3bac7e8e2834609b33cd57e178eca6b83c7852308adbe3e94d428359a07b5400093c0f470edd76c4e79870e9eaba95c32283d069372be6e79067bb6ab7ca454796a807a3129056bd4516d76698e182e2bcd6bccd4d0d55bd256e985ffc3c546e2bb353081161d28e9f2b17c68842a61ffbca8999ef095525156bae067ce736817b45824c349af41156b1c1de1a70c577fb57abce4d3570d25e2df2a5b3cc1489ae5994cd4f9624895167ccd2c878e56b79ca0e2b6cfb2425d4b4aa628d99c27562c7d03f23f7d7819c328ce578ae1527135e0f7dda3ff6a97dca81f440971457a5478000a8b6376e1d8360c581b142d9608e7a1456bfa07b651858937153a686575e98014203e3e284564acf772d0414ace1d3510e7224a5ade01287e0be64f896976eb354cd453dd6c74b85fa2e828b9d4c8b9fdf7d24683ea1f5d51667f1d5e15238dfce40c6aa371127c5bdaaa470b279155bdd3ad6d9730674a2c76017713a8a6b681a4d32ac75e5c6e094fa25e94676779f8d5da313d6e0934833ec218748a6ab334f3c665ab98e2e4d0e388478e09b6c50e887e177c2785ed64615806e08b1e6b46aa6d77d33232a00d0a9e1f09ae3d730b78d804f67dd0a3864c364a40dbc45b01f48e388ad267be45e0da793a5a1c4adc1a0557652262c47b11fe1e96831e163005de15e0fb03221f68b5285849dde06880275b1fe340dba9ac4b77d44955c8fff1aa3ec7ce951ee81cc70492c6e23b11207815a53ccaebba464132d331f694d66968042f655630447ceb4524f930ad89858d64d39f505d3e46807a1100bbe767782751b8dbae93ee5fc7226db8ffaccc4a5544bcb047a020454d5b3229c26b55bebe32232d20cceb1df107ea74ef6b3011a50761a6801b71d94a7d2c046a22d1333431a134bf8204e4ed2af4022af362109e2f2bef44313d81ec1a66a47b3c19c878470a55a2690825a356561e72b38fd7ae01ae4a6e96bb747f192505286ef155af188deaeb8cd4eec2232870ac4269fb76048416d70ae562427dd5bc4403fc346500705927a4eb212c63f36e41d3df3e7d298f24eada7da53229579148e75640d90c0cacd20fd3d11862168be888de916169c0e48b27b6757d3627fefc7d6914ba33b8b137cc9492aa430c88f1098dba073930de2672b5b1567fd6f7162a2a64072a451ccf2c5994d52e5bbfe973432468198e568f78da72731274c4468ee18fc367d4dc573e3c894702f74d106b78d3cd639abd3cfef63523231af4bf491b069c3f6fa51cfe8a26f82a3862d4b8df032e395b7650edaecae8507bfae382678d6e456f60c0820b69a968c953246344f2490055701c155611592b394b9a3c1ee2f55a1bf1f247ccd2d2694ad889b2a6521d6ef8a3102955feb74a8770a5d5a1229266ec4babb2d341af68b75b7f20341902746809447bd2cc041cc65840a4d302386b6bef9ff2fdcf41490c571f4e8127805e731a6c98de179420d656ef8a3a32d12f111d50acd2e01727d13d91114c1fc636929d3615656a0a7bbc9bffa1e8fa965da8113e79c5a1a532ea7e69180454e3301d79c190e8d37329dca220b7df4ecc352b1196c41eb28f0f07fbff1c2bdc8067b8cfbd62bc27462b9e145567c25c1264b234edf3be1e113122b8fe0f916a78044273957140d5010ea7ddc4fa9baa221fb56a55f91470e032c3ed7b7ac540e3304aa888e7b67a23199892ea67d8a8886e3c1377a78f0b3b603c0fdb93fa5c2e4a7d24561caa96003a473b91a75a470a6a98d8a779cf888976dfb7c7ef7a257b79309bde95c7ed4c3e31f237a3cd6f326f0a0bcfdefe65af544078f6f57d7bd96bb14684e8d850aa19c651a98b6a058644e66f933b98d3f00b2986bcc9080f6c13622ba77a1bc4cc0bcdd33418335b655093c331b81c194e667a0d386610db497d85bc8c077879970f0f788481ef1da14bf438ddcf86935441de988d54da39ba18e886f1c49546fc655bb9abaac6878c5c94128d280185080d674ae51107ece948329c69750e65e03bf4c85e45f9d5f44230b5c90e524e0b3bb3cbf2f392c067444ffa037bccaf833cc7382a1dcc2e985810164f89baa0c11e6db27652245a744ccf5d09012d86897f338cd68b7928087b339ae27b70de891043de1680da2a9e6dc2da8aeb7d87841910cf4ee764334c589bab7b57cc374f33e8b0b4bff010953f3aa8bd48d085bc6c8f107a773d9bd8085ae78680199d8806d542fb322c3bd701c5f052438afb772099171a234e388e4c2754e52869eaa729cf3be1ed7e1066351884c3d112e46d5e6f651930b7ab540e30b7f427a95067244828744e1a89a15782afc42d049fa043e686b803d1777123e6d31c36058ddf691518771690e1bb19c4c1ae08e7270a3159380d2f096af52e49ae98b99394ae0b30a5bee3e9482c38bf2dc0f03696c440c8eb8e3d9b0f7256ddb7321eb7fe79589046c8721a11e50ff42a8e2455fb084deb57827e23eba63fe7ea3e5f84b41043a71961f0ce5126253061b78e7fb1fe1dafe4090f80f77b5b5f77a5faafbb6b40194bcb6f5cf81c67325c4fc13417bf66e95cafa0ab01c2616a42b0ba08de2b15cef7a8ca7d6d7a48c7a140dd473d9076360c11520bcb94177895fbe6b89da010779b0bc3910b1657d6f8d809c1e51a2db23983fccdd809677340ac188e6c6f65425065ac31cde52b0b4684ec0d74a95cb12999f1219ddd6091a34f505efdc96a778c388f7f92041aada8f9eca2098a1717f73748fa9f7920d239e571826b330710ef76803c19dc1d267e4578a3f1bd652d666756341165281418be46ac9298418b0e234c6df62403e5e6dd84a5ff83207c7f9fe8d2893c21ab6192dca5698e6d19fcfb4debf52d37bf9b8fb2cb1f7d12632035d30c5091144a44a00b64485e7ca8909556fccaca71aed62a36f98955353140f88e2c72327c9afae1cbeb46af06e4d646c1eb0bac6e8fbbe0957e22d632957122408c9b7a242f3ee5210169112a5ced08811d51173c1498e218ad38044230eba0a397106d475d2293ad258a6d25564a0d94d4a7b01976a0d20c469d880ac65d0dea36916d6c5a4fdd3fe5c56277d4439108b966e8286445e5c71c857105ab9d738398585c3b235fc67b358fcb4e3e5b38030c80505f8c1b790f545aaf2aded7ea8238e50f2c6133d4e7d39ca10cefcc763eb292062b112c088221b218375064a6f285b279584b0b643f553733108693df771b8e887022ea8ff32272f413b3f3c7c8bd6b6d5f46ce8abdf6468026070803712d5ee33e24caeb90be938541ff778b61706a531b2580bce919456724969712e6917d1912d705eb8756fd1e4d4948bd6ed2e296715c1f97ad1bcd5769330f2656a56bd27e5e798a6a7fcbc427626e326103d6f779d37cbe4feb38d15b5c55ba662474f323763ecd4b6d00f026e4be108a00b86c09089f8329ad839369b61af2d6efa2fc117b0fd742a342e62e736893d3d7b9a515c1c36dc4f81cd00dac6395520e1a3741c3fe060f90aeac4987b19c151667416f40f7684def3ef65fc13512f827c6c3729fd495d6c0b4a5709048b555461adb4423269305828430000b9ab1a5634bdd40ef2ab5ebfc172f7451f7dc38f44ca559a53229fecc4110240596ca2503000c2427f6671b65ef470af71e577a6168f5400ca800cede208b30c5260e6c1daa87511547a1154c3e416a7934f5eb998a856e74f4ce53ff24fd0595c81e74014cd75e59579ae6381f0b32986ab7ede988363aa09fdf1179db5010b56455eba24a932d5d979142ef9f366c00fe13962315110c91e4d3616cc5e57e068a30d4ca1f8f4dd6899052f7f44a01978cee8538451360adb6a64188ce3e684fecc49a919d5d1f913a3f667a40ea6299d2f8f8b46bb74c636f7e7e392f295bc8f9a0e4b8e5920730cff5fe06ade56c33bb25a539c8e246a51037221fdee56111e32e73e1ce1a4b3ff1278460b5524a8a12b2f554ce9500eaa57737e24bd950156c11dd818e75022a8e9ab75fa21a596382980c2cef0c414f2e8a3b57e369743587910b5c8b361888b5ccc634dda04674e22ba04c32db0587acd350e64fa645dad97d28eff102284d80847622460d718e44af390f09c167649684afb7e531381087a00e5ac9367d20fc133249add740a062c3a29f6c351c651b747a894e2067b0b499645a01e83cf1cde6ed0971e14a41bbf0aade71675dae7b56c1aa440b2e23541c02b9c3655fb4006b92acddd929024144bbc135ba3fb4c3492055d86e52c2b8c9b555df917daa6f0a21fa2a4f2e5fd3419600af921167234a82f2794b726ebdcff41324d423b0c664303fdc3a778be53d7d6928ae71b524e487d6eb8f2fdc686f4805bbbd7da86547c714c35042a23df12748362346f1a156c7f7a40563ab6bab29930e8d3027c025cf6f75850ed5a22914ddb6785abbd7c659ed7b8a0360e41da91826af4f35de0077eeab2966d89a0daa850e790cf3516ebb4734425c4a282e54922f2752f3d9dffeb6016b0fae6031888835886e5e29b6c7b7f308009da3c217da7df95673ba9d5fee78c30ee65f0ee602b9d47fb09db1bce5ee0a00d2df62123e543530992403bc2d18a329123a1ea71ade021dd042c7772fb63c7ab09d30cddad64d6e2add7f27bd91ad68fa88a9abd063e5501e80bc037342ff4f617e0c90e8d54e3c14502f07a1d6253d6aa08e48a018b54d491f50a5e6b6046b233177c462c2af25c79241df6d130e0aa6fa99d2b4b6af48374027f8da0bdd5d4cc32ad24eea9f570f97f1cca66b4534eebab31fb028e06c822ffba2e9a7ff45b6e493aae93bbb6f9af1e14ba87bef34fcf2e794bffc0d745c69ab821abdbe4969c8e93d2865b42a752385bf4695c3063fc69ddc8e930546d71f0753e63e8923ce681e206d4ef360a8110ae281cdba385b5bbdace01e442a3d5decb893f8ef4b545772504c1b8c7247017b60621737089b3107747f22bd51dc0c1cf09ec5325022be8f2a5a6aeb3ecf4b65dea2e4c82427e353c4ff64cb7615c42d58377d100bcc33c15c77f25205e4babd3577630b3ed440168219f64f42f31815963c9207503b5aabd6a6249c18c9a61eba5969004fb9ee2c789492242a1c80b06ff717be50b36cfa1db835980724d0478d286a165ce69b21b2997143573681ba25732c211f646f6dc5641d077ca9daaa3cb468fe4e6b5456923870ea2450ae18c8858c6c08b028f297d8dcc13793a408bfc606a2618009ba1fd68ee62a599175b6053ff61d6ea1ecdd5a9527726ce1da2286561549f548b870b8742021bd380e95ad88c3535314aedbe53af914cfd2734897f74e0384d355b10898291d3ef2e0dd796e3b1b1e86749b05f12e4650a33f8be869b839e90b1981dd745c46156e610da5e4643df370d6ef7c4c0174fd649e9ba661cb2c3aa6c78588bcf956d6d27a6970de5f34f78267886c364236f3717c86293f5f4b5dcab9b453163936788019aad29804233d2d5cdc06bd407016016de8c08dd3698dd1f35ada541e0e44620013b013f65993a7b5031d7cba608b48cb548322f604ac7cc85b73a0016fb495675b43d2402af8c75519d8cf4c11e96c1adcdf8c6e216cfcbf2ddb52cd0c5bb9b078eba1e25d8af54d4a770fdc2330b744e0bbdd4e410388c73f926d054a6c9e8c6e7f3b03478abd53ea3f23a95b209c5d9296adc737f70d848c97dd1009046820267c915b6bbb8c6a783139812631225e2eca98e142d754658cbf90df6731a21057bc30274ef9c84e23184069428c5e5a747ee13f6c86ddfcd1f6e82b4b6bd2468e28296901adbe560ac6716d0a5d4876ea0471c4019e5abf58082c97032fa9050c49353a01f6a1c74f47aefd354919b3373616445ccdab782e4a6a120a78d513294d19791340174152c0174e5e4c345e794d13ed33566936366fb9b255767c9f03f14739566925554f5f218e6271da857b3c542541e747b7479dacc820cceff4fd96cccc1d5543f00a5e6f4c0d57638c02646c1535a3e0eb38ff80f3425c351b4e158bf83da6a3cf7f452f9f566d3b10c6df394437fbd5a54a1f6ce22c51ae66938a9b22336b4e5bc19c95f02e8142ccc4702c636a7a525340e6ae1e3ac0a2d0f39533e02ee723ced16bf92b661b89349ec75962234bfc0edcee621943302100f9c5fc984b23faab93fa35d57f26ed5a6fe3bc011a05f43e9241bd1c4ac4ee5eb606ce5e1622807bccadcf2815d871fc234276d97320e6f4d1be06091f18f6d00cd61e780bb48e6e9cc732372be4ac462f3f07f739c8d2d6ecc230d4278a9bb5b7fe1c3e08e907d7d0e5753b52e3df4b95b3c7a1100169bbfcb774b77c46b8edd3837fd3396e3e1946dec81e3df1d7f51d1bc08b3dceaaec1a66c03614a16a1771cff409698427fa5248fdda77454a0a5cd01af12c13cfd85bb1677d2f550510a9164da141a98a7574396c8e2e308aa04e356c1a43a5bc7c61339be514a429a74d0d848d0856374bba5b830d5abf55d4d839d10618ebcc055ad1400e0d5a9ee69cec23c44b19a9a46cb8d49f27cad6208970be4d2cdd71c72675172669bba7a043638e92636f760e1d8a8d2e16d2216f05e07a631815ed87a215153e00843bb211345bc43b45bd1bf9af30a24f43b0f897872b49350bb82f7606ef4e58c8f266b125e31d2ee5aa499d965dc71b4b385f641da77957f27d077b2c4e34546fc2c1a196537425ce277d3175e7cb677fb5d4317015c46f6cbda2a2ea985b33df9e0c581f69b208c53a96f52a47e2094e60051edd993b7b88310d54f61610667d4feeec0bdb7915fe330a555345654ca0ac538a933d56456390e0507706ff52d6d08c86c931ea721a10e4ef5c6f3042333e0b5c956505400857778404d76103cca3d4dc2d14ea6e3f1e5c5bdeba5d2de66211e085c9c552961aacfcfe5ee93292fde55d0708af69d224e50c4b614d14e4e6e6a61d506675d74849db0d1bb0646112b9f17f5bdc224d574d55512d62347f8214402bb6de6227903a0b07b9a46e10669c6161acd20a2d9cc6dba4801f0b5941de172b9aa27fcab738c0cd60f93646942401c87bf669f9f9983d7592ac258f1fcf312c96a754f7e3d5e71b6c287295fd2138a421d4224b751f3101650a36f5edcd526e38f5501230f51b5af0b2732ed92c8d4c1a35500b0e1948898aad6e266123f6c6851e5df92fda8bd446373b28935fdb929783254982b99fe15338777d780b0732445257bbcf867cf4c12452bbab8fe31576ff41e5483f493ebd3e5a089df1a4c4cff71c420897611eff1a09a80ce436c45561057ac9ec7b839b9602902b7357cf808e75a3aca10ddf9e231b6248f14ba2751e5efef61d8dbc72a05a7394f1497371d92865a56ce84cabda24592e2133731e5a1bf4eba7279dff46154dfc9b4bacdaa82b2119e5fd083612531cf9338d516ce76f11f3aa78354d7464ec8134484625d1342ab2eda6c7a2ed2a0205bc69cd2b9946e40a5c9f8420612c5c7eef79fe36f309d80049fca572c94c202b8acf6ef4683f1811d3ae7d8e4709ae3eb4b74c8bd338073abe328b6a1371411080599591bd6717af61ec62458c4946bf551bd87e6754013c36cbcac94b53019e9293f1128c40fc1ccefbedbf9b3e518a86b440d0b540872aa52d3776ce1f044a11fe28e0c53433141fbcb06b6741a0f77a3f4296123117aef33893a0f7794daef7a2ad9d1671c552812bb0f88f1bc3648c3ffc8fdc6dc81fea292c02382b0b996f0274c493031ff7850fea187e0e3e0ffbf72d3676412f76953278c061377652e0e877725801d0895df314ec58505f2414e3f9bf0142f14ecf14a63a845d6ab26567c7696835b7fac8b69469561ad0e5919cd5453034abdd07d65cbba50bf344769d790f760abbdf99f387b8d779f8b445c0a8e788501d6543169d6d2772602c3baf0c465e3f708657b4df24bc0cfa7132efff9a4c0a44da7fec349f9329faf36ca583d8933ded7baede6f2b8e07aa361c2c3b37730588b994cd388df50e1b80bbebb8178921210b2385b7d585184b77966bbbbf643e7f99e236bc3afa7b70bdf8f0e77abf6daefa4d475bf8bc5cc052e74fdb9e3526e6f96b51f9c0de18ef57eb06236bce2fb72918b60dac9978aac18a96ac54602e88d2d6e0e5116613e3cba7fcf249c62c211697b2867e186d6d1c58c8c9b89365f7bc8ff542af1559c205d242059c850c7849473c13ec4b0ab96973c9b89e492bc9be0c502644912ed50e107f5429972f974c4f807057511cf7665054dc21ed244458f43c562acd432589eedd0335a11c005dcd93b1364420f0d7b8726a19f40afd343bfb345bd93e1993a5f9462f1f2cf892acc6107f290c14d42c2de240ae3e82071f310659175b848eac45dc3e663f497495023a45e57df4d1189fd154a359be1c88c0f011da5156f8bc7e2d1bcf2a6fede56eaaab0338ec9c3c3541788a27330587bfb5a54e379b4458320263aa26fe12f241c6eefc121a50ad8c4d0f92226d95b032a38ee03761522c99ad2eca4fb99ccdac95341244f68b599a073d16754dc95f68eb223673f329a2181a95bf471bfcd4b042e58c5ea7f53c18344530233cb64ce4ce616325d440b96c91f92a734aa1b50412c6b733ab413e091ae1c0385ac654d1e2a4167c61f9dd012b20cc5e1fafcd938f2c1075ff188f10a06d3f0e818112cba5599111b832640ca4b85f758a1fd63650ac377929362f05ccd8e232c6137f55f2ff46791186b6301b3c5f2a26212624c5156a3f0cf90cb59ea3515c7dd63cc2ce7f8e2b0eb6510ee4edb411c4853aefae55483ce9c5d5db45dc254cd812b445ff9d5c59af51150ec45b5b1e45fbf1186961ad2ee186536baa968f329005e6f6a1f911611f6cbfa3c0c6877196486ab615f31d393f1dd9790f38fc18c2e37ebf75647c4b1670c92adeae1158f23afe0cffb9b87bdedf487ce068ad5697279a5bbbb81805c6b6a1a429f25a112f316a493608187c9cf99c55adf82c533d8d3df9b793ec55acfcb8b6e7ecad148636ab12d2f78d710f1dbfc11cc35741e3f4e2b62f53c863bbeb62c6af9e6b4f4c87dae4a43e2534e65115662cd5c6165b886623319bbb316e4757e694c7c15277f08a6b178d6220e5e82e22c29dc81b264c6b2637471e18bdf3ad1469f3371e6f3c0fc4b5a500322746091acaddf30b1073c1485b9a1a2ed371af23df4eb626204db2858e036635b362ff0ec1fbb121005efb09cd113d09563e97265423112790e33a17907999122609044166d60f31dc2edcc2b63f0c0ef057d0b093c01f7051d79ea536c8b279f80ee2c40cfba37f2f654a26474f7030f0492739a9e97f182974f08e3869fb137c62c9a85d48021405af1f06f5ba47019a916a800f14dd1e73046568f4ebb93a96c9561a7a382d38b4c3c1a6f67af26fd311d8352b84dc6fc117e49d5295f70f97a56340ef9d84619bcdcb2d2a7bea13f7d495e313830e111218a59dac701949452fc26322cda1358d77d0f95009993c03f7a67eff14fc1368adacf7bcddf22a4d7d8ea6c2b2ca29cd9fa9644cea3f1c4f1e5f5ce867b63033aecbcf7998f26a6afaadd27bf27a50d382b460429fa07e6e8f45db3d4e121b38a28cec19044f656eec31b868ee675b5bf0d094e3e98c2db0b6c2f7213258470ec80a1e7f666a31334ece2fd158e65cf7a07f4c7d7d384f155e3b634258445f4679ab9fe349dc3d5b0261941b5d5c58cf650080b20cc975025933dea2cd74250a6e744a0385404084420f84e45bcc48fe1c6c23a73b5352bddf6176ea026528768789ace911544a25bf03f51b4e595a72141f799eaf8246c1c68d2323ca557aa937fb6be579310e8e49b798c0b6926e7af8fc291c1475380543eb228330265b977761acb63bbf14452deb55f7e9850a341e9d1cc67f976c3d3d8fd69bab6d5ddea3d0c8e7c1da3ec61890b5ff35cf1b431f119b6cf56b1510ceeaf3ca95b0664072cd6445b20d0af9db55aeeee26c086d7318bbbd08ca18c74447e729198c5cc8f6f57203346170edf96bb7b4e6fb0e3cf2613eae6c23483de62c8af9f533204ff8e5f7edfa0538ee57323c62ed9c1e4938221b7aca0b34e7c151169f13961d2f813f059e6b342fa0d5159fc30d391566ff5f447dea9c7ac83ccfc8ec611221bb04331c4b96497043b23255c4a67f191dba3c629b6b423ec3f4f31141e07f0da9f7328743d69d2c3956c790313e0a38958e062baf626036ba26ad32bd84a705d36690bb1af263056cfe9b761e374d529e25520342f46a2f1527de36e78b234aafc16398cfc6525d2b01c0b0c7e9180e74ffd0e3d6ab4821039f580decd2e120dc5026e09ae6216379afd94034ba682bf0305519a4f9de04b01b92c5bd221b03f565081080c4f9175490be2b82298645f00e6b57100340420e58a2c078558b466cb5ca52b624f11405f7a5393b49e0290d51b201f435834593f8bc5b2b6bfa7afc8f31a467ae29034596141dac03be1b1ab623948b61d64d3255a4874220037d0d0b4482494dcb703ba076e18e8e055d9980a331a55b1d573a2d4f01a7455e05b2a5867f1d54046a65c44a80257a583ea5fe123d822d284dededbc779dcd170bbd8f6bcceb7a8545c1c6f52624358c65b970aefb7201680586aa7039c85377484be253c5424b626f7c7d27a25cc7c274a29ea858678d9a45038a08ad7f6666008e21cb0a19cfb231d60e54113f577a42f7bcf901e4550d0d48e6a6d7e4914a3bacbf1d200a43f97d3d3446174d53316ffe6047bb4caac55d30247f7b811a5432463bee4d24865642954cb9617714d773586e53e110b0f500fabf512ec275ff577687a277bd806b7b4876af669bd82a1bb4f42c1092c9bc0930ee46e4d885040b4b10eaf0725fb5282631d578a0a3642d15928432b7103b3fbd54b930c5785c3c8f5be57411c55613ab5436c39e35a9738a18ce4500d2533a2c545338e719126173eef8047626c024e997dd0c47ffde79ac45bbde46a13d6150dfb6428de1d46e43d451b03ca4fc4e270ca4970ab80c2acd33735ea1cce52f4f68aba922fc4d073d91b1e4ae714a06b69348c5025aa908141e8aa5918a330eba81ffa550a57123a553a587f8d8833e838658f17ce0d30bbfa2bc4187f2994ea15dd5d28e5b495c046c1fafb5210f145d36ddf4cdbe6d26aef464f362b2ab4cba56e59b02b1b022d0b4f6e80082c0626d571cafea5b7f1d11517f7d40c24048e9930aa1c38bee537a443b7e4aa9d82acbfe79f46a039d152bfc54abcfd29d0c8c52ff9387e1611f69c835a52000d26686abb7c1c3ca4c13cedf8839c8bc7b59a82e0a9ca96bb21664a5a3ccc6bcc9292bed327a895fd03dfb143b57a6d7a925458efef2f635bd0da232db9692e62574574e9c4911091d48a2335d6bcfa490746271a6e2cf774503c8d3a5213cc08213f71ee693acde2f63c410a0ddc25f112302bbc4ad9035870489fbea6f362e06418f4b74fdfae40b7cbebc591fe7dd3969c28222f8852fa33e97e21da8c99f996a0a5f4e77eb142919f9061ec65d46537df480134ab71e796640225157631bc309671356f98c67215bf721b492e01e312d4e024384d7c63f515aa2a457ea00382343142e709c4d0973a148ad699519795e876ac9dac0ad3a3605a296ce63ceff409e14c14ecc7a9748985b7577f84cc064e8ff940f8935b92b29dc7e86e4da3531e07cba3b9865c35864a083f5b51dd95089f1d76834d62a2cceec77a9f81d2c726e5967846d7a344dc3ed732ab8aee146b6cffcf302cdfc4aa8e66dacee1a5f45b6299bf50a7c2e1b17483d96f7866e1366d4b4a635eb2d59316ea6cd13baf91bc2e1b9640ea5a6130d18aa16cc20d00d2b23d92af82c4d63ee0c822a7c22373f3481aafcad1e1452d8bc70f43b968f15c9ca6a657cde1c249a93fa1375fb6711ca21fec66dd38535a7db70716b3c20075fb4a55764835f562f1ae7acd6f5d80bbaca88c27ffec56f4306262178dc9972a0b54a05f0e4e04eee35b2553eb0c30868111123e4057c688f870fae8eeeb15087ac62212c429608e11f3cb8fb5417232ad79a54fc6a6849db3a41139832c51192fcc7a31e74050266b7f132c8898c053a6f88ee86da033b4f465252b9dffa37582a0507f0fb314e1147954fca5c5064c7474c07bbb4976d0003f165c757bb7abdb9db9e8385153ec2c5003290adfa5598b71a002c02f30b diff --git a/Assets/Prefabs/BasePrefabsCollection.asset b/Assets/Prefabs/BasePrefabsCollection.asset index 582d205b..ad739299 100644 --- a/Assets/Prefabs/BasePrefabsCollection.asset +++ b/Assets/Prefabs/BasePrefabsCollection.asset @@ -25,7 +25,8 @@ MonoBehaviour: type: 3} elementFolder: {fileID: 5524510864018492689, guid: 5a9a2433580c2451b8200185cb45f867, type: 3} - gameCamera: {fileID: 0} + gameCamera: {fileID: 10333948111691042, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, + type: 3} track: {fileID: 8828428123186639208, guid: 20234a708961745eeafa459c79524348, type: 3} pathNode: {fileID: 7248180033186031075, guid: 609cdf441cd2f4c78a430e7df78a40f4, type: 3} @@ -35,7 +36,8 @@ MonoBehaviour: defaultTrailMaterial: {fileID: 2100000, guid: 8af6dd7f0725540388b84a4697118bb9, type: 2} tapNote: {fileID: 8182686472733940155, guid: 9b2da5f6faa9c4d2abe557fc8f79f806, type: 3} - stayNote: {fileID: 0} + stayNote: {fileID: 8182686472733940155, guid: 42665ed72d40a4b349f0cb89f825437e, + type: 3} holdNote: {fileID: 0} flickNote: {fileID: 0} tapNoteSound: {fileID: 0} diff --git a/Assets/Prefabs/GameElements/GameCamera.prefab b/Assets/Prefabs/GameElements/GameCamera.prefab index a858469d..a5f1981f 100644 --- a/Assets/Prefabs/GameElements/GameCamera.prefab +++ b/Assets/Prefabs/GameElements/GameCamera.prefab @@ -57,73 +57,10 @@ MonoBehaviour: - Name: elementGuid Entry: 2 Data: 702c793776b444d3ad481072561faaec - - Name: timeDurationSubmodule + - Name: submoduleList Entry: 7 - Data: 0|Ichni.RhythmGame.TimeDurationSubmodule, Assembly-CSharp - - Name: isOverridingDuration - Entry: 5 - Data: false - - Name: startTime - Entry: 4 - Data: 0 - - Name: endTime - Entry: 4 - Data: 0 - - Name: - Entry: 8 - Data: - - Name: transformSubmodule - Entry: 7 - Data: 1|Ichni.RhythmGame.TransformSubmodule, Assembly-CSharp - - Name: originalPosition - Entry: 7 - Data: UnityEngine.Vector3, UnityEngine.CoreModule - - Name: - Entry: 4 - Data: 0 - - Name: - Entry: 4 - Data: 0 - - Name: - Entry: 4 - Data: 0 - - Name: - Entry: 8 - Data: - - Name: originalEulerAngles - Entry: 7 - Data: UnityEngine.Vector3, UnityEngine.CoreModule - - Name: - Entry: 4 - Data: 0 - - Name: - Entry: 4 - Data: 0 - - Name: - Entry: 4 - Data: 0 - - Name: - Entry: 8 - Data: - - Name: originalScale - Entry: 7 - Data: UnityEngine.Vector3, UnityEngine.CoreModule - - Name: - Entry: 4 - Data: 0 - - Name: - Entry: 4 - Data: 0 - - Name: - Entry: 4 - Data: 0 - - Name: - Entry: 8 - Data: - - Name: positionOffset - Entry: 7 - Data: 2|System.Collections.Generic.List`1[[UnityEngine.Vector3, UnityEngine.CoreModule]], - mscorlib + Data: 0|System.Collections.Generic.List`1[[Ichni.RhythmGame.SubmoduleBase, + Assembly-CSharp]], mscorlib - Name: Entry: 12 Data: 0 @@ -133,107 +70,10 @@ MonoBehaviour: - Name: Entry: 8 Data: - - Name: eulerAnglesOffset - Entry: 7 - Data: 3|System.Collections.Generic.List`1[[UnityEngine.Vector3, UnityEngine.CoreModule]], - mscorlib - - Name: - Entry: 12 - Data: 0 - - Name: - Entry: 13 - Data: - - Name: - Entry: 8 - Data: - - Name: scaleOffset - Entry: 7 - Data: 4|System.Collections.Generic.List`1[[UnityEngine.Vector3, UnityEngine.CoreModule]], - mscorlib - - Name: - Entry: 12 - Data: 0 - - Name: - Entry: 13 - Data: - - Name: - Entry: 8 - Data: - - Name: currentPosition - Entry: 7 - Data: UnityEngine.Vector3, UnityEngine.CoreModule - - Name: - Entry: 4 - Data: 0 - - Name: - Entry: 4 - Data: 0 - - Name: - Entry: 4 - Data: 0 - - Name: - Entry: 8 - Data: - - Name: currentEulerAngles - Entry: 7 - Data: UnityEngine.Vector3, UnityEngine.CoreModule - - Name: - Entry: 4 - Data: 0 - - Name: - Entry: 4 - Data: 0 - - Name: - Entry: 4 - Data: 0 - - Name: - Entry: 8 - Data: - - Name: currentScale - Entry: 7 - Data: UnityEngine.Vector3, UnityEngine.CoreModule - - Name: - Entry: 4 - Data: 0 - - Name: - Entry: 4 - Data: 0 - - Name: - Entry: 4 - Data: 0 - - Name: - Entry: 8 - Data: - - Name: positionDirtyMark - Entry: 5 - Data: false - - Name: eulerAnglesDirtyMark - Entry: 5 - Data: false - - Name: scaleDirtyMark - Entry: 5 - Data: false - - Name: eulerAnglesOffsetLock - Entry: 5 - Data: false - - Name: OnPositionChanged - Entry: 6 - Data: - - Name: OnEulerAnglesChanged - Entry: 6 - Data: - - Name: OnScaleChanged - Entry: 6 - Data: - - Name: - Entry: 8 - Data: - - Name: colorSubmodule - Entry: 6 - Data: elementName: - serialNumber: 0 + tags: [] parentElement: {fileID: 0} + connectedTab: {fileID: 0} childElementList: [] camera: {fileID: 1378655914364111770} rotationPoint: {fileID: 373065448631755357} @@ -316,7 +156,6 @@ GameObject: m_Component: - component: {fileID: 4681825519897212372} - component: {fileID: 1378655914364111770} - - component: {fileID: 7108567356200093580} - component: {fileID: 2072332804138453357} - component: {fileID: 8132557174609694425} - component: {fileID: 854107432770048664} @@ -394,14 +233,6 @@ Camera: m_OcclusionCulling: 1 m_StereoConvergence: 10 m_StereoSeparation: 0.022 ---- !u!81 &7108567356200093580 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8526474044217039555} - m_Enabled: 1 --- !u!114 &2072332804138453357 MonoBehaviour: m_ObjectHideFlags: 0 @@ -417,7 +248,7 @@ MonoBehaviour: m_RenderShadows: 1 m_RequiresDepthTextureOption: 2 m_RequiresOpaqueTextureOption: 2 - m_CameraType: 0 + m_CameraType: 1 m_Cameras: [] m_RendererIndex: -1 m_VolumeLayerMask: diff --git a/Assets/Prefabs/GameElements/Stay.prefab b/Assets/Prefabs/GameElements/Stay.prefab new file mode 100644 index 00000000..e3dce396 --- /dev/null +++ b/Assets/Prefabs/GameElements/Stay.prefab @@ -0,0 +1,83 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8182686472733940155 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3154956539503596607} + - component: {fileID: -8416968328479360239} + m_Layer: 0 + m_Name: Stay + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3154956539503596607 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8182686472733940155} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &-8416968328479360239 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8182686472733940155} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1ec53002feb264ae7b2bb0386ac37ad2, type: 3} + m_Name: + m_EditorClassIdentifier: + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: + - Name: elementGuid + Entry: 2 + Data: 00000000000000000000000000000000 + - Name: submoduleList + Entry: 7 + Data: 0|System.Collections.Generic.List`1[[Ichni.RhythmGame.SubmoduleBase, + Assembly-CSharp]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + elementName: + tags: [] + parentElement: {fileID: 0} + connectedTab: {fileID: 0} + childElementList: [] + exactJudgeTime: 0 + isOnTrack: 0 + track: {fileID: 0} + trackPositioner: {fileID: 0} + noteVisual: {fileID: 0} + noteScreenPosition: {x: 0, y: 0} + isJudged: 0 diff --git a/Assets/Prefabs/GameElements/Stay.prefab.meta b/Assets/Prefabs/GameElements/Stay.prefab.meta new file mode 100644 index 00000000..cd0cc609 --- /dev/null +++ b/Assets/Prefabs/GameElements/Stay.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 42665ed72d40a4b349f0cb89f825437e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/EditorScene.unity b/Assets/Scenes/EditorScene.unity index 2e3f1d4c..d7cd16cf 100644 --- a/Assets/Scenes/EditorScene.unity +++ b/Assets/Scenes/EditorScene.unity @@ -4152,9 +4152,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 604e2c80e1fb64c2ba9608c11fb2f040, type: 3} m_Name: m_EditorClassIdentifier: + backgroundCamera: {fileID: 665031028} isSceneCameraActive: 1 sceneCamera: {fileID: 1464630164} - cameraMoveSpeed: 0 + sceneCameraMoveSpeed: 0 gameCamera: {fileID: 0} --- !u!1 &1214558124 GameObject: @@ -8280,7 +8281,7 @@ MonoBehaviour: openPrefabs: 0 prefabs: [] idRef: - _Keys: 526a8851fe85233e7cc810cd2b8a733faa68e71a62b99912cf2f06228873853005edfb00aa354575a31cc8ad1ac7b966f52afefc8351b636e2b71574be99675b6400dfc3607f0069e96d5112b3681f5fcf550a7f3749f10c2c006f2e23d1db370e64801184e106752a681216ffa3837998b5a5688fe724520d14109f10d172186ee5fbb117f224110b067c1b61cb6e75d9b619fa92551a320786221b3b03ec208e22f046f695e21830fcd93d5728ea479cf46b8ba7516b16ed2e96b5bbb6e20e0c6272c125d7806f67cd366983232521642549cf9088373bbcb047a020454d5bb82aa5499ca2e04b4891be89dac6ab0e659c5a08b1215a41b815970146d88b119ec54e97b8c60707cd2b47c307f6a055723ad0f074e03e69319b6e78f521fa20e22f14eb87ebaa2c5d9ec5792568c53e74417380a87c864288e4671d588e1210db981f281d4a325d1a036b29e53abc3829cf12c86a843666a9d2726c53c784328db49f8d499d214074d166a5105c5d3da29f4627a1da7a5e317a2d1042614f5281c64a6625b57e38c6bf413c35ce7d12821326d7a7c36313210e18f42f147d60db1f64f3ada3bb2d6666d31a094491222bbde8f495825a4e2f05ece33b3881253ca117543370bf2531ac8ebf10b7f565a03ac9712b88ca58c516c5a7b6d8f161e8f9dd682d3dee657e0ec3e9f39a3e76118743006e0ffa3a958fe6b6ca98245845d258f66aa26d222a2ff31dc5e16529d84e972e95f1f208f318fcbd24a42f1a1594d13a0cca1e4d0b9a28c0e4238a4cd5432183fe0a3d37c5600352a5affe32a0f1cca64d60c95d6de43a2f1ab3ec2f8dafe7e182ac1c0b579975acc6cca75b9cf61ff356e4ff757ac4f0e2446c5178b3cc3b0938e3500b2c3eb04c15e369388d95cb10d3df8656508d984144c6391548fc5f9307b1937f462b1e94944b8a5d47e5baaa4a0ec664069a951142fc403ed6b4a90102e5146519f66f6d35134e18b132d9ec6c3ec954f282992fe09c9f2a9752fc7c47b5d52b06e06eab61a6d10e4d7cc274d62caa67eb540f7f4be5844b6a66281ce82d2f660704e68bd01df34b4f7483a3a0ebff69576b98633aaa8921a5ddbe04814bd97aac297cdb1235373261c4cec06828ec556592c57c95cb2c5c853ad052230733029b09f8776f245772a3ca0276dcc8b833ca146a1411560f76a926a9289a1bf169092fa58ddf9c3a7517c82635364a7f4df403890f9d1ef144fb812196cd7f0c77286780f491baec2cdaf4fd482fda400ba6f61b9da4000716c29e6ca1845b5768bcaf0ecfc98bbb39185d35a921a8142041153dc39aaa1c286f97b630278db035fff6d32e0ef214326ce60b1f02d1fa31e71c6c1ca8c75d472e9349f4c45f8c4dc0c2013af81c5d63b2032b19179f0c5109edb220eddd4a554c13b12cb5d56721429066885700c558f421713be1a14442bb774cca3425cb341fcaf3fbd03ccf786c4d5ba70595a869cf6fe72c22325567a5649773f2357847af0759d10313b725cfe3c24772aa470214482b6154a356625d3cfd5f01ca892d756a72e68478521c260cfa05f49dda051e95883b60da9c51a244d0c0efe9d8666defd20837617d7266b7c4b857af913f62f77c9653c48e6531de7737b6edf43c1fb5c7c5200b0056ee483116cf9b411d5add2ab42d68210eab747ff3c96d3a504da8889e1b9f6a76e44a45824db5863649a09878ada45b093fff39b97a41162843c42da16cac080e6d98e7aec85f367b53fb8ec0f6007f0600beb18fe2b7e76ee911c7c76ae00c14c122f29acc03601a51f08a4016e1082f6d7eea356c2d4766a7c4e03aa5e33455a9d65f214d9d8402a2681f2dbdd87b070a985bebf6d6a81097a7bf6f1b653f6d44ca68c07e191e3105186bfcf1e65731b726cef277b7a02e2f4f8ba6de14e73c29b17188403b8622b78df10f42a4017cfff026423332e5732a39eecea4c4101a0158da5ca71f8e0cacf1a805a8b07076b2f15811115bf709cdfeb27a2a54c77a62f3f016365a2b209de610da2415e4793787e44c9401f65bb01b6f5693eb1d01b923a2b5bf5a3f57c537732b4a1ce41e1dd3bc5c8f84196316b39ae5142b724ec80f2101722eba6ec83b11cc7422a66c365139bf2fc07134f6c0358c0bda930f573d9dc4051c541157fd8ac87b1d9952a64ba6e19ca69e2499417fddbe2caa24c1a561f21387762d2def8c67a4f06e2bc76e0cb0d75f9409b22d34593aa82d7ba7ae89207f8b652d5f423bce6076d56121e00caac4b88c2c7dcb083a94c883285aa4d5c6ce0a8162bfdd6753d123843ddced44e075745b023dbb7e5b896e8269c01328054c9b302a1ab4da484855f13539de7736f3892f04d9f6479188c48f2cd00d4fa9d9c99a7201753abb270b443240a506dad2e62f21bcf924dbc733497deec366e53a852b5d6e466fed752cfb7898b19bdc423679483d7065d2ed753932d34255148ed5933b2f9bb6e6a9e268170b63bcea6793c524c3515736dfa68f07f4c3e5cd2819166dba29f321139f0d5a074dc689b94fcb3f83cf281fd236e5292abdda6dc835402586d5d0c1605cee625fb13d2d6d18c0428f254a59f1f69a0ef2e209aa3a5f6e2ef35ef170e07360261e3a3ede074843437e1dfbee809a1671c43e2f82acbcd800430f3a0f274f621bc623782b35791639d9b3d6a7a4a251738a9dcae15d1d2c629ec1dee87cac94318016b3a41242a73e5469a8f9e5305b1a9e52653be5bb871d51da8e739a2dbc794808278eefad6148f68c8cf374337c311ef987ce12cf173b716a0b132fe4277edbdd4e22f732d40ef01d45592e93a97ca93fa95e5a129817e09c00a6478b8824b30bce51819f29142579bf2f14716a04ec784291717a27138999bca5ced2397ca56aa623c557fa0aea6b7c2b2d37d36ecd046c4031e66938e3bac7e8e2834609b33cd57e178eca6b83c7852308adbe3e94d428359a07b5400093c0f470edd76c4e79870e9eaba95c32283d069372be6e79067bb6ab7ca454796a807a3129056bd4516d76698e182e2bcd6bccd4d0d55bd256e985ffc3c546e2bb353081161d28e9f2b17c68842a61ffbca8999ef095525156bae067ce736817b45824c349af41156b1c1de1a70c577fb57abce4d3570d25e2df2a5b3cc1489ae5994cd4f9624895167ccd2c878e56b79ca0e2b6cfb2425d4b4aa628d99c27562c7d03f23f7d7819c328ce578ae1527135e0f7dda3ff6a97dca81f440971457a5478000a8b6376e1d8360c581b142d9608e7a1456bfa07b11db9cad86b165ea900c6a33576f6669b6509fca26e78181e3ede275a8dd608e99eab8ab79fb62091b490f2856d9b4217a75c73f0925d24f926913197ec393b9de88cf0bdbdcf010bcbb3426c6c6d7e45accf53ccbe9060865688a783570c0b104493af50b47d63cdef662cf94f80351be43050530347601dddf3f456dd262d70d44b89935d88372e86a8cee0b3492bd7bd8d9f26bbb70cfe339272c1880d54ea6c44dbfb085e779397802554e9bf30d9e0e167af78f92c74a879380f050748667067538e266767fc005c1939ca0c1ea78a5417c0d02940b651858937153a686575e98014203e3ea29e6086c3ac7102284564acf772d0414ace1d3510e7224a5ade01287e0be64f896976eb354cd453dd6c74b85fa2e828b9d4c8b9fdf7d24683ea1f5d51667f1d5e15238dfce40c6aa371127c5bdaaa470b279155bdd3ad6d9730674a2c76017713a8a6b681a4d32ac75e5c6e094fa25e94676779f8d5da313d6e0934833ec218748a6ab334f3c665ab98e2e4d0e388478e09b6c50e887e177c2785ed64615806e08b1e6b46aa6d77d33232a00d0a9e1f09ae3d730b78d804f67dd0a3864c364a40dbc45b01f48e388ad267be45e0da793a5a1c4adc1a0557652262c47b11fe1e96831e163005de15e0fb03221f68b5285849dde06880275b1fe340dba9ac4b77d44955c8fff1aa3ec7ce951ee81cc70492c6e23b11207815a53ccaebba464132d331f694d66968042f655630447ceb4524f930ad89858d646db8ffaccc4a5544b8dbae93ee5fc7221100bbe767782751d39f505d3e46807a33ea248231afbc4820d464750dae792b485f35f3da671b68c470c6f7a0e967032bfc144474afdf073229c26b55bebe32404fecaaae93c74ce2f2e2b42f0a3340f1adc28705b45160767200e0055d2a29c8d707be4a4cbf309d7b188aeeb4396969bfa396f9cdaa0a5fb2ccc36c18b83e1d0c7c0612f18a3d6df22581ccdb4f3ec869b63bff3fdd6a7eede202e67d624acca95905cebf8377cb9ad6f957d6c17c9c7103fc9e83c122d0ed77dbf077a81090dbb52382496f07e63f079a15d6c254af5f9f58805fe84e95842a43c8a098540f3976cd731b00191ff41e2175a4c759503476afe9fe6e300d9847f88b4d2f7928a47323a00b1f6ca17ac673be392639b47c6c03e9b7c20fcb46da0c63f9a56c2597491a17ebf95a54e25163c4e2ef2b8ff153f745cd9d20997c11191ad330651f32975683415037232d20cceb1df1072bef44313d81ec1af4022af362109e2f2c046a22d133343118402fce0841ce4eea74ef6b3011a50766a47b3c19c87847a134bf8204e4ed2a61a6801b71d94a7d2505286ef155af18ae4a6e96bb747f19561e72b38fd7ae012870ac4269fb76048deaeb8cd4eec2230a55a2690825a3568416d70ae562427dd5bc4403fc346500705927a4eb212c63f36e41d3df3e7d298f24eada7da53229579148e75640d90c0cacd20fd3d11862168be888de916169c0e48b27b6757d3627fefc7d6914ba33b8b137cc9492aa430c88f1098dba073930de2672b5b1567fd6f7162a2a64072a451ccf2c5994d52e5bbfe973432468198e568f78da72731274c4468ee18fc367d4dc573e3c894702f74d106b78d3cd639abd3cfef63523236f60c0820b69a9687bfae382678d6e451af4bf491b069c3f5b7650edaecae8503862d4b8df032e396fa51cfe8a26f82ac953246344f2490055701c155611592b394b9a3c1ee2f55a1bf1f247ccd2d2694ad889b2a6521d6ef8a3102955feb74a8770a5d5a1229266ec4babb2d341af68b75b7f20341902746809447bd2cc041cc65840a4d302386b6bef9ff2fdcf41490c571f4e8127805e731a6c98de179420d656ef8a3a32d12f111d50acd2e01727d13d91114c1fc636929d3615656a0a7bbc9bffa1e8fa965da8113e79c5a1a532ea7e69180454e3301d79c190e8d37329dca220b7df4ecc352b1196c41eb28f0f07fbff1c2bdc8067b8cfbd62bc27462b9e145567c25c1264b234edf3be1e113122b8fe0f916a78044273957140d5010ea7ddc4fa9baa221fb56a55f91470e032c3ed7b7ac540e3304aa888e7b67a23199892ea67d8a8886e3c1377a78f0b3b603c0fdb93fa5c2e4a7d24561caa96003a473b91a75a470a6a98d8a779cf888976dfb7c7ef7a257b79309bde95c7ed4c3e31f237a3cd6f326f0a0bcfdefe65af544078f6f57d7bd96bb14684e8d850aa19c651a98b6a058644e66f933b98d3f00b2986bcc9080f6c13622ba77a1bc4cc0bcdd33418335b655093c331b81c194e667a0d386610db497d85bc8c077879970f0f788481ef1da14bf438ddcf86935441de988d54da39ba18e886f1c49546fc655bb9abaac6878c5c94128d280185080d674ae51107ece948329c69750e65e03b43de1680da2a9e6d339ae27b70de8910f4c85e45f9d5f44230b5c90e524e0b3bb3cbf2f392c067444ffa037bccaf833cc7382a1dcc2e985810164f89baa0c11e6db27652245a744ccf5d09012d86897f338cd68b7928087baed62a36f9895535a8909556fccaca71c2da8aeb7d87841910cf4ee764334c589bab7b57cc374f33e8b0b4bff010953f3aa8bd48d085bc6c8f107a773d9bd8085ae78680199d8806d542fb322c3bd701c5f052438afb772099171a234e388e4c2754e52869eaa729cf3be1ed7e1066351884c3d112e46d5e6f651930b7ab540e30b7f427a95067244828744e1a89a15782afc42d049fa043e686b803d1777123e6d31c36058ddf691518771690e1bb19c4c1ae08e7270a3159380d2f096af52e49ae98b99394ae0b30a5bee3e9482c38bf2dc0f03696c440c8eb8e3d9b0f7256ddb7321eb7fe79589046c8721a11e50ff42a8e2455fb084deb57827e23eba63fe7ea3e5f84b41043a71961f0ce5126253061b78e7fb1fe1dafe4090f80f77b5b5f77a5faafbb6b40194bcb6f5cf81c67325c4fc13417bf66e95cafa0ab01c2616a42b0ba08de2b15cef7a8ca7d6d7a48c7a140dd473d9076360c11520bcb94177895fbe6b89da010779b0bc3910b1657d6f8d809c1e51a2db23983fccdd809677340ac188e6c6f65425065ac31cde52b0b4684ec0d74a95cb12999f1219ddd6091a34f505efdc96a778c388f7f92041aada8f9eca2098a1717f73748fa9f7920d239e571826b330710ef76803c19dc1d267e4578a3f1bd652d666756341165281418be46ac9298418b0e234c6df62403e5e6dd84a5ff83207c7f9fe8d2893c21ab6192dca5698e6d19fcfb4debf52d37bf9b8fb2cb1f7d12632035d30c5091144a44a00b64485e7c3140f88e2c72327c9afae1cbeb46af06e4d646c1eb0bac6e8fbbe0957e22d632957122408c9b7a242f3ee5210169112a5ced08811d51173c1498e218ad38044230eba0a397106d475d2293ad258a6d25564a0d94d4a7b01976a0d20c469d880ac65d0dea36916d6c5a4fdd3fe5c56277d4439108b966e8286445e5c71c857105ab9d738398585c3b235fc67b358fcb4e3e5b38030c80505f8c1b790f545aaf2aded7ea8238e50f2c6133d4e7d39ca10cefcc763eb292062b112c088221b218375064a6f285b279584b0b643f553733108693df771b8e887022ea8ff32272f413b3f3c7c8bd6b6d5f46ce8abdf6468026070803712d5ee33e24caeb90be938541ff778b61706a531b2580bce919456724969712e6917d1912d705eb8756fd1e4d4948bd6ed2e296715c1f97ad1bcd5769330f2656a56bd27e5e798a6a7fcbc427626e326103d6f779d37cbe4feb38d15b5c55ba662474f323763ecd4b6d00f026e4be108a00b86c09089f8329ad839369b61af2d6efa2fc117b0fd742a342e62e736893d3d7b9a515c1c36dc4f81cd00dac6395520e1a3741c3fe060f90aeac4987b19c151667416f40f7684def3ef65fc13512f827c6c3729fd495d6c0b4a5709048b555461adb4423269305828430000b9ab1a5634bdd40ef2ab5ebfc172f7451f7dc38f44ca559a53229fecc4110240596ca2503000c2427f6671b65ef470af71e577a6168f5400ca800cede208b30c5260e6c1daa87511547a1154c3e416a7934f5eb998a856e74f4ce53ff24fd0595c81e74014cd75e59579ae6381f0b32986ab7ede988363aa09fdf1179db5010b56455eba24a932d5d979142ef9f366c00fe13962315110c91e4d3616cc5e57e068a30d4ca1f8f4dd6899052f7f44a01978cee8538451360adb6a64188ce3e684fecc49a919d5d1f913a3f667a40ea6299d2f8f8b46bb74c636f7e7e392f295bc8f9a0e4b8e5920730cff5fe06ade56c33bb25a539c8e246a51037221fdee56111e32e73e1ce1a4b3ff1278460b5524a8a12b2f554ce9500eaa57737e24bd950156c11dd818e75022a8e9ab75fa21a596382980c2cef0c414f2e8a3b57e369743587910b5c8b361888b5ccc634dda04674e22ba04c32db0587acd350e64fa645dad97d28eff102284d80847622460d718e44af390f09c167649684afb7e531381087a00e5ac9367d20fc133249add740a062c3a29f6c351c651b747a894e2067b0b499645a01e83cf1cde6ed0971e14a41bbf0aade71675dae7b56c1aa440b2e23541c02b9c3655fb4006b92acddd929024144bbc135ba3fb4c3492055d86e52c2b8c9b555df917daa6f0a21fa2a4f2e5fd3419600af921167234a82f2794b726ebdcff41324d423b0c664303fdc3a778be53d7d6928ae71b524e487d6eb8f2fdc686f4805bbbd7da86547c714c35042a23df12748362346f1a156c7f7a40563ab6bab29930e8d3027c025cf6f75850ed5a22914ddb6785abbd7c659ed7b8a0360e41da91826af4f35de0077eeab2966d89a0daa850e790cf3516ebb4734425c4a282e54922f2752f3d9dffeb6016b0fae6031888835886e5e29b6c7b7f308009da3c217da7df95673ba9d5fee78c30ee65f0ee602b9d47fb09db1bce5ee0a00d2df62123e543530992403bc2d18a329123a1ea71ade021dd042c7772fb63c7ab09d30cddad64d6e2add7f27bd91ad68fa88a9abd063e5501e80bc037342ff4f617e0c90e8d54e3c14502f07a1d6253d6aa08e48a018b54d491f50a5e6b6046b233177c462c2af25c79241df6d130e0aa6fa99d2b4b6af48374027f8da0bdd5d4cc32ad24eea9f570f97f1cca66b4534eebab31fb028e06c822ffba2e9a7ff45b6e493aae93bbb6f9af1e14ba87bef34fcf2e794bffc0d745c69ab821abdbe4969c8e93d2865b42a752385bf4695c3063fc69ddc8e930546d71f0753e63e8923ce681e206d4ef360a8110ae281cdba385b5bbdace01e442a3d5decb893f8ef4b545772504c1b8c7247017b60621737089b3107747f22bd51dc0c1cf09ec5325022be8f2a5a6aeb3ecf4b65dea2e4c82427e353c4ff64cb7615c42d58377d100bcc33c15c77f25205e4babd3577630b3ed440168219f64f42f31815963c9207503b5aabd6a6249c18c9a61eba5969004fb9ee2c789492242a1c80b06ff717be50b36cfa1db835980724d0478d286a165ce69b21b2997143573681ba25732c211f646f6dc5641d077ca9daaa3cb468fe4e6b5456923870ea2450ae18c8858c6c08b028f297d8dcc13793a408bfc606a2618009ba1fd68ee62a599175b6053ff61d6ea1ecdd5a9527726ce1da2286561549f548b870b8742021bd380e95ad88c3535314aedbe53af914cfd2734897f74e0384d355b10898291d3ef2e0dd796e3b1b1e86749b05f12e4650a33f8be869b839e90b1981dd745c46156e610da5e4643df370d6ef7c4c0174fd649e9ba661cb2c3aa6c78588bcf956d6d27a6970de5f34f78267886c364236f3717c86293f5f4b5dcab9b453163936788019aad29804233d2d5cdc06bd407016016de8c08dd3698dd1f35ada541e0e44620013b013f65993a7b5031d7cba608b48cb548322f604ac7cc85b73a0016fb495675b43d2402af8c75519d8cf4c11e96c1adcdf8c6e216cfcbf2ddb52cd0c5bb9b078eba1e25d8af54d4a770fdc2330b744e0bbdd4e410388c73f926d054a6c9e8c6e7f3b03478abd53ea3f23a95b209c5d9296adc737f70d848c97dd1009046820267c915b6bbb8c6a783139812631225e2eca98e142d754658cbf90df6731a21057bc30274ef9c84e23184069428c5e5a747ee13f6c86ddfcd1f6e82b4b6bd2468e28296901adbe560ac6716d0a5d4876ea0471c4019e5abf58082c97032fa9050c49353a01f6a1c74f47aefd354919b3373616445ccdab782e4a6a120a78d513294d19791340174152c0174e5e4c345e794d13ed33566936366fb9b2554d574d55512d62346112b9f17f5bdc22d74849db0d1bb064e4e6e6a61d506675d224e50c4b614d1492fde55d0708af69961aacfcfe5ee932e66211e085c9c55227903a0b07b9a46e7f8214402bb6de623f1e5c5bdeba5d2dcca3d4dc2d14ea6e0857778404d76103333e0b5c956505401a10e4ef5c6f3042d6d08c86c931ea726390e0507706ff52a0ac538a933d5645fe330a555345654c7d4feeec0bdb791588310d54f61610664e60051edd993b7bc53a96f52a47e209df9e0c581f69b2086cbda2a2ea985b337fb5d4317015c46fce277d3175e7cb676fc2c1a196537425f27d077b2c4e34544b385f641da77957e5aa499d965dc71bc8f266b125e31d2e0bb82f7606ef4e5843b0f897872b493545bd1bf9af30a24f843bb211345bc43b15ed87a215153e00d2216f05e07a63186f760e1d8a8d2e16bba7a043638e9263dd71c72675172669cad6208970be4d2c19a9a46cb8d49f275a9ee69cec23c44bebcc055ad1400e0dbf55d4d839d1061856374bba5b830d5aa429a74d0d848d08a5bc7c61339be514308aa04e356c1a43a98a7574396c8e2e550510a9164da14113cfd85bb1677d2f454a0a5cd01af12c8427fa5248fdda77a16a1771cff40969ceaaec1a66c03614767c9f03f14739566925554f5f218e6271da857b3c542541e747b7479dacc820cceff4fd96cccc1d5543f00a5e6f4c0d57638c02646c1535a3e0eb38ff80f3425c351b4e158bf83da6a3cf7f452f9f566d3b10c6df394437fbd5a54a1f6ce22c51ae66938a9b22336b4e5bc19c95f02e8142ccc4702c636a7a525340e6ae1e3ac0a2d0f39533e02ee723ced16bf92b661b89349ec75962234bfc0edcee621943302100f9c5fc984b23faab93fa35d57f26ed5a6fe3bc011a05f43e9241bd1c4ac4ee5eb606ce5e1622807bccadcf2815d871fc234276d97320e6f4d1be06091f18f6d00cd61e780bb48e6e9cc732372be4ac462f3f07f739c8d2d6ecc230d4278a9bb5b7fe1c3e08e907d7d0e5753b52e3df4b95b3c7a1100169bbfcb774b77c46b8edd3837fd3396e3e1946dec81e3df1d7f51d1bc08b3d10669c6161acd20a2d9cc6dba4801f0b5941de172b9aa27fcab738c0cd60f93646942401c87bf669f9f9983d7592ac258f1fcf312c96a754f7e3d5e71b6c287295fd2138a421d4224b751f3101650a36f5edcd526e38f5501230f51b5af0b2732ed92c8d4c1a35500b0e1948898aad6e266123f6c6851e5df92fda8bd446373b28935fdb929783254982b99fe15338777d780b0732445257bbcf867cf4c12452bbab8fe31576ff41e5483f493ebd3e5a089df1a4c4cff71c420897611eff1a09a80ce436c45561057ac9ec7b839b9602902b7357cf808e75a3aca10ddf9e231b6248f14ba2751e5efef61d8dbc72a05a7394f1497371d92865a56ce84cabda24592e2133731e5a1bf4eba7279dff46154dfc9b4bacdaa82b2119e5fd083612531cf9338d516ce76f11f3aa78354d7464ec8134484625d1342ab2eda6c7a2ed2a0205bc69cd2b9946e40a5c9f8420612c5c7eef79fe36f309d80049fca572c94c202b8acf6ef4683f1811d3ae7d8e4709ae3eb4b74c8bd338073abe328b6a1371411080599591bd6717af61ec62458c4946bf551bd87e6754013c36cbcac94b53019e9293f1128c40fc1ccefbedbf9b3e518a86b440d0b540872aa52d3776ce1f044a11fe28e0c53433141fbcb06b6741a0f77a3f4296123117aef33893a0f7794daef7a2ad9d1671c552812bb0f88f1bc3648c3ffc8fdc6dc81fea292c02382b0b996f0274c493031ff7850fea187e0e3e0ffbf72d3676412f76953278c061377652e0e877725801d0895df314ec58505f2414e3f9bf0142f14ecf14a63a845d6ab26567c7696835b7fac8b69469561ad0e5919cd5453034abdd07d65cbba50bf344769d790f760abbdf99f387b8d779f8b445c0a8e788501d6543169d6d2772602c3baf0c465e3f708657b4df24bc0cfa7132efff9a4c0a44da7fec349f9329faf36ca583d8933ded7baede6f2b8e07aa361c2c3b37730588b994cd388df50e1b80bbebb8178921210b2385b7d585184b77966bbbbf643e7f99e236bc3afa7b70bdf8f0e77abf6daefa4d475bf8bc5cc052e74fdb9e3526e6f96b51f9c0de18ef57eb06236bce2fb72918b60dac9978aac18a96ac54602e88d2d6e0e5116613e3cba7fcf249c62c211697b2867e186d6d1c58c8c9b89365f7bc8ff542af1559c205d242059c850c7849473c13ec4b0ab96973c9b89e492bc9be0c502644912ed50e107f5429972f974c4f807057511cf7665054dc21ed244458f43c562acd432589eedd0335a11c005dcd93b1364420f0d7b8726a19f40afd343bfb345bd93e1993a5f9462f1f2cf892acc6107f290c14d42c2de240ae3e82071f310659175b848eac45dc3e663f497495023a45e57df4d1189fd154a359be1c88c0f011da5156f8bc7e2d1bcf2a6fede56eaaab0338ec9c3c3541788a27330587bfb5a54e379b4458320263aa26fe12f241c6eefc121a50ad8c4d0f92226d95b032a38ee03761522c99ad2eca4fb99ccdac95341244f68b599a073d16754dc95f68eb223673f329a2181a95bf471bfcd4b042e58c5ea7f53c18344530233cb64ce4ce616325d440b96c91f92a734aa1b50412c6b733ab413e091ae1c0385ac654d1e2a4167c61f9dd012b20cc5e1fafcd938f2c1075ff188f10a06d3f0e818112cba5599111b832640ca4b85f758a1fd63650ac377929362f05ccd8e232c6137f55f2ff4679a96aef0674743d1c3ee94bb8a5cc487bd86eefe4fea7401ea837983fcf2d274070d834b607467463eb1ba0055548d31d4d7d8ea6c2b2ca29025933dea2cd74254d92259736e2d552c117e49d5295f70fc2e37ebf75647c4b96c9561a7a382d38452fc26322cda1354072cd6445b20d0a768789ace911544ac61890b5ff35cf1b05af1f06f5ba4701e3f4e2b62f53c863acfcb8b6e7ecad14e5e82e22c29dc81bb0b6c2f721325847f9db55aeeee26c086eec31b868ee675b6e4757e694c7c152e186536baa968f32d382b460429fa07e0543eb228330265bbdf3ad1469f3371e0f1dbfc11cc35741431f119b6cf56b15204db2858e0366356f3c0fc4b5a5003297a56340ef9d84616afaadd27bf27a5073046568f4ebb93ad371af23df4eb6260eb6510ee4edb411155e3b634258445f38a28cec19044f65bddf6176ea026528334ece2fd158e65c6d7318bbbd08ca18f057d0b093c01f70a937fb6be579310e264c6b2637471e1877f08a6b178d62202974f08e3869fb1390e33a17907999123cf2613eae6c234825bf03f51b4e595ae7c151169f13961df0492739a9e97f187dd63cc2ce7f8e2b0ec80a1e7f666a312f316a493608187c03f7a67eff14fc1372141f799eaf8246edf96bb7b4e6fb0e5b886623319bbb319cf99c55adf82c533d8d3df9b793ec552746091acaddf30b8636ab12d2f78d71f23afe0cffb9b87bdc2edcc2b63f0c0e3d3d8fd69bab6d5d45fbf1186961ad2e1218a59dac7019492f654a26474f70304c87dae4a43e25347af8fc291c147538c74447e729198c5c10ceeaf3ca95b0663f1dd9790f38fc187c62c9a85d480214c6b6a1a429f25a114938221b7aca0b34563e972654231127f80ee2c40cfba37f33aecbcf7998f26af7a07f4c7d7d384f341e9d1cc67f976c005efb09cd113d09452deb55f7e9850ad311d8352b84dc6f1f6cbfa3c0c6877126212624c5156a3fc4853aefae55483cb362ff0ec1fbb121dedf487ce068ad5684420f84e45bcc481186b6301b3c5f2a8e49b798c0b6926e4679ab9fe349dc3ddea3d0c8e7c1da3e5b0261941b5d5c58c1c68d2323ca557af7d495e313830e116e8f45db3d4e121b1073c1485b9a1a2ecf650080b20cc9755bf0d094e3e98c2d9a916a800f14dd1ecd9fa9644cea3f1ce65115662cd5c616c8f6f5720334617096486ab615f31d398d77d0f95009993c97279a5bbbb81805d812b445ff9d5c599bcdcb2d2a7bea13e9c5d5db45dc254c4f1e5f5ce867b630af51150ec45b5b1e68adacf7bcddf22a977761acb63bbf140a6e744a03854040bbeb62c6af9e6b4f1670c92adeae11583de62c8af9f533204ff8e5f7edfa053851d79ea536c8b279fe1c6c23a73b53522609044166d60f31b4c3c1a6f67af26f9005e6f6a1f91161ee57323c62ed9c1e0cf90cb59ea3515cf2cc3c8f756df66d3e978f4db8a4ff1609cb5b1e058bed59eb2bc09435ac821c74ae6d29a0d64541e3cf3f9cad7708147f80a661ac786567ea340bf1c307984a0e5a6e4c07e90667adb19d8fd556d77a50d0b76c46b42e697af14c0425296e40f3792a6db9ca087a9d7dc8cd566462012f813f059e6b342fa0d5159fc30d391566ff5f447dea9c7ac83ccfc8ec611221a5c02825591d4e78bb04331c4b96497043b23255c4a67f191dba3c629b6b423ec3f4f31141e07f0d4e361d79b2e4f35e0da018f23895e305f5c41574e6569a02df2ca091b2217e6a051c7ac358ac5f5cc9688e3d2b3c4e579bd73af14ab9d3749631e8d039456c2f3c5e9198a49480468172460335e3757fa9f7328743d69d2cf9e996a1567ccb7ec89d9649fa9b1f3b7b382491bbcb502f638a08b51ca1625aec460a260c968a78f03a73e95283b94fb2620c555af5984fbfe42906921e9c2f4312db0e2b3b9729dbf0c3282ba0920fab495fa5474e961e20a597d8937c190ed7a2a53fa8aa2377351cd0b5473e841d531ab1dc7d41770a854312795c406956f52dff31b92d480026e8d9641f4b655e2ab52aad2df58c1919b0c3ecbd9dd30cb37aaa743db6d77f9d4efd9ae424d52faa70a4116b1783006019e8f696a4bc77ec32e8660925631f7456f020080dca0ada93962d42e477640955eadb311f17410a7585160d3b397b0d849e152663f751b0222ed5c515462f56b290a1f0c0ae6d6e322b7d92e117605a1a3ac7838d8b6cb3c4d4f00fbe830a2f55c05aab978b32340ba8f43779be6dc67085552480533748d1b5f5e84ca53753817ba96aeb8733341d61acc58f5d75a81b18a67ec05c02f85ab04dc855a640051e6049e6c66547c70b0ec3445e4c4775409d03654cb61221815d3b632b0376c5a1b2e4efa65b1e4a2e208d4e6742650d68c108f3aaa5512b8dd89b97d61c63079787e610313732e57fb9362c29c4763c3cd10496057d6e4804ba61cec0867312bc94e5ef287624cf70128d9c238101369ea0a4fbe7320dec09d2eb1467fe24f945257094de8713c7ac3625f3efd2237d4767939fd49006f0a1fae5568a1067f0305519a4f9de0479afd94034ba682bdc5026e09ae62163039f580decd2e12074ffd0e3d6ab48212b01c0b0c7e9180eafc16398cfc6525d1527de36e78b234a9e25520342f46a2f6cfe9b761e374d52d36690bb1af26305ba26ad32bd84a705958e062baf62603693745e240f3958653956c790313e0a3844f280233079167371130a98a0cf9d14be55feba11ec3a7f6bf8b82e92948e0e78e07bfa8bb4d20880d201ae7a24662640c364622057a61b4ba7d17926690e50d1f51d134d63fc5fd2a80b13effb5e489398a8fc2a9cf24acbfd5e2737d7da2ed3bdeb48a3c9ab4e6279af2f972d9977b01b92c5bd221b035e3f167d46b4b956c96e7015af21ec498eba01ef13d72b76e9b947b2842c045d6cbdbed3da521d6b5a5f34edccddd471d1b7c9fdded40f79ed606b7292f82e6297ed7f921f40dc1f2892b68cf4e7bc388eb8833bf6023c69af45e779e6abd960ce2ea920a1bdad6fdbaad64b1e8284045cccffb48496a6672ae8e4da5962387ca72fa9707f068e4d71b919778c85d12c7193aad22764d27db670edcde5af035e6e105ada3755467eb3fcfa5ba1401313779aa76c485e610c012626f0f35b323fb6ba097b2af7f41ab3d37adba0d1e10a7bfebb80a98f58348d9924a183c98d57cabb115c498f3e6e8ec1b875e3866b30bbe38b0a5f4d6a45133d09c41b969e15bbddee1a3f7b3f14b621cf313914e27d12156d162b9baf690e314b8f2ba3796ccab12583f1030270b1643d050c25aa4983ef85023961333df860a1f35c38ff12589d0515c59a900d14fdc790d8b4751779fef4c3e189cc2a1a9c84ad5a0a3378642a5ca92bbf0f1e816de9c8d63ce953d6b96b5a2dc3f432d1db2f621f3e681d323ff503111e4338f2edbc8b60fcac567a28285e6127b45ecbd586f9118dc24105cc979646e6410afca368400668d23358458d755b34d305f072f45052f98d46cae89008d8a59f36dcaaef0850488569cef96c222863247b2a8a3c214e4d191faca0cf78856d0b4d5aa8664fbb344b58ec8a81588d6b1d663dea22b29682187191d0b3f118fdef3b05b97cd0ca74365f2a6bca3c343f6e16d28bb4aaa9999305f565081080c4f9175490be2b82298645f00e6b57100340427d5255e2140a7021ece52eeeae6a3a539873ab37790e032e8d7f93bfea9fbc65bed72855086ceb74645171270eba6f74bf3562142098e550bc25e6361275ac307c5970f776ca3703a1e02cd76223df2df0e081e0fe2f7926f2d798e286b46126ffa2abb54978fe76949a8cbf94f2116645b84532f4cc3255d396e94d62198a137e05d504cf95776922088c6744c7451be9ff9cce6e2f3135d501e2b28fb0137910793d9ac816364f89b5748b518f2c36f12808bb2e0efb6fd7b6de059d73b17ce71854e35585225c8da181e88f91a7070e58a2c078558b466cb5ca52b624f11405f7a5393b49e0290d51b201f43583458d0d77a0bbcfa66750921c671491343c7978b427a2895235328544de2dac4313f414ad2dd23f6e3c55b5ad78ae14a65f0c33cc583ddced02ea347e88ed278d1095b174ff2f39e47598f21f7e173bba2d5ee5380934d747778806fc5d0559b7614c482526835caf2bb7f815e9e15c726ce7c5f6097e0e367793f8bc5b2b6bfa7afc8f31a467ae29034596141dac03be1b1ab623948b61d64db866ac7bde64a3183255a4874220037d0d0b4482494dcb703ba076e18e8e055d9980a331a55b1d573a2d4f01a7455e05b2a5867f1d54046a65c44a80257a583ea5fe123d822d284dededbc779dcd170bbd8f6bcceb7a85452e081e29b60a13601bb9af0cd6dd5f10497c9c232bfb2659724f1efdeb8cfa01f0903e9396e9673c456286cf159682577bccd5cdbd793941ad3afd3059142572c0ae1c469fcc7a5eeba020378aa9bc24cec6821eb72c447657fd40d1e79895597707ef9986c34752ad8947a2668e34037ed8fd1f9743296d6ba6efa28ca8777c357ac083b9239d6ff12a33bf8c19231bcebcb03f6a4a0e33dd82032db3e9de5600c36decceb0495b3a8e2e6c1069e17cca0a704858b6e6156b8ca5371f70bb084cddbfc8ab374c1e725504db1ca123735f780841a5d95149567d7fbdf4edc4352ed9dfcd55e72f01588ebaadbbc231366831969779fdad26c1c6f52624358c654ca14d92e419dd62cc26fdea659f9b1526d74591b277e9687f4c6fa02d75b111b970aefb72016805fe6748b5ca3df71186aa7039c8537748bd690ca772da683fc171c4063da68e294be253c5424b626f7c7d27a25cc7c274332e16c126c75a64bc363b98c0c76c2d7d7019633578623a13fcee82d639e452037ddd6fbae8f836d67a3f169bf6776c16c5a2f887e3666c05372ed369547253ac5d8635099e465c0ae79a36868ffa057c57ac7740f25a66800459cf5becb0726328eb581a0f243d8977c1665db9233bb8a095b1fefb7520a9616b11575134505ea761b32cbe2e7fa29ea858678d9a45a2cb6b01a4aea11e038a08ad7f6666008e21cb0a19cfb231d60e54113f577a42f7bcf901e4550d0d48e6a6d7e4914a3bacbf1d200a43f97d3d3446174d53316ffe6047bb4caac55d30247f7b811a5432463bee4d24865642954cb9617714d773586e53e110b0f500fabf512ec275ff577687a277bd806b7b4876af669bd82a1bb4f42c1092c9bc0930ee46e4d885040b4b10eaf0725fb5282631d578a0a3642d15928432b7103b3fbd54b930c5785c3c8f5be57411c55613ab5436c39e35a9738a18ce4500d2533a2c545338e719126173eef8047626c024e997dd0c47ffde79ac45bbde46a13d6150dfb6428de1d46e43d451b03ca4fc4e270ca4970ab80c2acd33735ea1cce52f4f68aba922fc4d073d91b1e4ae714a06b69348c5025aa908141e8aa5918a330eba81ffa550a57123a553a587f8d8833e838658f17ce0d30bbfa2bc4187f2994ea15dd5d28e5b495c046c1fafb5210f145d36ddf4cdbe6d26aef464f362b2ab4cba56e59b02b1b022d0b4f6e80082c0626d571cafea5b7f1d11517f7d40c24048e9930aa1c38bee537a443b7e4aa9d82acbfe79f46a039d152bfc54abcfd29d0c8c52ff9387e1611f69c835a52000d26686abb7c1c3ca4c13cedf8839c8bc7b59a82e0a9ca96bb21664a5a3ccc6bcc9292bed327a895fd03dfb143b57a6d7a925458efef2f635bd0da232db9692e62574574e9c4911091d48a2335d6bcfa490746271a6e2cf774503c8d3a5213cc08213f71ee693acde2f63c410a0ddc25f112302bbc4ad9035870489fbea6f362e06418f4b74fdfae40b7cbebc591fe7dd3969c28222f8852fa33e97e21da8c99f996a0a5f4e77eb142919f9061ec65d46537df480134ab71e796640225157631bc309671356f98c67215bf721b492e01e312d4e024384d7c63f515aa2a457ea00382343142e709c4d0973a148ad699519795ee19387592e1f7f0982e4f1d42a1c48405e3eb591fb593f177efb78eac191fe60fcfb65816d92c749b2d037f6ec878565d202acddeebe994c3140d3189b80ec120147e38345f4da47876ac9dac0ad3a3605a296ce63ceff40e8dc8570d4b576239e14c14ecc7a9748985b7577f84cc064e8ff940f8935b92b29dc7e86e4da3531e07cba3b9865c35864a083f5b51dd95089f1d76834d62a2cceec77a9f81d2c726e5967846d7a344dc3ed732ab8aee146b6cffcf302cdfc4aa8e66dacee1a5f454bfb87ec3672260de14622488c3ea825b13492c3a8ffc443421f6be6b0995476918fb85ac0d9cb6ed7212396afeb9f0bc1dc9ebc4b6f2b182b23d92af82c4d630d18aa16cc20d00db6299bf50a7c2e1b17483d96f7866e1366d4b4a635eb2d59316ea6cd13baf91bc2e1b9640ea5a613ac7903fb1f8d7137 + _Keys: 526a8851fe85233e7cc810cd2b8a733faa68e71a62b99912cf2f06228873853005edfb00aa354575a31cc8ad1ac7b966f52afefc8351b636e2b71574be99675b6400dfc3607f0069e96d5112b3681f5fcf550a7f3749f10c2c006f2e23d1db370e64801184e106752a681216ffa3837998b5a5688fe724520d14109f10d172186ee5fbb117f224110b067c1b61cb6e75d9b619fa92551a320786221b3b03ec208e22f046f695e21830fcd93d5728ea479cf46b8ba7516b16ed2e96b5bbb6e20e0c6272c125d7806f67cd366983232521642549cf9088373bbcb047a020454d5bb82aa5499ca2e04b4891be89dac6ab0e659c5a08b1215a41b815970146d88b119ec54e97b8c60707cd2b47c307f6a055723ad0f074e03e69319b6e78f521fa20e22f14eb87ebaa2c5d9ec5792568c53e74417380a87c864288e4671d588e1210db981f281d4a325d1a036b29e53abc3829cf12c86a843666a9d2726c53c784328db49f8d499d214074d166a5105c5d3da29f4627a1da7a5e317a2d1042614f5281c64a6625b57e38c6bf413c35ce7d12821326d7a7c36313210e18f42f147d60db1f64f3ada3bb2d6666d31a094491222bbde8f495825a4e2f05ece33b3881253ca117543370bf2531ac8ebf10b7f565a03ac9712b88ca58c516c5a7b6d8f161e8f9dd682d3dee657e0ec3e9f39a3e76118743006e0ffa3a958fe6b6ca98245845d258f66aa26d222a2ff31dc5e16529d84e972e95f1f208f318fcbd24a42f1a1594d13a0cca1e4d0b9a28c0e4238a4cd5432183fe0a3d37c5600352a5affe32a0f1cca64d60c95d6de43a2f1ab3ec2f8dafe7e182ac1c0b579975acc6cca75b9cf61ff356e4ff757ac4f0e2446c5178b3cc3b0938e3500b2c3eb04c15e369388d95cb10d3df8656508d984144c6391548fc5f9307b1937f462b1e94944b8a5d47e5baaa4a0ec664069a951142fc403ed6b4a90102e5146519f66f6d35134e18b132d9ec6c3ec954f282992fe09c9f2a9752fc7c47b5d52b06e06eab61a6d10e4d7cc274d62caa67eb540f7f4be5844b6a66281ce82d2f660704e68bd01df34b4f7483a3a0ebff69576b98633aaa8921a5ddbe04814bd97aac297cdb1235373261c4cec06828ec556592c57c95cb2c5c853ad052230733029b09f8776f245772a3ca0276dcc8b833ca146a1411560f76a926a9289a1bf169092fa58ddf9c3a7517c82635364a7f4df403890f9d1ef144fb812196cd7f0c77286780f491baec2cdaf4fd482fda400ba6f61b9da4000716c29e6ca1845b5768bcaf0ecfc98bbb39185d35a921a8142041153dc39aaa1c286f97b630278db035fff6d32e0ef214326ce60b1f02d1fa31e71c6c1ca8c75d472e9349f4c45f8c4dc0c2013af81c5d63b2032b19179f0c5109edb220eddd4a554c13b12cb5d56721429066885700c558f421713be1a14442bb774cca3425cb341fcaf3fbd03ccf786c4d5ba70595a869cf6fe72c22325567a5649773f2357847af0759d10313b725cfe3c24772aa470214482b6154a356625d3cfd5f01ca892d756a72e68478521c260cfa05f49dda051e95883b60da9c51a244d0c0efe9d8666defd20837617d7266b7c4b857af913f62f77c9653c48e6531de7737b6edf43c1fb5c7c5200b0056ee483116cf9b411d5add2ab42d68210eab747ff3c96d3a504da8889e1b9f6a76e44a45824db5863649a09878ada45b093fff39b97a41162843c42da16cac080e6d98e7aec85f367b53fb8ec0f6007f0600beb18fe2b7e76ee911c7c76ae00c14c122f29acc03601a51f08a4016e1082f6d7eea356c2d4766a7c4e03aa5e33455a9d65f214d9d8402a2681f2dbdd87b070a985bebf6d6a81097a7bf6f1b653f6d44ca68c07e191e3105186bfcf1e65731b726cef277b7a02e2f4f8ba6de14e73c29b17188403b8622b78df10f42a4017cfff026423332e5732a39eecea4c4101a0158da5ca71f8e0cacf1a805a8b07076b2f15811115bf709cdfeb27a2a54c77a62f3f016365a2b209de610da2415e4793787e44c9401f65bb01b6f5693eb1d01b923a2b5bf5a3f57c537732b4a1ce41e1dd3bc5c8f84196316b39ae5142b724ec80f2101722eba6ec83b11cc7422a66c365139bf2fc07134f6c0358c0bda930f573d9dc4051c541157fd8ac87b1d9952a64ba6e19ca69e2499417fddbe2caa24c1a561f21387762d2def8c67a4f06e2bc76e0cb0d75f9409b22d34593aa82d7ba7ae89207f8b652d5f423bce6076d56121e00caac4b88c2c7dcb083a94c883285aa4d5c6ce0a8162bfdd6753d123843ddced44e075745b023dbb7e5b896e8269c01328054c9b302a1ab4da484855f13539de7736f3892f04d9f6479188c48f2cd00d4fa9d9c99a7201753abb270b443240a506dad2e62f21bcf924dbc733497deec366e53a852b5d6e466fed752cfb7898b19bdc423679483d7065d2ed753932d34255148ed5933b2f9bb6e6a9e268170b63bcea6793c524c3515736dfa68f07f4c3e5cd2819166dba29f321139f0d5a074dc689b94fcb3f83cf281fd236e5292abdda6dc835402586d5d0c1605cee625fb13d2d6d18c0428f254a59f1f69a0ef2e209aa3a5f6e2ef35ef170e07360261e3a3ede074843437e1dfbee809a1671c43e2f82acbcd800430f3a0f274f621bc623782b35791639d9b3d6a7a4a251738a9dcae15d1d2c629ec1dee87cac94318016b3a41242a73e5469a8f9e5305b1a9e52653be5bb871d51da8e739a2dbc794808278eefad6148f68c8cf374337c311ef987ce12cf173b716a0b132fe4277edbdd4e22f732d40ef01d45592e93a97ca93fa95e5a129817e09c00a6478b8824b30bce51819f29142579bf2f14716a04ec784291717a27138999bca5ced2397ca56aa623c557fa0aea6b7c2b2d37d36ecd046c4031e66938e3bac7e8e2834609b33cd57e178eca6b83c7852308adbe3e94d428359a07b5400093c0f470edd76c4e79870e9eaba95c32283d069372be6e79067bb6ab7ca454796a807a3129056bd4516d76698e182e2bcd6bccd4d0d55bd256e985ffc3c546e2bb353081161d28e9f2b17c68842a61ffbca8999ef095525156bae067ce736817b45824c349af41156b1c1de1a70c577fb57abce4d3570d25e2df2a5b3cc1489ae5994cd4f9624895167ccd2c878e56b79ca0e2b6cfb2425d4b4aa628d99c27562c7d03f23f7d7819c328ce578ae1527135e0f7dda3ff6a97dca81f440971457a5478000a8b6376e1d8360c581b142d9608e7a1456bfa07b11db9cad86b165ea900c6a33576f6669b6509fca26e78181e3ede275a8dd608e99eab8ab79fb62091b490f2856d9b4217a75c73f0925d24f926913197ec393b9de88cf0bdbdcf010bcbb3426c6c6d7e45accf53ccbe9060865688a783570c0b104493af50b47d63cdef662cf94f80351be43050530347601dddf3f456dd262d70d44b89935d88372e86a8cee0b3492bd7bd8d9f26bbb70cfe339272c1880d54ea6c44dbfb085e779397802554e9bf30d9e0e167af78f92c74a879380f050748667067538e266767fc005c1939ca0c1ea78a5417c0d02940b651858937153a686575e98014203e3ea29e6086c3ac7102284564acf772d0414ace1d3510e7224a5ade01287e0be64f896976eb354cd453dd6c74b85fa2e828b9d4c8b9fdf7d24683ea1f5d51667f1d5e15238dfce40c6aa371127c5bdaaa470b279155bdd3ad6d9730674a2c76017713a8a6b681a4d32ac75e5c6e094fa25e94676779f8d5da313d6e0934833ec218748a6ab334f3c665ab98e2e4d0e388478e09b6c50e887e177c2785ed64615806e08b1e6b46aa6d77d33232a00d0a9e1f09ae3d730b78d804f67dd0a3864c364a40dbc45b01f48e388ad267be45e0da793a5a1c4adc1a0557652262c47b11fe1e96831e163005de15e0fb03221f68b5285849dde06880275b1fe340dba9ac4b77d44955c8fff1aa3ec7ce951ee81cc70492c6e23b11207815a53ccaebba464132d331f694d66968042f655630447ceb4524f930ad89858d646db8ffaccc4a5544b8dbae93ee5fc7221100bbe767782751d39f505d3e46807a33ea248231afbc4820d464750dae792b485f35f3da671b68c470c6f7a0e967032bfc144474afdf073229c26b55bebe32404fecaaae93c74ce2f2e2b42f0a3340f1adc28705b45160767200e0055d2a29c8d707be4a4cbf309d7b188aeeb4396969bfa396f9cdaa0a5fb2ccc36c18b83e1d0c7c0612f18a3d6df22581ccdb4f3ec869b63bff3fdd6a7eede202e67d624acca95905cebf8377cb9ad6f957d6c17c9c7103fc9e83c122d0ed77dbf077a81090dbb52382496f07e63f079a15d6c254af5f9f58805fe84e95842a43c8a098540f3976cd731b00191ff41e2175a4c759503476afe9fe6e300d9847f88b4d2f7928a47323a00b1f6ca17ac673be392639b47c6c03e9b7c20fcb46da0c63f9a56c2597491a17ebf95a54e25163c4e2ef2b8ff153f745cd9d20997c11191ad330651f32975683415037232d20cceb1df1072bef44313d81ec1af4022af362109e2f2c046a22d133343118402fce0841ce4eea74ef6b3011a50766a47b3c19c87847a134bf8204e4ed2a61a6801b71d94a7d2505286ef155af18ae4a6e96bb747f19561e72b38fd7ae012870ac4269fb76048deaeb8cd4eec2230a55a2690825a3568416d70ae562427dd5bc4403fc346500705927a4eb212c63f36e41d3df3e7d298f24eada7da53229579148e75640d90c0cacd20fd3d11862168be888de916169c0e48b27b6757d3627fefc7d6914ba33b8b137cc9492aa430c88f1098dba073930de2672b5b1567fd6f7162a2a64072a451ccf2c5994d52e5bbfe973432468198e568f78da72731274c4468ee18fc367d4dc573e3c894702f74d106b78d3cd639abd3cfef63523236f60c0820b69a9687bfae382678d6e451af4bf491b069c3f5b7650edaecae8503862d4b8df032e396fa51cfe8a26f82ac953246344f2490055701c155611592b394b9a3c1ee2f55a1bf1f247ccd2d2694ad889b2a6521d6ef8a3102955feb74a8770a5d5a1229266ec4babb2d341af68b75b7f20341902746809447bd2cc041cc65840a4d302386b6bef9ff2fdcf41490c571f4e8127805e731a6c98de179420d656ef8a3a32d12f111d50acd2e01727d13d91114c1fc636929d3615656a0a7bbc9bffa1e8fa965da8113e79c5a1a532ea7e69180454e3301d79c190e8d37329dca220b7df4ecc352b1196c41eb28f0f07fbff1c2bdc8067b8cfbd62bc27462b9e145567c25c1264b234edf3be1e113122b8fe0f916a78044273957140d5010ea7ddc4fa9baa221fb56a55f91470e032c3ed7b7ac540e3304aa888e7b67a23199892ea67d8a8886e3c1377a78f0b3b603c0fdb93fa5c2e4a7d24561caa96003a473b91a75a470a6a98d8a779cf888976dfb7c7ef7a257b79309bde95c7ed4c3e31f237a3cd6f326f0a0bcfdefe65af544078f6f57d7bd96bb14684e8d850aa19c651a98b6a058644e66f933b98d3f00b2986bcc9080f6c13622ba77a1bc4cc0bcdd33418335b655093c331b81c194e667a0d386610db497d85bc8c077879970f0f788481ef1da14bf438ddcf86935441de988d54da39ba18e886f1c49546fc655bb9abaac6878c5c94128d280185080d674ae51107ece948329c69750e65e03b43de1680da2a9e6d339ae27b70de8910f4c85e45f9d5f44230b5c90e524e0b3bb3cbf2f392c067444ffa037bccaf833cc7382a1dcc2e985810164f89baa0c11e6db27652245a744ccf5d09012d86897f338cd68b7928087baed62a36f9895535a8909556fccaca71c2da8aeb7d87841910cf4ee764334c589bab7b57cc374f33e8b0b4bff010953f3aa8bd48d085bc6c8f107a773d9bd8085ae78680199d8806d542fb322c3bd701c5f052438afb772099171a234e388e4c2754e52869eaa729cf3be1ed7e1066351884c3d112e46d5e6f651930b7ab540e30b7f427a95067244828744e1a89a15782afc42d049fa043e686b803d1777123e6d31c36058ddf691518771690e1bb19c4c1ae08e7270a3159380d2f096af52e49ae98b99394ae0b30a5bee3e9482c38bf2dc0f03696c440c8eb8e3d9b0f7256ddb7321eb7fe79589046c8721a11e50ff42a8e2455fb084deb57827e23eba63fe7ea3e5f84b41043a71961f0ce5126253061b78e7fb1fe1dafe4090f80f77b5b5f77a5faafbb6b40194bcb6f5cf81c67325c4fc13417bf66e95cafa0ab01c2616a42b0ba08de2b15cef7a8ca7d6d7a48c7a140dd473d9076360c11520bcb94177895fbe6b89da010779b0bc3910b1657d6f8d809c1e51a2db23983fccdd809677340ac188e6c6f65425065ac31cde52b0b4684ec0d74a95cb12999f1219ddd6091a34f505efdc96a778c388f7f92041aada8f9eca2098a1717f73748fa9f7920d239e571826b330710ef76803c19dc1d267e4578a3f1bd652d666756341165281418be46ac9298418b0e234c6df62403e5e6dd84a5ff83207c7f9fe8d2893c21ab6192dca5698e6d19fcfb4debf52d37bf9b8fb2cb1f7d12632035d30c5091144a44a00b64485e7c3140f88e2c72327c9afae1cbeb46af06e4d646c1eb0bac6e8fbbe0957e22d632957122408c9b7a242f3ee5210169112a5ced08811d51173c1498e218ad38044230eba0a397106d475d2293ad258a6d25564a0d94d4a7b01976a0d20c469d880ac65d0dea36916d6c5a4fdd3fe5c56277d4439108b966e8286445e5c71c857105ab9d738398585c3b235fc67b358fcb4e3e5b38030c80505f8c1b790f545aaf2aded7ea8238e50f2c6133d4e7d39ca10cefcc763eb292062b112c088221b218375064a6f285b279584b0b643f553733108693df771b8e887022ea8ff32272f413b3f3c7c8bd6b6d5f46ce8abdf6468026070803712d5ee33e24caeb90be938541ff778b61706a531b2580bce919456724969712e6917d1912d705eb8756fd1e4d4948bd6ed2e296715c1f97ad1bcd5769330f2656a56bd27e5e798a6a7fcbc427626e326103d6f779d37cbe4feb38d15b5c55ba662474f323763ecd4b6d00f026e4be108a00b86c09089f8329ad839369b61af2d6efa2fc117b0fd742a342e62e736893d3d7b9a515c1c36dc4f81cd00dac6395520e1a3741c3fe060f90aeac4987b19c151667416f40f7684def3ef65fc13512f827c6c3729fd495d6c0b4a5709048b555461adb4423269305828430000b9ab1a5634bdd40ef2ab5ebfc172f7451f7dc38f44ca559a53229fecc4110240596ca2503000c2427f6671b65ef470af71e577a6168f5400ca800cede208b30c5260e6c1daa87511547a1154c3e416a7934f5eb998a856e74f4ce53ff24fd0595c81e74014cd75e59579ae6381f0b32986ab7ede988363aa09fdf1179db5010b56455eba24a932d5d979142ef9f366c00fe13962315110c91e4d3616cc5e57e068a30d4ca1f8f4dd6899052f7f44a01978cee8538451360adb6a64188ce3e684fecc49a919d5d1f913a3f667a40ea6299d2f8f8b46bb74c636f7e7e392f295bc8f9a0e4b8e5920730cff5fe06ade56c33bb25a539c8e246a51037221fdee56111e32e73e1ce1a4b3ff1278460b5524a8a12b2f554ce9500eaa57737e24bd950156c11dd818e75022a8e9ab75fa21a596382980c2cef0c414f2e8a3b57e369743587910b5c8b361888b5ccc634dda04674e22ba04c32db0587acd350e64fa645dad97d28eff102284d80847622460d718e44af390f09c167649684afb7e531381087a00e5ac9367d20fc133249add740a062c3a29f6c351c651b747a894e2067b0b499645a01e83cf1cde6ed0971e14a41bbf0aade71675dae7b56c1aa440b2e23541c02b9c3655fb4006b92acddd929024144bbc135ba3fb4c3492055d86e52c2b8c9b555df917daa6f0a21fa2a4f2e5fd3419600af921167234a82f2794b726ebdcff41324d423b0c664303fdc3a778be53d7d6928ae71b524e487d6eb8f2fdc686f4805bbbd7da86547c714c35042a23df12748362346f1a156c7f7a40563ab6bab29930e8d3027c025cf6f75850ed5a22914ddb6785abbd7c659ed7b8a0360e41da91826af4f35de0077eeab2966d89a0daa850e790cf3516ebb4734425c4a282e54922f2752f3d9dffeb6016b0fae6031888835886e5e29b6c7b7f308009da3c217da7df95673ba9d5fee78c30ee65f0ee602b9d47fb09db1bce5ee0a00d2df62123e543530992403bc2d18a329123a1ea71ade021dd042c7772fb63c7ab09d30cddad64d6e2add7f27bd91ad68fa88a9abd063e5501e80bc037342ff4f617e0c90e8d54e3c14502f07a1d6253d6aa08e48a018b54d491f50a5e6b6046b233177c462c2af25c79241df6d130e0aa6fa99d2b4b6af48374027f8da0bdd5d4cc32ad24eea9f570f97f1cca66b4534eebab31fb028e06c822ffba2e9a7ff45b6e493aae93bbb6f9af1e14ba87bef34fcf2e794bffc0d745c69ab821abdbe4969c8e93d2865b42a752385bf4695c3063fc69ddc8e930546d71f0753e63e8923ce681e206d4ef360a8110ae281cdba385b5bbdace01e442a3d5decb893f8ef4b545772504c1b8c7247017b60621737089b3107747f22bd51dc0c1cf09ec5325022be8f2a5a6aeb3ecf4b65dea2e4c82427e353c4ff64cb7615c42d58377d100bcc33c15c77f25205e4babd3577630b3ed440168219f64f42f31815963c9207503b5aabd6a6249c18c9a61eba5969004fb9ee2c789492242a1c80b06ff717be50b36cfa1db835980724d0478d286a165ce69b21b2997143573681ba25732c211f646f6dc5641d077ca9daaa3cb468fe4e6b5456923870ea2450ae18c8858c6c08b028f297d8dcc13793a408bfc606a2618009ba1fd68ee62a599175b6053ff61d6ea1ecdd5a9527726ce1da2286561549f548b870b8742021bd380e95ad88c3535314aedbe53af914cfd2734897f74e0384d355b10898291d3ef2e0dd796e3b1b1e86749b05f12e4650a33f8be869b839e90b1981dd745c46156e610da5e4643df370d6ef7c4c0174fd649e9ba661cb2c3aa6c78588bcf956d6d27a6970de5f34f78267886c364236f3717c86293f5f4b5dcab9b453163936788019aad29804233d2d5cdc06bd407016016de8c08dd3698dd1f35ada541e0e44620013b013f65993a7b5031d7cba608b48cb548322f604ac7cc85b73a0016fb495675b43d2402af8c75519d8cf4c11e96c1adcdf8c6e216cfcbf2ddb52cd0c5bb9b078eba1e25d8af54d4a770fdc2330b744e0bbdd4e410388c73f926d054a6c9e8c6e7f3b03478abd53ea3f23a95b209c5d9296adc737f70d848c97dd1009046820267c915b6bbb8c6a783139812631225e2eca98e142d754658cbf90df6731a21057bc30274ef9c84e23184069428c5e5a747ee13f6c86ddfcd1f6e82b4b6bd2468e28296901adbe560ac6716d0a5d4876ea0471c4019e5abf58082c97032fa9050c49353a01f6a1c74f47aefd354919b3373616445ccdab782e4a6a120a78d513294d19791340174152c0174e5e4c345e794d13ed33566936366fb9b2554d574d55512d62346112b9f17f5bdc22d74849db0d1bb064e4e6e6a61d506675d224e50c4b614d1492fde55d0708af69961aacfcfe5ee932e66211e085c9c55227903a0b07b9a46e7f8214402bb6de623f1e5c5bdeba5d2dcca3d4dc2d14ea6e0857778404d76103333e0b5c956505401a10e4ef5c6f3042d6d08c86c931ea726390e0507706ff52a0ac538a933d5645fe330a555345654c7d4feeec0bdb791588310d54f61610664e60051edd993b7bc53a96f52a47e209df9e0c581f69b2086cbda2a2ea985b337fb5d4317015c46fce277d3175e7cb676fc2c1a196537425f27d077b2c4e34544b385f641da77957e5aa499d965dc71bc8f266b125e31d2e0bb82f7606ef4e5843b0f897872b493545bd1bf9af30a24f843bb211345bc43b15ed87a215153e00d2216f05e07a63186f760e1d8a8d2e16bba7a043638e9263dd71c72675172669cad6208970be4d2c19a9a46cb8d49f275a9ee69cec23c44bebcc055ad1400e0dbf55d4d839d1061856374bba5b830d5aa429a74d0d848d08a5bc7c61339be514308aa04e356c1a43a98a7574396c8e2e550510a9164da14113cfd85bb1677d2f454a0a5cd01af12c8427fa5248fdda77a16a1771cff40969ceaaec1a66c03614767c9f03f14739566925554f5f218e6271da857b3c542541e747b7479dacc820cceff4fd96cccc1d5543f00a5e6f4c0d57638c02646c1535a3e0eb38ff80f3425c351b4e158bf83da6a3cf7f452f9f566d3b10c6df394437fbd5a54a1f6ce22c51ae66938a9b22336b4e5bc19c95f02e8142ccc4702c636a7a525340e6ae1e3ac0a2d0f39533e02ee723ced16bf92b661b89349ec75962234bfc0edcee621943302100f9c5fc984b23faab93fa35d57f26ed5a6fe3bc011a05f43e9241bd1c4ac4ee5eb606ce5e1622807bccadcf2815d871fc234276d97320e6f4d1be06091f18f6d00cd61e780bb48e6e9cc732372be4ac462f3f07f739c8d2d6ecc230d4278a9bb5b7fe1c3e08e907d7d0e5753b52e3df4b95b3c7a1100169bbfcb774b77c46b8edd3837fd3396e3e1946dec81e3df1d7f51d1bc08b3d10669c6161acd20a2d9cc6dba4801f0b5941de172b9aa27fcab738c0cd60f93646942401c87bf669f9f9983d7592ac258f1fcf312c96a754f7e3d5e71b6c287295fd2138a421d4224b751f3101650a36f5edcd526e38f5501230f51b5af0b2732ed92c8d4c1a35500b0e1948898aad6e266123f6c6851e5df92fda8bd446373b28935fdb929783254982b99fe15338777d780b0732445257bbcf867cf4c12452bbab8fe31576ff41e5483f493ebd3e5a089df1a4c4cff71c420897611eff1a09a80ce436c45561057ac9ec7b839b9602902b7357cf808e75a3aca10ddf9e231b6248f14ba2751e5efef61d8dbc72a05a7394f1497371d92865a56ce84cabda24592e2133731e5a1bf4eba7279dff46154dfc9b4bacdaa82b2119e5fd083612531cf9338d516ce76f11f3aa78354d7464ec8134484625d1342ab2eda6c7a2ed2a0205bc69cd2b9946e40a5c9f8420612c5c7eef79fe36f309d80049fca572c94c202b8acf6ef4683f1811d3ae7d8e4709ae3eb4b74c8bd338073abe328b6a1371411080599591bd6717af61ec62458c4946bf551bd87e6754013c36cbcac94b53019e9293f1128c40fc1ccefbedbf9b3e518a86b440d0b540872aa52d3776ce1f044a11fe28e0c53433141fbcb06b6741a0f77a3f4296123117aef33893a0f7794daef7a2ad9d1671c552812bb0f88f1bc3648c3ffc8fdc6dc81fea292c02382b0b996f0274c493031ff7850fea187e0e3e0ffbf72d3676412f76953278c061377652e0e877725801d0895df314ec58505f2414e3f9bf0142f14ecf14a63a845d6ab26567c7696835b7fac8b69469561ad0e5919cd5453034abdd07d65cbba50bf344769d790f760abbdf99f387b8d779f8b445c0a8e788501d6543169d6d2772602c3baf0c465e3f708657b4df24bc0cfa7132efff9a4c0a44da7fec349f9329faf36ca583d8933ded7baede6f2b8e07aa361c2c3b37730588b994cd388df50e1b80bbebb8178921210b2385b7d585184b77966bbbbf643e7f99e236bc3afa7b70bdf8f0e77abf6daefa4d475bf8bc5cc052e74fdb9e3526e6f96b51f9c0de18ef57eb06236bce2fb72918b60dac9978aac18a96ac54602e88d2d6e0e5116613e3cba7fcf249c62c211697b2867e186d6d1c58c8c9b89365f7bc8ff542af1559c205d242059c850c7849473c13ec4b0ab96973c9b89e492bc9be0c502644912ed50e107f5429972f974c4f807057511cf7665054dc21ed244458f43c562acd432589eedd0335a11c005dcd93b1364420f0d7b8726a19f40afd343bfb345bd93e1993a5f9462f1f2cf892acc6107f290c14d42c2de240ae3e82071f310659175b848eac45dc3e663f497495023a45e57df4d1189fd154a359be1c88c0f011da5156f8bc7e2d1bcf2a6fede56eaaab0338ec9c3c3541788a27330587bfb5a54e379b4458320263aa26fe12f241c6eefc121a50ad8c4d0f92226d95b032a38ee03761522c99ad2eca4fb99ccdac95341244f68b599a073d16754dc95f68eb223673f329a2181a95bf471bfcd4b042e58c5ea7f53c18344530233cb64ce4ce616325d440b96c91f92a734aa1b50412c6b733ab413e091ae1c0385ac654d1e2a4167c61f9dd012b20cc5e1fafcd938f2c1075ff188f10a06d3f0e818112cba5599111b832640ca4b85f758a1fd63650ac377929362f05ccd8e232c6137f55f2ff4679a96aef0674743d1c3ee94bb8a5cc487bd86eefe4fea7401ea837983fcf2d274070d834b607467463eb1ba0055548d31d4d7d8ea6c2b2ca29025933dea2cd74254d92259736e2d552c117e49d5295f70fc2e37ebf75647c4b96c9561a7a382d38452fc26322cda1354072cd6445b20d0a768789ace911544ac61890b5ff35cf1b05af1f06f5ba4701e3f4e2b62f53c863acfcb8b6e7ecad14e5e82e22c29dc81bb0b6c2f721325847f9db55aeeee26c086eec31b868ee675b6e4757e694c7c152e186536baa968f32d382b460429fa07e0543eb228330265bbdf3ad1469f3371e0f1dbfc11cc35741431f119b6cf56b15204db2858e0366356f3c0fc4b5a5003297a56340ef9d84616afaadd27bf27a5073046568f4ebb93ad371af23df4eb6260eb6510ee4edb411155e3b634258445f38a28cec19044f65bddf6176ea026528334ece2fd158e65c6d7318bbbd08ca18f057d0b093c01f70a937fb6be579310e264c6b2637471e1877f08a6b178d62202974f08e3869fb1390e33a17907999123cf2613eae6c234825bf03f51b4e595ae7c151169f13961df0492739a9e97f187dd63cc2ce7f8e2b0ec80a1e7f666a312f316a493608187c03f7a67eff14fc1372141f799eaf8246edf96bb7b4e6fb0e5b886623319bbb319cf99c55adf82c533d8d3df9b793ec552746091acaddf30b8636ab12d2f78d71f23afe0cffb9b87bdc2edcc2b63f0c0e3d3d8fd69bab6d5d45fbf1186961ad2e1218a59dac7019492f654a26474f70304c87dae4a43e25347af8fc291c147538c74447e729198c5c10ceeaf3ca95b0663f1dd9790f38fc187c62c9a85d480214c6b6a1a429f25a114938221b7aca0b34563e972654231127f80ee2c40cfba37f33aecbcf7998f26af7a07f4c7d7d384f341e9d1cc67f976c005efb09cd113d09452deb55f7e9850ad311d8352b84dc6f1f6cbfa3c0c6877126212624c5156a3fc4853aefae55483cb362ff0ec1fbb121dedf487ce068ad5684420f84e45bcc481186b6301b3c5f2a8e49b798c0b6926e4679ab9fe349dc3ddea3d0c8e7c1da3e5b0261941b5d5c58c1c68d2323ca557af7d495e313830e116e8f45db3d4e121b1073c1485b9a1a2ecf650080b20cc9755bf0d094e3e98c2d9a916a800f14dd1ecd9fa9644cea3f1ce65115662cd5c616c8f6f5720334617096486ab615f31d398d77d0f95009993c97279a5bbbb81805d812b445ff9d5c599bcdcb2d2a7bea13e9c5d5db45dc254c4f1e5f5ce867b630af51150ec45b5b1e68adacf7bcddf22a977761acb63bbf140a6e744a03854040bbeb62c6af9e6b4f1670c92adeae11583de62c8af9f533204ff8e5f7edfa053851d79ea536c8b279fe1c6c23a73b53522609044166d60f31b4c3c1a6f67af26f9005e6f6a1f91161ee57323c62ed9c1e0cf90cb59ea3515cf2cc3c8f756df66d3e978f4db8a4ff1609cb5b1e058bed59eb2bc09435ac821c74ae6d29a0d64541e3cf3f9cad7708147f80a661ac786567ea340bf1c307984a0e5a6e4c07e90667adb19d8fd556d77a50d0b76c46b42e697af14c0425296e40f3792a6db9ca087a9d7dc8cd566462012f813f059e6b342fa0d5159fc30d391566ff5f447dea9c7ac83ccfc8ec611221a5c02825591d4e78bb04331c4b96497043b23255c4a67f191dba3c629b6b423ec3f4f31141e07f0d4e361d79b2e4f35e0da018f23895e305f5c41574e6569a02df2ca091b2217e6a051c7ac358ac5f5cc9688e3d2b3c4e579bd73af14ab9d3749631e8d039456c2f3c5e9198a49480468172460335e3757fa9f7328743d69d2cf9e996a1567ccb7ec89d9649fa9b1f3b7b382491bbcb502f638a08b51ca1625aec460a260c968a78f03a73e95283b94fb2620c555af5984fbfe42906921e9c2f4312db0e2b3b9729dbf0c3282ba0920fab495fa5474e961e20a597d8937c190ed7a2a53fa8aa2377351cd0b5473e841d531ab1dc7d41770a854312795c406956f52dff31b92d480026e8d9641f4b655e2ab52aad2df58c1919b0c3ecbd9dd30cb37aaa743db6d77f9d4efd9ae424d52faa70a4116b1783006019e8f696a4bc77ec32e8660925631f7456f020080dca0ada93962d42e477640955eadb311f17410a7585160d3b397b0d849e152663f751b0222ed5c515462f56b290a1f0c0ae6d6e322b7d92e117605a1a3ac7838d8b6cb3c4d4f00fbe830a2f55c05aab978b32340ba8f43779be6dc67085552480533748d1b5f5e84ca53753817ba96aeb8733341d61acc58f5d75a81b18a67ec05c02f85ab04dc855a640051e6049e6c66547c70b0ec3445e4c4775409d03654cb61221815d3b632b0376c5a1b2e4efa65b1e4a2e208d4e6742650d68c108f3aaa5512b8dd89b97d61c63079787e610313732e57fb9362c29c4763c3cd10496057d6e4804ba61cec0867312bc94e5ef287624cf70128d9c238101369ea0a4fbe7320dec09d2eb1467fe24f945257094de8713c7ac3625f3efd2237d4767939fd49006f0a1fae5568a1067f0305519a4f9de0479afd94034ba682bdc5026e09ae62163039f580decd2e12074ffd0e3d6ab48212b01c0b0c7e9180eafc16398cfc6525d1527de36e78b234a9e25520342f46a2f6cfe9b761e374d52d36690bb1af26305ba26ad32bd84a705958e062baf62603693745e240f3958653956c790313e0a3844f280233079167371130a98a0cf9d14be55feba11ec3a7f6bf8b82e92948e0e78e07bfa8bb4d20880d201ae7a24662640c364622057a61b4ba7d17926690e50d1f51d134d63fc5fd2a80b13effb5e489398a8fc2a9cf24acbfd5e2737d7da2ed3bdeb48a3c9ab4e6279af2f972d9977b01b92c5bd221b035e3f167d46b4b956c96e7015af21ec498eba01ef13d72b76e9b947b2842c045d6cbdbed3da521d6b5a5f34edccddd471d1b7c9fdded40f79ed606b7292f82e6297ed7f921f40dc1f2892b68cf4e7bc388eb8833bf6023c69af45e779e6abd960ce2ea920a1bdad6fdbaad64b1e8284045cccffb48496a6672ae8e4da5962387ca72fa9707f068e4d71b919778c85d12c7193aad22764d27db670edcde5af035e6e105ada3755467eb3fcfa5ba1401313779aa76c485e610c012626f0f35b323fb6ba097b2af7f41ab3d37adba0d1e10a7bfebb80a98f58348d9924a183c98d57cabb115c498f3e6e8ec1b875e3866b30bbe38b0a5f4d6a45133d09c41b969e15bbddee1a3f7b3f14b621cf313914e27d12156d162b9baf690e314b8f2ba3796ccab12583f1030270b1643d050c25aa4983ef85023961333df860a1f35c38ff12589d0515c59a900d14fdc790d8b4751779fef4c3e189cc2a1a9c84ad5a0a3378642a5ca92bbf0f1e816de9c8d63ce953d6b96b5a2dc3f432d1db2f621f3e681d323ff503111e4338f2edbc8b60fcac567a28285e6127b45ecbd586f9118dc24105cc979646e6410afca368400668d23358458d755b34d305f072f45052f98d46cae89008d8a59f36dcaaef0850488569cef96c222863247b2a8a3c214e4d191faca0cf78856d0b4d5aa8664fbb344b58ec8a81588d6b1d663dea22b29682187191d0b3f118fdef3b05b97cd0ca74365f2a6bca3c343f6e16d28bb4aaa9999305f565081080c4f9175490be2b82298645f00e6b57100340427d5255e2140a7021ece52eeeae6a3a539873ab37790e032e8d7f93bfea9fbc65bed72855086ceb74645171270eba6f74bf3562142098e550bc25e6361275ac307c5970f776ca3703a1e02cd76223df2df0e081e0fe2f7926f2d798e286b46126ffa2abb54978fe76949a8cbf94f2116645b84532f4cc3255d396e94d62198a137e05d504cf95776922088c6744c7451be9ff9cce6e2f3135d501e2b28fb0137910793d9ac816364f89b5748b518f2c36f12808bb2e0efb6fd7b6de059d73b17ce71854e35585225c8da181e88f91a7070e58a2c078558b466cb5ca52b624f11405f7a5393b49e0290d51b201f43583458d0d77a0bbcfa66750921c671491343c7978b427a2895235328544de2dac4313f414ad2dd23f6e3c55b5ad78ae14a65f0c33cc583ddced02ea347e88ed278d1095b174ff2f39e47598f21f7e173bba2d5ee5380934d747778806fc5d0559b7614c482526835caf2bb7f815e9e15c726ce7c5f6097e0e367793f8bc5b2b6bfa7afc8f31a467ae29034596141dac03be1b1ab623948b61d64db866ac7bde64a3183255a4874220037d0d0b4482494dcb703ba076e18e8e055d9980a331a55b1d573a2d4f01a7455e05b2a5867f1d54046a65c44a80257a583ea5fe123d822d284dededbc779dcd170bbd8f6bcceb7a85452e081e29b60a13601bb9af0cd6dd5f10497c9c232bfb2659724f1efdeb8cfa01f0903e9396e9673c456286cf159682577bccd5cdbd793941ad3afd3059142572c0ae1c469fcc7a5eeba020378aa9bc24cec6821eb72c447657fd40d1e79895597707ef9986c34752ad8947a2668e34037ed8fd1f9743296d6ba6efa28ca8777c357ac083b9239d6ff12a33bf8c19231bcebcb03f6a4a0e33dd82032db3e9de5600c36decceb0495b3a8e2e6c1069e17cca0a704858b6e6156b8ca5371f70bb084cddbfc8ab374c1e725504db1ca123735f780841a5d95149567d7fbdf4edc4352ed9dfcd55e72f01588ebaadbbc231366831969779fdad26c1c6f52624358c654ca14d92e419dd62cc26fdea659f9b1526d74591b277e9687f4c6fa02d75b111b970aefb72016805fe6748b5ca3df71186aa7039c8537748bd690ca772da683fc171c4063da68e294be253c5424b626f7c7d27a25cc7c274332e16c126c75a64bc363b98c0c76c2d7d7019633578623a13fcee82d639e452037ddd6fbae8f836d67a3f169bf6776c16c5a2f887e3666c05372ed369547253ac5d8635099e465c0ae79a36868ffa057c57ac7740f25a66800459cf5becb0726328eb581a0f243d8977c1665db9233bb8a095b1fefb7520a9616b11575134505ea761b32cbe2e7fa29ea858678d9a45a2cb6b01a4aea11e038a08ad7f6666008e21cb0a19cfb231d60e54113f577a42f7bcf901e4550d0d48e6a6d7e4914a3bacbf1d200a43f97d3d3446174d53316ffe6047bb4caac55d30247f7b811a5432463bee4d24865642954cb9617714d773586e53e110b0f500fabf512ec275ff577687a277bd806b7b4876af669bd82a1bb4f42c1092c9bc0930ee46e4d885040b4b10eaf0725fb5282631d578a0a3642d15928432b7103b3fbd54b930c5785c3c8f5be57411c55613ab5436c39e35a9738a18ce4500d2533a2c545338e719126173eef8047626c024e997dd0c47ffde79ac45bbde46a13d6150dfb6428de1d46e43d451b03ca4fc4e270ca4970ab80c2acd33735ea1cce52f4f68aba922fc4d073d91b1e4ae714a06b69348c5025aa908141e8aa5918a330eba81ffa550a57123a553a587f8d8833e838658f17ce0d30bbfa2bc4187f2994ea15dd5d28e5b495c046c1fafb5210f145d36ddf4cdbe6d26aef464f362b2ab4cba56e59b02b1b022d0b4f6e80082c0626d571cafea5b7f1d11517f7d40c24048e9930aa1c38bee537a443b7e4aa9d82acbfe79f46a039d152bfc54abcfd29d0c8c52ff9387e1611f69c835a52000d26686abb7c1c3ca4c13cedf8839c8bc7b59a82e0a9ca96bb21664a5a3ccc6bcc9292bed327a895fd03dfb143b57a6d7a925458efef2f635bd0da232db9692e62574574e9c4911091d48a2335d6bcfa490746271a6e2cf774503c8d3a5213cc08213f71ee693acde2f63c410a0ddc25f112302bbc4ad9035870489fbea6f362e06418f4b74fdfae40b7cbebc591fe7dd3969c28222f8852fa33e97e21da8c99f996a0a5f4e77eb142919f9061ec65d46537df480134ab71e796640225157631bc309671356f98c67215bf721b492e01e312d4e024384d7c63f515aa2a457ea00382343142e709c4d0973a148ad699519795e82e4f1d42a1c48405e3eb591fb593f177efb78eac191fe60fcfb65816d92c749b2d037f6ec878565d202acddeebe994c3140d3189b80ec120147e38345f4da47876ac9dac0ad3a3605a296ce63ceff40e8dc8570d4b576239e14c14ecc7a9748985b7577f84cc064e8ff940f8935b92b29dc7e86e4da3531e07cba3b9865c35864a083f5b51dd95089f1d76834d62a2cceec77a9f81d2c726e5967846d7a344dc3ed732ab8aee146b6cffcf302cdfc4aa8e66dacee1a5f454bfb87ec3672260de14622488c3ea825b13492c3a8ffc443421f6be6b0995476918fb85ac0d9cb6ed7212396afeb9f0bc1dc9ebc4b6f2b182b23d92af82c4d630d18aa16cc20d00db6299bf50a7c2e1b17483d96f7866e1366d4b4a635eb2d59316ea6cd13baf91bc2e1b9640ea5a613ac7903fb1f8d7137ee0c822a7c22373f3481aafcad1e1452d8bc70f43b968f15c9ca6a657cde1c249a93fa1375fb6711ca21fec66dd38535ef3f5e1bea083809a7db70716b3c20075fb4a55764835f562f1ae7acd6f5d80bbaca88c27ffec56f2ad79a54fc6a68494306262178dc9972a0b54a05f0e4e04ee11f3cb8fb541723ee35b2553eb0c30868111123e4057c6887ac62212c4296088f870fae8eeeb150 _Values: - {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} @@ -9913,7 +9914,6 @@ MonoBehaviour: - {fileID: 1230482840604333981, guid: 2f2e97c8a35330f49a9cb31ec0f075bf, type: 3} - {fileID: 4832900275935109613, guid: 2f2e97c8a35330f49a9cb31ec0f075bf, type: 3} - {fileID: 5922952087749752714, guid: 2f2e97c8a35330f49a9cb31ec0f075bf, type: 3} - - {fileID: 2800000, guid: f20112bdeec2e8d4d9f80e8390e37263, type: 3} - {fileID: 1464630163} - {fileID: 1464630162} - {fileID: 1464630161} @@ -9952,6 +9952,25 @@ MonoBehaviour: - {fileID: 534775924950268970, guid: 1802da913767140929fbb149d8bb1bf5, type: 3} - {fileID: 11500000, guid: d537bd381617a4941839f44c04840c28, type: 3} - {fileID: 303975922} + - {fileID: 8132557174609694425, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 5126086572364088879, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 2072332804138453357, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 816955147983443379, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 5840097170757975722, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 7025203609509180022, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 7108567356200093580, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 8526474044217039555, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 854107432770048664, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 1378655914364111770, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 10333948111691042, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: -8416968328479360239, guid: 42665ed72d40a4b349f0cb89f825437e, type: 3} + - {fileID: 373065448631755357, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 261765279725222738, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 3154956539503596607, guid: 42665ed72d40a4b349f0cb89f825437e, type: 3} + - {fileID: 4681825519897212372, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 2202765603615894048, guid: 5e49956564dfa491cb6aa8fe57c1b2d6, type: 3} + - {fileID: 11500000, guid: 1ec53002feb264ae7b2bb0386ac37ad2, type: 3} + - {fileID: 8182686472733940155, guid: 42665ed72d40a4b349f0cb89f825437e, type: 3} --- !u!4 &1926461710 Transform: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIVector3InputField.cs b/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIVector3InputField.cs index 0ddd21f1..322b9f66 100644 --- a/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIVector3InputField.cs +++ b/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIVector3InputField.cs @@ -4,6 +4,7 @@ using Ichni.RhythmGame; using JetBrains.Annotations; using TMPro; using UnityEngine; +using UnityEngine.Events; using UnityEngine.Serialization; using UnityEngine.UIElements.Experimental; @@ -34,5 +35,12 @@ namespace Ichni.Editor connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, newValue); connectedBaseElement.Refresh(); } + + public void AddListenerFunction(UnityAction action) + { + inputFieldX.onEndEdit.AddListener(_ => action()); + inputFieldY.onEndEdit.AddListener(_ => action()); + inputFieldZ.onEndEdit.AddListener(_ => action()); + } } } \ No newline at end of file diff --git a/Assets/Scripts/DynamicUI/Inspector/CompositeParameterWindow.cs b/Assets/Scripts/DynamicUI/Inspector/CompositeParameterWindow.cs index 44571581..00e4f499 100644 --- a/Assets/Scripts/DynamicUI/Inspector/CompositeParameterWindow.cs +++ b/Assets/Scripts/DynamicUI/Inspector/CompositeParameterWindow.cs @@ -112,5 +112,74 @@ namespace Ichni.Editor connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, newFlexibleFloat); }; } + + public void SetAsFlexibleInt() + { + void GenerateUnit(AnimatedInt content) + { + DynamicUIAnimatedIntUnit unit = Instantiate(unitPrefab, windowRect).GetComponent(); + unitList.Add(unit); + unit.SetUnit(this, content); + } + + unitPrefab = EditorManager.instance.basePrefabs.animatedIntUnit; + + FlexibleInt flexibleInt = connectedBaseElement.GetType().GetField(parameterName).GetValue(connectedBaseElement) as FlexibleInt; + foreach (AnimatedInt animatedInt in flexibleInt.animations) + { + GenerateUnit(animatedInt); + } + addNewUnitButton.GetComponent().SetAsLastSibling(); + + addNewUnitButton.onClick.AddListener(() => + { + GenerateUnit(new AnimatedInt(0, 0)); + addNewUnitButton.GetComponent().SetAsLastSibling(); + }); + + ApplyParameters = () => + { + FlexibleInt newFlexibleInt = new FlexibleInt(); + foreach (var unit in unitList) + { + newFlexibleInt.animations.Add((unit as DynamicUIAnimatedIntUnit).GetValue()); + } + connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, newFlexibleInt); + }; + } + + public void SetAsFlexibleBool() + { + void GenerateUnit(AnimatedBool content) + { + DynamicUIAnimatedBoolUnit unit = Instantiate(unitPrefab, windowRect).GetComponent(); + unitList.Add(unit); + unit.SetUnit(this, content); + } + + unitPrefab = EditorManager.instance.basePrefabs.animatedBoolUnit; + FlexibleBool flexibleBool = connectedBaseElement.GetType().GetField(parameterName).GetValue(connectedBaseElement) as FlexibleBool; + foreach (AnimatedBool animatedBool in flexibleBool.animations) + { + GenerateUnit(animatedBool); + } + addNewUnitButton.GetComponent().SetAsLastSibling(); + + addNewUnitButton.onClick.AddListener(() => + { + GenerateUnit(new AnimatedBool(0, false)); + addNewUnitButton.GetComponent().SetAsLastSibling(); + }); + + ApplyParameters = () => + { + FlexibleBool newFlexibleBool = new FlexibleBool(); + foreach (var unit in unitList) + { + newFlexibleBool.animations.Add((unit as DynamicUIAnimatedBoolUnit).GetValue()); + } + connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, newFlexibleBool); + }; + } } } \ No newline at end of file diff --git a/Assets/Scripts/DynamicUI/MainUI/LogWindow/LogWindow.cs b/Assets/Scripts/DynamicUI/MainUI/LogWindow/LogWindow.cs index 0588d376..663db474 100644 --- a/Assets/Scripts/DynamicUI/MainUI/LogWindow/LogWindow.cs +++ b/Assets/Scripts/DynamicUI/MainUI/LogWindow/LogWindow.cs @@ -18,8 +18,13 @@ namespace Ichni.Editor { logTexts = new Queue(); } + + public static void Log(string text, Color color = default) + { + EditorManager.instance.uiManager.mainPage.logWindow.AddLog(text, color); + } - public void AddLog(string text, Color color = default) + private void AddLog(string text, Color color = default) { CheckLogTextCapacity(); LogText logText = LeanPool.Spawn(logTextPrefab, textRect).GetComponent(); diff --git a/Assets/Scripts/EditorGame/Base/GeneralSubmodules/EffectSubmodule.cs b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/EffectSubmodule.cs index 2a2f9695..156300bb 100644 --- a/Assets/Scripts/EditorGame/Base/GeneralSubmodules/EffectSubmodule.cs +++ b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/EffectSubmodule.cs @@ -4,6 +4,7 @@ using Ichni.Editor; using Ichni.RhythmGame.Beatmap; using Sirenix.Utilities; using UnityEngine; +using UnityEngine.Events; namespace Ichni.RhythmGame { @@ -83,6 +84,12 @@ namespace Ichni.RhythmGame public interface IHaveEffectSubmodule { public EffectSubmodule effectSubmodule { get; set; } + + public static Dictionary EffectCollection { get; } = + new Dictionary() + { + {"BloomShake", new BloomShake(1, 2)} + }; } namespace Beatmap diff --git a/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TimeDurationSubmodule.cs b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TimeDurationSubmodule.cs index 05fa1e4b..f9af2c46 100644 --- a/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TimeDurationSubmodule.cs +++ b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TimeDurationSubmodule.cs @@ -17,6 +17,7 @@ namespace Ichni.RhythmGame isOverridingDuration = false; startTime = -32767;//TODO: 换为-delay endTime = 32767;//TODO: 换为songLength + } public TimeDurationSubmodule(GameElement attachedGameElement, bool isOverridingDuration, float startTime, float endTime) : base(attachedGameElement) diff --git a/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TransformSubmodule.cs b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TransformSubmodule.cs index 424a6b2e..dd6de701 100644 --- a/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TransformSubmodule.cs +++ b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TransformSubmodule.cs @@ -29,8 +29,7 @@ namespace Ichni.RhythmGame public bool scaleDirtyMark; public bool eulerAnglesOffsetLock; - - + public TransformSubmodule(GameElement attachedGameElement) : base(attachedGameElement) { this.originalPosition = Vector3.zero; @@ -51,7 +50,8 @@ namespace Ichni.RhythmGame eulerAnglesOffsetLock = false; - // (attachedGameElement as IHaveTransformSubmodule).SetTransformObserver(); + (attachedGameElement as IHaveTransformSubmodule).transformSubmodule = this; + (attachedGameElement as IHaveTransformSubmodule).SetTransformObserver(); } public TransformSubmodule(GameElement attachedGameElement, @@ -75,7 +75,8 @@ namespace Ichni.RhythmGame eulerAnglesOffsetLock = false; - // (attachedGameElement as IHaveTransformSubmodule).SetTransformObserver(); + (attachedGameElement as IHaveTransformSubmodule).transformSubmodule = this; + (attachedGameElement as IHaveTransformSubmodule).SetTransformObserver(); } public override void SaveBM() @@ -98,6 +99,10 @@ namespace Ichni.RhythmGame inspector.GenerateParameterText(this, container, "Current Rotation", nameof(currentEulerAngles), true); var currentScaleText = inspector.GenerateParameterText(this, container, "Current Scale", nameof(currentScale), true); + + originalPosInputField.AddListenerFunction(Refresh); + originalRotInputField.AddListenerFunction(Refresh); + originalScaleInputField.AddListenerFunction(Refresh); } public override void Refresh() @@ -119,7 +124,7 @@ namespace Ichni.RhythmGame public void SetTransformObserver() { GameElement attachedGameElement = transformSubmodule.attachedGameElement; - + Observable.EveryUpdate().Subscribe(_ => { if (transformSubmodule == null) @@ -197,6 +202,7 @@ namespace Ichni.RhythmGame public override void ExecuteBM() { attachedElement = GameElement_BM.GetElement(attachedElementGuid); + Debug.Log(attachedElementGuid); (attachedElement as IHaveTransformSubmodule).transformSubmodule = new TransformSubmodule(attachedElement, originalPosition, originalEulerAngles, originalScale); attachedElement.submoduleList.Add((attachedElement as IHaveTransformSubmodule).transformSubmodule); } diff --git a/Assets/Scripts/EditorGame/GameElements/ElementFolder/ElementFolder.cs b/Assets/Scripts/EditorGame/GameElements/ElementFolder/ElementFolder.cs index 320bc969..ede69a82 100644 --- a/Assets/Scripts/EditorGame/GameElements/ElementFolder/ElementFolder.cs +++ b/Assets/Scripts/EditorGame/GameElements/ElementFolder/ElementFolder.cs @@ -73,6 +73,9 @@ namespace Ichni.RhythmGame var swirlButton = inspector.GenerateButton(this, container, "Swirl", () => Swirl.GenerateElement("New Swirl", Guid.NewGuid(), new List(), true, this, new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat())); + var timeEffectsCollectionButton = inspector.GenerateButton(this, container, "Time Effects Collection", + () => TimeEffectsCollection.GenerateElement("New Time Effects Collection", Guid.NewGuid(), + new List(), true, this, 0f)); } } diff --git a/Assets/Scripts/EditorGame/GameElements/GameCamera/GameCamera.cs b/Assets/Scripts/EditorGame/GameElements/GameCamera/GameCamera.cs index 5c8a2989..3f193397 100644 --- a/Assets/Scripts/EditorGame/GameElements/GameCamera/GameCamera.cs +++ b/Assets/Scripts/EditorGame/GameElements/GameCamera/GameCamera.cs @@ -2,10 +2,12 @@ using System; using System.Collections; using System.Collections.Generic; using Dreamteck.Splines; +using Ichni.Editor; using Ichni.RhythmGame.Beatmap; using Lean.Pool; using UniRx; using UnityEngine; +using UnityEngine.Rendering.Universal; using UnityEngine.Serialization; namespace Ichni.RhythmGame @@ -23,15 +25,28 @@ namespace Ichni.RhythmGame public TransformSubmodule transformSubmodule { get; set; } public TimeDurationSubmodule timeDurationSubmodule { get; set; } + private static CameraManager cameraManager => EditorManager.instance.cameraManager; public static GameCamera GenerateElement(string elementName, Guid id, List tags, bool isFirstGenerated, GameElement parentElement, CameraViewType cameraViewType, float perspectiveAngle, float orthographicSize) { + if (EditorManager.instance.cameraManager.haveGameCamera) + { + LogWindow.Log("Only one GameCamera can be created", Color.red); + return null; + } + GameCamera gameCamera = Instantiate(EditorManager.instance.basePrefabs.gameCamera).GetComponent(); gameCamera.Initialize(elementName, id, tags, isFirstGenerated, parentElement); + + cameraManager.gameCamera = gameCamera; + cameraManager.backgroundCamera.GetComponent().cameraStack.Add(gameCamera.camera); + if (cameraManager.isSceneCameraActive) gameCamera.camera.enabled = false; + + gameCamera.parentElement = parentElement; gameCamera.cameraViewType = cameraViewType; gameCamera.camera.orthographic = cameraViewType == CameraViewType.Orthographic; @@ -132,7 +147,7 @@ namespace Ichni.RhythmGame public override void ExecuteBM() { - GameCamera.GenerateElement(elementName, elementGuid, tags, false, + matchedElement = GameCamera.GenerateElement(elementName, elementGuid, tags, false, GetElement(attachedElementGuid), cameraViewType, perspectiveAngle, orthographicSize); } diff --git a/Assets/Scripts/EditorGame/GameElements/GameElement.cs b/Assets/Scripts/EditorGame/GameElements/GameElement.cs index e3bf9d39..5973e52b 100644 --- a/Assets/Scripts/EditorGame/GameElements/GameElement.cs +++ b/Assets/Scripts/EditorGame/GameElements/GameElement.cs @@ -57,6 +57,7 @@ namespace Ichni.RhythmGame if (isFirstGenerated) SetDefaultSubmodules(); SetParent(parentElement); EditorManager.instance.uiManager.hierarchy.GenerateTab(this, parentElement); + //GameManager.beatMapContainer.beatMapElementList.Add(this); //serialNumber = totalSerialNumber++; //SetTransformObserver(); diff --git a/Assets/Scripts/EditorGame/GameElements/GeneralEffects/BloomShake.cs b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/BloomShake.cs index 8c7f894f..8ae3a8ee 100644 --- a/Assets/Scripts/EditorGame/GameElements/GeneralEffects/BloomShake.cs +++ b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/BloomShake.cs @@ -14,8 +14,14 @@ namespace Ichni.RhythmGame { public float bloomTime; public float bloomPeak; - - [Button("Test Bloom Shake")] + + public BloomShake(float bloomTime, float bloomPeak) + { + this.effectTime = 0; + this.bloomTime = bloomTime; + this.bloomPeak = bloomPeak; + } + public override void Adjust() { MMF_Player effect = LeanPool.Spawn(EditorManager.instance.basePrefabs.bloomShake).GetComponent(); @@ -27,12 +33,40 @@ namespace Ichni.RhythmGame public override EffectBase_BM ConvertToBM() { - throw new NotImplementedException(); + return new BloomShake_BM(bloomTime, bloomPeak); } public override void SetUpInspector() { - throw new NotImplementedException(); + var container = inspector.GenerateContainer("Bloom Shake"); + var effectTimeField = inspector.GenerateInputField(this, container, "Bloom Time", nameof(bloomTime)); + var bloomPeakField = inspector.GenerateInputField(this, container, "Bloom Peak", nameof(bloomPeak)); + } + } + + namespace Beatmap + { + public class BloomShake_BM : EffectBase_BM + { + public float bloomTime; + public float bloomPeak; + + public BloomShake_BM() + { + + } + + public BloomShake_BM(float bloomTime, float bloomPeak) + { + this.effectTime = 0; + this.bloomTime = bloomTime; + this.bloomPeak = bloomPeak; + } + + public override EffectBase ConvertToGameType() + { + return new BloomShake(bloomTime, bloomPeak); + } } } } \ No newline at end of file diff --git a/Assets/Scripts/EditorGame/GameElements/GeneralEffects/TimeEffectsCollection.cs b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/TimeEffectsCollection.cs index 0df28282..25d23eed 100644 --- a/Assets/Scripts/EditorGame/GameElements/GeneralEffects/TimeEffectsCollection.cs +++ b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/TimeEffectsCollection.cs @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; +using Ichni.RhythmGame.Beatmap; using Sirenix.OdinInspector; using UnityEngine; @@ -11,10 +12,12 @@ namespace Ichni.RhythmGame public EffectSubmodule effectSubmodule { get; set; } public float time; - public static TimeEffectsCollection CreateTimeEffectsCollection(float time) + public static TimeEffectsCollection GenerateElement(string name, Guid guid, List tags, + bool isFirstGenerated, GameElement parentElement, float time) { TimeEffectsCollection timeEffectsCollection = Instantiate(EditorManager.instance.basePrefabs.emptyObject) .AddComponent(); + timeEffectsCollection.Initialize(name, guid, tags, isFirstGenerated, parentElement); timeEffectsCollection.time = time; return timeEffectsCollection; } @@ -34,18 +37,53 @@ namespace Ichni.RhythmGame { public override void SaveBM() { - + matchedBM = new TimeEffectsCollection_BM(this); } public override void SetUpInspector() { var container = inspector.GenerateContainer("Time Effects Collection"); var timeInputField = inspector.GenerateInputField(this, container, "Time", nameof(time)); + var addEffectButton = inspector.GenerateButton(this, container, "Add Effect", () => + { + IHaveEffectSubmodule.EffectCollection.TryGetValue("BloomShake", out var effect); + effectSubmodule.effectCollection["Default"].Add(effect); + }); + + foreach (var effect in effectSubmodule.effectCollection["Default"]) + { + effect.SetUpInspector(); + } } } namespace Beatmap { - + public class TimeEffectsCollection_BM : GameElement_BM + { + public float time; + + public TimeEffectsCollection_BM() + { + + } + + public TimeEffectsCollection_BM(TimeEffectsCollection timeEffectsCollection) + { + time = timeEffectsCollection.time; + } + + public override void ExecuteBM() + { + matchedElement = TimeEffectsCollection.GenerateElement("Time Effects Collection", elementGuid, + tags, false, GetElement(attachedElementGuid), time); + } + + public override GameElement DuplicateBM(GameElement attached) + { + return TimeEffectsCollection.GenerateElement("Time Effects Collection", elementGuid, + tags, false, attached, time); + } + } } } \ No newline at end of file diff --git a/Assets/Scripts/EditorGame/GameElements/Track/TrackPoints/CrossTrackPoint.cs b/Assets/Scripts/EditorGame/GameElements/Track/TrackPoints/CrossTrackPoint.cs index 36d185b9..ebd67c6f 100644 --- a/Assets/Scripts/EditorGame/GameElements/Track/TrackPoints/CrossTrackPoint.cs +++ b/Assets/Scripts/EditorGame/GameElements/Track/TrackPoints/CrossTrackPoint.cs @@ -63,6 +63,21 @@ namespace Ichni.RhythmGame trackPositioner.SetPercent(trackPercent.value); } + + private void PasteTrackList() + { + List trackList = (parentElement as ElementFolder).trackList; + trackSwitch = new FlexibleInt(); + trackPercent = new FlexibleFloat(); + foreach (Track track in trackList) + { + TrackTimeSubmoduleMovable trackTimeSubmodule = track.trackTimeSubmodule as TrackTimeSubmoduleMovable; + trackSwitch.animations.Add(new AnimatedInt(trackTimeSubmodule.trackStartTime, + trackList.IndexOf(track))); + trackPercent.animations.Add(new AnimatedFloat(trackTimeSubmodule.trackStartTime, + trackTimeSubmodule.trackEndTime, 0, 1, trackTimeSubmodule.animationCurveType)); + } + } } public partial class CrossTrackPoint @@ -72,6 +87,28 @@ namespace Ichni.RhythmGame matchedBM = new CrossTrackPoint_BM(elementName, elementGuid, tags, parentElement.matchedBM as GameElement_BM, trackSwitch, trackPercent); } + + public override void SetUpInspector() + { + base.SetUpInspector(); + var container = inspector.GenerateContainer("Cross Track Point"); + var trackSwitchButton = inspector.GenerateButton(this, container, "Track Switch", + () => + { + inspector.GenerateCompositeParameterWindow(this, "Track Switch", nameof(trackSwitch)).SetAsFlexibleInt(); + }); + var trackPercentButton = inspector.GenerateButton(this, container, "Track Percent", + () => + { + inspector.GenerateCompositeParameterWindow(this, "Track Percent", nameof(trackPercent)).SetAsFlexibleFloat(); + }); + var pasteTrackListButton = inspector.GenerateButton(this, container, "Paste Track List", PasteTrackList); + + var generateContainer = inspector.GenerateContainer("Generate"); + var generateCameraButton = inspector.GenerateButton(this, generateContainer, "Game Camera", + () => GameCamera.GenerateElement("New Game Camera", Guid.NewGuid(), new List(), + true, this, GameCamera.CameraViewType.Perspective, 60, 10)); + } } namespace Beatmap diff --git a/Assets/Scripts/Manager/CameraManager.cs b/Assets/Scripts/Manager/CameraManager.cs index 0f9ea26f..d773fbfb 100644 --- a/Assets/Scripts/Manager/CameraManager.cs +++ b/Assets/Scripts/Manager/CameraManager.cs @@ -3,25 +3,29 @@ using System.Collections.Generic; using Ichni.RhythmGame; using Ichni.RhythmGame.Beatmap; using UnityEngine; +using UnityEngine.Serialization; namespace Ichni.Editor { public class CameraManager : MonoBehaviour, IBaseElement { + public Camera backgroundCamera; + public bool isSceneCameraActive; public SceneCamera sceneCamera; - public float cameraMoveSpeed; + public float sceneCameraMoveSpeed; public GameCamera gameCamera; - private bool haveGameCamera => gameCamera != null; + public bool haveGameCamera => gameCamera != null; public BaseElement_BM matchedBM { get; set; } public void SwitchCamera() { if (!haveGameCamera) - { - throw new System.Exception("GameCamera is not assigned"); + { + LogWindow.Log("GameCamera is not assigned", Color.red); + return; } isSceneCameraActive = !isSceneCameraActive; @@ -35,7 +39,7 @@ namespace Ichni.Editor var container = EditorManager.instance.uiManager.inspector.GenerateContainer("Camera Manager"); var cameraTypeText = EditorManager.instance.uiManager.inspector.GenerateHintText(this, container, ShowCameraType); var switchCameraButton = EditorManager.instance.uiManager.inspector.GenerateButton(this, container, "Switch Camera", SwitchCamera); - var cameraMoveSpeedField = EditorManager.instance.uiManager.inspector.GenerateInputField(this, container, "Camera Move Speed", nameof(cameraMoveSpeed)); + var cameraMoveSpeedField = EditorManager.instance.uiManager.inspector.GenerateInputField(this, container, "Scene Camera Move Speed", nameof(sceneCameraMoveSpeed)); sceneCamera.SetUpInspector(); } } diff --git a/Assets/Scripts/Manager/EditorManager.cs b/Assets/Scripts/Manager/EditorManager.cs index 73aa3274..28915fe7 100644 --- a/Assets/Scripts/Manager/EditorManager.cs +++ b/Assets/Scripts/Manager/EditorManager.cs @@ -7,7 +7,6 @@ using Ichni.RhythmGame.Beatmap; using Ichni.RhythmGame.ThemeBundles.Basic; using Sirenix.OdinInspector; using UnityEngine; -using Random = UnityEngine.Random; namespace Ichni { @@ -55,11 +54,6 @@ namespace Ichni beatmapContainer.gameElementList.ForEach(gameElement => { - if (gameElement is IHaveTransformSubmodule transformedElement) - { - transformedElement.SetTransformObserver(); - } - gameElement.AfterInitialize(); gameElement.Refresh(); }); @@ -70,11 +64,18 @@ namespace Ichni var container = inspector.GenerateContainer("Editor Manager"); var judgeTypeDropdown = inspector.GenerateDropdown(this, container, "Judge Type", typeof(NoteBase.NoteJudgeType), nameof(currentJudgeType)); - var generateBackgroundSetterButton = + + var generateFolderButton = + inspector.GenerateButton(this, container, "Generate Folder", + () => ElementFolder.GenerateElement("Folder", Guid.NewGuid(), + new List(), true, null)); + + var generateBackgroundSetterButton = inspector.GenerateButton(this, container, "Generate Background Setter", - () => BackgroundSetter.GenerateElement("Background Setter", Guid.NewGuid(), - new List(), true, null, false, + () => BackgroundSetter.GenerateElement("Background Setter", Guid.NewGuid(), + new List(), true, null, false, "basic", "Skybox", "Background")); + projectInformation.SetUpInspector(); songInformation.SetUpInspector(); cameraManager.SetUpInspector(); diff --git a/Assets/Scripts/Manager/InputListener.cs b/Assets/Scripts/Manager/InputListener.cs index 6b7a24b9..bdac27d8 100644 --- a/Assets/Scripts/Manager/InputListener.cs +++ b/Assets/Scripts/Manager/InputListener.cs @@ -12,7 +12,7 @@ namespace Ichni.Editor { if (EditorManager.instance.cameraManager.isSceneCameraActive) { - float cameraSpeed = EditorManager.instance.cameraManager.cameraMoveSpeed * Time.deltaTime; + float cameraSpeed = EditorManager.instance.cameraManager.sceneCameraMoveSpeed * Time.deltaTime; Transform sceneCameraTransform = EditorManager.instance.cameraManager.sceneCamera.transform; if (Keyboard.current.wKey.isPressed) { diff --git a/Assets/Scripts/Manager/OperationManager.cs b/Assets/Scripts/Manager/OperationManager.cs new file mode 100644 index 00000000..122ea97e --- /dev/null +++ b/Assets/Scripts/Manager/OperationManager.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class OperationManager : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/Scripts/Manager/OperationManager.cs.meta b/Assets/Scripts/Manager/OperationManager.cs.meta new file mode 100644 index 00000000..c7a1f2b3 --- /dev/null +++ b/Assets/Scripts/Manager/OperationManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 773c77098921d4c1a87dc6068b5253e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Manager/ProjectManager.cs b/Assets/Scripts/Manager/ProjectManager.cs index bda24063..216a5e48 100644 --- a/Assets/Scripts/Manager/ProjectManager.cs +++ b/Assets/Scripts/Manager/ProjectManager.cs @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; +using Ichni.Editor; using Ichni.RhythmGame; using Ichni.RhythmGame.Beatmap; using UnityEngine; @@ -62,10 +63,14 @@ namespace Ichni string beatmapPath = exportPath + "/BeatMap.bytes"; string commandScriptsPath = exportPath + "/CommandScripts.bytes"; + LogWindow.Log("Start Exporting..."); + ExportProjectInfo(projectInfoPath); ExportSongInfo(songInfoPath); ExportBeatMap(beatmapPath); ExportCommandScripts(commandScriptsPath); + + LogWindow.Log("Export Complete", Color.green); } private void ExportProjectInfo(string exportPath) @@ -101,10 +106,14 @@ namespace Ichni { public void Save() { + LogWindow.Log("Start Saving..."); + SaveProjectInfo(); SaveSongInfo(); SaveBeatMap(); SaveCommandScripts(); + + LogWindow.Log("Save Complete", Color.green); } private void SaveProjectInfo() @@ -144,6 +153,8 @@ namespace Ichni LoadSongInfo(); LoadBeatMap(); LoadCommandScripts(); + + LogWindow.Log("Load Complete", Color.green); } private void LoadProjectInfo(string projectName) diff --git a/Assets/StreamingAssets/Projects/TestProject/Beatmap.json b/Assets/StreamingAssets/Projects/TestProject/Beatmap.json index 2b685163..f3097048 100644 --- a/Assets/StreamingAssets/Projects/TestProject/Beatmap.json +++ b/Assets/StreamingAssets/Projects/TestProject/Beatmap.json @@ -520,7 +520,7 @@ "attachedNoteID" : { "value" : "c5134d2c-c175-458c-99ff-07523169ec21" }, - "effectTime" : 0 + "effectTime" : 0.1 } ],"Good":[ { @@ -528,7 +528,7 @@ "attachedNoteID" : { "value" : "c5134d2c-c175-458c-99ff-07523169ec21" }, - "effectTime" : 0 + "effectTime" : 0.1 } ],"Bad":[ { @@ -536,7 +536,7 @@ "attachedNoteID" : { "value" : "c5134d2c-c175-458c-99ff-07523169ec21" }, - "effectTime" : 0 + "effectTime" : 0.1 } ],"Miss":[ { @@ -544,13 +544,88 @@ "attachedNoteID" : { "value" : "c5134d2c-c175-458c-99ff-07523169ec21" }, - "effectTime" : 0 + "effectTime" : 0.2 } ] }, "attachedElementGuid" : { "value" : "461ebb33-7c3d-47b2-bc0b-7c5ef2cd3e9e" } + },{ + "__type" : "Ichni.RhythmGame.Beatmap.ElementFolder_BM,Assembly-CSharp", + "elementName" : "Folder", + "tags" : [ + + ], + "elementGuid" : { + "value" : "48db0eab-2ed9-4179-8bdf-e90970d046ca" + }, + "attachedElementGuid" : { + "value" : "00000000-0000-0000-0000-000000000000" + } + },{ + "__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp", + "originalPosition" : { + "x" : 0, + "y" : 0, + "z" : 0 + }, + "originalEulerAngles" : { + "x" : 0, + "y" : 0, + "z" : 0 + }, + "originalScale" : { + "x" : 1, + "y" : 1, + "z" : 1 + }, + "attachedElementGuid" : { + "value" : "48db0eab-2ed9-4179-8bdf-e90970d046ca" + } + },{ + "__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp", + "isOverridingDuration" : false, + "startTime" : -32767, + "endTime" : 32767, + "attachedElementGuid" : { + "value" : "48db0eab-2ed9-4179-8bdf-e90970d046ca" + } + },{ + "__type" : "Ichni.RhythmGame.Beatmap.GameCamera_BM,Assembly-CSharp", + "cameraViewType" : 0, + "perspectiveAngle" : 60, + "orthographicSize" : 10, + "elementName" : "New Camera", + "tags" : [ + + ], + "elementGuid" : { + "value" : "90851003-b06b-4fee-8bd3-910abdbe53b1" + }, + "attachedElementGuid" : { + "value" : "48db0eab-2ed9-4179-8bdf-e90970d046ca" + } + },{ + "__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp", + "originalPosition" : { + "x" : 0, + "y" : 0, + "z" : 0 + }, + "originalEulerAngles" : { + "x" : 0, + "y" : 0, + "z" : 0 + }, + "originalScale" : { + "x" : 1, + "y" : 1, + "z" : 1 + }, + "attachedElementGuid" : { + "value" : "90851003-b06b-4fee-8bd3-910abdbe53b1" + } } ] } diff --git a/Assets/StreamingAssets/Projects/TestProject/ProjectInfo.json b/Assets/StreamingAssets/Projects/TestProject/ProjectInfo.json index 171b9fca..d2d6e770 100644 --- a/Assets/StreamingAssets/Projects/TestProject/ProjectInfo.json +++ b/Assets/StreamingAssets/Projects/TestProject/ProjectInfo.json @@ -8,7 +8,7 @@ "createTime" : "2025-02-08", "lastSaveTime" : "2025-02-08", "selectedThemeBundleList" : [ - "basic", "departure_to_multiverse" + "basic","departure_to_multiverse" ] } }