From 5ca7e486f84b836994b9da4aa31221232c941a77 Mon Sep 17 00:00:00 2001 From: AbstractConcept Date: Fri, 28 Oct 2022 19:52:58 -0500 Subject: [PATCH] Code refactor --- .vs/RimWorld-Animation-Studio/v16/.suo | Bin 648192 -> 769536 bytes Assembly-CSharp.csproj | 4 +- Assets/Resources/Prefabs/GhostSlider.prefab | 2 +- Assets/Scenes/MainScene.unity | 818 +++++++++++++----- .../AnimationComponents/AnimationStage.cs | 4 + .../AnimationComponents/PawnAnimationClip.cs | 72 +- .../AnimationComponents/PawnKeyframe.cs | 16 +- Assets/Scripts/GUI/Actors/ActorBody.cs | 3 + Assets/Scripts/GUI/Actors/ActorBodyPart.cs | 3 + Assets/Scripts/GUI/AnimationLengthDisplay.cs | 35 - Assets/Scripts/GUI/AnimationLengthsCard.cs | 39 + ...y.cs.meta => AnimationLengthsCard.cs.meta} | 0 Assets/Scripts/GUI/AnimationTimeline.cs | 58 +- Assets/Scripts/GUI/Cards/ActorKeyframeCard.cs | 3 +- .../Scripts/GUI/Cards/AnimationControlCard.cs | 70 +- Assets/Scripts/GUI/Cards/StageLoopsCard.cs | 13 +- .../DialogBoxes/SelectActorAddonsDialog.cs | 142 ++- Assets/Scripts/GUI/KeyframeSlider.cs | 34 +- Assets/Scripts/GUI/LinearScale.cs | 6 + .../InactiveDuringAnimationPreview.cs | 2 +- .../GUI/SelfContained/RequiresAnimationDef.cs | 4 +- .../Scripts/Managers/AnimationController.cs | 44 +- Assets/Scripts/Managers/ApplicationManager.cs | 10 +- .../{Workspace => Managers}/EventsManager.cs | 2 + .../EventsManager.cs.meta | 0 Assets/Scripts/Managers/InputManager.cs | 2 +- Assets/Scripts/Workspace/Workspace.cs | 14 +- .../Managed/Assembly-CSharp.dll | Bin 146944 -> 156160 bytes .../Managed/Unity.2D.Animation.Runtime.dll | Bin 33792 -> 33792 bytes .../Unity.2D.Animation.Triangle.Runtime.dll | Bin 187392 -> 187392 bytes .../Managed/Unity.2D.Common.Runtime.dll | Bin 3584 -> 3584 bytes .../Managed/Unity.2D.PixelPerfect.dll | Bin 11264 -> 11264 bytes .../Managed/Unity.2D.SpriteShape.Runtime.dll | Bin 87552 -> 87552 bytes .../Unity.InternalAPIEngineBridge.001.dll | Bin 4096 -> 4096 bytes .../Managed/Unity.Mathematics.dll | Bin 710144 -> 710144 bytes .../Managed/Unity.TextMeshPro.dll | Bin 368128 -> 368128 bytes .../Managed/Unity.Timeline.dll | Bin 109056 -> 109056 bytes .../Managed/UnityEngine.UI.dll | Bin 226304 -> 226304 bytes .../{alienRaceDefs.xml => pawnRaceDefs.xml} | 16 +- .../globalgamemanagers | Bin 90268 -> 90444 bytes .../globalgamemanagers.assets | Bin 92960 -> 93552 bytes Build/RimWorld-Animation-Studio_Data/level0 | Bin 357808 -> 361872 bytes .../resources.assets | Bin 648240 -> 648336 bytes .../sharedassets0.assets | Bin 1660388 -> 1660308 bytes Library/ArtifactDB | Bin 33554432 -> 33554432 bytes .../01/0168a2e695761cb5dcf91d869225bcd3 | Bin 8068 -> 0 bytes .../0177a4d50f044278208466a4aa1ce359} | Bin 12792 -> 13056 bytes .../05/05ad68c281bd54caa4fa4000f5f9c92d | Bin 20268 -> 0 bytes .../06/06d5e9f9cadfc67456bdd567dab98fa9 | Bin 10724 -> 0 bytes .../08/08e27f70105584f4d9ab2dc8dc9249d9 | Bin 8528 -> 0 bytes .../09/0945095b3383d66693e03c05dc4f9b38 | Bin 6448 -> 0 bytes .../0b52e31d4a82bb7083111483ccce71b7} | Bin 13588 -> 13648 bytes .../0d/0d9dfff24b95e15d868f3a0ef90ef73a | Bin 6136 -> 0 bytes .../0e/0e12f46e709b54f0348592512a50ec0b | Bin 0 -> 6760 bytes .../0e/0eecc8d7da5fd0f88d0c70f9b36833c2 | Bin 0 -> 6840 bytes .../0e/0ef5d7c6874e617c0b18b3ef4f90f176 | Bin 0 -> 6460 bytes .../0f/0f686fec4e19e48653609a6451ecdc29 | Bin 24024 -> 0 bytes .../0f76ed68819fcb252e71f08f99ad06ca} | Bin 10000 -> 10072 bytes .../0f/0fcf8c0d3cc76769c9837c7b6630f3f3 | Bin 10732 -> 0 bytes .../101fb2e067a39067146dbed2ae53903a} | Bin 21852 -> 20096 bytes .../10/10b4e88398dc62a706fd45a0a8a9d0e5 | Bin 24449 -> 0 bytes .../10/10e3833e718dd19482134ef17fa0fe03 | Bin 0 -> 13096 bytes .../111d53b9243db730bfd67fd9f95b7f2b} | Bin 14904 -> 14872 bytes .../11/11526600dfd7ab30f57c2e48e34eb78c | Bin 16476 -> 0 bytes .../13/133c1343c2be5a5ef3fae879ca5bed15 | Bin 24393 -> 0 bytes .../14/145724648a9cb7efbde664b50eba358d | Bin 16900 -> 0 bytes .../14/1488b3d8d5e48285bc90505a763a0772 | Bin 24025 -> 0 bytes .../16/1665c7a61d34721be3cf93e4bc0615e4 | Bin 6564 -> 0 bytes .../16/1687a43cbccb81d83a957abed68b296f | Bin 11172 -> 0 bytes .../17/17388a70976ec90c6b6bccd347412218 | Bin 22332 -> 0 bytes .../17/17f99f6730f4ece3ededdf39467d6e2d | Bin 0 -> 20036 bytes .../196e626528e08595cd11bd0d53caf162} | Bin 8812 -> 9764 bytes .../1b/1b729f6b5e33991c6dc5ca5dfa27b7b3 | Bin 8008 -> 0 bytes .../1bc048026eb3c8ef220fe479ed41e888} | Bin 4868 -> 4860 bytes .../1c/1c0611b62fec2abfce4536e5ed15c80e | Bin 8324 -> 0 bytes .../1ee37de0c33a6491746af096b60749d2} | Bin 7388 -> 7528 bytes .../1f/1ff46d39cbf3665262f47411f1d0d2b6 | Bin 24009 -> 0 bytes .../25/25302e2dccc0e213f900291a81c3689c | Bin 16400 -> 0 bytes .../26/26f9770f9fa7b627b27327aa12e44985 | Bin 8560 -> 0 bytes .../27/277262088fbc255bc77a1a28d238e23c | Bin 9592 -> 0 bytes .../27/27afc2824e6608ebc427b4737c186101 | Bin 0 -> 6484 bytes .../28c141a2d1bfeb475f66cef17b5f3ab4} | Bin 5452 -> 5940 bytes .../28/28c3ceff69864ebf8a58881bf4a7a663 | Bin 8052 -> 0 bytes .../29/2954690bf6a0166cc4c4250f458a94c4 | Bin 4632 -> 0 bytes .../2b3579c2212d829cb71488b81f6ee5ea} | Bin 5868 -> 5960 bytes .../32/32db8c8b40211c54a7a3d64afdf5f1ff | Bin 20176 -> 0 bytes .../33cf4d740d5cf421cf0db4f993e6d1a0} | Bin 15192 -> 14696 bytes .../35/35e203d048e16e9e759001f0069f891a | Bin 7324 -> 0 bytes .../373478f6d93ae65b878c6df85b836d49} | Bin 14936 -> 14836 bytes .../38119cfa528ad5a507ccba124c03242f} | Bin 14940 -> 14880 bytes .../3a5f788f80a58dcb37a0b907844f5655} | Bin 13592 -> 13684 bytes .../3e/3e8f5bc95adea8eb7dc938a3a840b9b4 | Bin 4664 -> 0 bytes .../41/41433cecee63796a8015c2340e17bd91 | Bin 0 -> 6320 bytes .../41/419ded9da1895da224cf4f7a6c9ee227 | Bin 22564 -> 0 bytes .../41/41a31b67d9d9f20452c18241f45660ad | Bin 22332 -> 0 bytes .../42577802bc0b9661a7c05234396209bb} | Bin 6400 -> 6776 bytes .../42/42921da555d0fc8eb7495f8e0a710cf1 | Bin 11928 -> 0 bytes .../42/42e27dc25a9bb827b9bb7edd679a1d80 | Bin 20656 -> 0 bytes .../46/46f07913f84998d7f3668c50f2ec7f03 | Bin 8248 -> 0 bytes .../46/46f2123578034fcfefeac965d3d1fc9c | Bin 0 -> 22089 bytes .../470419915c33ba522d85ae6e6972116f} | Bin 6412 -> 6380 bytes .../4a/4a67f0723df38fef31a03efc9b8cba8d | Bin 10080 -> 0 bytes .../4c/4c067678f767cdeef6792c26af139aa2 | Bin 26032 -> 0 bytes .../4d26e6486fe8f754ec076031b0c19087} | Bin 10104 -> 10196 bytes .../4d/4de547e45f62ed384c2ec1465e00db3f | Bin 35764 -> 0 bytes .../4f/4f8625ec9d380264fdf0da332a89861f | Bin 9484 -> 0 bytes .../51/512c5c83207dd9de86e7e5c28bfa4431 | Bin 16532 -> 0 bytes .../52/52557b52ce59bc7394de4806ab52faf1 | Bin 8200 -> 0 bytes .../53a0f03fa4279bc294184ff19f06a592} | Bin 8752 -> 9152 bytes .../54/54534aac997566aa9d8e104ab5cec8da | Bin 24009 -> 0 bytes .../56/561ff4992e8978116bac283968c9f98c | Bin 16660 -> 0 bytes .../57/5781cff7f6d8d859501a9ca7c20623f3 | Bin 6280 -> 0 bytes .../59/597eb5765ebdcdbe4c11579f3aa0a4b6 | Bin 9948 -> 0 bytes .../5a3a442ed94c8e520d7e1294ba10d66f} | Bin 5512 -> 5844 bytes .../5b/5b11106f5eb5e6bdd289d637c6a5bcbf | Bin 6208 -> 0 bytes .../5b9ccf2507ef0c32d1450bb8dd14eb94} | Bin 6548 -> 6540 bytes .../5c/5cacadb257b4fb225da711da76bb1212 | Bin 19688 -> 0 bytes .../5d/5d033e5afe52a48677ec266ca5d73030 | Bin 9640 -> 0 bytes .../5d/5d8924bb952a95b9388212f7c1fd0c85 | Bin 20696 -> 0 bytes .../5f/5f4ff052570921ec6a1f6eb474127ffd | Bin 0 -> 22089 bytes .../61/612b4c3566e379d40d2305f11ec17025 | Bin 16516 -> 0 bytes .../62/62c4fa679f42a53182621822ec59bf1c | Bin 12744 -> 0 bytes .../63/636c156ec8f9222892f2956bd39403b4 | Bin 8668 -> 0 bytes .../69/6995137658d32078cffe108d53e799d8 | Bin 11864 -> 0 bytes .../6b/6b8219dc2b0561f78e49c194d47e7aad | Bin 9700 -> 0 bytes .../6b/6bb8cf60a399c5da4980704ed847541f | Bin 12536 -> 0 bytes .../6c/6c8ab9f9385afa6596271629ee64135b | Bin 35764 -> 0 bytes .../70/706506c226006cc4a699ae5bbe33c164 | Bin 0 -> 6380 bytes .../70/709a27ee6b6deb82f29b260b195a8bd0 | Bin 6688 -> 0 bytes .../71/71ce12d3d04605d3e8856e64e6799f74 | Bin 5660 -> 0 bytes .../73dc0cd8c0010257faff6a41273d0941} | Bin 5320 -> 5320 bytes .../73/73e6ecb7f857bb651aa94d50872a57a4 | Bin 19164 -> 0 bytes .../76/76ec0bdfbb9fc484d5b7a73bdf3d6f32 | Bin 7628 -> 0 bytes .../77/7752e033620bc32d292327afd7b05288 | Bin 24017 -> 0 bytes .../78/789fca5305ac019829ee4312f61af7af | Bin 7240 -> 0 bytes .../7a874e93bb43d0c1a923a55cf94f7995} | Bin 15060 -> 14756 bytes .../7b/7b10b1e7c69a71014693ffa8d6de620a | Bin 0 -> 6480 bytes .../7f/7feaeba24bcac3817156f0d3fb7ce9c0 | Bin 0 -> 6656 bytes .../80/804337ebaddfa117b0c29bcf8cb7ad01 | Bin 16896 -> 0 bytes .../804d108794a764770283558a4c2fc344} | Bin 6448 -> 6316 bytes .../83/83341329e090768ab0d2cb352e7105d5 | Bin 26124 -> 0 bytes .../842e6ba135e7a4d06650fa2b0a9c5e49} | Bin 14912 -> 14836 bytes .../86/866fcd5df1d742d4013fb8e7a53dd141 | Bin 7360 -> 0 bytes .../8740a7b50474c448a2bc03852a2a604d} | Bin 16464 -> 16900 bytes .../88/88737adbe8a0db2c88fcf5fa426c9852 | Bin 9756 -> 0 bytes .../95/95fe971bcb6a53b48108d1a957ef9ca2 | Bin 7896 -> 0 bytes .../98/98101183808b34fc717d67d071f0272a | Bin 0 -> 6368 bytes .../99/99f7b586b2cc35e94af61896d17eadc9 | Bin 0 -> 8496 bytes .../9a/9a68d44afa2400fe0dadb18f2284a274 | Bin 7840 -> 0 bytes .../9b/9b9ef59f2d0682c31ad66e3a618f235c | Bin 11184 -> 0 bytes .../9c/9c16d981db7cfc0a1902353678fa1c18 | Bin 11864 -> 0 bytes .../9c/9c6b491d61d526896ee3dc015955a210 | Bin 20572 -> 0 bytes .../9f13cb1b6fe009a43807b71331145bf3} | Bin 6396 -> 6260 bytes .../9f/9f9128583ad095fbb2d1d76d32d29e5b | Bin 12740 -> 0 bytes .../a1/a11fab3425907a51c66f7baef23ea228 | Bin 11052 -> 0 bytes .../a2f91be7080ca74f82fbebb2aaf128d0} | Bin 7860 -> 9912 bytes .../a411ba8517c76293a0e1aabbdd98dfae} | Bin 5932 -> 6012 bytes .../a77a622e1258338ae8102039c19badb7} | Bin 21712 -> 21448 bytes .../a7/a7aeeed9ca7d67df1decf2092ec19a28 | Bin 0 -> 8644 bytes .../a8/a89f4f979a5b85b16f58d61d89c7b64e | Bin 20208 -> 0 bytes .../a8/a8a9b05043ad37f2fcf37c9de134125d | Bin 23808 -> 0 bytes .../a8d6904b1e1d412f2d78c81941a68162} | Bin 16660 -> 16896 bytes .../a9c8ed3a048d9419c6d9cc87959acc25} | Bin 6444 -> 6480 bytes .../ae/ae74592bbd623432a2b5ff92d0cb0726 | Bin 0 -> 13732 bytes .../af1dc771ac323130dbc853b226fdc86b} | Bin 14956 -> 14836 bytes .../b2/b2559869a75185d08e577ec2625e0d37 | Bin 8760 -> 0 bytes .../b35ee378392cca89df205fdf4b53c602} | Bin 6632 -> 6632 bytes .../b3/b394e9767a670cf98ba09779162b6238 | Bin 11076 -> 0 bytes .../b6a9175ddb39db4866cbf6ceb8cdbbea} | Bin 12776 -> 13016 bytes .../b9/b92c07ccb57f4eaf09492c9d3d3ef181 | Bin 16548 -> 0 bytes .../ba2aad654daf0a1312277bf5bdd97e52} | Bin 20208 -> 20208 bytes .../bb/bb6f1bf895bb8b2ea872153ec8501d72 | Bin 9432 -> 0 bytes .../bbb2c3fc43e1e546f018e37f798da68a} | Bin 15080 -> 14756 bytes .../bb/bbf8fca56a7203fc638216ca3bd08a66 | Bin 0 -> 13096 bytes .../bd6fbd3bc18ecdb375b34bc1d50e632b} | Bin 6412 -> 6404 bytes .../be/be12c0618425ecf06140a2fb08fe7304 | Bin 0 -> 8512 bytes .../c2/c22c72eda30a5c8662c6c0f6ef6cfa94 | Bin 0 -> 13160 bytes .../c33b839ed2b05b102de6a49f93af7639} | Bin 8092 -> 8116 bytes .../c4/c48f88ed327f0215ea2ff4da25f7b5b3 | Bin 9788 -> 0 bytes .../c6/c6c9684c2498ec4134afe766017f2805 | Bin 19348 -> 0 bytes .../c8/c85465427dbcaf9f7bc9d0aa8e0df43f | Bin 12576 -> 0 bytes .../c8/c8d5d6ed860fe8139591f4e3a24efd62 | Bin 0 -> 6264 bytes .../cd/cd0524fe2647a80a2660d2f809be7a04 | Bin 10988 -> 0 bytes .../d0/d0cb3ddfd742ee17094c148cd4a84baf | Bin 10240 -> 0 bytes .../d1/d1ff0feddb866031fe0b83edb78750cd | Bin 9700 -> 0 bytes .../d2/d2bc4ef22ffbcbbf2d424639b658bee4 | Bin 24001 -> 0 bytes .../d3/d3f995f1174695b65ff4858a7357d013 | Bin 0 -> 6368 bytes .../d4/d49173e5aaa5e2befdae55a5c2c46980 | Bin 0 -> 9956 bytes .../d5cc21567aa36a0d7aab28ec68244c50} | Bin 21724 -> 20028 bytes .../d6/d6acb5fcd5c9e550ecde1f5d05f8b0da | Bin 5648 -> 0 bytes .../d7/d711a7fe542b3e10ee8dd9befb3e815a | Bin 8600 -> 0 bytes .../d8cef383486aab5895b03a6fff4d499f} | Bin 5956 -> 5968 bytes .../d9/d94daf156578cf0701de33d01ede4b5b | Bin 11544 -> 0 bytes .../dbfa81ce83a17ed7ca3b6cd0e3af345c} | Bin 8028 -> 8484 bytes .../e0/e0bc66e3ebd27fb97c759869bc6ff734 | Bin 11284 -> 0 bytes .../e234a707c2109d401a6793bbc1f3893c} | Bin 8808 -> 9792 bytes .../e3/e3ba062b7b2b1469cd72d5e659a62e33 | Bin 9472 -> 0 bytes .../e5e78f4f03ad6ed7bb895bde5c2c072c} | Bin 8228 -> 8312 bytes .../e60c56e5f83b481c93026f5e788d8424} | Bin 7860 -> 9840 bytes .../e7/e7f0dbbf08522f3c21f1dca5875d6dc9 | Bin 0 -> 13060 bytes .../e8/e8e9043726365905a05e1887e64a5188 | Bin 9980 -> 0 bytes .../eae31e4a5a3394b3d2fd35e44f18bfe6} | Bin 4876 -> 6192 bytes .../ec/ec3b358b957f4ed45e0b7b0105fc3c2e | Bin 18640 -> 0 bytes .../ee/eeaa5acc354fe3c324aa19740637306f | Bin 9636 -> 0 bytes .../ef/effd29a30595768a39967ded9dc15a98 | Bin 19348 -> 0 bytes .../f0/f05e9dfc1ddc3de1973edd2373ec718d | Bin 0 -> 17321 bytes .../f0/f0688377ae7e4ae7483f99781f77ff33 | Bin 9780 -> 0 bytes .../f2329d28ef106f33d0b5f78c1ca73cb4} | Bin 7848 -> 9820 bytes .../f47862f406357736930399dc31aaf351} | Bin 8576 -> 8536 bytes .../f6/f6a40951d47d6df7995330e584c9b950 | Bin 6588 -> 0 bytes .../f6/f6bd498f32d87b98f42ecfc9dc5033e4 | Bin 0 -> 6384 bytes .../f7/f76226e6aa0f869ffc574b7a8185a7b9 | Bin 12912 -> 0 bytes .../f8/f800a4ba9b1481092c25626ff9433644 | Bin 11924 -> 0 bytes .../f8/f8c7da6b2684eb3f8b8a67cbe03cfd7f | Bin 0 -> 14224 bytes .../fb/fb7c13e3d4fe5d05e98cd62bf05187fe | Bin 11856 -> 0 bytes .../fe/fe5a0eae7926d4756dc1e241800de17a | Bin 10100 -> 0 bytes Library/CurrentLayout-default.dwlt | 62 +- Library/CurrentMaximizeLayout.dwlt | 36 +- Library/InspectorExpandedItems.asset | Bin 6772 -> 6772 bytes Library/LastBuild.buildreport | Bin 184680 -> 184656 bytes .../Win/Data/Managed/Assembly-CSharp.dll | Bin 146944 -> 156160 bytes .../Managed/Unity.2D.Animation.Runtime.dll | Bin 33792 -> 33792 bytes .../Unity.2D.Animation.Triangle.Runtime.dll | Bin 187392 -> 187392 bytes .../Data/Managed/Unity.2D.Common.Runtime.dll | Bin 3584 -> 3584 bytes .../Data/Managed/Unity.2D.PixelPerfect.dll | Bin 11264 -> 11264 bytes .../Managed/Unity.2D.SpriteShape.Runtime.dll | Bin 87552 -> 87552 bytes .../Unity.InternalAPIEngineBridge.001.dll | Bin 4096 -> 4096 bytes .../Win/Data/Managed/Unity.Mathematics.dll | Bin 710144 -> 710144 bytes .../Win/Data/Managed/Unity.TextMeshPro.dll | Bin 368128 -> 368128 bytes .../Win/Data/Managed/Unity.Timeline.dll | Bin 109056 -> 109056 bytes .../Win/Data/Managed/UnityEngine.UI.dll | Bin 226304 -> 226304 bytes .../Win/Data/globalgamemanagers | Bin 90268 -> 90444 bytes .../Win/Data/globalgamemanagers.assets | Bin 92960 -> 93552 bytes Library/PlayerDataCache/Win/Data/level0 | Bin 357808 -> 361872 bytes .../PlayerDataCache/Win/Data/resources.assets | Bin 648240 -> 648336 bytes .../Win/Data/sharedassets0.assets | Bin 1660388 -> 1660308 bytes .../PlayerDataCache/Win/ScriptsOnlyCache.yaml | 174 ++-- .../Assembly-CSharp-Editor.dll | Bin 6144 -> 6144 bytes Library/ScriptAssemblies/Assembly-CSharp.dll | Bin 172544 -> 173056 bytes Library/ScriptAssemblies/Assembly-CSharp.pdb | Bin 85432 -> 85932 bytes Library/SourceAssetDB | Bin 4194304 -> 4194304 bytes .../SceneView/352ee9-mainStage.json | 2 +- ...embly-CSharp.csprojAssemblyReference.cache | Bin 17953 -> 17953 bytes 243 files changed, 1065 insertions(+), 625 deletions(-) delete mode 100644 Assets/Scripts/GUI/AnimationLengthDisplay.cs create mode 100644 Assets/Scripts/GUI/AnimationLengthsCard.cs rename Assets/Scripts/GUI/{AnimationLengthDisplay.cs.meta => AnimationLengthsCard.cs.meta} (100%) rename Assets/Scripts/{Workspace => Managers}/EventsManager.cs (96%) rename Assets/Scripts/{Workspace => Managers}/EventsManager.cs.meta (100%) rename Build/RimWorld-Animation-Studio_Data/StreamingAssets/{alienRaceDefs.xml => pawnRaceDefs.xml} (97%) delete mode 100644 Library/Artifacts/01/0168a2e695761cb5dcf91d869225bcd3 rename Library/Artifacts/{c6/c618fa74c6fae8ec18b71cea9b908bf7 => 01/0177a4d50f044278208466a4aa1ce359} (92%) delete mode 100644 Library/Artifacts/05/05ad68c281bd54caa4fa4000f5f9c92d delete mode 100644 Library/Artifacts/06/06d5e9f9cadfc67456bdd567dab98fa9 delete mode 100644 Library/Artifacts/08/08e27f70105584f4d9ab2dc8dc9249d9 delete mode 100644 Library/Artifacts/09/0945095b3383d66693e03c05dc4f9b38 rename Library/Artifacts/{f5/f552e4e2cf861a4930dbbc532377abc6 => 0b/0b52e31d4a82bb7083111483ccce71b7} (97%) delete mode 100644 Library/Artifacts/0d/0d9dfff24b95e15d868f3a0ef90ef73a create mode 100644 Library/Artifacts/0e/0e12f46e709b54f0348592512a50ec0b create mode 100644 Library/Artifacts/0e/0eecc8d7da5fd0f88d0c70f9b36833c2 create mode 100644 Library/Artifacts/0e/0ef5d7c6874e617c0b18b3ef4f90f176 delete mode 100644 Library/Artifacts/0f/0f686fec4e19e48653609a6451ecdc29 rename Library/Artifacts/{be/bee0c8629c7583e44e0760927610bf6a => 0f/0f76ed68819fcb252e71f08f99ad06ca} (96%) delete mode 100644 Library/Artifacts/0f/0fcf8c0d3cc76769c9837c7b6630f3f3 rename Library/Artifacts/{6d/6de038949875bdeaa0d03f1019727ce3 => 10/101fb2e067a39067146dbed2ae53903a} (81%) delete mode 100644 Library/Artifacts/10/10b4e88398dc62a706fd45a0a8a9d0e5 create mode 100644 Library/Artifacts/10/10e3833e718dd19482134ef17fa0fe03 rename Library/Artifacts/{28/28003a33a95100d9956dfbdb10ccdf10 => 11/111d53b9243db730bfd67fd9f95b7f2b} (92%) delete mode 100644 Library/Artifacts/11/11526600dfd7ab30f57c2e48e34eb78c delete mode 100644 Library/Artifacts/13/133c1343c2be5a5ef3fae879ca5bed15 delete mode 100644 Library/Artifacts/14/145724648a9cb7efbde664b50eba358d delete mode 100644 Library/Artifacts/14/1488b3d8d5e48285bc90505a763a0772 delete mode 100644 Library/Artifacts/16/1665c7a61d34721be3cf93e4bc0615e4 delete mode 100644 Library/Artifacts/16/1687a43cbccb81d83a957abed68b296f delete mode 100644 Library/Artifacts/17/17388a70976ec90c6b6bccd347412218 create mode 100644 Library/Artifacts/17/17f99f6730f4ece3ededdf39467d6e2d rename Library/Artifacts/{a3/a36ca1076aa2facbef00ba5b6f4c8922 => 19/196e626528e08595cd11bd0d53caf162} (67%) delete mode 100644 Library/Artifacts/1b/1b729f6b5e33991c6dc5ca5dfa27b7b3 rename Library/Artifacts/{7f/7ffda39d138755ccd1dd229a1918e7f7 => 1b/1bc048026eb3c8ef220fe479ed41e888} (92%) delete mode 100644 Library/Artifacts/1c/1c0611b62fec2abfce4536e5ed15c80e rename Library/Artifacts/{b9/b91d85ca85cbc6c076f9bcbf409652a7 => 1e/1ee37de0c33a6491746af096b60749d2} (94%) delete mode 100644 Library/Artifacts/1f/1ff46d39cbf3665262f47411f1d0d2b6 delete mode 100644 Library/Artifacts/25/25302e2dccc0e213f900291a81c3689c delete mode 100644 Library/Artifacts/26/26f9770f9fa7b627b27327aa12e44985 delete mode 100644 Library/Artifacts/27/277262088fbc255bc77a1a28d238e23c create mode 100644 Library/Artifacts/27/27afc2824e6608ebc427b4737c186101 rename Library/Artifacts/{83/83fd4c0041987eb7128e4339550dcdb2 => 28/28c141a2d1bfeb475f66cef17b5f3ab4} (76%) delete mode 100644 Library/Artifacts/28/28c3ceff69864ebf8a58881bf4a7a663 delete mode 100644 Library/Artifacts/29/2954690bf6a0166cc4c4250f458a94c4 rename Library/Artifacts/{73/73f2b1d09594bc6bc445de2644f27e79 => 2b/2b3579c2212d829cb71488b81f6ee5ea} (74%) delete mode 100644 Library/Artifacts/32/32db8c8b40211c54a7a3d64afdf5f1ff rename Library/Artifacts/{1e/1e8456072527d971fab7dbd8d841ea75 => 33/33cf4d740d5cf421cf0db4f993e6d1a0} (88%) delete mode 100644 Library/Artifacts/35/35e203d048e16e9e759001f0069f891a rename Library/Artifacts/{e3/e3dd43f8ed577ebd9a448a47c5c0ffbe => 37/373478f6d93ae65b878c6df85b836d49} (91%) rename Library/Artifacts/{72/72a148dcaa45bcd9dbe58a164ad10ed9 => 38/38119cfa528ad5a507ccba124c03242f} (93%) rename Library/Artifacts/{a0/a0414dd4526497ce4e72ecfb85c3893a => 3a/3a5f788f80a58dcb37a0b907844f5655} (97%) delete mode 100644 Library/Artifacts/3e/3e8f5bc95adea8eb7dc938a3a840b9b4 create mode 100644 Library/Artifacts/41/41433cecee63796a8015c2340e17bd91 delete mode 100644 Library/Artifacts/41/419ded9da1895da224cf4f7a6c9ee227 delete mode 100644 Library/Artifacts/41/41a31b67d9d9f20452c18241f45660ad rename Library/Artifacts/{0e/0ed2550ae64a07d9579a63864a809b7d => 42/42577802bc0b9661a7c05234396209bb} (90%) delete mode 100644 Library/Artifacts/42/42921da555d0fc8eb7495f8e0a710cf1 delete mode 100644 Library/Artifacts/42/42e27dc25a9bb827b9bb7edd679a1d80 delete mode 100644 Library/Artifacts/46/46f07913f84998d7f3668c50f2ec7f03 create mode 100644 Library/Artifacts/46/46f2123578034fcfefeac965d3d1fc9c rename Library/Artifacts/{91/91c0c84843c9518a47b1ab83781c9969 => 47/470419915c33ba522d85ae6e6972116f} (70%) delete mode 100644 Library/Artifacts/4a/4a67f0723df38fef31a03efc9b8cba8d delete mode 100644 Library/Artifacts/4c/4c067678f767cdeef6792c26af139aa2 rename Library/Artifacts/{f1/f19669b97ef07a092404eb3b45936080 => 4d/4d26e6486fe8f754ec076031b0c19087} (96%) delete mode 100644 Library/Artifacts/4d/4de547e45f62ed384c2ec1465e00db3f delete mode 100644 Library/Artifacts/4f/4f8625ec9d380264fdf0da332a89861f delete mode 100644 Library/Artifacts/51/512c5c83207dd9de86e7e5c28bfa4431 delete mode 100644 Library/Artifacts/52/52557b52ce59bc7394de4806ab52faf1 rename Library/Artifacts/{ac/ac8125046b2297f6d29fd17abd6406f7 => 53/53a0f03fa4279bc294184ff19f06a592} (92%) delete mode 100644 Library/Artifacts/54/54534aac997566aa9d8e104ab5cec8da delete mode 100644 Library/Artifacts/56/561ff4992e8978116bac283968c9f98c delete mode 100644 Library/Artifacts/57/5781cff7f6d8d859501a9ca7c20623f3 delete mode 100644 Library/Artifacts/59/597eb5765ebdcdbe4c11579f3aa0a4b6 rename Library/Artifacts/{32/3202a47d4c727056e86c64c1af38f676 => 5a/5a3a442ed94c8e520d7e1294ba10d66f} (74%) delete mode 100644 Library/Artifacts/5b/5b11106f5eb5e6bdd289d637c6a5bcbf rename Library/Artifacts/{23/23bc926a0c6b9ba04ea361185c740f21 => 5b/5b9ccf2507ef0c32d1450bb8dd14eb94} (70%) delete mode 100644 Library/Artifacts/5c/5cacadb257b4fb225da711da76bb1212 delete mode 100644 Library/Artifacts/5d/5d033e5afe52a48677ec266ca5d73030 delete mode 100644 Library/Artifacts/5d/5d8924bb952a95b9388212f7c1fd0c85 create mode 100644 Library/Artifacts/5f/5f4ff052570921ec6a1f6eb474127ffd delete mode 100644 Library/Artifacts/61/612b4c3566e379d40d2305f11ec17025 delete mode 100644 Library/Artifacts/62/62c4fa679f42a53182621822ec59bf1c delete mode 100644 Library/Artifacts/63/636c156ec8f9222892f2956bd39403b4 delete mode 100644 Library/Artifacts/69/6995137658d32078cffe108d53e799d8 delete mode 100644 Library/Artifacts/6b/6b8219dc2b0561f78e49c194d47e7aad delete mode 100644 Library/Artifacts/6b/6bb8cf60a399c5da4980704ed847541f delete mode 100644 Library/Artifacts/6c/6c8ab9f9385afa6596271629ee64135b create mode 100644 Library/Artifacts/70/706506c226006cc4a699ae5bbe33c164 delete mode 100644 Library/Artifacts/70/709a27ee6b6deb82f29b260b195a8bd0 delete mode 100644 Library/Artifacts/71/71ce12d3d04605d3e8856e64e6799f74 rename Library/Artifacts/{f0/f04259600a0fd9d219b0bddce3ce4f6a => 73/73dc0cd8c0010257faff6a41273d0941} (96%) delete mode 100644 Library/Artifacts/73/73e6ecb7f857bb651aa94d50872a57a4 delete mode 100644 Library/Artifacts/76/76ec0bdfbb9fc484d5b7a73bdf3d6f32 delete mode 100644 Library/Artifacts/77/7752e033620bc32d292327afd7b05288 delete mode 100644 Library/Artifacts/78/789fca5305ac019829ee4312f61af7af rename Library/Artifacts/{9c/9cf63e226eb8cf486c358ec7e309445e => 7a/7a874e93bb43d0c1a923a55cf94f7995} (90%) create mode 100644 Library/Artifacts/7b/7b10b1e7c69a71014693ffa8d6de620a create mode 100644 Library/Artifacts/7f/7feaeba24bcac3817156f0d3fb7ce9c0 delete mode 100644 Library/Artifacts/80/804337ebaddfa117b0c29bcf8cb7ad01 rename Library/Artifacts/{d9/d91a31db4314aa6f37f97af2f0879e99 => 80/804d108794a764770283558a4c2fc344} (85%) delete mode 100644 Library/Artifacts/83/83341329e090768ab0d2cb352e7105d5 rename Library/Artifacts/{4c/4caae8653baf67ecf2d83e6559a82828 => 84/842e6ba135e7a4d06650fa2b0a9c5e49} (94%) delete mode 100644 Library/Artifacts/86/866fcd5df1d742d4013fb8e7a53dd141 rename Library/Artifacts/{5e/5e9ce2b94d57ae495179d7a7fae9ce48 => 87/8740a7b50474c448a2bc03852a2a604d} (95%) delete mode 100644 Library/Artifacts/88/88737adbe8a0db2c88fcf5fa426c9852 delete mode 100644 Library/Artifacts/95/95fe971bcb6a53b48108d1a957ef9ca2 create mode 100644 Library/Artifacts/98/98101183808b34fc717d67d071f0272a create mode 100644 Library/Artifacts/99/99f7b586b2cc35e94af61896d17eadc9 delete mode 100644 Library/Artifacts/9a/9a68d44afa2400fe0dadb18f2284a274 delete mode 100644 Library/Artifacts/9b/9b9ef59f2d0682c31ad66e3a618f235c delete mode 100644 Library/Artifacts/9c/9c16d981db7cfc0a1902353678fa1c18 delete mode 100644 Library/Artifacts/9c/9c6b491d61d526896ee3dc015955a210 rename Library/Artifacts/{f2/f2e807404654f9c597524d67f667be72 => 9f/9f13cb1b6fe009a43807b71331145bf3} (85%) delete mode 100644 Library/Artifacts/9f/9f9128583ad095fbb2d1d76d32d29e5b delete mode 100644 Library/Artifacts/a1/a11fab3425907a51c66f7baef23ea228 rename Library/Artifacts/{12/124a2fe5d65c30ce8a1859fc1facc37e => a2/a2f91be7080ca74f82fbebb2aaf128d0} (56%) rename Library/Artifacts/{61/615e3795ca9bcb55000f294a769d8f4c => a4/a411ba8517c76293a0e1aabbdd98dfae} (73%) rename Library/Artifacts/{87/878244047ed1bef113475ffea8d4017c => a7/a77a622e1258338ae8102039c19badb7} (88%) create mode 100644 Library/Artifacts/a7/a7aeeed9ca7d67df1decf2092ec19a28 delete mode 100644 Library/Artifacts/a8/a89f4f979a5b85b16f58d61d89c7b64e delete mode 100644 Library/Artifacts/a8/a8a9b05043ad37f2fcf37c9de134125d rename Library/Artifacts/{45/450f76bae16098d55d150195f57d2c50 => a8/a8d6904b1e1d412f2d78c81941a68162} (96%) rename Library/Artifacts/{29/29d7823a9cabaf3c81afadbec7320985 => a9/a9c8ed3a048d9419c6d9cc87959acc25} (93%) create mode 100644 Library/Artifacts/ae/ae74592bbd623432a2b5ff92d0cb0726 rename Library/Artifacts/{21/21fdfc14e5c3de632c9982c847b72c32 => af/af1dc771ac323130dbc853b226fdc86b} (90%) delete mode 100644 Library/Artifacts/b2/b2559869a75185d08e577ec2625e0d37 rename Library/Artifacts/{dd/ddeab847a3840aa9d1632e1cc36ddd2e => b3/b35ee378392cca89df205fdf4b53c602} (71%) delete mode 100644 Library/Artifacts/b3/b394e9767a670cf98ba09779162b6238 rename Library/Artifacts/{38/38b774042e0ea1ef3fda8c679d1a26d6 => b6/b6a9175ddb39db4866cbf6ceb8cdbbea} (92%) delete mode 100644 Library/Artifacts/b9/b92c07ccb57f4eaf09492c9d3d3ef181 rename Library/Artifacts/{80/80f482ef6133f069ea357e1a17da773f => ba/ba2aad654daf0a1312277bf5bdd97e52} (99%) delete mode 100644 Library/Artifacts/bb/bb6f1bf895bb8b2ea872153ec8501d72 rename Library/Artifacts/{59/59324be8e013b81f3671c3513df71d2d => bb/bbb2c3fc43e1e546f018e37f798da68a} (89%) create mode 100644 Library/Artifacts/bb/bbf8fca56a7203fc638216ca3bd08a66 rename Library/Artifacts/{b1/b10b3a334a3db14d6be5efdc30e4ee28 => bd/bd6fbd3bc18ecdb375b34bc1d50e632b} (86%) create mode 100644 Library/Artifacts/be/be12c0618425ecf06140a2fb08fe7304 create mode 100644 Library/Artifacts/c2/c22c72eda30a5c8662c6c0f6ef6cfa94 rename Library/Artifacts/{65/65abfb605629a4847fbf8bd2f7704b5f => c3/c33b839ed2b05b102de6a49f93af7639} (76%) delete mode 100644 Library/Artifacts/c4/c48f88ed327f0215ea2ff4da25f7b5b3 delete mode 100644 Library/Artifacts/c6/c6c9684c2498ec4134afe766017f2805 delete mode 100644 Library/Artifacts/c8/c85465427dbcaf9f7bc9d0aa8e0df43f create mode 100644 Library/Artifacts/c8/c8d5d6ed860fe8139591f4e3a24efd62 delete mode 100644 Library/Artifacts/cd/cd0524fe2647a80a2660d2f809be7a04 delete mode 100644 Library/Artifacts/d0/d0cb3ddfd742ee17094c148cd4a84baf delete mode 100644 Library/Artifacts/d1/d1ff0feddb866031fe0b83edb78750cd delete mode 100644 Library/Artifacts/d2/d2bc4ef22ffbcbbf2d424639b658bee4 create mode 100644 Library/Artifacts/d3/d3f995f1174695b65ff4858a7357d013 create mode 100644 Library/Artifacts/d4/d49173e5aaa5e2befdae55a5c2c46980 rename Library/Artifacts/{50/5060228b11eb43a196ea4eb9f71c02eb => d5/d5cc21567aa36a0d7aab28ec68244c50} (82%) delete mode 100644 Library/Artifacts/d6/d6acb5fcd5c9e550ecde1f5d05f8b0da delete mode 100644 Library/Artifacts/d7/d711a7fe542b3e10ee8dd9befb3e815a rename Library/Artifacts/{dc/dcac788eab5dfa5125ce88d827454ab3 => d8/d8cef383486aab5895b03a6fff4d499f} (73%) delete mode 100644 Library/Artifacts/d9/d94daf156578cf0701de33d01ede4b5b rename Library/Artifacts/{c1/c1c3898f354e5030e728ed6a34843661 => db/dbfa81ce83a17ed7ca3b6cd0e3af345c} (56%) delete mode 100644 Library/Artifacts/e0/e0bc66e3ebd27fb97c759869bc6ff734 rename Library/Artifacts/{73/7328e5296da8dde51da9225fe5b732e7 => e2/e234a707c2109d401a6793bbc1f3893c} (66%) delete mode 100644 Library/Artifacts/e3/e3ba062b7b2b1469cd72d5e659a62e33 rename Library/Artifacts/{1b/1b280738486ca03fb83f4c3d6204b407 => e5/e5e78f4f03ad6ed7bb895bde5c2c072c} (94%) rename Library/Artifacts/{28/28473a64b7d16278f4fc147d3730f40a => e6/e60c56e5f83b481c93026f5e788d8424} (56%) create mode 100644 Library/Artifacts/e7/e7f0dbbf08522f3c21f1dca5875d6dc9 delete mode 100644 Library/Artifacts/e8/e8e9043726365905a05e1887e64a5188 rename Library/Artifacts/{23/23cda1775f6e6cfe614a6e2311179663 => ea/eae31e4a5a3394b3d2fd35e44f18bfe6} (69%) delete mode 100644 Library/Artifacts/ec/ec3b358b957f4ed45e0b7b0105fc3c2e delete mode 100644 Library/Artifacts/ee/eeaa5acc354fe3c324aa19740637306f delete mode 100644 Library/Artifacts/ef/effd29a30595768a39967ded9dc15a98 create mode 100644 Library/Artifacts/f0/f05e9dfc1ddc3de1973edd2373ec718d delete mode 100644 Library/Artifacts/f0/f0688377ae7e4ae7483f99781f77ff33 rename Library/Artifacts/{1c/1ce9276bfedf59f68c53be96714279d5 => f2/f2329d28ef106f33d0b5f78c1ca73cb4} (56%) rename Library/Artifacts/{3e/3ec17e71dc4a75090372b92b617b45ea => f4/f47862f406357736930399dc31aaf351} (56%) delete mode 100644 Library/Artifacts/f6/f6a40951d47d6df7995330e584c9b950 create mode 100644 Library/Artifacts/f6/f6bd498f32d87b98f42ecfc9dc5033e4 delete mode 100644 Library/Artifacts/f7/f76226e6aa0f869ffc574b7a8185a7b9 delete mode 100644 Library/Artifacts/f8/f800a4ba9b1481092c25626ff9433644 create mode 100644 Library/Artifacts/f8/f8c7da6b2684eb3f8b8a67cbe03cfd7f delete mode 100644 Library/Artifacts/fb/fb7c13e3d4fe5d05e98cd62bf05187fe delete mode 100644 Library/Artifacts/fe/fe5a0eae7926d4756dc1e241800de17a diff --git a/.vs/RimWorld-Animation-Studio/v16/.suo b/.vs/RimWorld-Animation-Studio/v16/.suo index f6edf7aae2acec5460f2b5607db9c7f2a7e13873..2c75330c08cb9cc9b59af9dad20578e1f7a51d68 100644 GIT binary patch delta 16566 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 I^R>(W7xBu2`Tzg` delta 8564 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 - + @@ -132,6 +132,7 @@ + @@ -141,7 +142,6 @@ - diff --git a/Assets/Resources/Prefabs/GhostSlider.prefab b/Assets/Resources/Prefabs/GhostSlider.prefab index e76edfe3..d2e766b3 100644 --- a/Assets/Resources/Prefabs/GhostSlider.prefab +++ b/Assets/Resources/Prefabs/GhostSlider.prefab @@ -181,7 +181,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0.5, g: 0, b: 0, a: 0.5019608} + m_Color: {r: 0.5, g: 0, b: 0, a: 1} m_RaycastTarget: 0 m_Maskable: 1 m_OnCullStateChanged: diff --git a/Assets/Scenes/MainScene.unity b/Assets/Scenes/MainScene.unity index 285473d1..a6fdb86b 100644 --- a/Assets/Scenes/MainScene.unity +++ b/Assets/Scenes/MainScene.unity @@ -2452,6 +2452,7 @@ GameObject: - component: {fileID: 149299858} - component: {fileID: 149299857} - component: {fileID: 149299856} + - component: {fileID: 149299859} m_Layer: 5 m_Name: ActorAddonButton m_TagString: Untagged @@ -2517,7 +2518,7 @@ MonoBehaviour: m_PressedTrigger: Pressed m_SelectedTrigger: Selected m_DisabledTrigger: Disabled - m_Interactable: 1 + m_Interactable: 0 m_TargetGraphic: {fileID: 149299857} m_OnClick: m_PersistentCalls: @@ -2570,6 +2571,25 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 149299854} m_CullTransparentMesh: 0 +--- !u!114 &149299859 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 149299854} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c05e9ac2a2f311549b12f094d2785a20, type: 3} + m_Name: + m_EditorClassIdentifier: + message: Currently disabled + executedCommand: + delay: 0 + offset: {x: 5, y: -15} + flipX: 0 + tooltip: {fileID: 0} + tooltipText: {fileID: 0} --- !u!1 &160519906 GameObject: m_ObjectHideFlags: 0 @@ -3511,6 +3531,84 @@ MonoBehaviour: cloneObjects: - {fileID: 8098018029235791166, guid: 860a3bbda6bdfad4791a7fce0c17e672, type: 3} - {fileID: 567861683340653947, guid: 9c09247b9acee3645ad8788eab810b2e, type: 3} +--- !u!1 &250084108 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 250084109} + - component: {fileID: 250084111} + - component: {fileID: 250084110} + m_Layer: 5 + m_Name: StageWindowLengthNormal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &250084109 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 250084108} + 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: 665717983} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 110, y: -30} + m_SizeDelta: {x: 110, y: 20} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &250084110 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 250084108} + 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: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 6000 (100.00 s) +--- !u!222 &250084111 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 250084108} + m_CullTransparentMesh: 0 --- !u!1 &252080743 GameObject: m_ObjectHideFlags: 0 @@ -3942,6 +4040,84 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 272322073} m_CullTransparentMesh: 0 +--- !u!1 &279394488 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 279394489} + - component: {fileID: 279394491} + - component: {fileID: 279394490} + m_Layer: 5 + m_Name: AnimationLengthQuickText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &279394489 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 279394488} + 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: 665717983} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 220, y: -50} + m_SizeDelta: {x: 110, y: 20} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &279394490 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 279394488} + 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: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 6000 (100.00 s) +--- !u!222 &279394491 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 279394488} + m_CullTransparentMesh: 0 --- !u!224 &279689758 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 5792094730711952121, guid: 9070db4f6841de145b1ceb2f217d92f7, @@ -8244,9 +8420,9 @@ MonoBehaviour: onValueChanged: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 1900570406} - m_MethodName: set_isOn - m_Mode: 0 + - m_Target: {fileID: 1335076905} + m_MethodName: StretchKeyframesToggle + m_Mode: 1 m_Arguments: m_ObjectArgument: {fileID: 0} m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine @@ -9664,7 +9840,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 5ce34f72fe7ef0c41a7bc163fce97970, type: 3} m_Name: m_EditorClassIdentifier: - isAnimating: 0 animationTimelines: {fileID: 1100016168} actorBodies: {fileID: 1828035561} stageLoopDropdown: {fileID: 429161118} @@ -10230,7 +10405,7 @@ RectTransform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 539052776} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 206.25} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 1791478860} @@ -10241,14 +10416,13 @@ RectTransform: - {fileID: 462332575} - {fileID: 1083597498} - {fileID: 429161117} - - {fileID: 665717983} m_Father: {fileID: 1100016168} - m_RootOrder: 1 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} m_AnchoredPosition: {x: 10, y: -22.5} - m_SizeDelta: {x: 1375.8606, y: 45} + m_SizeDelta: {x: 1055, y: 45} m_Pivot: {x: 0, y: 0.5} --- !u!114 &539052778 MonoBehaviour: @@ -10262,10 +10436,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6b414452bfd6c9b4bb99542a51d77468, type: 3} m_Name: m_EditorClassIdentifier: - stageLoopDropdown: {fileID: 429161118} - animationClipTimeField: {fileID: 760297267} - animationClipLengthField: {fileID: 1676585155} - stretchKeyframesToggle: {fileID: 462332576} + currentTimeField: {fileID: 760297267} + stageWindowLengthField: {fileID: 1676585155} playBackSpeedField: {fileID: 1579799916} playToggleButton: {fileID: 79733375} stageTimelineSlider: {fileID: 1289465655} @@ -10412,7 +10584,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.5} m_AnchorMax: {x: 1, y: 0.5} - m_AnchoredPosition: {x: 0, y: 84.999985} + m_AnchoredPosition: {x: 0, y: 84.99999} m_SizeDelta: {x: 0, y: 5} m_Pivot: {x: 0, y: 1} --- !u!114 &542629604 @@ -11443,11 +11615,11 @@ RectTransform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 591894604} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 206.25} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 1100016168} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 1} @@ -12976,9 +13148,10 @@ GameObject: m_Component: - component: {fileID: 665717983} - component: {fileID: 665717987} - - component: {fileID: 665717986} - - component: {fileID: 665717985} - component: {fileID: 665717984} + - component: {fileID: 665717988} + - component: {fileID: 665717985} + - component: {fileID: 665717986} m_Layer: 5 m_Name: 'StageTimeMetricsLabel ' m_TagString: Untagged @@ -12993,21 +13166,27 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 665717982} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 1456872509} + - {fileID: 1662558896} + - {fileID: 2073914479} - {fileID: 1137451984} - - {fileID: 1834285083} + - {fileID: 250084109} + - {fileID: 1062318706} - {fileID: 1293297799} - m_Father: {fileID: 539052777} - m_RootOrder: 8 + - {fileID: 715800481} + - {fileID: 279394489} + m_Father: {fileID: 1100016168} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 1006.86053, y: -35} - m_SizeDelta: {x: 364, y: 25} - m_Pivot: {x: 0, y: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -310, y: 90} + m_SizeDelta: {x: 330, y: 60} + m_Pivot: {x: 1, y: 0} --- !u!114 &665717984 MonoBehaviour: m_ObjectHideFlags: 0 @@ -13031,22 +13210,21 @@ MonoBehaviour: m_GameObject: {fileID: 665717982} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Script: {fileID: 11500000, guid: 8a8695521f0d02e499659fee002a26c2, type: 3} m_Name: m_EditorClassIdentifier: m_Padding: - m_Left: 20 + m_Left: 0 m_Right: 0 m_Top: 0 m_Bottom: 0 m_ChildAlignment: 0 - m_Spacing: 0 - m_ChildForceExpandWidth: 0 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 0 - m_ChildControlHeight: 0 - m_ChildScaleWidth: 1 - m_ChildScaleHeight: 1 + m_StartCorner: 0 + m_StartAxis: 0 + m_CellSize: {x: 110, y: 20} + m_Spacing: {x: 0, y: 0} + m_Constraint: 1 + m_ConstraintCount: 3 --- !u!114 &665717986 MonoBehaviour: m_ObjectHideFlags: 0 @@ -13056,30 +13234,14 @@ MonoBehaviour: m_GameObject: {fileID: 665717982} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Script: {fileID: 11500000, guid: 060e49b40b1097e46b662059e4e29cdf, 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: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: + stageLengthNormalText: {fileID: 250084110} + stageLengthQuickText: {fileID: 1062318707} + animationLengthNormalText: {fileID: 715800482} + animationLengthQuickText: {fileID: 279394490} + spacing: 10 --- !u!222 &665717987 CanvasRenderer: m_ObjectHideFlags: 0 @@ -13088,6 +13250,26 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 665717982} m_CullTransparentMesh: 0 +--- !u!114 &665717988 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 665717982} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!1 &675124297 GameObject: m_ObjectHideFlags: 0 @@ -13751,7 +13933,7 @@ GameObject: m_Component: - component: {fileID: 714321235} m_Layer: 5 - m_Name: PreviewTimeline + m_Name: AnimationPreviewTimeline m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -13765,18 +13947,96 @@ RectTransform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 714321234} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 206.25} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 138865804} m_Father: {fileID: 1100016168} - m_RootOrder: 2 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} m_AnchoredPosition: {x: 537.5, y: -55} m_SizeDelta: {x: 1055, y: 20} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &715800480 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 715800481} + - component: {fileID: 715800483} + - component: {fileID: 715800482} + m_Layer: 5 + m_Name: AnimationLengthNormalText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &715800481 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 715800480} + 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: 665717983} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 110, y: -50} + m_SizeDelta: {x: 110, y: 20} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &715800482 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 715800480} + 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: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 6000 (100.00 s) +--- !u!222 &715800483 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 715800480} + m_CullTransparentMesh: 0 --- !u!1 &719308825 GameObject: m_ObjectHideFlags: 0 @@ -14701,7 +14961,7 @@ GameObject: - component: {fileID: 760297270} - component: {fileID: 760297271} m_Layer: 5 - m_Name: AnimationClipTimeField + m_Name: CurrentTimeField m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -14779,18 +15039,7 @@ MonoBehaviour: m_CharacterLimit: 0 m_OnEndEdit: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 531246358} - m_MethodName: OnAnimationClipTimeFieldChange - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] m_OnValueChanged: m_PersistentCalls: m_Calls: [] @@ -19124,7 +19373,7 @@ RectTransform: m_Children: - {fileID: 1673215398} m_Father: {fileID: 1100016168} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -19468,6 +19717,84 @@ MonoBehaviour: m_BlockingMask: serializedVersion: 2 m_Bits: 4294967295 +--- !u!1 &1062318705 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1062318706} + - component: {fileID: 1062318708} + - component: {fileID: 1062318707} + m_Layer: 5 + m_Name: StageWindowLengthQuick + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1062318706 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1062318705} + 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: 665717983} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 220, y: -30} + m_SizeDelta: {x: 110, y: 20} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &1062318707 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1062318705} + 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: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 6000 (100.00 s) +--- !u!222 &1062318708 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1062318705} + m_CullTransparentMesh: 0 --- !u!1 &1068786481 GameObject: m_ObjectHideFlags: 0 @@ -20012,6 +20339,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 665717983} - {fileID: 591894605} - {fileID: 539052777} - {fileID: 714321235} @@ -20621,7 +20949,7 @@ GameObject: - component: {fileID: 1137451986} - component: {fileID: 1137451985} m_Layer: 5 - m_Name: StageLengthText + m_Name: StageWindowLengthText m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -20639,12 +20967,12 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 665717983} - m_RootOrder: 0 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 20, y: -12.5} - m_SizeDelta: {x: 153, y: 25} + m_AnchoredPosition: {x: 0, y: -30} + m_SizeDelta: {x: 110, y: 20} m_Pivot: {x: 0, y: 0.5} --- !u!114 &1137451985 MonoBehaviour: @@ -20655,11 +20983,17 @@ MonoBehaviour: m_GameObject: {fileID: 1137451983} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} m_Name: m_EditorClassIdentifier: - m_HorizontalFit: 2 - m_VerticalFit: 0 + m_IgnoreLayout: 0 + m_MinWidth: 120 + m_MinHeight: -1 + m_PreferredWidth: 120 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!114 &1137451986 MonoBehaviour: m_ObjectHideFlags: 0 @@ -20682,17 +21016,17 @@ MonoBehaviour: m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 14 - m_FontStyle: 0 + m_FontStyle: 1 m_BestFit: 0 m_MinSize: 10 m_MaxSize: 40 - m_Alignment: 5 + m_Alignment: 3 m_AlignByGeometry: 0 m_RichText: 1 m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 'Stage length: 600 (10 s)' + m_Text: Stage length --- !u!222 &1137451987 CanvasRenderer: m_ObjectHideFlags: 0 @@ -24277,7 +24611,7 @@ GameObject: - component: {fileID: 1289465655} - component: {fileID: 1289465656} m_Layer: 5 - m_Name: AnimTimelineSlider + m_Name: StageTimelineSlider m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -24354,7 +24688,7 @@ MonoBehaviour: m_OnValueChanged: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 531246358} + - m_Target: {fileID: 539052778} m_MethodName: OnStageTimelineSliderChange m_Mode: 1 m_Arguments: @@ -24553,7 +24887,6 @@ GameObject: - component: {fileID: 1293297799} - component: {fileID: 1293297802} - component: {fileID: 1293297801} - - component: {fileID: 1293297800} m_Layer: 5 m_Name: AnimationLengthText m_TagString: Untagged @@ -24573,27 +24906,13 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 665717983} - m_RootOrder: 2 + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 185, y: -12.5} - m_SizeDelta: {x: 179, y: 25} + m_AnchoredPosition: {x: 0, y: -50} + m_SizeDelta: {x: 110, y: 20} m_Pivot: {x: 0, y: 0.5} ---- !u!114 &1293297800 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1293297798} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 2 - m_VerticalFit: 0 --- !u!114 &1293297801 MonoBehaviour: m_ObjectHideFlags: 0 @@ -24616,7 +24935,7 @@ MonoBehaviour: m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 14 - m_FontStyle: 0 + m_FontStyle: 1 m_BestFit: 0 m_MinSize: 10 m_MaxSize: 40 @@ -24626,7 +24945,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 'Animation length: 600 (10 s)' + m_Text: Total length --- !u!222 &1293297802 CanvasRenderer: m_ObjectHideFlags: 0 @@ -28092,6 +28411,41 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 0d0b652f32a2cc243917e4028fa0f046, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &1456872508 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1456872509} + m_Layer: 5 + m_Name: Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1456872509 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1456872508} + 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: 665717983} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 55, y: -10} + m_SizeDelta: {x: 110, y: 20} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1458444068 GameObject: m_ObjectHideFlags: 0 @@ -28484,6 +28838,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4264bb913f7501844bf60529d6b59b8a, type: 3} m_Name: m_EditorClassIdentifier: + animationTimelines: {fileID: 1100016168} targetDivisions: 30 divisionBands: 0100000002000000050000000a000000190000003200000064000000fa000000f4010000e8030000 linearScaleTickPrefab: {fileID: 5891687054347736455, guid: 229f16c49d39ed446bf8c22c8065cd8a, @@ -31963,6 +32318,84 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1661572514} m_CullTransparentMesh: 0 +--- !u!1 &1662558895 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1662558896} + - component: {fileID: 1662558898} + - component: {fileID: 1662558897} + m_Layer: 5 + m_Name: NormalText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1662558896 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1662558895} + 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: 665717983} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 165, y: -10} + m_SizeDelta: {x: 110, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1662558897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1662558895} + 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: 1 + 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: Normal +--- !u!222 &1662558898 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1662558895} + m_CullTransparentMesh: 0 --- !u!1 &1668270816 GameObject: m_ObjectHideFlags: 0 @@ -32348,7 +32781,7 @@ GameObject: - component: {fileID: 1676585158} - component: {fileID: 1676585159} m_Layer: 5 - m_Name: AnimationClipLengthField + m_Name: StageWindowLengthField m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -32426,18 +32859,7 @@ MonoBehaviour: m_CharacterLimit: 0 m_OnEndEdit: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 531246358} - m_MethodName: OnAnimationClipLengthFieldChange - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] m_OnValueChanged: m_PersistentCalls: m_Calls: [] @@ -35316,84 +35738,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1833911027} m_CullTransparentMesh: 0 ---- !u!1 &1834285082 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1834285083} - - component: {fileID: 1834285085} - - component: {fileID: 1834285084} - m_Layer: 5 - m_Name: / - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1834285083 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1834285082} - 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: 665717983} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 179, y: -12.5} - m_SizeDelta: {x: 12, y: 25} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1834285084 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1834285082} - 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: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: / ---- !u!222 &1834285085 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1834285082} - m_CullTransparentMesh: 0 --- !u!1 &1845441704 GameObject: m_ObjectHideFlags: 0 @@ -39024,6 +39368,84 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2070462931} m_CullTransparentMesh: 0 +--- !u!1 &2073914478 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2073914479} + - component: {fileID: 2073914481} + - component: {fileID: 2073914480} + m_Layer: 5 + m_Name: QuickText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2073914479 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2073914478} + 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: 665717983} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 275, y: -10} + m_SizeDelta: {x: 110, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2073914480 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2073914478} + 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: 1 + 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: Quick +--- !u!222 &2073914481 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2073914478} + m_CullTransparentMesh: 0 --- !u!1 &2076684196 stripped GameObject: m_CorrespondingSourceObject: {fileID: 7715503544683182667, guid: 8b89f6c9e5f696c4997760829c45a505, diff --git a/Assets/Scripts/AnimationComponents/AnimationStage.cs b/Assets/Scripts/AnimationComponents/AnimationStage.cs index 5bb85e4c..9eeffb78 100644 --- a/Assets/Scripts/AnimationComponents/AnimationStage.cs +++ b/Assets/Scripts/AnimationComponents/AnimationStage.cs @@ -98,6 +98,8 @@ namespace RimWorldAnimationStudio clip.BuildSimpleCurves(); } + + EventsManager.OnStageWindowSizeChanged(this); } public void ResizeStageWindow(int newStageWindowSize) @@ -105,6 +107,8 @@ namespace RimWorldAnimationStudio Workspace.GetCurrentAnimationStage().stageWindowSize = newStageWindowSize; Workspace.GetCurrentAnimationStage().PlayTimeTicks = newStageWindowSize * StageLoopsNormal; Workspace.GetCurrentAnimationStage().PlayTimeTicksQuick = newStageWindowSize * StageLoopsQuick; + + EventsManager.OnStageWindowSizeChanged(this); } public void AddAnimationClip(int actorID = -1) diff --git a/Assets/Scripts/AnimationComponents/PawnAnimationClip.cs b/Assets/Scripts/AnimationComponents/PawnAnimationClip.cs index 54575122..999e48bd 100644 --- a/Assets/Scripts/AnimationComponents/PawnAnimationClip.cs +++ b/Assets/Scripts/AnimationComponents/PawnAnimationClip.cs @@ -193,30 +193,27 @@ namespace RimWorldAnimationStudio public void AddPawnKeyframe() { - PawnAnimationClip clip = Workspace.GetCurrentPawnAnimationClip(); - List keyframes = clip?.Keyframes; - - if (clip == null || keyframes == null) + if (Keyframes == null) { Debug.LogWarning("Cannot add pawn keyframe - the AnimationDef is invalid"); return; } - if (keyframes.FirstOrDefault(x => x.atTick == Workspace.StageTick) != null) + if (Keyframes.FirstOrDefault(x => x.atTick == Workspace.StageTick) != null) { Debug.LogWarning("Cannot add pawn keyframe - a keyframe already exists at this tick"); return; } - float clipPercent = (float)(Workspace.StageTick % clip.duration) / clip.duration; + float clipPercent = (float)(Workspace.StageTick % duration) / duration; PawnKeyframe keyframe = new PawnKeyframe(); - keyframe.BodyAngle = clip.BodyAngle.Evaluate(clipPercent); - keyframe.HeadAngle = clip.HeadAngle.Evaluate(clipPercent); - keyframe.HeadBob = clip.HeadBob.Evaluate(clipPercent); - keyframe.BodyOffsetX = clip.BodyOffsetX.Evaluate(clipPercent); - keyframe.BodyOffsetZ = clip.BodyOffsetZ.Evaluate(clipPercent); - keyframe.HeadFacing = (int)clip.HeadFacing.Evaluate(clipPercent); - keyframe.BodyFacing = (int)clip.BodyFacing.Evaluate(clipPercent); - keyframe.GenitalAngle = clip.GenitalAngle.Evaluate(clipPercent); + keyframe.BodyAngle = BodyAngle.Evaluate(clipPercent); + keyframe.HeadAngle = HeadAngle.Evaluate(clipPercent); + keyframe.HeadBob = HeadBob.Evaluate(clipPercent); + keyframe.BodyOffsetX = BodyOffsetX.Evaluate(clipPercent); + keyframe.BodyOffsetZ = BodyOffsetZ.Evaluate(clipPercent); + keyframe.HeadFacing = (int)HeadFacing.Evaluate(clipPercent); + keyframe.BodyFacing = (int)BodyFacing.Evaluate(clipPercent); + keyframe.GenitalAngle = GenitalAngle.Evaluate(clipPercent); keyframe.atTick = Workspace.StageTick; - PawnKeyframe nextKeyframe = keyframes.FirstOrDefault(x => x.atTick > Workspace.StageTick); + PawnKeyframe nextKeyframe = Keyframes.FirstOrDefault(x => x.atTick > Workspace.StageTick); if (nextKeyframe != null) { keyframes.Insert(keyframes.IndexOf(nextKeyframe), keyframe); } @@ -224,41 +221,10 @@ namespace RimWorldAnimationStudio else { keyframes.Add(keyframe); } - clip.BuildSimpleCurves(); + BuildSimpleCurves(); - Workspace.RecordEvent("Keyframe addition"); - } - - public void ClonePawnKeyframe() - { - List keyframesToClone = Workspace.GetPawnKeyframesByID(Workspace.keyframeID); - - foreach (PawnKeyframe keyframe in keyframesToClone) - { - PawnAnimationClip clip = Workspace.GetAnimationClipThatOwnsKeyframe(keyframe.keyframeID); - - if (clip == null) - { Debug.LogWarning("Cannot clone pawn keyframe - no clip owns this keyframe"); continue; } - - if (clip.Keyframes.FirstOrDefault(x => x.atTick == Workspace.StageTick) != null) - { Debug.LogWarning("Cannot clone pawn keyframe - a keyframe already exists at this tick"); return; } - - PawnKeyframe cloneFrame = keyframe.Copy(); - cloneFrame.GenerateKeyframeID(clip.GetOwningActorID()); - cloneFrame.atTick = Workspace.StageTick; - - PawnKeyframe nextKeyframe = clip.Keyframes.FirstOrDefault(x => x.atTick > Workspace.StageTick); - - if (nextKeyframe != null) - { clip.Keyframes.Insert(clip.Keyframes.IndexOf(nextKeyframe), cloneFrame); } - - else - { clip.Keyframes.Add(cloneFrame); } - - clip.BuildSimpleCurves(); - } - - Workspace.RecordEvent("Keyframe clone"); + EventsManager.OnKeyframeCountChanged(this); + Workspace.RecordEvent("Keyframe addition"); } public void CopyPawnKeyframes() @@ -319,6 +285,8 @@ namespace RimWorldAnimationStudio { clip.Keyframes.Add(clonedKeyframe); } clip.BuildSimpleCurves(); + + EventsManager.OnKeyframeCountChanged(clip); } if (originalWindowSize != Workspace.StageWindowSize) @@ -344,6 +312,7 @@ namespace RimWorldAnimationStudio Keyframes.Remove(keyframe); BuildSimpleCurves(); + EventsManager.OnKeyframeCountChanged(this); Workspace.RecordEvent("Keyframe deletion"); } @@ -360,7 +329,10 @@ namespace RimWorldAnimationStudio // Pre-save / post-load public void OnPreSave() { - foreach (ActorAddon addon in Addons) + var temp = Addons.Copy(); + Addons.Clear(); + + foreach (ActorAddon addon in temp) { if (addon.Render) { addons.Add(addon); } diff --git a/Assets/Scripts/AnimationComponents/PawnKeyframe.cs b/Assets/Scripts/AnimationComponents/PawnKeyframe.cs index 08930dce..ef2c64ea 100644 --- a/Assets/Scripts/AnimationComponents/PawnKeyframe.cs +++ b/Assets/Scripts/AnimationComponents/PawnKeyframe.cs @@ -210,14 +210,18 @@ namespace RimWorldAnimationStudio { SoundEffect = DefaultTags.soundDefs.Concat(CustomTags.soundDefs).Contains(SoundEffect) ? SoundEffect : null; - addonKeyframes.Clear(); - - foreach (AddonKeyframe addonKeyframe in AddonKeyframes) + if (addonKeyframes.NotNullOrEmpty()) { - ActorAddon addon = Workspace.GetAnimationClipThatOwnsKeyframe(keyframeID).GetActorAddon(addonKeyframe.AddonName); + var temp = AddonKeyframes.Copy(); + addonKeyframes.Clear(); - if (addon.Render) - { addonKeyframes.Add(addonKeyframe.Copy()); } + foreach (AddonKeyframe addonKeyframe in temp) + { + ActorAddon addon = Workspace.GetAnimationClipThatOwnsKeyframe(keyframeID).GetActorAddon(addonKeyframe.AddonName); + + if (addon.Render) + { addonKeyframes.Add(addonKeyframe.Copy()); } + } } } diff --git a/Assets/Scripts/GUI/Actors/ActorBody.cs b/Assets/Scripts/GUI/Actors/ActorBody.cs index 0ae4ce1c..d1cabcc6 100644 --- a/Assets/Scripts/GUI/Actors/ActorBody.cs +++ b/Assets/Scripts/GUI/Actors/ActorBody.cs @@ -17,6 +17,9 @@ namespace RimWorldAnimationStudio { EventsManager.onActorBodyPartSelected.AddListener(delegate(ActorBodyPart bodyPart) { OnActorBodyPartSelected(bodyPart); }); EventsManager.onActorBodySelected.AddListener(delegate(ActorBody actorBody) { OnActorBodySelected(actorBody); }); + + if (Workspace.ActorID == actorID) + { Activate(); } } public void OnActorBodySelected(ActorBody actorBody) diff --git a/Assets/Scripts/GUI/Actors/ActorBodyPart.cs b/Assets/Scripts/GUI/Actors/ActorBodyPart.cs index bdbfc23e..5da1531c 100644 --- a/Assets/Scripts/GUI/Actors/ActorBodyPart.cs +++ b/Assets/Scripts/GUI/Actors/ActorBodyPart.cs @@ -18,6 +18,9 @@ namespace RimWorldAnimationStudio { EventsManager.onActorBodyPartSelected.AddListener(delegate (ActorBodyPart bodyPart) { OnActorBodyPartSelected(bodyPart); }); EventsManager.onActorBodySelected.AddListener(delegate (ActorBody actorBody) { OnActorBodySelected(actorBody); }); + + if (Workspace.ActorID == parent.actorID) + { parent.Activate(); } } public void OnActorAddonChange(ActorAddon actorAddon) diff --git a/Assets/Scripts/GUI/AnimationLengthDisplay.cs b/Assets/Scripts/GUI/AnimationLengthDisplay.cs deleted file mode 100644 index 7e58ceb0..00000000 --- a/Assets/Scripts/GUI/AnimationLengthDisplay.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using UnityEngine; -using UnityEngine.UI; - -namespace RimWorldAnimationStudio -{ - public class AnimationLengthDisplay : MonoBehaviour - { - public Text stageLengthNormalText; - public Text animationLengthNormalText; - public Text stageLengthQuickText; - public Text animationLengthQuickText; - - public void Start() - { - - } - - public void UpdateGUI() - { - stageLengthNormalText.text = "Stage length (normal): " + Workspace.GetCurrentAnimationStage().PlayTimeTicks + " (" + Workspace.GetCurrentAnimationStage().PlayTimeTicks / 60f + " s)"; - animationLengthNormalText.text = "Animation length (normal): " + Workspace.animationDef.animationTimeTicks + " (" + Workspace.animationDef.animationTimeTicks / 60f + " s)"; - - stageLengthQuickText.text = "Stage length (quickie): " + Workspace.GetCurrentAnimationStage().PlayTimeTicksQuick + " (" + Workspace.GetCurrentAnimationStage().PlayTimeTicksQuick / 60f + " s)"; - animationLengthQuickText.text = "Animation length (quickie): " + Workspace.animationDef.animationTimeTicksQuick + " (" + Workspace.animationDef.animationTimeTicksQuick / 60f + " s)"; - - LayoutRebuilder.ForceRebuildLayoutImmediate(stageLengthQuickText.GetComponent()); - LayoutRebuilder.ForceRebuildLayoutImmediate(animationLengthQuickText.GetComponent()); - } - } -} diff --git a/Assets/Scripts/GUI/AnimationLengthsCard.cs b/Assets/Scripts/GUI/AnimationLengthsCard.cs new file mode 100644 index 00000000..6df3f063 --- /dev/null +++ b/Assets/Scripts/GUI/AnimationLengthsCard.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UnityEngine; +using UnityEngine.UI; + +namespace RimWorldAnimationStudio +{ + public class AnimationLengthsCard : MonoBehaviour + { + public Text stageLengthNormalText; + public Text stageLengthQuickText; + public Text animationLengthNormalText; + public Text animationLengthQuickText; + public float spacing = 10f; + + private RectTransform rect; + + private void Start() + { + rect = GetComponent(); + } + + public void Update() + { + LayoutRebuilder.ForceRebuildLayoutImmediate(transform.parent.GetComponent()); + LayoutRebuilder.ForceRebuildLayoutImmediate(transform.parent.GetComponent()); + rect.localPosition = new Vector3(rect.localPosition.x, spacing + transform.parent.GetComponent().sizeDelta.y, rect.localPosition.z); + + stageLengthNormalText.text = Workspace.GetCurrentAnimationStage().PlayTimeTicks + " (" + string.Format("{0:0.00}", Workspace.GetCurrentAnimationStage().PlayTimeTicks / 60f) + " s)"; + animationLengthNormalText.text = Workspace.animationDef.animationTimeTicks + " (" + string.Format("{0:0.00}", Workspace.animationDef.animationTimeTicks / 60f) + " s)"; + + stageLengthQuickText.text = Workspace.GetCurrentAnimationStage().PlayTimeTicksQuick + " (" + string.Format("{0:0.00}", Workspace.GetCurrentAnimationStage().PlayTimeTicksQuick / 60f) + " s)"; + animationLengthQuickText.text = Workspace.animationDef.animationTimeTicksQuick + " (" + string.Format("{0:0.00}", Workspace.animationDef.animationTimeTicksQuick / 60f) + " s)"; + } + } +} diff --git a/Assets/Scripts/GUI/AnimationLengthDisplay.cs.meta b/Assets/Scripts/GUI/AnimationLengthsCard.cs.meta similarity index 100% rename from Assets/Scripts/GUI/AnimationLengthDisplay.cs.meta rename to Assets/Scripts/GUI/AnimationLengthsCard.cs.meta diff --git a/Assets/Scripts/GUI/AnimationTimeline.cs b/Assets/Scripts/GUI/AnimationTimeline.cs index 217f57ac..8fe5e224 100644 --- a/Assets/Scripts/GUI/AnimationTimeline.cs +++ b/Assets/Scripts/GUI/AnimationTimeline.cs @@ -11,45 +11,50 @@ namespace RimWorldAnimationStudio { public class AnimationTimeline : MonoBehaviour, IPointerClickHandler { - public int actorID; + public int actorID = -1; public KeyframeSlider keyframeSliderPrefab; private Transform anchorTransform; + private void Start() + { + EventsManager.onAnimationTimelinesChanged.AddListener(delegate { UpdateGUI(); }); + EventsManager.onKeyframeCountChanged.AddListener(delegate { UpdateGUI(); }); + EventsManager.onActorIDChanged.AddListener(delegate { UpdateTimelineSelection(); }); + + UpdateTimelineSelection(); + UpdateGUI(); + } + public void Initialize(int actorID) { anchorTransform = transform.parent; this.actorID = actorID; + UpdateGUI(); + } + + public void UpdateGUI() + { + if (actorID < 0) return; + PawnAnimationClip clip = Workspace.GetPawnAnimationClip(actorID); + if (clip == null) return; + clip.BuildSimpleCurves(); foreach (KeyframeSlider slider in GetComponentsInChildren()) - { RemovePawnKeyFrame(slider.keyframeID);} + { RemovePawnKeyFrame(slider.keyframeID); } foreach (PawnKeyframe keyframe in clip.Keyframes) { AddPawnKeyFrame(keyframe.keyframeID); } - /*int keyframeCount = clip.keyframes.Count; - int childCount = GetComponentsInChildren().Count(); + InitiateUpdateOfGhostFrames(); + } - for (int i = 0; i < Mathf.Max(keyframeCount, childCount); i++) - { - // Add new keyframe sliders as required - if (i >= childCount) - { AddPawnKeyFrame(clip.keyframes[i].keyframeID); } - - // Get objects to update - KeyframeSlider keyframeSlider = GetComponentsInChildren()[i]; - - // Update values - if (i < keyframeCount) - { keyframeSlider.Initialize(this, actorID, clip.keyframes[i].keyframeID); } - - // Remove excess objects as required - else - { RemovePawnKeyFrame(GetComponentsInChildren()[i].keyframeID); } - }*/ + public void UpdateTimelineSelection() + { + GetComponent().color = (Workspace.ActorID == actorID ? Constants.ColorGoldYellow : Constants.ColorMidGrey); } public void AddPawnKeyFrame(int keyframeID) @@ -64,19 +69,8 @@ namespace RimWorldAnimationStudio Destroy(keyframeSlider?.gameObject); } - public void Update() - { - if (Workspace.ActorID == actorID) - { GetComponent().color = Constants.ColorGoldYellow; } - - else - { GetComponent().color = Constants.ColorMidGrey; } - } - public void InitiateUpdateOfGhostFrames() { - //if (AnimationController.Instance.IsTimelineDirty()) return; - BroadcastMessage("UpdateGhostFrames"); } diff --git a/Assets/Scripts/GUI/Cards/ActorKeyframeCard.cs b/Assets/Scripts/GUI/Cards/ActorKeyframeCard.cs index a2c61b5a..e5d7f7e0 100644 --- a/Assets/Scripts/GUI/Cards/ActorKeyframeCard.cs +++ b/Assets/Scripts/GUI/Cards/ActorKeyframeCard.cs @@ -48,8 +48,9 @@ namespace RimWorldAnimationStudio keyframe.GenitalAngle = float.Parse(appendageRotationField.text); Workspace.GetCurrentPawnAnimationClip().BuildSimpleCurves(); - Workspace.RecordEvent("Actor position / orientation"); + + UpdateGUI(); } public void UpdateGUI() diff --git a/Assets/Scripts/GUI/Cards/AnimationControlCard.cs b/Assets/Scripts/GUI/Cards/AnimationControlCard.cs index 16fe082c..5e190954 100644 --- a/Assets/Scripts/GUI/Cards/AnimationControlCard.cs +++ b/Assets/Scripts/GUI/Cards/AnimationControlCard.cs @@ -8,67 +8,52 @@ namespace RimWorldAnimationStudio { public class AnimationControlCard : MonoBehaviour { - public Dropdown stageLoopDropdown; - public InputField animationClipTimeField; - public InputField animationClipLengthField; - public Toggle stretchKeyframesToggle; + public InputField currentTimeField; + public InputField stageWindowLengthField; public InputField playBackSpeedField; public Button playToggleButton; public Slider stageTimelineSlider; private void Start() { - EventsManager.onStageTickChanged.AddListener(delegate - { - animationClipTimeField.SetTextWithoutNotify(Workspace.StageTick.ToString()); - stageTimelineSlider.SetValueWithoutNotify(Workspace.StageTick); - }); + EventsManager.onAnimationChanged.AddListener(delegate { UpdateGUI(); }); + EventsManager.onStageIDChanged.AddListener(delegate { UpdateGUI(); }); + EventsManager.onStageTickChanged.AddListener(delegate { UpdateGUI(); }); + EventsManager.onAnimationToggled.AddListener(delegate { playToggleButton.image.color = Workspace.IsAnimating ? Constants.ColorGoldYellow : Constants.ColorWhite; }); - EventsManager.onAnimationToggled.AddListener(delegate - { - playToggleButton.image.color = Workspace.isAnimating ? Constants.ColorGoldYellow : Constants.ColorWhite; - }); + stageTimelineSlider.onValueChanged.AddListener(delegate { OnStageTimelineSliderChange(); }); + currentTimeField.onEndEdit.AddListener(delegate { OnCurrentTimeFieldChange(); }); + stageWindowLengthField.onEndEdit.AddListener(delegate { OnStageWindowLengthFieldChange(); }); + playBackSpeedField.onEndEdit.AddListener(delegate { OnPlayBackSpeedChange(); }); - animationClipLengthField.text = Workspace.StageWindowSize.ToString(); - stageTimelineSlider.maxValue = Workspace.StageWindowSize; - } - - public void ToggleAnimation(bool forceOff = false) - { - Workspace.isAnimating = !Workspace.isAnimating; - if (forceOff) Workspace.isAnimating = false; + UpdateGUI(); } public void OnStageTimelineSliderChange() { - if (Workspace.animationDef == null) return; - - if (Workspace.StageTick != (int)stageTimelineSlider.value) - { - Workspace.StageTick = (int)stageTimelineSlider.value; - animationClipTimeField.text = Workspace.StageTick.ToString(); - } + Workspace.StageTick = (int)stageTimelineSlider.value; } - public void OnAnimationClipTimeFieldChange() + public void OnPlayBackSpeedChange() { - if (Workspace.animationDef == null) return; - - int.TryParse(animationClipTimeField.text, out int newStageTick); - Workspace.StageTick = Mathf.Clamp(newStageTick, Constants.minTick, Workspace.StageWindowSize); - stageTimelineSlider.value = Workspace.StageTick; + Workspace.PlayBackSpeed = float.Parse(playBackSpeedField.text); } - public void OnAnimationClipLengthFieldChange() + public void OnCurrentTimeFieldChange() { - if (Workspace.animationDef == null) return; + Workspace.StageTick = Mathf.Clamp(int.Parse(currentTimeField.text), Constants.minTick, Workspace.StageWindowSize); - int.TryParse(animationClipLengthField.text, out int newStageWindowSize); + UpdateGUI(); + } + + public void OnStageWindowLengthFieldChange() + { + int.TryParse(stageWindowLengthField.text, out int newStageWindowSize); newStageWindowSize = Mathf.Clamp(newStageWindowSize, Constants.minAnimationClipLength, Constants.maxAnimationClipLength); Debug.Log("Resizing animation clip length to " + newStageWindowSize.ToString() + " ticks."); - if (stretchKeyframesToggle.isOn) + if (Workspace.stretchKeyframes) { Workspace.GetCurrentAnimationStage().StretchStageWindow(newStageWindowSize); } else @@ -92,11 +77,16 @@ namespace RimWorldAnimationStudio Workspace.GetCurrentAnimationStage().ResizeStageWindow(newStageWindowSize); Workspace.RecordEvent("Stage length"); + + UpdateGUI(); } - public void OnPlayBackSpeedChange() + public void UpdateGUI() { - Workspace.PlayBackSpeed = float.Parse(playBackSpeedField.text); + stageTimelineSlider.maxValue = Workspace.StageWindowSize; + stageTimelineSlider.SetValueWithoutNotify(Workspace.StageTick); + currentTimeField.SetTextWithoutNotify(Workspace.StageTick.ToString()); + stageWindowLengthField.SetTextWithoutNotify(Workspace.StageWindowSize.ToString()); playBackSpeedField.SetTextWithoutNotify(Workspace.PlayBackSpeed.ToString()); } } diff --git a/Assets/Scripts/GUI/Cards/StageLoopsCard.cs b/Assets/Scripts/GUI/Cards/StageLoopsCard.cs index 6b7e7fd0..a36e12c6 100644 --- a/Assets/Scripts/GUI/Cards/StageLoopsCard.cs +++ b/Assets/Scripts/GUI/Cards/StageLoopsCard.cs @@ -15,14 +15,13 @@ namespace RimWorldAnimationStudio public void Start() { - EventsManager.onAnimationChanged.AddListener(delegate { UpdateInputFields(); }); - EventsManager.onStageIDChanged.AddListener(delegate { UpdateInputFields(); }); - EventsManager.onAnimationStageChanged.AddListener(delegate { UpdateInputFields(); }); + EventsManager.onAnimationTimelinesChanged.AddListener(delegate { UpdateGUI(); }); + EventsManager.onStageWindowSizeChanged.AddListener(delegate { UpdateGUI(); }); stageLoopsNormalField.onEndEdit.AddListener(delegate { OnStageLoopsNormalFieldChange(); }); stageLoopsQuickField.onEndEdit.AddListener(delegate { OnStageLoopsFastFieldChange(); }); - UpdateInputFields(); + UpdateGUI(); } public void OnStageLoopsNormalFieldChange() @@ -33,8 +32,6 @@ namespace RimWorldAnimationStudio EventsManager.OnAnimationStageChanged(Workspace.GetCurrentAnimationStage()); Workspace.RecordEvent("Cycle count (normal)"); - - UpdateInputFields(); } public void OnStageLoopsFastFieldChange() @@ -45,11 +42,9 @@ namespace RimWorldAnimationStudio EventsManager.OnAnimationStageChanged(Workspace.GetCurrentAnimationStage()); Workspace.RecordEvent("Cycle count (fast)"); - - UpdateInputFields(); } - public void UpdateInputFields() + public void UpdateGUI() { stageLoopsNormalField.SetTextWithoutNotify(Workspace.GetCurrentAnimationStage().StageLoopsNormal.ToString()); stageLoopsQuickField.SetTextWithoutNotify(Workspace.GetCurrentAnimationStage().StageLoopsQuick.ToString()); diff --git a/Assets/Scripts/GUI/DialogBoxes/SelectActorAddonsDialog.cs b/Assets/Scripts/GUI/DialogBoxes/SelectActorAddonsDialog.cs index 26058b57..a33a48b3 100644 --- a/Assets/Scripts/GUI/DialogBoxes/SelectActorAddonsDialog.cs +++ b/Assets/Scripts/GUI/DialogBoxes/SelectActorAddonsDialog.cs @@ -10,6 +10,28 @@ namespace RimWorldAnimationStudio { public class SelectActorAddonsDialog : DialogBox { + public class AddonDef + { + public string addonName; + public Toggle toggle; + public Dropdown anchor; + public InputField anchoringPawn; + public Dropdown layer; + public GameObject controls; + + public AddonDef(string addonName, Toggle toggle, Dropdown anchor, InputField anchoringPawn, Dropdown layer, GameObject controls) + { + this.addonName = addonName; + this.toggle = toggle; + this.anchor = anchor; + this.anchoringPawn = anchoringPawn; + this.layer = layer; + this.controls = controls; + } + } + + private List addonDefs = new List(); + public Toggle handLeftToggle; public Toggle handRightToggle; public Toggle sexToyToggle; @@ -30,92 +52,70 @@ namespace RimWorldAnimationStudio public GameObject handRightControls; public GameObject sexToyControls; + private PawnAnimationClip clip { get { return Workspace.GetCurrentPawnAnimationClip(); } } + + private void Start() + { + EventsManager.onAnimationChanged.AddListener(delegate { UpdateGUI(); }); + EventsManager.onActorIDChanged.AddListener(delegate { UpdateGUI(); }); + + InitializeAddonDefs(); + UpdateGUI(); + } + + // temp code + public void InitializeAddonDefs() + { + if (addonDefs.NotNullOrEmpty()) return; + + addonDefs.Add(new AddonDef("left hand", handLeftToggle, handLeftAnchor, handLeftAnchoringPawn, handLeftLayer, handLeftControls)); + addonDefs.Add(new AddonDef("right hand", handRightToggle, handRightAnchor, handRightAnchoringPawn, handRightLayer, handRightControls)); + addonDefs.Add(new AddonDef("dildo", sexToyToggle, sexToyAnchor, sexToyAnchoringPawn, sexToyLayer, sexToyControls)); + } + public override void Initialize(bool addedNewTag = false) + { + InitializeAddonDefs(); + } + + public void UpdateGUI() { if (Workspace.animationDef == null) return; - PawnAnimationClip clip = Workspace.GetCurrentPawnAnimationClip(); - if (clip?.GetActorAddon("left hand") != null) + Debug.Log("Actor: " + clip.GetOwningActorID()); + + foreach (AddonDef addonDef in addonDefs) { - switch (clip.GetActorAddon("left hand").AnchorName) + if (clip?.GetActorAddon(addonDef.addonName) != null) { - case "torso": handLeftAnchor.value = 1; break; - case "head": handLeftAnchor.value = 2; break; - case "groin": handLeftAnchor.value = 3; break; - case "left breast": handLeftAnchor.value = 4; break; - case "right breast": handLeftAnchor.value = 5; break; - default: handLeftAnchor.value = 0; break; + switch (clip.GetActorAddon(addonDef.addonName).AnchorName) + { + case "torso": addonDef.anchor.SetValueWithoutNotify(1); break; + case "head": addonDef.anchor.SetValueWithoutNotify(2); break; + case "groin": addonDef.anchor.SetValueWithoutNotify(3); break; + case "left breast": addonDef.anchor.SetValueWithoutNotify(4); break; + case "right breast": addonDef.anchor.SetValueWithoutNotify(5); break; + default: addonDef.anchor.SetValueWithoutNotify(0); break; + } + + addonDef.layer.SetValueWithoutNotify(addonDef.layer.options.IndexOf(addonDef.layer.options.First(x => x.text == clip.GetActorAddon(addonDef.addonName).Layer))); + addonDef.anchoringPawn.SetTextWithoutNotify(clip.GetActorAddon(addonDef.addonName).AnchoringActor.ToString()); + addonDef.toggle.SetIsOnWithoutNotify(clip.IsActorAddonVisible(addonDef.addonName)); } } - - if (clip?.GetActorAddon("right hand") != null) - { - switch (clip.GetActorAddon("right hand").AnchorName) - { - case "torso": handRightAnchor.value = 1; break; - case "head": handRightAnchor.value = 2; break; - case "groin": handRightAnchor.value = 3; break; - case "left breast": handRightAnchor.value = 4; break; - case "right breast": handRightAnchor.value = 5; break; - default: handRightAnchor.value = 0; break; - } - } - - if (clip?.GetActorAddon("dildo") != null) - { - switch (clip.GetActorAddon("dildo").AnchorName) - { - case "torso": sexToyAnchor.value = 1; break; - case "head": sexToyAnchor.value = 2; break; - case "groin": sexToyAnchor.value = 3; break; - case "left breast": sexToyAnchor.value = 4; break; - case "right breast": sexToyAnchor.value = 5; break; - default: sexToyAnchor.value = 0; break; - } - } - - if (clip?.GetActorAddon("left hand") != null) - { - handLeftLayer.value = handLeftLayer.options.IndexOf(handLeftLayer.options.First(x => x.text == clip.GetActorAddon("left hand").Layer)); - handLeftAnchoringPawn.text = clip.GetActorAddon("left hand").AnchoringActor.ToString(); - } - - if (clip?.GetActorAddon("right hand") != null) - { - handRightLayer.value = handRightLayer.options.IndexOf(handRightLayer.options.First(x => x.text == clip.GetActorAddon("right hand").Layer)); - handRightAnchoringPawn.text = clip.GetActorAddon("right hand").AnchoringActor.ToString(); - } - - if (clip?.GetActorAddon("dildo") != null) - { - sexToyLayer.value = sexToyLayer.options.IndexOf(sexToyLayer.options.First(x => x.text == clip.GetActorAddon("dildo").Layer)); - sexToyAnchoringPawn.text = clip.GetActorAddon("dildo").AnchoringActor.ToString(); - } - - handLeftToggle.isOn = clip.IsActorAddonVisible("left hand"); - handRightToggle.isOn = clip.IsActorAddonVisible("right hand"); - sexToyToggle.isOn = clip.IsActorAddonVisible("dildo"); - - //handLeftControls.SetActive(handLeftToggle.isOn); - //handRightControls.SetActive(handRightToggle.isOn); - //sexToyControls.SetActive(sexToyToggle.isOn); } public void OnToggleChanged() { - PawnAnimationClip clip = Workspace.GetCurrentPawnAnimationClip(); - clip.ShowOrHideActorAddon("left hand", handLeftToggle.isOn); clip.ShowOrHideActorAddon("right hand", handRightToggle.isOn); clip.ShowOrHideActorAddon("dildo", sexToyToggle.isOn); - //Initialize(); + UpdateGUI(); } public void OnValueChanged() { - PawnAnimationClip clip = Workspace.GetCurrentPawnAnimationClip(); - if (clip?.GetActorAddon("left hand") != null) { switch (handLeftAnchor.value) @@ -155,13 +155,11 @@ namespace RimWorldAnimationStudio } } - //Initialize(); + UpdateGUI(); } public void OnLayerChanged() { - PawnAnimationClip clip = Workspace.GetCurrentPawnAnimationClip(); - if (clip?.GetActorAddon("left hand") != null) { clip.GetActorAddon("left hand").Layer = handLeftLayer.options[handLeftLayer.value].text; } @@ -171,13 +169,11 @@ namespace RimWorldAnimationStudio if (clip?.GetActorAddon("dildo") != null) { clip.GetActorAddon("dildo").Layer = sexToyLayer.options[sexToyLayer.value].text; } - //Initialize(); + UpdateGUI(); } public void OnAnchoringPawnChanged() { - PawnAnimationClip clip = Workspace.GetCurrentPawnAnimationClip(); - if (clip?.GetActorAddon("left hand") != null) { int i = int.Parse(handLeftAnchoringPawn.text); @@ -210,6 +206,8 @@ namespace RimWorldAnimationStudio clip.GetActorAddon("dildo").AnchoringActor = i; sexToyAnchoringPawn.SetTextWithoutNotify(i.ToString()); } + + UpdateGUI(); } } } diff --git a/Assets/Scripts/GUI/KeyframeSlider.cs b/Assets/Scripts/GUI/KeyframeSlider.cs index 403d80cc..0c3cf61c 100644 --- a/Assets/Scripts/GUI/KeyframeSlider.cs +++ b/Assets/Scripts/GUI/KeyframeSlider.cs @@ -11,6 +11,7 @@ namespace RimWorldAnimationStudio { public class KeyframeSlider : Slider, IPointerClickHandler, IBeginDragHandler, IEndDragHandler { + public int keyframeID; public AnimationTimeline timeline; public Transform ghostSliders; public Slider ghostSliderPrefab; @@ -18,33 +19,32 @@ namespace RimWorldAnimationStudio public GameObject soundIcon; public int maxGhosts = 4; - public int actorID; - public int keyframeID; - - private PawnAnimationClip clip; - private PawnKeyframe keyframe; - - private float dragTimeStart = -1f; - private int dragTickStart = -1; - public KeyframeSlider linkedSlider; public PawnKeyframe pivotKeyframe; public int linkedOffset; + private PawnAnimationClip clip { get { return Workspace.GetPawnAnimationClip(actorID); } } + private PawnKeyframe keyframe { get { return Workspace.GetPawnKeyframe(keyframeID); } } + + private int actorID; + private float dragTimeStart = -1f; + private int dragTickStart = -1; + + protected override void Start() + { + base.Start(); + + onValueChanged.AddListener(delegate (float value) { OnValueChanged(); }); + } + public void Initialize(AnimationTimeline timeline, int actorID, int keyframeID) { this.timeline = timeline; - this.clip = Workspace.GetPawnAnimationClip(actorID); - this.keyframe = Workspace.GetPawnKeyframe(keyframeID); - this.actorID = actorID; this.keyframeID = keyframeID; - PawnKeyframe keyframe = Workspace.GetPawnKeyframe(keyframeID); maxValue = Workspace.StageWindowSize; value = keyframe.atTick.Value; - - onValueChanged.AddListener(delegate (float value) { OnValueChanged(); }); } public void OnValueChanged() @@ -119,7 +119,7 @@ namespace RimWorldAnimationStudio List selectedKeyframes = Workspace.GetPawnKeyframesByID(Workspace.keyframeID).Except(new List() { keyframe })?.ToList(); - // Link other slected keyframes to the movement of this one + // Link other selected keyframes to the movement of this one if (selectedKeyframes.NotNullOrEmpty()) { pivotKeyframe = keyframe.atTick <= selectedKeyframes.Min(x => x.atTick) ? @@ -215,6 +215,8 @@ namespace RimWorldAnimationStudio { base.Update(); + if (keyframe == null) return; + // Update outdated values if (Workspace.keyframeID.NullOrEmpty() || Workspace.keyframeID.Contains(keyframeID) == false) { linkedSlider = null; } diff --git a/Assets/Scripts/GUI/LinearScale.cs b/Assets/Scripts/GUI/LinearScale.cs index 7dceb0e7..e8b698c1 100644 --- a/Assets/Scripts/GUI/LinearScale.cs +++ b/Assets/Scripts/GUI/LinearScale.cs @@ -10,6 +10,7 @@ namespace RimWorldAnimationStudio { public class LinearScale : Singleton { + public Transform animationTimelines; public int targetDivisions = 30; public List divisionBands = new List() { 5, 10, 25, 50, 100, 250, 500, 1000 }; public GameObject linearScaleTickPrefab; @@ -19,13 +20,18 @@ namespace RimWorldAnimationStudio public void Start() { + EventsManager.onAnimationChanged.AddListener(delegate { UpdateLinearScale(); }); + EventsManager.onStageIDChanged.AddListener(delegate { UpdateLinearScale(); }); EventsManager.onStageWindowSizeChanged.AddListener(delegate { UpdateLinearScale(); }); + + UpdateLinearScale(); } public void UpdateLinearScale() { if (Workspace.animationDef == null) return; + LayoutRebuilder.ForceRebuildLayoutImmediate(animationTimelines.GetComponent()); minDiff = -1f; foreach (int division in divisionBands) diff --git a/Assets/Scripts/GUI/SelfContained/InactiveDuringAnimationPreview.cs b/Assets/Scripts/GUI/SelfContained/InactiveDuringAnimationPreview.cs index 66817c26..ef7007e0 100644 --- a/Assets/Scripts/GUI/SelfContained/InactiveDuringAnimationPreview.cs +++ b/Assets/Scripts/GUI/SelfContained/InactiveDuringAnimationPreview.cs @@ -16,7 +16,7 @@ namespace RimWorldAnimationStudio private void Update() { - inputfield.interactable = AnimationController.Instance.isAnimating == false; + inputfield.interactable = Workspace.IsAnimating == false; } } } diff --git a/Assets/Scripts/GUI/SelfContained/RequiresAnimationDef.cs b/Assets/Scripts/GUI/SelfContained/RequiresAnimationDef.cs index c2923a7a..bdf985df 100644 --- a/Assets/Scripts/GUI/SelfContained/RequiresAnimationDef.cs +++ b/Assets/Scripts/GUI/SelfContained/RequiresAnimationDef.cs @@ -12,7 +12,7 @@ namespace RimWorldAnimationStudio private List buttonText; private List buttonTextColor = new List(); - public void Start() + private void Start() { button = GetComponent