From 2f3f807911b85559f4faaf124cb0fc6672920723 Mon Sep 17 00:00:00 2001 From: AbstractConcept Date: Wed, 21 Sep 2022 16:15:25 -0500 Subject: [PATCH] Remove and save custom tags --- .vs/RimWorld-Animation-Studio/v16/.suo | Bin 674304 -> 671232 bytes Assembly-CSharp.csproj | 4 +- Assets/DecimalValidator.cs | 26 - Assets/Resources/Prefabs/OptionToggle.prefab | 119 +++++ Assets/Scenes/SampleScene.unity | 458 +++++++++++++++++- Assets/Scripts/AnimationComponents/Actor.cs | 22 +- .../AnimationClips/AnimationClip.cs | 5 + .../AnimationClips/PawnAnimationClip.cs | 5 + .../AnimationComponents/AnimationDef.cs | 59 +-- .../AnimationComponents/AnimationStage.cs | 13 + .../AnimationComponents/KeyFrames/Keyframe.cs | 5 + .../KeyFrames/PawnKeyframe.cs | 8 +- Assets/Scripts/Extensions/IListExtensions.cs | 17 + Assets/Scripts/GUI/ActorBody.cs | 23 +- Assets/Scripts/GUI/ActorBodyPart.cs | 18 +- Assets/Scripts/GUI/ActorKeyframeCard.cs | 54 +-- Assets/Scripts/GUI/DialogBoxes/DialogBox.cs | 23 + .../GUI/DialogBoxes/SelectActorLayerDialog.cs | 4 +- .../DialogBoxes/SelectBodyDefTypesDialog.cs | 54 +-- .../GUI/DialogBoxes/SelectBodyPartsDialog.cs | 71 ++- .../GUI/DialogBoxes/SelectDefNamesDialog.cs | 55 +-- .../SelectInteractionDefsDialog.cs | 65 ++- .../GUI/DialogBoxes/SelectRaceDialog.cs | 59 +++ .../GUI/DialogBoxes/SelectRaceDialog.cs.meta | 11 + .../GUI/DialogBoxes/SelectSexTypesDialog.cs | 53 +- .../GUI/DialogBoxes/SelectSoundDefDialog.cs | 53 +- .../Scripts/Managers/AnimationController.cs | 12 +- Assets/Scripts/Managers/ApplicationManager.cs | 81 +++- Assets/Scripts/Math/Constants/Constants.cs | 36 +- Assets/Scripts/NumberValidator.cs | 30 ++ .../NumberValidator.cs.meta} | 0 Assets/Scripts/Utilities/XmlUtility.cs | 8 +- Assets/Scripts/Workspace/Workspace.cs | 8 - Assets/StreamingAssets/customTags.xml | 14 + Assets/StreamingAssets/customTags.xml.meta | 7 + Library/ArtifactDB | Bin 16777216 -> 16777216 bytes .../01/01563130c6268eddc34fbd092deeb726 | Bin 0 -> 8296 bytes .../045df43c1806e34e5e1ae0198688c54f} | Bin 6328 -> 6456 bytes .../06/0600a652ce5d5b4b3d178867081f67e5 | Bin 0 -> 7892 bytes .../09/09422755819f7acee09b75874499e142 | Bin 0 -> 7820 bytes .../09/095e7313d7a87d9c38776718e9e1a2c2 | Bin 0 -> 8224 bytes .../0cbd0b55e9a8eaa06a6f0b35613c3b59} | Bin 8028 -> 8056 bytes .../0c/0cf00e31849d840e372b46a078218d44 | Bin 0 -> 7336 bytes .../0d1afe8e06eefcd4cb527bc6fd0d1ae9} | Bin 7724 -> 7572 bytes .../0d/0d966d451a4e86681aa387942c5cbbdf | Bin 0 -> 30320 bytes .../0d/0de993fc9a1a31fe18ef974e8addc1fe | Bin 0 -> 8324 bytes .../0f/0fee8a50fb409264ebb09bed20386c3a | Bin 0 -> 8292 bytes .../10/101829049cb5e37831425f1817c91e96 | Bin 0 -> 30320 bytes .../1330798a44c1a6698e33224856b7918f} | Bin 9204 -> 9268 bytes .../14/14a87a6db333f200140a600aeb86a5a1 | Bin 0 -> 8108 bytes .../15/15cd56181d179d919964d7547884e200 | Bin 0 -> 9208 bytes .../15/15de06cc24bf7343be38ac74656940de | Bin 0 -> 30320 bytes .../16/16ec92a4d1a2580d67dbeeee07e2de95 | Bin 0 -> 7992 bytes .../1a/1a9345df129356b7a6c2ac58a41963c3 | Bin 0 -> 7868 bytes .../1cda8eef451e6638ba945b715281909f} | Bin 7556 -> 8140 bytes .../1d3c7e073752dc4dfb2bfe6551e5fee4} | Bin 5012 -> 5028 bytes .../21/212a2adbdb0dabc0c370c7b88a91e9fb | Bin 0 -> 7676 bytes .../21/219fc51896b6e82ba5ad164d7d04b862 | Bin 0 -> 7372 bytes .../23/239fd20c0862b3d16a1d88089563ac00 | Bin 0 -> 10912 bytes .../24/24039d0aa0486b9b277211603b44d5c3 | Bin 0 -> 6612 bytes .../25070b327d1cf53ed7b384a2b88149c9} | Bin 5020 -> 5036 bytes .../27/276bb90a4c9acc46e2cca60e977f9579 | Bin 0 -> 8440 bytes .../28/285ae9fc4a44f1479d6822f26133aade | Bin 0 -> 8424 bytes .../29/2925e4cf3eeda11743bce2a2a0413d88 | Bin 11744 -> 0 bytes .../2a/2a54cdfc1ca240a6cb30fdd12722ffe6 | Bin 0 -> 8296 bytes .../2a/2ae9b0b566b32d33d649a6105ae5b108 | Bin 0 -> 10232 bytes .../2b/2b6763831a7b371cad58ebda2f903cef | Bin 24240 -> 0 bytes .../2b/2b7a91e765113819950906a02193b8e3 | Bin 0 -> 8396 bytes .../2c/2cb99051c6f7231a976778ad9070f4b4 | Bin 0 -> 8296 bytes .../2e/2e53a064e5959e41ab819b1adb21f11c | Bin 24240 -> 0 bytes .../2e582011c37509509862eaf22e6f76b4} | Bin 7264 -> 7104 bytes .../2e/2e6325742ff22fca60c33db4134aa09a | Bin 0 -> 8560 bytes .../2e/2eb04eab092690119d6d468048e91667 | Bin 0 -> 5756 bytes .../2f0d1c86fb901bf27f4a6f1fe91a737a} | Bin 5048 -> 5568 bytes .../2f/2fb9c56470944efbc852d684a914d6e0 | Bin 0 -> 8324 bytes .../30/3096cdd8939bc0032e6ea0ee4bd679c1 | Bin 0 -> 7820 bytes .../31/318be973dba80e68ff7a8432c1d87e2d | Bin 0 -> 8020 bytes .../34/346b3389858a1091a72fea3989c7a185 | Bin 0 -> 5576 bytes .../35/35c5b5e2c3dce9911bd49c6c076ca1aa | Bin 0 -> 7684 bytes .../38/38d1a57cc52f0a3a8f0f0fc5d2a0c972 | Bin 0 -> 7328 bytes .../3c/3cc6290619bf2e36f7d51bc321778ec6 | Bin 0 -> 5988 bytes .../3d/3d4e3d890d9558264228c7d2ff9e19c0 | Bin 0 -> 7332 bytes .../3edc00caca3075e7bfcfa27ee7384dd9} | Bin 6392 -> 6404 bytes .../41ffae63577d80acd3c79b2b34b89cc9} | Bin 9168 -> 9280 bytes .../43/437fa894b86fef546ba708db41f9975a | Bin 24240 -> 0 bytes .../4476b700a67a238495b423601d1fcd6f} | Bin 5024 -> 4992 bytes .../45/45f269b2e022e3a8eecd522d0da631d0 | Bin 0 -> 10120 bytes .../47/471bfa15e5d5507b02674e86c619d4e3 | Bin 24240 -> 0 bytes .../48/48aca6a5f55f43adcc863d3e94669cb7 | Bin 0 -> 5644 bytes .../4b/4b121058d7a737aae174f27ff1463a2c | Bin 0 -> 8300 bytes .../4b/4be7ff4546e9867b8bff3a7ff952ed1e | Bin 0 -> 5776 bytes .../4c/4c3db94a10b80f250aae9989780170dd | Bin 0 -> 8404 bytes .../4d/4d80e34e80c7f26b4d3a0c9291cf52d6 | Bin 0 -> 7296 bytes .../4e/4e43144366d6c7f0c932a53350294926 | Bin 0 -> 4221 bytes .../4f/4f7e51004da0d534c4f81fda9c126d0c | Bin 0 -> 10080 bytes .../4f935eda917de4e94027ed4754f01e1f} | Bin 4884 -> 4860 bytes .../50/500fb404d51d4e49fbf1bc362bc0c20b | Bin 0 -> 7664 bytes .../50/50c60498c8c69094497d8cf453fdf8cb | Bin 0 -> 7784 bytes .../51/513ea1dc3dea8b40cbd32927af8f462e | Bin 0 -> 7832 bytes .../53/53fa3b34398708edba135966cf577817 | Bin 0 -> 8744 bytes .../55/555a53b26efef5d817dd960be713d7a5 | Bin 0 -> 7672 bytes .../56/56b025b460c2f15dd47e02f69513bc9e | Bin 0 -> 6900 bytes .../57/57977e960f936058ee99c93267c967bc | Bin 0 -> 8232 bytes .../57/57d3b60400c3fb4cd8b789fb759f10d2 | Bin 0 -> 7640 bytes .../5a/5a5b93ecb7e3130d78d45edca65a75ce | Bin 0 -> 6636 bytes .../5d/5d4c07ec13c9644c7436f1557ee19b8f | Bin 24240 -> 0 bytes .../5de72b5b335c833ca8a4d218538a0876} | Bin 7304 -> 6816 bytes .../60/60f0783b7a4d0d0c6f283ff1fa5147b1 | Bin 0 -> 7924 bytes .../61/61189d0704b1c22b0418d41e89cfbc54 | Bin 24240 -> 0 bytes .../629168c10de18d242ebdc177e4577083} | Bin 7888 -> 8000 bytes .../6417c58c81cfc88a1b09fee212cc3f67} | Bin 6364 -> 6656 bytes .../6455379ef9558efc6416f5ef2d0ccf79} | Bin 22344 -> 29680 bytes .../66375bb9872f20f82dd950d43df139ea} | Bin 5052 -> 5388 bytes .../66/664324b8207f449ef20a8e2ead9fb208 | Bin 24240 -> 0 bytes .../67/6719e84b7aaf18d48f792cc634f6f200 | Bin 0 -> 7472 bytes .../68/68018f9e1157e867d1d0543e25412e52 | Bin 0 -> 8264 bytes .../68fb476851e239e2b9617115aa995f57} | Bin 7188 -> 7156 bytes .../6b3b39818568b5962cd79e26ff132a26} | Bin 7384 -> 7192 bytes .../6b/6be3fe7443e293389df869dd0fcb2c22 | Bin 0 -> 6616 bytes .../6c4e9d8a2d723117b8e2a8192af38b0f} | Bin 22344 -> 29656 bytes .../6e/6e7e94518aae43ff3ad43071d3733f27 | Bin 0 -> 6696 bytes .../6f/6f647070e01ede05d5b4a279aad1f8b1 | Bin 0 -> 10124 bytes .../71/713baf217d5066e1b64e2b9e0e77722f | Bin 0 -> 8328 bytes .../72/72acb772acb02134b653b0c1598274e2 | Bin 0 -> 6628 bytes .../7365d2615254b459a3cf4c4fb324e531} | Bin 5096 -> 5384 bytes .../76/76afcd36629bdefc88298eab7a7f8b6b | Bin 0 -> 10080 bytes .../7773ea7a38dd771faeeaa3438a009202} | Bin 5084 -> 5412 bytes .../78/784df0dd93ee8b1649413b52dddec61a | Bin 0 -> 6640 bytes .../790530c6ad5f1b6571d82779edc53b64} | Bin 23056 -> 24408 bytes .../7d/7d4937cc7f1dba624cd8af3dde5be368 | Bin 0 -> 6748 bytes .../7d/7d78aa9a36d0e3a5ed2a591de47c73f2 | Bin 24240 -> 0 bytes .../7e/7e701ab99044b0dd8280701c5a0c04f1 | Bin 0 -> 8016 bytes .../7e/7ee9b7d4e325a6d465ba2ca7fde4f74b | Bin 0 -> 6928 bytes .../7f04c4aab9f926f19cd7cd34ac67be14} | Bin 24144 -> 29680 bytes .../82/8273fe5afdb99b6eb4777629d1044231 | Bin 24240 -> 0 bytes .../832ae69f0d749638f108fa4a2f954c44} | Bin 4992 -> 5152 bytes .../83/8336c0be4d7f51fea3df326cce34321f | Bin 0 -> 8292 bytes .../84/8451ac7f5c7178d106137dec3c8bb851 | Bin 0 -> 7368 bytes .../86/86a818333692baa9737d479fe0370e97 | Bin 0 -> 6644 bytes .../86/86d9beca5aebbc9c90367982c297a758 | Bin 0 -> 30320 bytes .../8a/8a49642e228ad78342d181bd8d06825e | Bin 0 -> 7648 bytes .../8a/8ab38683813c67cace6530b07bf6dd3e | Bin 0 -> 5884 bytes .../8c/8c8596fe319121beae9a54c635ed16de | Bin 0 -> 8392 bytes .../8d/8d6ac2fae216fb2b0c6ea3970666004e | Bin 0 -> 6644 bytes .../8e/8e06fc31bb919765cf0bfd6594dedf7a | Bin 9656 -> 0 bytes .../8e/8e2008af836ccc2fdfb94b24e070de9c | Bin 22876 -> 0 bytes .../8e/8ed63f1ec4e91e14adb05ced9b1e620b | Bin 5056 -> 0 bytes .../8f/8f1edb7857bdd2ea79a5159be486358f | Bin 0 -> 5892 bytes .../90/901d797bee9ebad571bd2857e84ca145 | Bin 0 -> 8356 bytes .../90/90953db292194e7890a205b9f80a946d | Bin 0 -> 30320 bytes .../92/92629d4062f728dd83ae613760ce323d | Bin 0 -> 7384 bytes .../92/928c9a21701cac7a3254749f217fa8e1 | Bin 24240 -> 0 bytes .../92/92db468c652df8fd78fc283e35f702f4 | Bin 24240 -> 0 bytes .../95/956f009800194626eab40f2e0963c71a | Bin 0 -> 6696 bytes .../961a7ed529fe3d03d5c5ce0255ee7214} | Bin 4676 -> 4828 bytes .../96/96357dcbaba56a34a381145a40d4881b | Bin 0 -> 10044 bytes .../97/97f602e3a4c8bc535563f53d38f3bfcb | Bin 0 -> 7360 bytes .../98/98b3d8b706e52fd4f6ea925b2aeb9d1a | Bin 0 -> 5780 bytes .../9b9149f6c8dfdc5192a318d1efc4ebb1} | Bin 22344 -> 29664 bytes .../9c/9c8bd8cf4a2b2413a3515fc29b7d76eb | Bin 24240 -> 0 bytes .../9e/9e2ce0c15bb1859a3e4ba4bf91193a9a | Bin 0 -> 8300 bytes .../9e/9e9cec5f44f2472501038634b4021d14 | Bin 0 -> 7240 bytes .../a0/a05ac7d5fa4bf217361dbc150d5bea23 | Bin 0 -> 10256 bytes .../a4/a488f146b3e68eaad901968ee22dbac1 | Bin 0 -> 7736 bytes .../a5/a57143639b058a86268e1829a76b55f0 | Bin 0 -> 5852 bytes .../a6c36bc3e1a159acbe96b276b6033deb} | Bin 7560 -> 7364 bytes .../a83bf9f944fd2ee96b22c04bcf0c2c1e} | Bin 23196 -> 23284 bytes .../ab/abdeaa9b692dc9ef6265730653812f19 | Bin 6360 -> 0 bytes .../ac/ac24e86cec76bbc7022685b341ee4985 | Bin 24240 -> 0 bytes .../ad/ad6424a86a0634699facf256f1fb38c6 | Bin 0 -> 7340 bytes .../ae910067e1dc709eb69977e20fbf40f6} | Bin 5988 -> 6588 bytes .../ae/aecb708c3caaeb88f5e9dbc8d0bd5ed5 | Bin 5084 -> 0 bytes .../b1/b162a9d8c12a9f4d55c00c39c2d4091c | Bin 0 -> 7496 bytes .../b3/b3ca9022ef20f5f1ce013b0cd543a752 | Bin 0 -> 10868 bytes .../b5/b59d678b9d4dd088bb41ca50c1f67b3e | Bin 0 -> 6716 bytes .../b5a3f8c37e056fc7d7efb4a3be147980} | Bin 4976 -> 4984 bytes .../b61140570fd7308315a4621b054c4548} | Bin 8252 -> 8272 bytes .../b6/b6fd235778ddb58413ed49aceac24661 | Bin 0 -> 7128 bytes .../b7/b76d07fdbcc53c9848e72681e6c092b6 | Bin 0 -> 9080 bytes .../b7/b78f64cf8e378f0d04be1c8181322a82 | Bin 23096 -> 0 bytes .../b7/b7cc9fb8c564456e94db42e549417abf | Bin 0 -> 5840 bytes .../b9/b9d6d45fae10b4f6d04a07ba1f9d9859 | Bin 0 -> 8292 bytes .../b9/b9d72b3f5ef60a52d09c45bfe80daad2 | Bin 0 -> 10080 bytes .../ba/ba94d3a5d435aa1b7d2b972a4341690a | Bin 0 -> 9956 bytes .../bb/bb789ccb4c470bf8c184af48ad6574d1 | Bin 0 -> 6700 bytes .../bbef632e3ebcf3024f808a511830cf74} | Bin 6564 -> 7544 bytes .../bc/bc8a1d23f321c4809dd228989e5db709 | Bin 0 -> 7764 bytes .../bc/bc8ec658f4fcab86b11620ef2b7a6d1a | Bin 0 -> 4229 bytes .../bd/bd337ff4274eed0c2af97bd40ea390b5 | Bin 0 -> 7336 bytes .../bd/bdec4c15c2c77a50bbe56ac57dd3324f | Bin 0 -> 7516 bytes .../be/be12dbdab39863df3029ea659bd605c9 | Bin 0 -> 8624 bytes .../be/be8697b1180b0bc4228039c2e2cb22ff | Bin 0 -> 8564 bytes .../c1/c15c299567100093b85b282bd5877e9a | Bin 0 -> 7384 bytes .../c1/c1b7fabaf410c05aa19543290dafd9df | Bin 0 -> 6656 bytes .../c2/c23b54e4ad5999119ef02c352482cbd0 | Bin 0 -> 4868 bytes .../c2/c2c5928370efc7366531b10c3f54255b | Bin 0 -> 6628 bytes .../c6/c65855c0b8cb3da479c2e6220e86de1e | Bin 0 -> 9440 bytes .../c6/c665fd02bd3eb8a4fb25359d83b9bd07 | Bin 0 -> 6632 bytes .../c776c8a5f70cbb8bae522b13fdca9ce0} | Bin 7268 -> 6660 bytes .../c87b5ccea564dc79d0ac4f0f76a8e15a} | Bin 6068 -> 6584 bytes .../c8/c8e9d1108a9d748a11dcac2696f0527a | Bin 24248 -> 0 bytes .../c9/c94c4212c91b56309dc039f8a94fc34f | Bin 5088 -> 0 bytes .../c9/c97b02f8e7eef28ec0afd1bc303bb625 | Bin 0 -> 30320 bytes .../ca/ca68e47eb2417f5ed2b60221362d7048 | Bin 0 -> 7768 bytes .../ca/caa5136e7c8d99c3103f2568cc35dbd8 | Bin 0 -> 6664 bytes .../ca/cabc73cf5c48eaaecbbf48867672f841 | Bin 0 -> 5828 bytes .../cb156a992ee7945cb85c4e91bbde0aa5} | Bin 8236 -> 8236 bytes .../ce/ce3cafed7739619af4deade7c63155b3 | Bin 0 -> 5936 bytes .../d1/d16230832f9417298699d4e944ceda02 | Bin 0 -> 30320 bytes .../d1/d18057b71c94c13fd616b88e6414af91 | Bin 0 -> 5656 bytes .../d2/d233d397237f349c63cfed6fe3630d8c | Bin 0 -> 30320 bytes .../d2/d240f650d743383fd951ac1005a50a48 | Bin 24240 -> 0 bytes .../d3/d378946d9149e7b7a13dcd19401428e4 | Bin 0 -> 6680 bytes .../d4/d4ab1a1129fdf87070b40fbd48a022af | Bin 0 -> 8324 bytes .../d74c500dbffcccf73a4f1d84ca23a6e5} | Bin 7484 -> 7612 bytes .../d8/d82fb57954f4f056020222e803d867e7 | Bin 0 -> 6608 bytes .../d8/d88c6e11050322557ec667bc8f98ffa5 | Bin 0 -> 7708 bytes .../da/da8c946b7e56c714845bd56f04c9cccc | Bin 24232 -> 0 bytes .../dac3c810038b9d133089c4da4b1e3124} | Bin 5052 -> 5052 bytes .../db/db88e0324716773915dd80a50bfdab94 | Bin 0 -> 7676 bytes .../db/dbfc1d7d021dbe30239bdfb0a02147e5 | Bin 0 -> 7944 bytes .../dc/dc7653414ca236297e0b908b30779769 | Bin 0 -> 30320 bytes .../dd/dd01c4e8ab0eb7a1731ed75425870cdc | Bin 0 -> 5656 bytes .../dd/dde887abf1d460dc6bf5a2ba4a19773d | Bin 0 -> 8304 bytes .../df6c04efc7572d2f433b46eb0de3a3ac} | Bin 6068 -> 6060 bytes .../e0/e0e6d0b1ded641cde9238e2b19b8e69d | Bin 0 -> 8324 bytes .../e3/e3d2f66c4af8d6bb3d540b7a663f34f4 | Bin 0 -> 8296 bytes .../e4bb8ddf296d97fe4a73b1d5a5a4ae0b} | Bin 5060 -> 5712 bytes .../e6/e6421169d5e000d3247bbe3325e91674 | Bin 0 -> 8436 bytes .../e6/e677122ab23183c5c614fd7aa6480014 | Bin 0 -> 8320 bytes .../e6/e68bbb91104b37404c3b8f53b2f51383 | Bin 0 -> 5836 bytes .../e7/e7713eae1495e706cd03916d1b2e34b4 | Bin 0 -> 8324 bytes .../e787b48ee3cfb3c5d320edff40c12792} | Bin 5996 -> 6604 bytes .../e7/e7a4ab989b955699fbb91043c60f6007 | Bin 0 -> 8092 bytes .../e8/e837badce34b2a32d8348ffe7d35dc95 | Bin 0 -> 6680 bytes .../e8/e8b6d9853dc01da844756ada8ea25053 | Bin 0 -> 7856 bytes .../ea/ea7ddabd2bc59a01ef9e0bd9fc7d2fba | Bin 0 -> 5884 bytes .../ec99394566310c872b7c535b6987cf7b} | Bin 7416 -> 7400 bytes .../ed/eda5858494990f8e95423198b5f29d44 | Bin 0 -> 7420 bytes .../ee/ee5434c57d2fe683d6804ceaa954681f | Bin 25944 -> 0 bytes .../ee/eec5e14c118b1c9f4937d1bd6e60a9b6 | Bin 0 -> 8744 bytes .../ef/ef0cb1e67847c16805b74416d620c030 | Bin 0 -> 7684 bytes .../f01aee68f7fb218075cf3ac0244d05c0} | Bin 7380 -> 6772 bytes .../f1/f1412abf1a0b8cddfb9692228ab6ef0b | Bin 0 -> 7428 bytes .../f3/f3447dd5e28ff41fa92c6612f2404d1e | Bin 0 -> 30320 bytes .../f5/f549b40ef34b9e9d7facd81e049f2baf | Bin 0 -> 29680 bytes .../f5/f5e17829e457c5a6588226267a1eb519 | Bin 0 -> 7672 bytes .../f6/f6ecfad0a3ed627d24bc8862039d42e9 | Bin 0 -> 5844 bytes .../fb/fb27fc8b3690e5d512164fe55c956882 | Bin 0 -> 6972 bytes .../fc/fc5aa2f1375c731f08d8757a5e30967e | Bin 0 -> 7676 bytes .../fc/fcc3d01bd0990c79589fa300e140ccd2 | Bin 0 -> 6628 bytes .../fd20f051e245c2dd3daece93e8a09994} | Bin 23172 -> 23972 bytes .../fd5de04a9e7ef405984962d1e52a4ce3} | Bin 4620 -> 4628 bytes .../ff593fffe4213eab9d9916294c4e9499} | Bin 8232 -> 8224 bytes Library/CurrentLayout-default.dwlt | 78 +-- Library/CurrentMaximizeLayout.dwlt | 54 +-- .../Assembly-CSharp-Editor.dll | Bin 5632 -> 5632 bytes Library/ScriptAssemblies/Assembly-CSharp.dll | Bin 112128 -> 114176 bytes Library/ScriptAssemblies/Assembly-CSharp.pdb | Bin 55208 -> 55832 bytes Library/SourceAssetDB | Bin 4194304 -> 4194304 bytes .../SceneView/352ee9-860a3bbda6bdfad479.json | 2 +- .../SceneView/352ee9-mainStage.json | 2 +- ...embly-CSharp.csprojAssemblyReference.cache | Bin 17997 -> 17997 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 31030 -> 31111 bytes 264 files changed, 1118 insertions(+), 498 deletions(-) delete mode 100644 Assets/DecimalValidator.cs create mode 100644 Assets/Scripts/GUI/DialogBoxes/SelectRaceDialog.cs create mode 100644 Assets/Scripts/GUI/DialogBoxes/SelectRaceDialog.cs.meta create mode 100644 Assets/Scripts/NumberValidator.cs rename Assets/{DecimalValidator.cs.meta => Scripts/NumberValidator.cs.meta} (100%) create mode 100644 Assets/StreamingAssets/customTags.xml create mode 100644 Assets/StreamingAssets/customTags.xml.meta create mode 100644 Library/Artifacts/01/01563130c6268eddc34fbd092deeb726 rename Library/Artifacts/{2c/2c4c02c0e915de898833a7f141c07248 => 04/045df43c1806e34e5e1ae0198688c54f} (67%) create mode 100644 Library/Artifacts/06/0600a652ce5d5b4b3d178867081f67e5 create mode 100644 Library/Artifacts/09/09422755819f7acee09b75874499e142 create mode 100644 Library/Artifacts/09/095e7313d7a87d9c38776718e9e1a2c2 rename Library/Artifacts/{40/401544398ce2ab67137fe82e6f9390b1 => 0c/0cbd0b55e9a8eaa06a6f0b35613c3b59} (56%) create mode 100644 Library/Artifacts/0c/0cf00e31849d840e372b46a078218d44 rename Library/Artifacts/{3e/3e478eb8d3fbac6b2fabe36e0c4be926 => 0d/0d1afe8e06eefcd4cb527bc6fd0d1ae9} (61%) create mode 100644 Library/Artifacts/0d/0d966d451a4e86681aa387942c5cbbdf create mode 100644 Library/Artifacts/0d/0de993fc9a1a31fe18ef974e8addc1fe create mode 100644 Library/Artifacts/0f/0fee8a50fb409264ebb09bed20386c3a create mode 100644 Library/Artifacts/10/101829049cb5e37831425f1817c91e96 rename Library/Artifacts/{1c/1c68bd0fb86e55b8e61417ca4c04f45a => 13/1330798a44c1a6698e33224856b7918f} (96%) create mode 100644 Library/Artifacts/14/14a87a6db333f200140a600aeb86a5a1 create mode 100644 Library/Artifacts/15/15cd56181d179d919964d7547884e200 create mode 100644 Library/Artifacts/15/15de06cc24bf7343be38ac74656940de create mode 100644 Library/Artifacts/16/16ec92a4d1a2580d67dbeeee07e2de95 create mode 100644 Library/Artifacts/1a/1a9345df129356b7a6c2ac58a41963c3 rename Library/Artifacts/{f7/f7c3068d1369a1ad6ba000839cb8081f => 1c/1cda8eef451e6638ba945b715281909f} (80%) rename Library/Artifacts/{37/3743423d34db40540f15761ef4778419 => 1d/1d3c7e073752dc4dfb2bfe6551e5fee4} (82%) create mode 100644 Library/Artifacts/21/212a2adbdb0dabc0c370c7b88a91e9fb create mode 100644 Library/Artifacts/21/219fc51896b6e82ba5ad164d7d04b862 create mode 100644 Library/Artifacts/23/239fd20c0862b3d16a1d88089563ac00 create mode 100644 Library/Artifacts/24/24039d0aa0486b9b277211603b44d5c3 rename Library/Artifacts/{2e/2e0228d02d3fee214c72a78bcd9925f0 => 25/25070b327d1cf53ed7b384a2b88149c9} (82%) create mode 100644 Library/Artifacts/27/276bb90a4c9acc46e2cca60e977f9579 create mode 100644 Library/Artifacts/28/285ae9fc4a44f1479d6822f26133aade delete mode 100644 Library/Artifacts/29/2925e4cf3eeda11743bce2a2a0413d88 create mode 100644 Library/Artifacts/2a/2a54cdfc1ca240a6cb30fdd12722ffe6 create mode 100644 Library/Artifacts/2a/2ae9b0b566b32d33d649a6105ae5b108 delete mode 100644 Library/Artifacts/2b/2b6763831a7b371cad58ebda2f903cef create mode 100644 Library/Artifacts/2b/2b7a91e765113819950906a02193b8e3 create mode 100644 Library/Artifacts/2c/2cb99051c6f7231a976778ad9070f4b4 delete mode 100644 Library/Artifacts/2e/2e53a064e5959e41ab819b1adb21f11c rename Library/Artifacts/{a6/a6b9947708d6fbe9fd2c44850905ca46 => 2e/2e582011c37509509862eaf22e6f76b4} (86%) create mode 100644 Library/Artifacts/2e/2e6325742ff22fca60c33db4134aa09a create mode 100644 Library/Artifacts/2e/2eb04eab092690119d6d468048e91667 rename Library/Artifacts/{31/31bf928c35c833fa39017a7e62c12766 => 2f/2f0d1c86fb901bf27f4a6f1fe91a737a} (75%) create mode 100644 Library/Artifacts/2f/2fb9c56470944efbc852d684a914d6e0 create mode 100644 Library/Artifacts/30/3096cdd8939bc0032e6ea0ee4bd679c1 create mode 100644 Library/Artifacts/31/318be973dba80e68ff7a8432c1d87e2d create mode 100644 Library/Artifacts/34/346b3389858a1091a72fea3989c7a185 create mode 100644 Library/Artifacts/35/35c5b5e2c3dce9911bd49c6c076ca1aa create mode 100644 Library/Artifacts/38/38d1a57cc52f0a3a8f0f0fc5d2a0c972 create mode 100644 Library/Artifacts/3c/3cc6290619bf2e36f7d51bc321778ec6 create mode 100644 Library/Artifacts/3d/3d4e3d890d9558264228c7d2ff9e19c0 rename Library/Artifacts/{17/174c7612ea6d84d20234da66ff51a0ef => 3e/3edc00caca3075e7bfcfa27ee7384dd9} (67%) rename Library/Artifacts/{2d/2d52ec7c180eebf76b8c7021fbe70c6b => 41/41ffae63577d80acd3c79b2b34b89cc9} (95%) delete mode 100644 Library/Artifacts/43/437fa894b86fef546ba708db41f9975a rename Library/Artifacts/{17/17b8bf2acf319a0c27fd9edfe49e827c => 44/4476b700a67a238495b423601d1fcd6f} (83%) create mode 100644 Library/Artifacts/45/45f269b2e022e3a8eecd522d0da631d0 delete mode 100644 Library/Artifacts/47/471bfa15e5d5507b02674e86c619d4e3 create mode 100644 Library/Artifacts/48/48aca6a5f55f43adcc863d3e94669cb7 create mode 100644 Library/Artifacts/4b/4b121058d7a737aae174f27ff1463a2c create mode 100644 Library/Artifacts/4b/4be7ff4546e9867b8bff3a7ff952ed1e create mode 100644 Library/Artifacts/4c/4c3db94a10b80f250aae9989780170dd create mode 100644 Library/Artifacts/4d/4d80e34e80c7f26b4d3a0c9291cf52d6 create mode 100644 Library/Artifacts/4e/4e43144366d6c7f0c932a53350294926 create mode 100644 Library/Artifacts/4f/4f7e51004da0d534c4f81fda9c126d0c rename Library/Artifacts/{45/45603bc835c29a8838ab9a67b8220ab0 => 4f/4f935eda917de4e94027ed4754f01e1f} (84%) create mode 100644 Library/Artifacts/50/500fb404d51d4e49fbf1bc362bc0c20b create mode 100644 Library/Artifacts/50/50c60498c8c69094497d8cf453fdf8cb create mode 100644 Library/Artifacts/51/513ea1dc3dea8b40cbd32927af8f462e create mode 100644 Library/Artifacts/53/53fa3b34398708edba135966cf577817 create mode 100644 Library/Artifacts/55/555a53b26efef5d817dd960be713d7a5 create mode 100644 Library/Artifacts/56/56b025b460c2f15dd47e02f69513bc9e create mode 100644 Library/Artifacts/57/57977e960f936058ee99c93267c967bc create mode 100644 Library/Artifacts/57/57d3b60400c3fb4cd8b789fb759f10d2 create mode 100644 Library/Artifacts/5a/5a5b93ecb7e3130d78d45edca65a75ce delete mode 100644 Library/Artifacts/5d/5d4c07ec13c9644c7436f1557ee19b8f rename Library/Artifacts/{44/44a0a759feb77bcd75822343384e65e3 => 5d/5de72b5b335c833ca8a4d218538a0876} (80%) create mode 100644 Library/Artifacts/60/60f0783b7a4d0d0c6f283ff1fa5147b1 delete mode 100644 Library/Artifacts/61/61189d0704b1c22b0418d41e89cfbc54 rename Library/Artifacts/{04/042b9f8ee53c9346e6a70ae25a8b9f01 => 62/629168c10de18d242ebdc177e4577083} (54%) rename Library/Artifacts/{3c/3c79714ad3c8584e6a9929aa48fbf6d9 => 64/6417c58c81cfc88a1b09fee212cc3f67} (65%) rename Library/Artifacts/{f0/f0031c3aaf65a5f8f23fd058f2372c10 => 64/6455379ef9558efc6416f5ef2d0ccf79} (59%) rename Library/Artifacts/{4d/4d1624256ab9307d62cbe6c166a98a6d => 66/66375bb9872f20f82dd950d43df139ea} (77%) delete mode 100644 Library/Artifacts/66/664324b8207f449ef20a8e2ead9fb208 create mode 100644 Library/Artifacts/67/6719e84b7aaf18d48f792cc634f6f200 create mode 100644 Library/Artifacts/68/68018f9e1157e867d1d0543e25412e52 rename Library/Artifacts/{e5/e5a18169cb9cdc7e4e688bee980aa824 => 68/68fb476851e239e2b9617115aa995f57} (91%) rename Library/Artifacts/{47/47d52de10810ffe2883535fa6432990f => 6b/6b3b39818568b5962cd79e26ff132a26} (85%) create mode 100644 Library/Artifacts/6b/6be3fe7443e293389df869dd0fcb2c22 rename Library/Artifacts/{a7/a7a4756096ee1bf77ee4aefad40f0649 => 6c/6c4e9d8a2d723117b8e2a8192af38b0f} (59%) create mode 100644 Library/Artifacts/6e/6e7e94518aae43ff3ad43071d3733f27 create mode 100644 Library/Artifacts/6f/6f647070e01ede05d5b4a279aad1f8b1 create mode 100644 Library/Artifacts/71/713baf217d5066e1b64e2b9e0e77722f create mode 100644 Library/Artifacts/72/72acb772acb02134b653b0c1598274e2 rename Library/Artifacts/{23/23160bd9200c5990b5add0dfadc30991 => 73/7365d2615254b459a3cf4c4fb324e531} (77%) create mode 100644 Library/Artifacts/76/76afcd36629bdefc88298eab7a7f8b6b rename Library/Artifacts/{c0/c0c0362457db57399d70558cbab033be => 77/7773ea7a38dd771faeeaa3438a009202} (78%) create mode 100644 Library/Artifacts/78/784df0dd93ee8b1649413b52dddec61a rename Library/Artifacts/{a1/a186b18fd9da5c84d50c06dc24ccb243 => 79/790530c6ad5f1b6571d82779edc53b64} (92%) create mode 100644 Library/Artifacts/7d/7d4937cc7f1dba624cd8af3dde5be368 delete mode 100644 Library/Artifacts/7d/7d78aa9a36d0e3a5ed2a591de47c73f2 create mode 100644 Library/Artifacts/7e/7e701ab99044b0dd8280701c5a0c04f1 create mode 100644 Library/Artifacts/7e/7ee9b7d4e325a6d465ba2ca7fde4f74b rename Library/Artifacts/{74/741f115ded948d232acba4e65b2b271c => 7f/7f04c4aab9f926f19cd7cd34ac67be14} (59%) delete mode 100644 Library/Artifacts/82/8273fe5afdb99b6eb4777629d1044231 rename Library/Artifacts/{c7/c7fd3d6eeeabafa61688b58188233e3d => 83/832ae69f0d749638f108fa4a2f954c44} (86%) create mode 100644 Library/Artifacts/83/8336c0be4d7f51fea3df326cce34321f create mode 100644 Library/Artifacts/84/8451ac7f5c7178d106137dec3c8bb851 create mode 100644 Library/Artifacts/86/86a818333692baa9737d479fe0370e97 create mode 100644 Library/Artifacts/86/86d9beca5aebbc9c90367982c297a758 create mode 100644 Library/Artifacts/8a/8a49642e228ad78342d181bd8d06825e create mode 100644 Library/Artifacts/8a/8ab38683813c67cace6530b07bf6dd3e create mode 100644 Library/Artifacts/8c/8c8596fe319121beae9a54c635ed16de create mode 100644 Library/Artifacts/8d/8d6ac2fae216fb2b0c6ea3970666004e delete mode 100644 Library/Artifacts/8e/8e06fc31bb919765cf0bfd6594dedf7a delete mode 100644 Library/Artifacts/8e/8e2008af836ccc2fdfb94b24e070de9c delete mode 100644 Library/Artifacts/8e/8ed63f1ec4e91e14adb05ced9b1e620b create mode 100644 Library/Artifacts/8f/8f1edb7857bdd2ea79a5159be486358f create mode 100644 Library/Artifacts/90/901d797bee9ebad571bd2857e84ca145 create mode 100644 Library/Artifacts/90/90953db292194e7890a205b9f80a946d create mode 100644 Library/Artifacts/92/92629d4062f728dd83ae613760ce323d delete mode 100644 Library/Artifacts/92/928c9a21701cac7a3254749f217fa8e1 delete mode 100644 Library/Artifacts/92/92db468c652df8fd78fc283e35f702f4 create mode 100644 Library/Artifacts/95/956f009800194626eab40f2e0963c71a rename Library/Artifacts/{e5/e517451f6b4f5418684f6f2df5630322 => 96/961a7ed529fe3d03d5c5ce0255ee7214} (85%) create mode 100644 Library/Artifacts/96/96357dcbaba56a34a381145a40d4881b create mode 100644 Library/Artifacts/97/97f602e3a4c8bc535563f53d38f3bfcb create mode 100644 Library/Artifacts/98/98b3d8b706e52fd4f6ea925b2aeb9d1a rename Library/Artifacts/{19/19332b98e61c09355ec338d098c0fdc3 => 9b/9b9149f6c8dfdc5192a318d1efc4ebb1} (59%) delete mode 100644 Library/Artifacts/9c/9c8bd8cf4a2b2413a3515fc29b7d76eb create mode 100644 Library/Artifacts/9e/9e2ce0c15bb1859a3e4ba4bf91193a9a create mode 100644 Library/Artifacts/9e/9e9cec5f44f2472501038634b4021d14 create mode 100644 Library/Artifacts/a0/a05ac7d5fa4bf217361dbc150d5bea23 create mode 100644 Library/Artifacts/a4/a488f146b3e68eaad901968ee22dbac1 create mode 100644 Library/Artifacts/a5/a57143639b058a86268e1829a76b55f0 rename Library/Artifacts/{26/26cef96f451a9b9792e18328dc9a6cc6 => a6/a6c36bc3e1a159acbe96b276b6033deb} (86%) rename Library/Artifacts/{9a/9a0146374c97e71fba110940418486e9 => a8/a83bf9f944fd2ee96b22c04bcf0c2c1e} (98%) delete mode 100644 Library/Artifacts/ab/abdeaa9b692dc9ef6265730653812f19 delete mode 100644 Library/Artifacts/ac/ac24e86cec76bbc7022685b341ee4985 create mode 100644 Library/Artifacts/ad/ad6424a86a0634699facf256f1fb38c6 rename Library/Artifacts/{1b/1bfc19058566cad0521c12f8d1442f43 => ae/ae910067e1dc709eb69977e20fbf40f6} (77%) delete mode 100644 Library/Artifacts/ae/aecb708c3caaeb88f5e9dbc8d0bd5ed5 create mode 100644 Library/Artifacts/b1/b162a9d8c12a9f4d55c00c39c2d4091c create mode 100644 Library/Artifacts/b3/b3ca9022ef20f5f1ce013b0cd543a752 create mode 100644 Library/Artifacts/b5/b59d678b9d4dd088bb41ca50c1f67b3e rename Library/Artifacts/{9b/9b2c7d0dcf19de0ed7429cf7aa628e79 => b5/b5a3f8c37e056fc7d7efb4a3be147980} (83%) rename Library/Artifacts/{3c/3cae0c698ec003fd3dbf571eb85529e4 => b6/b61140570fd7308315a4621b054c4548} (53%) create mode 100644 Library/Artifacts/b6/b6fd235778ddb58413ed49aceac24661 create mode 100644 Library/Artifacts/b7/b76d07fdbcc53c9848e72681e6c092b6 delete mode 100644 Library/Artifacts/b7/b78f64cf8e378f0d04be1c8181322a82 create mode 100644 Library/Artifacts/b7/b7cc9fb8c564456e94db42e549417abf create mode 100644 Library/Artifacts/b9/b9d6d45fae10b4f6d04a07ba1f9d9859 create mode 100644 Library/Artifacts/b9/b9d72b3f5ef60a52d09c45bfe80daad2 create mode 100644 Library/Artifacts/ba/ba94d3a5d435aa1b7d2b972a4341690a create mode 100644 Library/Artifacts/bb/bb789ccb4c470bf8c184af48ad6574d1 rename Library/Artifacts/{ff/ff6647ad01e6732bcc87624a6dce06b9 => bb/bbef632e3ebcf3024f808a511830cf74} (62%) create mode 100644 Library/Artifacts/bc/bc8a1d23f321c4809dd228989e5db709 create mode 100644 Library/Artifacts/bc/bc8ec658f4fcab86b11620ef2b7a6d1a create mode 100644 Library/Artifacts/bd/bd337ff4274eed0c2af97bd40ea390b5 create mode 100644 Library/Artifacts/bd/bdec4c15c2c77a50bbe56ac57dd3324f create mode 100644 Library/Artifacts/be/be12dbdab39863df3029ea659bd605c9 create mode 100644 Library/Artifacts/be/be8697b1180b0bc4228039c2e2cb22ff create mode 100644 Library/Artifacts/c1/c15c299567100093b85b282bd5877e9a create mode 100644 Library/Artifacts/c1/c1b7fabaf410c05aa19543290dafd9df create mode 100644 Library/Artifacts/c2/c23b54e4ad5999119ef02c352482cbd0 create mode 100644 Library/Artifacts/c2/c2c5928370efc7366531b10c3f54255b create mode 100644 Library/Artifacts/c6/c65855c0b8cb3da479c2e6220e86de1e create mode 100644 Library/Artifacts/c6/c665fd02bd3eb8a4fb25359d83b9bd07 rename Library/Artifacts/{6e/6e2a13181c3445e40fe76bc159c29b73 => c7/c776c8a5f70cbb8bae522b13fdca9ce0} (82%) rename Library/Artifacts/{14/149fe18cdd59ab87c655b158376afbaa => c8/c87b5ccea564dc79d0ac4f0f76a8e15a} (75%) delete mode 100644 Library/Artifacts/c8/c8e9d1108a9d748a11dcac2696f0527a delete mode 100644 Library/Artifacts/c9/c94c4212c91b56309dc039f8a94fc34f create mode 100644 Library/Artifacts/c9/c97b02f8e7eef28ec0afd1bc303bb625 create mode 100644 Library/Artifacts/ca/ca68e47eb2417f5ed2b60221362d7048 create mode 100644 Library/Artifacts/ca/caa5136e7c8d99c3103f2568cc35dbd8 create mode 100644 Library/Artifacts/ca/cabc73cf5c48eaaecbbf48867672f841 rename Library/Artifacts/{a3/a3e210f7195588867f3a830271315f03 => cb/cb156a992ee7945cb85c4e91bbde0aa5} (57%) create mode 100644 Library/Artifacts/ce/ce3cafed7739619af4deade7c63155b3 create mode 100644 Library/Artifacts/d1/d16230832f9417298699d4e944ceda02 create mode 100644 Library/Artifacts/d1/d18057b71c94c13fd616b88e6414af91 create mode 100644 Library/Artifacts/d2/d233d397237f349c63cfed6fe3630d8c delete mode 100644 Library/Artifacts/d2/d240f650d743383fd951ac1005a50a48 create mode 100644 Library/Artifacts/d3/d378946d9149e7b7a13dcd19401428e4 create mode 100644 Library/Artifacts/d4/d4ab1a1129fdf87070b40fbd48a022af rename Library/Artifacts/{4a/4ae40fc8bc60017a23faec715c4a4dcd => d7/d74c500dbffcccf73a4f1d84ca23a6e5} (90%) create mode 100644 Library/Artifacts/d8/d82fb57954f4f056020222e803d867e7 create mode 100644 Library/Artifacts/d8/d88c6e11050322557ec667bc8f98ffa5 delete mode 100644 Library/Artifacts/da/da8c946b7e56c714845bd56f04c9cccc rename Library/Artifacts/{5f/5ffb791e0d0dc495ef8ff6f84af5c967 => da/dac3c810038b9d133089c4da4b1e3124} (84%) create mode 100644 Library/Artifacts/db/db88e0324716773915dd80a50bfdab94 create mode 100644 Library/Artifacts/db/dbfc1d7d021dbe30239bdfb0a02147e5 create mode 100644 Library/Artifacts/dc/dc7653414ca236297e0b908b30779769 create mode 100644 Library/Artifacts/dd/dd01c4e8ab0eb7a1731ed75425870cdc create mode 100644 Library/Artifacts/dd/dde887abf1d460dc6bf5a2ba4a19773d rename Library/Artifacts/{ff/ffc3c8b6acc64a148d4fdf0d04237240 => df/df6c04efc7572d2f433b46eb0de3a3ac} (93%) create mode 100644 Library/Artifacts/e0/e0e6d0b1ded641cde9238e2b19b8e69d create mode 100644 Library/Artifacts/e3/e3d2f66c4af8d6bb3d540b7a663f34f4 rename Library/Artifacts/{5b/5bb41fa299be5c156c90dc3fb3ef1a1d => e4/e4bb8ddf296d97fe4a73b1d5a5a4ae0b} (72%) create mode 100644 Library/Artifacts/e6/e6421169d5e000d3247bbe3325e91674 create mode 100644 Library/Artifacts/e6/e677122ab23183c5c614fd7aa6480014 create mode 100644 Library/Artifacts/e6/e68bbb91104b37404c3b8f53b2f51383 create mode 100644 Library/Artifacts/e7/e7713eae1495e706cd03916d1b2e34b4 rename Library/Artifacts/{a2/a22304c8247e464afcbf480f62faed3b => e7/e787b48ee3cfb3c5d320edff40c12792} (77%) create mode 100644 Library/Artifacts/e7/e7a4ab989b955699fbb91043c60f6007 create mode 100644 Library/Artifacts/e8/e837badce34b2a32d8348ffe7d35dc95 create mode 100644 Library/Artifacts/e8/e8b6d9853dc01da844756ada8ea25053 create mode 100644 Library/Artifacts/ea/ea7ddabd2bc59a01ef9e0bd9fc7d2fba rename Library/Artifacts/{90/906f7782895df1e552ebe289b027d2a3 => ec/ec99394566310c872b7c535b6987cf7b} (92%) create mode 100644 Library/Artifacts/ed/eda5858494990f8e95423198b5f29d44 delete mode 100644 Library/Artifacts/ee/ee5434c57d2fe683d6804ceaa954681f create mode 100644 Library/Artifacts/ee/eec5e14c118b1c9f4937d1bd6e60a9b6 create mode 100644 Library/Artifacts/ef/ef0cb1e67847c16805b74416d620c030 rename Library/Artifacts/{d7/d7bf8cf9771e989a44a5657674ba0cd6 => f0/f01aee68f7fb218075cf3ac0244d05c0} (81%) create mode 100644 Library/Artifacts/f1/f1412abf1a0b8cddfb9692228ab6ef0b create mode 100644 Library/Artifacts/f3/f3447dd5e28ff41fa92c6612f2404d1e create mode 100644 Library/Artifacts/f5/f549b40ef34b9e9d7facd81e049f2baf create mode 100644 Library/Artifacts/f5/f5e17829e457c5a6588226267a1eb519 create mode 100644 Library/Artifacts/f6/f6ecfad0a3ed627d24bc8862039d42e9 create mode 100644 Library/Artifacts/fb/fb27fc8b3690e5d512164fe55c956882 create mode 100644 Library/Artifacts/fc/fc5aa2f1375c731f08d8757a5e30967e create mode 100644 Library/Artifacts/fc/fcc3d01bd0990c79589fa300e140ccd2 rename Library/Artifacts/{05/055c39c849ddd8ac86d5aa98df7c6aaa => fd/fd20f051e245c2dd3daece93e8a09994} (95%) rename Library/Artifacts/{c9/c90af45967a9535616c9b22dbf1bafab => fd/fd5de04a9e7ef405984962d1e52a4ce3} (89%) rename Library/Artifacts/{97/97786eff9ca54756c295c7c1f0617b5b => ff/ff593fffe4213eab9d9916294c4e9499} (55%) diff --git a/.vs/RimWorld-Animation-Studio/v16/.suo b/.vs/RimWorld-Animation-Studio/v16/.suo index eb8258c5fcece7870b80e79d28dbfef5255e4153..724830819073c600859e587ca8b9eadcd2587561 100644 GIT binary patch delta 10346 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 H!+HG;z5otP+P|_fEzoa%Hp-2hFJtR>=-7|+A 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 diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index 2072ee29..8d10be0f 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -63,7 +63,6 @@ - @@ -97,6 +96,7 @@ + @@ -112,6 +112,7 @@ + @@ -131,6 +132,7 @@ + C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/Managed/UnityEngine/UnityEngine.dll diff --git a/Assets/DecimalValidator.cs b/Assets/DecimalValidator.cs deleted file mode 100644 index 7aa9d119..00000000 --- a/Assets/DecimalValidator.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.UI; - -public class DecimalValidator : MonoBehaviour -{ - public void Start() - { - InputField inputField = GetComponent(); - - if (inputField) - { - inputField.characterValidation = InputField.CharacterValidation.Decimal; - inputField.onEndEdit.AddListener(delegate { MakeDecimal(); }); - } - } - - public void MakeDecimal() - { - InputField inputField = GetComponent(); - - if (inputField) - { inputField.text = string.Format("{0:0.00}", float.Parse(inputField.text)); } - } -} diff --git a/Assets/Resources/Prefabs/OptionToggle.prefab b/Assets/Resources/Prefabs/OptionToggle.prefab index 9743d492..8c98fefa 100644 --- a/Assets/Resources/Prefabs/OptionToggle.prefab +++ b/Assets/Resources/Prefabs/OptionToggle.prefab @@ -149,6 +149,124 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1523116857268836976 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6027415342802426294} + - component: {fileID: 6467300103242436351} + - component: {fileID: 4878850006335192594} + - component: {fileID: 2208470949959229117} + m_Layer: 5 + m_Name: DeleteButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &6027415342802426294 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1523116857268836976} + 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_Children: [] + m_Father: {fileID: 8789161981077347466} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -20, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6467300103242436351 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1523116857268836976} + m_CullTransparentMesh: 0 +--- !u!114 &4878850006335192594 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1523116857268836976} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: b0310c99dea57fb4d94c4d001d8e0ccf, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &2208470949959229117 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1523116857268836976} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4878850006335192594} + m_OnClick: + m_PersistentCalls: + m_Calls: [] --- !u!1 &5741932533636286456 GameObject: m_ObjectHideFlags: 0 @@ -258,6 +376,7 @@ RectTransform: m_Children: - {fileID: 9117359654058994387} - {fileID: 7815899355165658205} + - {fileID: 6027415342802426294} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index f5cd06d4..f4cbb151 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -503,6 +503,7 @@ GameObject: - component: {fileID: 74082977} - component: {fileID: 74082976} - component: {fileID: 74082975} + - component: {fileID: 74082978} m_Layer: 5 m_Name: CyclesNormalField m_TagString: Untagged @@ -642,6 +643,19 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 74082973} m_CullTransparentMesh: 0 +--- !u!114 &74082978 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 74082973} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3886223a697384abc8109a51c855e2, type: 3} + m_Name: + m_EditorClassIdentifier: + valiationType: 1 --- !u!1 &77649835 GameObject: m_ObjectHideFlags: 0 @@ -1961,6 +1975,7 @@ GameObject: - component: {fileID: 254347860} - component: {fileID: 254347859} - component: {fileID: 254347858} + - component: {fileID: 254347862} m_Layer: 5 m_Name: headBobField m_TagString: Untagged @@ -2100,6 +2115,19 @@ RectTransform: m_AnchoredPosition: {x: 150, y: -24} m_SizeDelta: {x: 56.79773, y: 30} m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &254347862 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 254347857} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3886223a697384abc8109a51c855e2, type: 3} + m_Name: + m_EditorClassIdentifier: + valiationType: 2 --- !u!1 &257242825 GameObject: m_ObjectHideFlags: 0 @@ -2397,6 +2425,84 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 276491993} m_CullTransparentMesh: 0 +--- !u!1 &278535031 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 278535032} + - component: {fileID: 278535034} + - component: {fileID: 278535033} + m_Layer: 5 + m_Name: SelectRaceText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &278535032 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 278535031} + 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_Children: [] + m_Father: {fileID: 935483303140078260} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -121.45, y: -153} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &278535033 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 278535031} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Select race +--- !u!222 &278535034 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 278535031} + m_CullTransparentMesh: 0 --- !u!1 &284483058 GameObject: m_ObjectHideFlags: 0 @@ -3539,6 +3645,84 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &394719256 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 394719257} + - component: {fileID: 394719259} + - component: {fileID: 394719258} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &394719257 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 394719256} + 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_Children: [] + m_Father: {fileID: 1845596333} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &394719258 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 394719256} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Human +--- !u!222 &394719259 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 394719256} + m_CullTransparentMesh: 0 --- !u!1 &395375411 GameObject: m_ObjectHideFlags: 0 @@ -5314,7 +5498,7 @@ MonoBehaviour: m_NormalColor: {r: 1, g: 1, b: 1, a: 1} m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_SelectedColor: {r: 1, g: 0, b: 0, a: 1} m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} m_ColorMultiplier: 1 m_FadeDuration: 0.1 @@ -7773,6 +7957,7 @@ GameObject: - component: {fileID: 725162534} - component: {fileID: 725162533} - component: {fileID: 725162532} + - component: {fileID: 725162535} m_Layer: 5 m_Name: rotationField m_TagString: Untagged @@ -7912,6 +8097,19 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 725162530} m_CullTransparentMesh: 0 +--- !u!114 &725162535 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 725162530} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3886223a697384abc8109a51c855e2, type: 3} + m_Name: + m_EditorClassIdentifier: + valiationType: 2 --- !u!1 &740545694 GameObject: m_ObjectHideFlags: 0 @@ -7984,9 +8182,9 @@ RectTransform: m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} + m_AnchorMax: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -17, y: 0} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0, y: 1} --- !u!114 &749354208 MonoBehaviour: @@ -8064,6 +8262,7 @@ GameObject: - component: {fileID: 760297269} - component: {fileID: 760297268} - component: {fileID: 760297267} + - component: {fileID: 760297270} m_Layer: 5 m_Name: AnimationClipTimeField m_TagString: Untagged @@ -8203,6 +8402,19 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 760297265} m_CullTransparentMesh: 0 +--- !u!114 &760297270 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 760297265} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3886223a697384abc8109a51c855e2, type: 3} + m_Name: + m_EditorClassIdentifier: + valiationType: 1 --- !u!1 &765752266 GameObject: m_ObjectHideFlags: 0 @@ -8789,6 +9001,7 @@ GameObject: - component: {fileID: 891720217} - component: {fileID: 891720216} - component: {fileID: 891720215} + - component: {fileID: 891720218} m_Layer: 5 m_Name: posOffsetXField m_TagString: Untagged @@ -8928,6 +9141,19 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 891720213} m_CullTransparentMesh: 0 +--- !u!114 &891720218 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 891720213} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3886223a697384abc8109a51c855e2, type: 3} + m_Name: + m_EditorClassIdentifier: + valiationType: 2 --- !u!1 &898059650 GameObject: m_ObjectHideFlags: 0 @@ -11587,7 +11813,7 @@ MonoBehaviour: m_TargetGraphic: {fileID: 922060210} m_HandleRect: {fileID: 922060209} m_Direction: 2 - m_Value: 1 + m_Value: 0 m_Size: 1 m_NumberOfSteps: 0 m_OnValueChanged: @@ -14723,7 +14949,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 1.00 + m_Text: 1.000 --- !u!222 &1410953726 CanvasRenderer: m_ObjectHideFlags: 0 @@ -15288,6 +15514,7 @@ GameObject: - component: {fileID: 1463915056} - component: {fileID: 1463915055} - component: {fileID: 1463915054} + - component: {fileID: 1463915057} m_Layer: 5 m_Name: CyclesFastField m_TagString: Untagged @@ -15427,6 +15654,19 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1463915052} m_CullTransparentMesh: 0 +--- !u!114 &1463915057 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1463915052} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3886223a697384abc8109a51c855e2, type: 3} + m_Name: + m_EditorClassIdentifier: + valiationType: 1 --- !u!1 &1470448626 GameObject: m_ObjectHideFlags: 0 @@ -16302,6 +16542,7 @@ GameObject: - component: {fileID: 1518099310} - component: {fileID: 1518099309} - component: {fileID: 1518099308} + - component: {fileID: 1518099311} m_Layer: 5 m_Name: posOffsetZField m_TagString: Untagged @@ -16441,6 +16682,19 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1518099306} m_CullTransparentMesh: 0 +--- !u!114 &1518099311 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1518099306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3886223a697384abc8109a51c855e2, type: 3} + m_Name: + m_EditorClassIdentifier: + valiationType: 2 --- !u!1 &1525472286 GameObject: m_ObjectHideFlags: 0 @@ -17405,7 +17659,7 @@ MonoBehaviour: m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} m_CustomCaretColor: 0 m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} - m_Text: 1.00 + m_Text: 1.000 m_CaretBlinkRate: 0.85 m_CaretWidth: 1 m_ReadOnly: 0 @@ -17459,6 +17713,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 1f3886223a697384abc8109a51c855e2, type: 3} m_Name: m_EditorClassIdentifier: + valiationType: 2 --- !u!1 &1588340712 GameObject: m_ObjectHideFlags: 0 @@ -17922,6 +18177,7 @@ GameObject: - component: {fileID: 1668270820} - component: {fileID: 1668270819} - component: {fileID: 1668270818} + - component: {fileID: 1668270821} m_Layer: 5 m_Name: appendageRotationField m_TagString: Untagged @@ -18061,6 +18317,19 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1668270816} m_CullTransparentMesh: 0 +--- !u!114 &1668270821 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1668270816} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3886223a697384abc8109a51c855e2, type: 3} + m_Name: + m_EditorClassIdentifier: + valiationType: 2 --- !u!1 &1670013372 GameObject: m_ObjectHideFlags: 0 @@ -18229,6 +18498,7 @@ GameObject: - component: {fileID: 1676585157} - component: {fileID: 1676585156} - component: {fileID: 1676585155} + - component: {fileID: 1676585158} m_Layer: 5 m_Name: AnimationClipLengthField m_TagString: Untagged @@ -18368,6 +18638,19 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1676585153} m_CullTransparentMesh: 0 +--- !u!114 &1676585158 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1676585153} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3886223a697384abc8109a51c855e2, type: 3} + m_Name: + m_EditorClassIdentifier: + valiationType: 1 --- !u!1 &1697817321 GameObject: m_ObjectHideFlags: 0 @@ -18848,6 +19131,7 @@ GameObject: - component: {fileID: 1767445799} - component: {fileID: 1767445798} - component: {fileID: 1767445797} + - component: {fileID: 1767445801} m_Layer: 5 m_Name: headRotationField m_TagString: Untagged @@ -18987,6 +19271,19 @@ RectTransform: m_AnchoredPosition: {x: 154.61, y: -62.3} m_SizeDelta: {x: 56.79773, y: 30} m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1767445801 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1767445796} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3886223a697384abc8109a51c855e2, type: 3} + m_Name: + m_EditorClassIdentifier: + valiationType: 2 --- !u!1 &1777266407 GameObject: m_ObjectHideFlags: 0 @@ -19613,6 +19910,125 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: -20, y: -20} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1845596332 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1845596333} + - component: {fileID: 1845596336} + - component: {fileID: 1845596335} + - component: {fileID: 1845596334} + m_Layer: 5 + m_Name: SelectRaceButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1845596333 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1845596332} + 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_Children: + - {fileID: 394719257} + m_Father: {fileID: 935483303140078260} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -45.6, y: -153} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1845596334 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1845596332} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1845596335} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &1845596335 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1845596332} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1845596336 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1845596332} + m_CullTransparentMesh: 0 --- !u!1 &1849536739 GameObject: m_ObjectHideFlags: 0 @@ -22159,6 +22575,8 @@ RectTransform: - {fileID: 4070467796814498374} - {fileID: 671921654} - {fileID: 1051936261} + - {fileID: 1845596333} + - {fileID: 278535032} m_Father: {fileID: 531246357} m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -23449,6 +23867,7 @@ GameObject: - component: {fileID: 935483304128418016} - component: {fileID: 935483304128418017} - component: {fileID: 935483304128418022} + - component: {fileID: 935483304128418021} m_Layer: 5 m_Name: BodyOffsetZField m_TagString: Untagged @@ -23456,6 +23875,19 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!114 &935483304128418021 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 935483304128418020} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3886223a697384abc8109a51c855e2, type: 3} + m_Name: + m_EditorClassIdentifier: + valiationType: 2 --- !u!114 &935483304128418022 MonoBehaviour: m_ObjectHideFlags: 0 @@ -23803,6 +24235,7 @@ GameObject: - component: {fileID: 935483304332071715} - component: {fileID: 935483304332071712} - component: {fileID: 935483304332071713} + - component: {fileID: 935483304332071720} m_Layer: 5 m_Name: BodyOffsetXField m_TagString: Untagged @@ -23810,6 +24243,19 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!114 &935483304332071720 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 935483304332071719} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3886223a697384abc8109a51c855e2, type: 3} + m_Name: + m_EditorClassIdentifier: + valiationType: 2 --- !u!224 &935483304393168322 RectTransform: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/AnimationComponents/Actor.cs b/Assets/Scripts/AnimationComponents/Actor.cs index dff7f7ac..22844ba1 100644 --- a/Assets/Scripts/AnimationComponents/Actor.cs +++ b/Assets/Scripts/AnimationComponents/Actor.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using System.Xml; using System.Xml.Serialization; using UnityEngine; @@ -16,11 +17,13 @@ namespace RimWorldAnimationStudio [XmlArray("tags"), XmlArrayItem("li")] public List tags; [XmlIgnore] public ActorGender gender; + [XmlIgnore] public string raceDef; + public BodyTypeOffset bodyTypeOffset = new BodyTypeOffset(); public bool initiator = false; - public bool? controlGenitalAngle; - public bool? isFucking; - public bool? isFucked; + public bool controlGenitalAngle; + public bool isFucking; + public bool isFucked; public bool ShouldSerializedefNames() { return defNames.NotNullOrEmpty(); } public bool ShouldSerializebodyDefTypes() { return bodyDefTypes.NotNullOrEmpty(); } @@ -30,9 +33,16 @@ namespace RimWorldAnimationStudio public bool ShouldSerializeblacklistedRaces() { return blacklistedRaces.NotNullOrEmpty(); } public bool ShouldSerializetags() { return tags.NotNullOrEmpty(); } - public bool ShouldSerializecontrolGenitalAngle() { return controlGenitalAngle != null; } - public bool ShouldSerializeisFucking() { return isFucking != null; } - public bool ShouldSerializeisFucked() { return isFucked != null; } + public bool ShouldSerializecontrolGenitalAngle() { return controlGenitalAngle; } + public bool ShouldSerializeisFucking() { return isFucking; } + public bool ShouldSerializeisFucked() { return isFucked; } + + public void ValidateData() + { + defNames = defNames.Intersect(Tags.defNames.Concat(CustomTags.defNames))?.ToList(); + bodyDefTypes = bodyDefTypes.Intersect(Tags.bodyDefTypes.Concat(CustomTags.bodyDefTypes))?.ToList(); + requiredGenitals = requiredGenitals.Intersect(Tags.bodyParts.Concat(CustomTags.bodyParts))?.ToList(); + } public bool MakeNew() { diff --git a/Assets/Scripts/AnimationComponents/AnimationClips/AnimationClip.cs b/Assets/Scripts/AnimationComponents/AnimationClips/AnimationClip.cs index d4e8527d..bc0b41ce 100644 --- a/Assets/Scripts/AnimationComponents/AnimationClips/AnimationClip.cs +++ b/Assets/Scripts/AnimationComponents/AnimationClips/AnimationClip.cs @@ -17,5 +17,10 @@ namespace RimWorldAnimationStudio public abstract void BuildSimpleCurves(); public bool ShouldSerializetags() { return tags.NotNullOrEmpty(); } + + public virtual void ValidateData() + { + + } } } diff --git a/Assets/Scripts/AnimationComponents/AnimationClips/PawnAnimationClip.cs b/Assets/Scripts/AnimationComponents/AnimationClips/PawnAnimationClip.cs index 0c15f7d9..6ef04334 100644 --- a/Assets/Scripts/AnimationComponents/AnimationClips/PawnAnimationClip.cs +++ b/Assets/Scripts/AnimationComponents/AnimationClips/PawnAnimationClip.cs @@ -88,6 +88,11 @@ namespace RimWorldAnimationStudio keyframes[keyframes.Count - 1].tickDuration = 1; } + public override void ValidateData() + { + + } + public bool MakeNew() { PawnKeyframe keyframeA = new PawnKeyframe(); diff --git a/Assets/Scripts/AnimationComponents/AnimationDef.cs b/Assets/Scripts/AnimationComponents/AnimationDef.cs index 91a1aec8..31887dd2 100644 --- a/Assets/Scripts/AnimationComponents/AnimationDef.cs +++ b/Assets/Scripts/AnimationComponents/AnimationDef.cs @@ -14,9 +14,8 @@ namespace RimWorldAnimationStudio [XmlArray("sexTypes"), XmlArrayItem("li")] public List sexTypes = new List(); [XmlArray("interactionDefTypes"), XmlArrayItem("li")] public List interactionDefTypes = new List(); - [XmlArray("actors"), XmlArrayItem("li")] public List actors = new List(); + [XmlArray("actors"), XmlArrayItem("li")] public List actors = new List(); [XmlArray("animationStages"), XmlArrayItem("li")] public List animationStages = new List(); - [XmlIgnore] public int animationTimeTicks = 0; public void Initialize() @@ -30,60 +29,10 @@ namespace RimWorldAnimationStudio } } - // move to app manager - public void RunPreSaveOperations() + public void ValidateData() { - // Stage edits - for (int i = 0; i < animationStages.Count; i++) - { - AnimationStage stage = animationStages[i]; - - // Sort keyframes by atTick - foreach (PawnAnimationClip clip in stage.animationClips) - { clip.keyframes = clip.keyframes.OrderBy(x => x.atTick).ToList(); } - - // Check if looping - int stageWindowSize = animationStages[i].stageWindowSize > 0 ? animationStages[i].stageWindowSize : animationStages[i].animationClips.Select(x => x.duration).Max(); - int cycles = Mathf.CeilToInt(animationStages[i].playTimeTicks / stageWindowSize); - - stage.isLooping = cycles > 1; - } - - // Actor edits - for (int i = 0; i < actors.Count; i++) - { - Actor actor = actors[i]; - - actor.isFucking = actor.requiredGenitals.Contains("Any appendage") ? (bool?)true : null; - - if (actor.isFucking == true) - { actor.requiredGenitals.Remove("Any appendage"); } - - actor.isFucked = actor.requiredGenitals.Contains("Any orifice") ? (bool?)true : null; - - if (actor.isFucked == true) - { actor.requiredGenitals.Remove("Any orifice"); } - - actor.controlGenitalAngle = animationStages.Any(x => x.animationClips[i].keyframes.Any(y => y.genitalAngle != 0)) ? (bool?)true : null; - - //if (actor.requiredGender.Contains("Female")) actor.gender = ActorGender.Female; - //else if (actor.requiredGender.Contains("Male")) actor.gender = ActorGender.Male; - //else actor.gender = ActorGender.None; - } - - //actors.OrderBy(x => (int)x.gender); - } - - public void RunPostLoadOperations() - { - foreach (Actor actor in actors) - { - if (actor.isFucking == true) - { actor.requiredGenitals.Add("Any appendage"); } - - if (actor.isFucked == true) - { actor.requiredGenitals.Add("Any orifice"); } - } + sexTypes = interactionDefTypes.Intersect(Tags.sexTypes.Concat(CustomTags.sexTypes))?.ToList(); + interactionDefTypes = interactionDefTypes.Intersect(Tags.interactionDefTypes.Concat(CustomTags.interactionDefTypes))?.ToList(); } } } diff --git a/Assets/Scripts/AnimationComponents/AnimationStage.cs b/Assets/Scripts/AnimationComponents/AnimationStage.cs index 14d9aef9..c25676f4 100644 --- a/Assets/Scripts/AnimationComponents/AnimationStage.cs +++ b/Assets/Scripts/AnimationComponents/AnimationStage.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using System.Xml; using System.Xml.Serialization; using UnityEngine; @@ -28,6 +29,18 @@ namespace RimWorldAnimationStudio } } + public void ValidateData() + { + // Sort keyframes by atTick + foreach (PawnAnimationClip clip in animationClips) + { clip.keyframes = clip.keyframes.OrderBy(x => x.atTick).ToList(); } + + // Check if looping + stageWindowSize = stageWindowSize > 0 ? stageWindowSize : animationClips.Select(x => x.duration).Max(); + int cycles = Mathf.CeilToInt(playTimeTicks / stageWindowSize); + isLooping = cycles > 1; + } + public bool MakeNew() { if (Workspace.animationDef == null) diff --git a/Assets/Scripts/AnimationComponents/KeyFrames/Keyframe.cs b/Assets/Scripts/AnimationComponents/KeyFrames/Keyframe.cs index e80a903c..90adf01f 100644 --- a/Assets/Scripts/AnimationComponents/KeyFrames/Keyframe.cs +++ b/Assets/Scripts/AnimationComponents/KeyFrames/Keyframe.cs @@ -14,5 +14,10 @@ namespace RimWorldAnimationStudio public bool ShouldSerializeatTick() { return atTick != null; } public bool ShouldSerializetags() { return tags.NotNullOrEmpty(); } + + public virtual void ValidateData() + { + + } } } diff --git a/Assets/Scripts/AnimationComponents/KeyFrames/PawnKeyframe.cs b/Assets/Scripts/AnimationComponents/KeyFrames/PawnKeyframe.cs index d2db5a26..fc409915 100644 --- a/Assets/Scripts/AnimationComponents/KeyFrames/PawnKeyframe.cs +++ b/Assets/Scripts/AnimationComponents/KeyFrames/PawnKeyframe.cs @@ -18,11 +18,15 @@ namespace RimWorldAnimationStudio public float genitalAngle; public bool? quiver; + [XmlIgnore] public int keyframeID; - public bool ShouldSerializegenitalAngle() { return genitalAngle != null; } + public bool ShouldSerializegenitalAngle() { return genitalAngle != 0; } public bool ShouldSerializequiver() { return quiver != null; } - [XmlIgnore] public int keyframeID; + public override void ValidateData() + { + soundEffect = Tags.soundDefs.Concat(CustomTags.soundDefs).Contains(soundEffect) ? soundEffect : null; + } public void GenerateKeyframeID() { diff --git a/Assets/Scripts/Extensions/IListExtensions.cs b/Assets/Scripts/Extensions/IListExtensions.cs index fc22b5cb..770c123a 100644 --- a/Assets/Scripts/Extensions/IListExtensions.cs +++ b/Assets/Scripts/Extensions/IListExtensions.cs @@ -15,5 +15,22 @@ public static class IListExtensions { return NullOrEmpty(list) == false; } + + public static void AddDistinct(this IList list, T item) + { + if (item == null || list.Contains(item)) + { return; } + + list.Add(item); + } + + public static void AddRangeDistinct(this IList list, IEnumerable collection) + { + if (collection == null) + { return; } + + foreach(T item in collection) + { AddDistinct(list, item); } + } } diff --git a/Assets/Scripts/GUI/ActorBody.cs b/Assets/Scripts/GUI/ActorBody.cs index 6c958444..0750555a 100644 --- a/Assets/Scripts/GUI/ActorBody.cs +++ b/Assets/Scripts/GUI/ActorBody.cs @@ -31,7 +31,7 @@ namespace RimWorldAnimationStudio else { bodyRenderer.color = Constants.ColorWhite; } - appendageRenderer.gameObject.SetActive(Workspace.animationDef.actors[actorID].requiredGenitals.Any(x => x == "Penis" || x == "Any appendage")); + appendageRenderer.gameObject.SetActive(Workspace.animationDef.actors[actorID].requiredGenitals.Any(x => x == "Penis") || Workspace.animationDef.actors[actorID].isFucking); } public void OnPointerClick(PointerEventData eventData) @@ -87,27 +87,6 @@ namespace RimWorldAnimationStudio { Workspace.actorID = actorID; Workspace.selectedBodyPart = null; - - /*foreach (ActorBody actorBody in AnimationController.Instance.actorBodies.GetComponentsInChildren()) - { - if (actorBody == this) - { continue; } - - actorBody.bodyRenderer.color = Constants.ColorWhite; - actorBody.headRenderer.color = Constants.ColorWhite; - actorBody.appendageRenderer.color = Constants.ColorWhite; - - actorBody.isSelected = false; - } - - bodyRenderer.color = Constants.ColorGreen; - headRenderer.color = Constants.ColorGreen; - appendageRenderer.color = Constants.ColorGreen; - - foreach (ActorBodyPart actorBodyPartSelected in GetComponentsInChildren()) - { actorBodyPartSelected.isSelected = false; } - - isSelected = true;*/ } } } diff --git a/Assets/Scripts/GUI/ActorBodyPart.cs b/Assets/Scripts/GUI/ActorBodyPart.cs index 0921e459..1f09434e 100644 --- a/Assets/Scripts/GUI/ActorBodyPart.cs +++ b/Assets/Scripts/GUI/ActorBodyPart.cs @@ -75,6 +75,8 @@ namespace RimWorldAnimationStudio { float angle = Vector2.SignedAngle(Vector2.up, (Vector2)mousePosition - (Vector2)transform.position); keyframe.genitalAngle = angle; + + Workspace.animationDef.actors[Workspace.actorID].controlGenitalAngle = Workspace.animationDef.animationStages.Any(x => x.animationClips[Workspace.actorID].keyframes.Any(y => y.genitalAngle != 0)); } } @@ -91,22 +93,6 @@ namespace RimWorldAnimationStudio { Workspace.actorID = parent.actorID; Workspace.selectedBodyPart = this; - - /*foreach (ActorBodyPart actorBodyPart in AnimationController.Instance.actorBodies.GetComponentsInChildren()) - { - actorBodyPart.isSelected = false; - } - - foreach (ActorBody actorBody in AnimationController.Instance.actorBodies.GetComponentsInChildren()) - { - actorBody.bodyRenderer.color = Constants.ColorWhite; - actorBody.headRenderer.color = Constants.ColorWhite; - actorBody.appendageRenderer.color = Constants.ColorWhite; - } - - bodyPartRenderer.color = Constants.ColorGreen; - - isSelected = true;*/ } } } diff --git a/Assets/Scripts/GUI/ActorKeyframeCard.cs b/Assets/Scripts/GUI/ActorKeyframeCard.cs index 64745797..5be55797 100644 --- a/Assets/Scripts/GUI/ActorKeyframeCard.cs +++ b/Assets/Scripts/GUI/ActorKeyframeCard.cs @@ -6,59 +6,26 @@ using UnityEngine.UI; namespace RimWorldAnimationStudio { - public class ActorKeyframeCard : MonoBehaviour + public class ActorKeyframeCard : Singleton { public InputField positionXField; public InputField positionZField; public InputField rotationField; public InputField headBobField; - public InputField headRotationField; + public InputField headRotationField; public InputField appendageRotationField; - private int lastTick = -1; - private bool isDirty = false; - - // Move to anim controller public void Update() { - if ((Workspace.animationDef == null || AnimationController.Instance.stageTick == lastTick) && isDirty == false) + if (Workspace.animationDef == null) { return; } - if (Workspace.actorID >= AnimationController.Instance.transform.childCount) - { return; } - - ActorBody actorBody = AnimationController.Instance.actorBodies.GetComponentsInChildren()[Workspace.actorID]; - string bodyType = actorBody.bodyType; - - PawnAnimationClip clip = Workspace.animationDef.animationStages[Workspace.stageID].animationClips[Workspace.actorID]; - float clipPercent = (float)(AnimationController.Instance.stageTick % clip.duration) / clip.duration; - - Vector3 deltaPos = new Vector3(clip.BodyOffsetX.Evaluate(clipPercent), 0, clip.BodyOffsetZ.Evaluate(clipPercent)); - deltaPos += Workspace.animationDef.actors[Workspace.actorID].bodyTypeOffset.GetOffset(bodyType); - - float bodyAngle = clip.BodyAngle.Evaluate(clipPercent); - float headAngle = clip.HeadAngle.Evaluate(clipPercent); - - if (bodyAngle < 0) bodyAngle = 360 - ((-1f * bodyAngle) % 360); - if (bodyAngle > 360) bodyAngle %= 360; - - if (headAngle < 0) headAngle = 360 - ((-1f * headAngle) % 360); - if (headAngle > 360) headAngle %= 360; - - float headBob = clip.HeadBob.Evaluate(clipPercent); - Vector3 bodyPos = new Vector3(deltaPos.x, deltaPos.z, 0); - - float appendageRotation = clip.GenitalAngle.Evaluate(clipPercent); - - positionXField.text = bodyPos.x.ToString("0.000"); - positionZField.text = bodyPos.y.ToString("0.000"); - rotationField.text = bodyAngle.ToString("0.000"); - headBobField.text = headBob.ToString("0.000"); - headRotationField.text = headAngle.ToString("0.000"); - appendageRotationField.text = appendageRotation.ToString("0.000"); - - lastTick = AnimationController.Instance.stageTick; - isDirty = false; + positionXField.interactable = AnimationController.Instance.isAnimating == false; + positionZField.interactable = AnimationController.Instance.isAnimating == false; + rotationField.interactable = AnimationController.Instance.isAnimating == false; + headBobField.interactable = AnimationController.Instance.isAnimating == false; + headRotationField.interactable = AnimationController.Instance.isAnimating == false; + appendageRotationField.interactable = AnimationController.Instance.isAnimating == false; } public void OnValueChanged() @@ -72,9 +39,8 @@ namespace RimWorldAnimationStudio keyframe.headAngle = float.Parse(headRotationField.text); keyframe.genitalAngle = float.Parse(appendageRotationField.text); + Workspace.animationDef.actors[Workspace.actorID].controlGenitalAngle = keyframe.genitalAngle != 0; Workspace.Instance.GetPawnAnimationClip(Workspace.actorID).BuildSimpleCurves(); - isDirty = true; - Workspace.Instance.RecordEvent("Actor position / orientation"); } } diff --git a/Assets/Scripts/GUI/DialogBoxes/DialogBox.cs b/Assets/Scripts/GUI/DialogBoxes/DialogBox.cs index 834ae9fd..731c9dc7 100644 --- a/Assets/Scripts/GUI/DialogBoxes/DialogBox.cs +++ b/Assets/Scripts/GUI/DialogBoxes/DialogBox.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Reflection; using UnityEngine; using UnityEngine.UI; @@ -12,6 +13,11 @@ namespace RimWorldAnimationStudio { public List cloneObjects; + public void OnEnable() + { + Initialize(); + } + public void Pop() { gameObject.SetActive(gameObject.activeSelf == false); @@ -32,5 +38,22 @@ namespace RimWorldAnimationStudio return cloneObject; } + + public void AddCustomTag(InputField field, ref List tags, ref List customTags) + { + if (field?.text == null || field.text == "") + { return; } + + if (tags.Contains(field.text) || customTags.Contains(field.text)) + { field.text = ""; return; } + + customTags.Add(field.text); + + ApplicationManager.Instance.SaveCustomArrays(); + + Initialize(true); + } + + public virtual void Initialize(bool addedNewTag = false) { } } } diff --git a/Assets/Scripts/GUI/DialogBoxes/SelectActorLayerDialog.cs b/Assets/Scripts/GUI/DialogBoxes/SelectActorLayerDialog.cs index dc4eb010..93fc1ebe 100644 --- a/Assets/Scripts/GUI/DialogBoxes/SelectActorLayerDialog.cs +++ b/Assets/Scripts/GUI/DialogBoxes/SelectActorLayerDialog.cs @@ -22,9 +22,9 @@ namespace RimWorldAnimationStudio Transform contentWindow = transform.FindDeepChild("Content"); Reset(); - for (int i = 0; i < Workspace.actorLayers.Count; i++) + for (int i = 0; i < Tags.actorLayers.Count; i++) { - string actorLayer = Workspace.actorLayers[i]; + string actorLayer = Tags.actorLayers[i]; Transform _optionToggle = AddCloneObjectToParent(contentWindow).transform; _optionToggle.Find("Text").GetComponent().text = actorLayer; diff --git a/Assets/Scripts/GUI/DialogBoxes/SelectBodyDefTypesDialog.cs b/Assets/Scripts/GUI/DialogBoxes/SelectBodyDefTypesDialog.cs index 3c01115b..a15b96f6 100644 --- a/Assets/Scripts/GUI/DialogBoxes/SelectBodyDefTypesDialog.cs +++ b/Assets/Scripts/GUI/DialogBoxes/SelectBodyDefTypesDialog.cs @@ -10,66 +10,44 @@ namespace RimWorldAnimationStudio { public class SelectBodyDefTypesDialog : DialogBox { - public void OnEnable() + public override void Initialize(bool addedNewTag = false) { - Initialize(); - } + IEnumerable allTags = Tags.bodyDefTypes.Concat(CustomTags.interactionDefTypes); + string placeHolderText = "Enter new body def type..."; - public void AddBodyDefType(InputField field) - { - if (field?.text == null || field.text == "") - { return; } - - if (Workspace.bodyDefTypes.Contains(field.text)) - { field.text = ""; return; } - - Workspace.bodyDefTypes.Add(field.text); - - Initialize(true); - } - - public void Initialize(bool addedNewTag = false) - { Actor actor = Workspace.animationDef.actors[Workspace.actorID]; - - foreach (string bodyDefType in actor.bodyDefTypes) - { - if (Workspace.bodyDefTypes.Contains(bodyDefType) == false) - { Workspace.bodyDefTypes.Add(bodyDefType); } - } - Transform contentWindow = transform.FindDeepChild("Content"); Reset(); - for (int i = 0; i < Workspace.bodyDefTypes.Count; i++) + for (int i = 0; i < allTags.Count(); i++) { - string bodyDefType = Workspace.bodyDefTypes[i]; + string tag = allTags.ElementAt(i); Transform _optionToggle = AddCloneObjectToParent(contentWindow).transform; - _optionToggle.Find("Text").GetComponent().text = bodyDefType; + _optionToggle.Find("Text").GetComponent().text = tag; Toggle toggleComp = _optionToggle.GetComponent(); - toggleComp.isOn = actor.bodyDefTypes.Contains(bodyDefType); - toggleComp.onValueChanged.AddListener(delegate { - - if (toggleComp.isOn && actor.bodyDefTypes.Contains(bodyDefType) == false) - { actor.bodyDefTypes.Add(bodyDefType); } + toggleComp.isOn = actor.bodyDefTypes.Contains(tag); + toggleComp.onValueChanged.AddListener(delegate + { + if (toggleComp.isOn && actor.bodyDefTypes.Contains(tag) == false) + { actor.bodyDefTypes.Add(tag); } - else if (toggleComp.isOn == false && actor.bodyDefTypes.Contains(bodyDefType)) - { actor.bodyDefTypes.Remove(bodyDefType); } + else if (toggleComp.isOn == false && actor.bodyDefTypes.Contains(tag)) + { actor.bodyDefTypes.Remove(tag); } Workspace.Instance.RecordEvent("Actor bodyDef type"); }); - if (addedNewTag && i == Workspace.sexTypes.Count - 1) + if (addedNewTag && i == allTags.Count() - 1) { toggleComp.isOn = true; } } Transform _optionField = AddCloneObjectToParent(contentWindow, 1).transform; - _optionField.Find("Placeholder").GetComponent().text = "Enter new body def type..."; + _optionField.Find("Placeholder").GetComponent().text = placeHolderText; InputField fieldComp = _optionField.GetComponent(); - fieldComp.onEndEdit.AddListener(delegate { AddBodyDefType(fieldComp); }); + fieldComp.onEndEdit.AddListener(delegate { AddCustomTag(fieldComp, ref Tags.bodyDefTypes, ref CustomTags.bodyDefTypes); }); } public void Reset() diff --git a/Assets/Scripts/GUI/DialogBoxes/SelectBodyPartsDialog.cs b/Assets/Scripts/GUI/DialogBoxes/SelectBodyPartsDialog.cs index 590f1ebd..e69fa88a 100644 --- a/Assets/Scripts/GUI/DialogBoxes/SelectBodyPartsDialog.cs +++ b/Assets/Scripts/GUI/DialogBoxes/SelectBodyPartsDialog.cs @@ -10,69 +10,58 @@ namespace RimWorldAnimationStudio { public class SelectBodyPartsDialog : DialogBox { - public void OnEnable() + public override void Initialize(bool addedNewTag = false) { - Initialize(); - } + IEnumerable allTags = Tags.bodyParts.Concat(CustomTags.interactionDefTypes); + string placeHolderText = "Enter new body part name..."; - public void AddBodyPart(InputField field) - { - Debug.Log("Attempting to add new body part"); - - if (field?.text == null || field.text == "") - { Debug.LogWarning("Input field is null"); return; } - - if (Workspace.bodyParts.Contains(field.text)) - { Debug.LogWarning("Body part is null"); field.text = ""; return; } - - Debug.Log("Add new body part: " + field.text); - Workspace.bodyParts.Add(field.text); - - Initialize(true); - } - - public void Initialize(bool addedNewTag = false) - { Actor actor = Workspace.animationDef.actors[Workspace.actorID]; - - foreach (string bodyPart in actor.requiredGenitals) - { - if (Workspace.bodyParts.Contains(bodyPart) == false) - { Workspace.bodyParts.Add(bodyPart); } - } - Transform contentWindow = transform.FindDeepChild("Content"); Reset(); - for (int i = 0; i < Workspace.bodyParts.Count; i++) + Transform _appendageToggle = AddCloneObjectToParent(contentWindow).transform; + _appendageToggle.Find("Text").GetComponent().text = "Any appendage"; + + Toggle appendageToggleComp = _appendageToggle.GetComponent(); + appendageToggleComp.isOn = actor.isFucking; + appendageToggleComp.onValueChanged.AddListener(delegate { actor.isFucking = appendageToggleComp.isOn; Workspace.Instance.RecordEvent("Actor required body part");}); + + Transform _orificeToggle = AddCloneObjectToParent(contentWindow).transform; + _orificeToggle.Find("Text").GetComponent().text = "Any orifice"; + + Toggle orificeToggleComp = _orificeToggle.GetComponent(); + orificeToggleComp.isOn = actor.isFucked; + orificeToggleComp.onValueChanged.AddListener(delegate { actor.isFucked = orificeToggleComp.isOn; Workspace.Instance.RecordEvent("Actor required body part"); }); + + for (int i = 0; i < allTags.Count(); i++) { - string bodyPart = Workspace.bodyParts[i]; + string tag = allTags.ElementAt(i); Transform _optionToggle = AddCloneObjectToParent(contentWindow).transform; - _optionToggle.Find("Text").GetComponent().text = bodyPart; + _optionToggle.Find("Text").GetComponent().text = tag; Toggle toggleComp = _optionToggle.GetComponent(); - toggleComp.isOn = actor.requiredGenitals.Contains(bodyPart); - toggleComp.onValueChanged.AddListener(delegate { - - if (toggleComp.isOn && actor.requiredGenitals.Contains(bodyPart) == false) - { actor.requiredGenitals.Add(bodyPart); } + toggleComp.isOn = actor.requiredGenitals.Contains(tag); + toggleComp.onValueChanged.AddListener(delegate + { + if (toggleComp.isOn && actor.requiredGenitals.Contains(tag) == false) + { actor.requiredGenitals.Add(tag); } - else if (toggleComp.isOn == false && actor.requiredGenitals.Contains(bodyPart)) - { actor.requiredGenitals.Remove(bodyPart); } + else if (toggleComp.isOn == false && actor.requiredGenitals.Contains(tag)) + { actor.requiredGenitals.Remove(tag); } Workspace.Instance.RecordEvent("Actor required body part"); }); - if (addedNewTag && i == Workspace.sexTypes.Count - 1) + if (addedNewTag && i == allTags.Count() - 1) { toggleComp.isOn = true; } } Transform _optionField = AddCloneObjectToParent(contentWindow, 1).transform; - _optionField.Find("Placeholder").GetComponent().text = "Enter new body part name..."; + _optionField.Find("Placeholder").GetComponent().text = placeHolderText; InputField fieldComp = _optionField.GetComponent(); - fieldComp.onEndEdit.AddListener(delegate { AddBodyPart(fieldComp); }); + fieldComp.onEndEdit.AddListener(delegate { AddCustomTag(fieldComp, ref Tags.bodyParts, ref CustomTags.bodyParts); }); } public void Reset() diff --git a/Assets/Scripts/GUI/DialogBoxes/SelectDefNamesDialog.cs b/Assets/Scripts/GUI/DialogBoxes/SelectDefNamesDialog.cs index be57e12d..f3d13d4f 100644 --- a/Assets/Scripts/GUI/DialogBoxes/SelectDefNamesDialog.cs +++ b/Assets/Scripts/GUI/DialogBoxes/SelectDefNamesDialog.cs @@ -10,67 +10,44 @@ namespace RimWorldAnimationStudio { public class SelectDefNamesDialog : DialogBox { - public void OnEnable() + public override void Initialize(bool addedNewTag = false) { - Debug.Log("enabled"); - Initialize(); - } + IEnumerable allTags = Tags.defNames.Concat(CustomTags.interactionDefTypes); + string placeHolderText = "Enter new def name..."; - public void AddDefName(InputField field) - { - if (field?.text == null || field.text == "") - { return; } - - if (Workspace.defNames.Contains(field.text)) - { field.text = ""; return; } - - Workspace.defNames.Add(field.text); - - Initialize(true); - } - - public void Initialize(bool addedNewTag = false) - { Actor actor = Workspace.animationDef.actors[Workspace.actorID]; - - foreach (string defName in actor.defNames) - { - if (Workspace.defNames.Contains(defName) == false) - { Workspace.defNames.Add(defName); } - } - Transform contentWindow = transform.FindDeepChild("Content"); Reset(); - for (int i = 0; i < Workspace.defNames.Count; i++) + for (int i = 0; i < allTags.Count(); i++) { - string defName = Workspace.defNames[i]; + string tag = allTags.ElementAt(i); Transform _optionToggle = AddCloneObjectToParent(contentWindow).transform; - _optionToggle.Find("Text").GetComponent().text = defName; + _optionToggle.Find("Text").GetComponent().text = tag; Toggle toggleComp = _optionToggle.GetComponent(); - toggleComp.isOn = actor.defNames.Contains(defName); - toggleComp.onValueChanged.AddListener(delegate { - - if (toggleComp.isOn && actor.defNames.Contains(defName) == false) - { actor.defNames.Add(defName); } + toggleComp.isOn = actor.defNames.Contains(tag); + toggleComp.onValueChanged.AddListener(delegate + { + if (toggleComp.isOn && actor.defNames.Contains(tag) == false) + { actor.defNames.Add(tag); } - else if (toggleComp.isOn == false && actor.defNames.Contains(defName)) - { actor.defNames.Remove(defName); } + else if (toggleComp.isOn == false && actor.defNames.Contains(tag)) + { actor.defNames.Remove(tag); } Workspace.Instance.RecordEvent("Actor def name"); }); - if (addedNewTag && i == Workspace.sexTypes.Count - 1) + if (addedNewTag && i == allTags.Count() - 1) { toggleComp.isOn = true; } } Transform _optionField = AddCloneObjectToParent(contentWindow, 1).transform; - _optionField.Find("Placeholder").GetComponent().text = "Enter new def name..."; + _optionField.Find("Placeholder").GetComponent().text = placeHolderText; InputField fieldComp = _optionField.GetComponent(); - fieldComp.onEndEdit.AddListener(delegate { AddDefName(fieldComp); }); + fieldComp.onEndEdit.AddListener(delegate { AddCustomTag(fieldComp, ref Tags.defNames, ref CustomTags.defNames); }); } public void Reset() diff --git a/Assets/Scripts/GUI/DialogBoxes/SelectInteractionDefsDialog.cs b/Assets/Scripts/GUI/DialogBoxes/SelectInteractionDefsDialog.cs index 1aa74851..61e62204 100644 --- a/Assets/Scripts/GUI/DialogBoxes/SelectInteractionDefsDialog.cs +++ b/Assets/Scripts/GUI/DialogBoxes/SelectInteractionDefsDialog.cs @@ -10,66 +10,57 @@ namespace RimWorldAnimationStudio { public class SelectInteractionDefsDialog : DialogBox { - public void OnEnable() + public override void Initialize(bool addedNewTag = false) { - Initialize(); - } + IEnumerable allTags = Tags.interactionDefTypes.Concat(CustomTags.interactionDefTypes); + string placeHolderText = "Enter new interaction def type..."; - public void AddInteractionDef(InputField field) - { - if (field?.text == null || field.text == "") - { return; } - - if (Workspace.interactionDefTypes.Contains(field.text)) - { field.text = ""; return; } - - Workspace.interactionDefTypes.Add(field.text); - - Initialize(true); - } - - public void Initialize(bool addedNewTag = false) - { if (Workspace.animationDef == null) return; - foreach (string interactionDefType in Workspace.animationDef.interactionDefTypes) - { - if (Workspace.interactionDefTypes.Contains(interactionDefType) == false) - { Workspace.interactionDefTypes.Add(interactionDefType); } - } - Transform contentWindow = transform.FindDeepChild("Content"); Reset(); - for (int i = 0; i < Workspace.interactionDefTypes.Count; i++) + for (int i = 0; i < allTags.Count(); i++) { - string interactionDefType = Workspace.interactionDefTypes[i]; + string tag = allTags.ElementAt(i); Transform _optionToggle = AddCloneObjectToParent(contentWindow).transform; - _optionToggle.Find("Text").GetComponent().text = interactionDefType; + _optionToggle.Find("Text").GetComponent().text = tag; Toggle toggleComp = _optionToggle.GetComponent(); - toggleComp.isOn = Workspace.animationDef.interactionDefTypes.Contains(interactionDefType); - toggleComp.onValueChanged.AddListener(delegate { - - if (toggleComp.isOn && Workspace.animationDef.interactionDefTypes.Contains(interactionDefType) == false) - { Workspace.animationDef.interactionDefTypes.Add(interactionDefType); } + toggleComp.isOn = Workspace.animationDef.interactionDefTypes.Contains(tag); + toggleComp.onValueChanged.AddListener(delegate + { + if (toggleComp.isOn && Workspace.animationDef.interactionDefTypes.Contains(tag) == false) + { Workspace.animationDef.interactionDefTypes.Add(tag); } - else if (toggleComp.isOn == false && Workspace.animationDef.interactionDefTypes.Contains(interactionDefType)) - { Workspace.animationDef.interactionDefTypes.Remove(interactionDefType); } + else if (toggleComp.isOn == false && Workspace.animationDef.interactionDefTypes.Contains(tag)) + { Workspace.animationDef.interactionDefTypes.Remove(tag); } Workspace.Instance.RecordEvent("Animation InteractionDef"); }); - if (addedNewTag && i == Workspace.sexTypes.Count - 1) + Button deleteButton = _optionToggle.Find("DeleteButton").GetComponent