From 721443592fd8f9eca9d14e980ff4a4e8e10987f6 Mon Sep 17 00:00:00 2001 From: AbstractConcept Date: Sat, 15 Oct 2022 01:00:47 -0500 Subject: [PATCH] Expanded menus and bug fixes --- .vs/RimWorld-Animation-Studio/v16/.suo | Bin 690688 -> 694784 bytes .../Prefabs/InformationDialog Variant.prefab | 121 + .../InformationDialog Variant.prefab.meta | 7 + Assets/Resources/Prefabs/Menu.prefab | 717 +++ Assets/Resources/Prefabs/Menu.prefab.meta | 7 + Assets/Resources/Prefabs/WarningDialog.prefab | 6 +- Assets/Scenes/MainScene.unity | 5047 ++++++++++++++++- Assets/Scripts/GUI/AnimationTimeline.cs | 22 +- Assets/Scripts/GUI/KeyframeSlider.cs | 22 +- .../Scripts/Managers/AnimationController.cs | 19 +- Assets/Scripts/Managers/CameraController.cs | 2 +- Assets/Scripts/Managers/InputManager.cs | 20 +- Assets/Scripts/Math/Constants/Constants.cs | 6 + Assets/Scripts/RequiresAnimationDef.cs | 13 + Assets/StreamingAssets/keybindConfig.xml | 20 + .../Managed/Assembly-CSharp.dll | Bin 125440 -> 128512 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 .../StreamingAssets/keybindConfig.xml | 20 + .../globalgamemanagers | Bin 75788 -> 79548 bytes .../globalgamemanagers.assets | Bin 92224 -> 92224 bytes Build/RimWorld-Animation-Studio_Data/level0 | Bin 248296 -> 284932 bytes .../resources.assets | Bin 614920 -> 623480 bytes .../sharedassets0.assets | Bin 334940 -> 334956 bytes Library/ArtifactDB | Bin 16777216 -> 16777216 bytes .../03/031bd760f32c2c983ccf344f2fc54f66 | Bin 0 -> 9040 bytes .../06/0603edbd8db104006fa2917f358c2a93 | Bin 33424 -> 0 bytes .../0f/0fd3798c82988bee4ba95f635a8b1d18 | Bin 34144 -> 0 bytes .../10/10ccf6b653911c4be105256ac5b7e151 | Bin 12696 -> 0 bytes .../11070a369c231a76e54aef224b8699d0} | Bin 10464 -> 10808 bytes .../12/1292535c063345049119da045dc77443 | Bin 0 -> 13376 bytes .../15/155b413b37e7610253c239f06b2f6cd7 | Bin 0 -> 35244 bytes .../16/16e69c23ac626dddb3c6ab08505a56fd | Bin 33688 -> 0 bytes .../1c/1ce3ca8b9c02dd9608f1d0d9a8e689a7 | Bin 9440 -> 0 bytes .../24/248246ff840e60cf82dc6609081dd9ab | Bin 0 -> 35220 bytes .../24/24d57be19f99623b4e4342ae54281241 | Bin 0 -> 9040 bytes .../25/2506816c9f76f5dee61501780b455bad | Bin 8840 -> 0 bytes .../25/25f0002423dbd515795af8e40de6b57e | Bin 0 -> 35372 bytes .../2bf7c78b594eeaaaad1f19c9b18b1fc5} | Bin 9364 -> 9096 bytes .../2c/2c1fbee12cc0dc68c752ca3699f82d1d | Bin 33740 -> 0 bytes .../2e/2e250bdde9493b7d139b4111f5250868 | Bin 33176 -> 0 bytes .../30/30eb8dd3906f65be5279da4f880695d8 | Bin 33248 -> 0 bytes .../35/355016120bf1df5669648171f7d5c6e8 | Bin 0 -> 35372 bytes .../3a/3a2b37b588f2f995091e1021d2dfdf88 | Bin 33736 -> 0 bytes .../3b/3bac875678f6a399f3dad9e144fbb0d4 | Bin 0 -> 35204 bytes .../406f17ea1bafd4f496a16fa05d0272c9} | Bin 34528 -> 35116 bytes .../45/45830c73f62d7dd6cd13d692383dfd30 | Bin 34148 -> 0 bytes .../4b/4b629d753e699f55ff4f4c80c4fe1207 | Bin 0 -> 13560 bytes .../4e/4e9057ed6b41541716feb1f57277cdc4 | Bin 34048 -> 0 bytes .../4e/4ee7126d9488be838ec8ce261b530940 | Bin 33108 -> 0 bytes .../51/513c656aee77b3d3c88e7efaca4bf6b2 | Bin 0 -> 13532 bytes .../53afe149b659bd281c10d693bed7c5c6} | Bin 4804 -> 5124 bytes .../54/5453ab3d5d65d7d665489dea9a5a72a1 | Bin 14348 -> 0 bytes .../550e20f251ed68ce504cea65d4d6ead2} | Bin 34536 -> 35196 bytes .../56/56a978a1d6ceaa5baf336d323c8059c9 | Bin 0 -> 35376 bytes .../57cea675e92b91ed524dbfbad2384732} | Bin 24693 -> 29733 bytes .../584bfa10ba019a34f193f61a8af8234c} | Bin 6512 -> 6508 bytes .../5a67cd1c1d2d054267c35924dace948d} | Bin 33597 -> 36312 bytes .../5b/5b1e6b9885f48d0cb7f7595de8f8f09c | Bin 34272 -> 0 bytes .../5fe1db7b16479ce3d685fd4529d578ad} | Bin 24693 -> 29733 bytes .../63/631020ba493309d6b309642c80481319 | Bin 33948 -> 0 bytes .../67/676bbea90986928ca17bde8b0e4dcff0 | Bin 0 -> 35208 bytes .../6917e87e06ef84d35596f9cd82da201d} | Bin 9128 -> 8932 bytes .../69b40d8f0393c3314bacf306bcbfb0c9} | Bin 9408 -> 9212 bytes .../6c/6c95962149208c32b6af1c4843df7dd2 | Bin 9412 -> 0 bytes .../6c/6ca518a84e66b868fd962a86e57a6358 | Bin 0 -> 13476 bytes .../6ddf2d1da86033b7fffaf9f9c217a592} | Bin 34536 -> 35176 bytes .../6e/6ea567340460850f7eaf6cfb8281b9b7 | Bin 33604 -> 0 bytes .../6f/6fffa868d4281c39bd4b725dbb0a99b9 | Bin 6200 -> 0 bytes .../77/77bbd8b37d489f02dadfe86c89d317df | Bin 6200 -> 0 bytes .../80/802004f37a33bffe1b682d3bc24044e9 | Bin 6156 -> 0 bytes .../80/8027863cef4f93f5c5bf3f10a33d4510 | Bin 0 -> 13740 bytes .../86/86b02e5cf178c09116679e7707d5266a | Bin 33504 -> 0 bytes .../93/936f7d3dd888b41e16e2b2a706bf80fe | Bin 0 -> 13376 bytes .../9d/9d9d0b2e9a570291032ac0eee60f6515 | Bin 0 -> 13424 bytes .../9e/9e01f22821bd69e1442d2c62f4d773ab | Bin 14396 -> 0 bytes .../9e0dea6eac5d7c56bb7949303211e307} | Bin 6140 -> 5352 bytes .../9e/9e3278fa93e14ee411ccd0010c37395b | Bin 33676 -> 0 bytes .../ab/ab7e996fcc7f232a817862d30debb912 | Bin 0 -> 35212 bytes .../b0596290e2ebdb2fab7d93dc70445754} | Bin 33597 -> 33597 bytes .../b1b2765edd95a67c7627857333e61774} | Bin 14140 -> 13612 bytes .../b4/b40a40269c50ef0cb3c7ff348441df26 | Bin 0 -> 9040 bytes .../b4/b497df8fa384c7cfb8b1a5f7afe93894 | Bin 0 -> 9012 bytes .../b5/b524c3c47ed5770eaeb39f31feaaff88 | Bin 0 -> 13708 bytes .../b96672da3bb3c64b8cb145b346fda9b6} | Bin 9244 -> 9212 bytes .../bf/bfc575a98035dd10baffdc917af7415e | Bin 7944 -> 0 bytes .../c0a2ea048a7e0cd517c5c42b15128525} | Bin 6192 -> 5332 bytes .../c3/c3eaf4fae7a5f0e39b905698b07ef1e8 | Bin 0 -> 35240 bytes .../c5/c5a39965bd0b186dc02fefd64e44c37d | Bin 0 -> 36312 bytes .../c9/c958e7d121d516ce3c13778f9e454204 | Bin 33692 -> 0 bytes .../cd/cd37515b89519f0e068800b24f9134df | Bin 9428 -> 0 bytes .../ce75a2af0b9ff2b8bf16780b3329eabe} | Bin 34536 -> 35200 bytes .../cf/cf1e9528d83b000d0cde3079fd702142 | Bin 33248 -> 0 bytes .../cf/cfaac8354e18217eeca21c864bf0ea88 | Bin 0 -> 36312 bytes .../d3/d3f4455527f425d0c7591097aa95329e | Bin 6196 -> 0 bytes .../d7/d7d9a4a83e18ae9f0cc47eb6ffdc934c | Bin 0 -> 35200 bytes .../e1/e1d4e1b9dc9625eeabd47ad42fa3a791 | Bin 35904 -> 0 bytes .../e54c006810e2bbd4b6ee96f599d5ec77} | Bin 24693 -> 29733 bytes .../ee/ee50891c5aa1b0c73f491d528692c70b | Bin 0 -> 8960 bytes .../f2/f25bfe953d1860ef09ab705fc07205d4 | Bin 0 -> 35384 bytes .../f3/f3c8ee316ddb535ceef59a1bb85b34a9 | Bin 0 -> 8996 bytes .../f565fb331afb1fc6bf3e7485c84b4bf7} | Bin 18228 -> 18624 bytes .../fc/fc977f43bd27767f0202d3380d1fb61a | Bin 33556 -> 0 bytes .../fd/fda94403a0ddc1da548527b77f339fc3 | Bin 0 -> 36312 bytes .../fe/fef4def3200b3dfffd7f84e8d11fb66f | Bin 0 -> 18824 bytes .../ff/ffd8be4f11623381f73e69368f3f2383 | Bin 22121 -> 0 bytes Library/CurrentLayout-default.dwlt | 38 +- Library/CurrentMaximizeLayout.dwlt | 46 +- Library/InspectorExpandedItems.asset | Bin 6636 -> 6668 bytes Library/LastBuild.buildreport | Bin 156080 -> 163688 bytes .../Win/Data/Managed/Assembly-CSharp.dll | Bin 125440 -> 128512 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 75788 -> 79548 bytes .../Win/Data/globalgamemanagers.assets | Bin 92224 -> 92224 bytes Library/PlayerDataCache/Win/Data/level0 | Bin 248296 -> 284932 bytes .../PlayerDataCache/Win/Data/resources.assets | Bin 614920 -> 623480 bytes .../Win/Data/sharedassets0.assets | Bin 334940 -> 334956 bytes .../PlayerDataCache/Win/ScriptsOnlyCache.yaml | 19 +- .../Assembly-CSharp-Editor.dll | Bin 6144 -> 6144 bytes Library/ScriptAssemblies/Assembly-CSharp.dll | Bin 141312 -> 142848 bytes Library/ScriptAssemblies/Assembly-CSharp.pdb | Bin 71444 -> 71780 bytes Library/SourceAssetDB | Bin 4194304 -> 4194304 bytes .../Hierarchy/8cbfdc-3d766602dcd74d14cb.json | 1 + .../Hierarchy/8cbfdc-9070db4f6841de145b.json | 1 + .../Hierarchy/8cbfdc-a75800d7e90ab4e438.json | 1 + .../SceneView/352ee9-3d766602dcd74d14cb.json | 1 + .../SceneView/352ee9-9070db4f6841de145b.json | 1 + .../SceneView/352ee9-a75800d7e90ab4e438.json | 1 + .../SceneView/352ee9-mainStage.json | 2 +- 146 files changed, 5891 insertions(+), 269 deletions(-) create mode 100644 Assets/Resources/Prefabs/InformationDialog Variant.prefab create mode 100644 Assets/Resources/Prefabs/InformationDialog Variant.prefab.meta create mode 100644 Assets/Resources/Prefabs/Menu.prefab create mode 100644 Assets/Resources/Prefabs/Menu.prefab.meta create mode 100644 Library/Artifacts/03/031bd760f32c2c983ccf344f2fc54f66 delete mode 100644 Library/Artifacts/06/0603edbd8db104006fa2917f358c2a93 delete mode 100644 Library/Artifacts/0f/0fd3798c82988bee4ba95f635a8b1d18 delete mode 100644 Library/Artifacts/10/10ccf6b653911c4be105256ac5b7e151 rename Library/Artifacts/{e3/e37287137267d9b534d61151da4b3d6b => 11/11070a369c231a76e54aef224b8699d0} (95%) create mode 100644 Library/Artifacts/12/1292535c063345049119da045dc77443 create mode 100644 Library/Artifacts/15/155b413b37e7610253c239f06b2f6cd7 delete mode 100644 Library/Artifacts/16/16e69c23ac626dddb3c6ab08505a56fd delete mode 100644 Library/Artifacts/1c/1ce3ca8b9c02dd9608f1d0d9a8e689a7 create mode 100644 Library/Artifacts/24/248246ff840e60cf82dc6609081dd9ab create mode 100644 Library/Artifacts/24/24d57be19f99623b4e4342ae54281241 delete mode 100644 Library/Artifacts/25/2506816c9f76f5dee61501780b455bad create mode 100644 Library/Artifacts/25/25f0002423dbd515795af8e40de6b57e rename Library/Artifacts/{af/af2744f17af312e449883ad24c1dc560 => 2b/2bf7c78b594eeaaaad1f19c9b18b1fc5} (92%) delete mode 100644 Library/Artifacts/2c/2c1fbee12cc0dc68c752ca3699f82d1d delete mode 100644 Library/Artifacts/2e/2e250bdde9493b7d139b4111f5250868 delete mode 100644 Library/Artifacts/30/30eb8dd3906f65be5279da4f880695d8 create mode 100644 Library/Artifacts/35/355016120bf1df5669648171f7d5c6e8 delete mode 100644 Library/Artifacts/3a/3a2b37b588f2f995091e1021d2dfdf88 create mode 100644 Library/Artifacts/3b/3bac875678f6a399f3dad9e144fbb0d4 rename Library/Artifacts/{6c/6c04cf4a103a0d51404d9e6761b28fb4 => 40/406f17ea1bafd4f496a16fa05d0272c9} (97%) delete mode 100644 Library/Artifacts/45/45830c73f62d7dd6cd13d692383dfd30 create mode 100644 Library/Artifacts/4b/4b629d753e699f55ff4f4c80c4fe1207 delete mode 100644 Library/Artifacts/4e/4e9057ed6b41541716feb1f57277cdc4 delete mode 100644 Library/Artifacts/4e/4ee7126d9488be838ec8ce261b530940 create mode 100644 Library/Artifacts/51/513c656aee77b3d3c88e7efaca4bf6b2 rename Library/Artifacts/{70/70f109aa57b1bc40aaebb357e17a28ae => 53/53afe149b659bd281c10d693bed7c5c6} (89%) delete mode 100644 Library/Artifacts/54/5453ab3d5d65d7d665489dea9a5a72a1 rename Library/Artifacts/{43/43f1a6eb34c1e39a2d12fe4f8a18f827 => 55/550e20f251ed68ce504cea65d4d6ead2} (96%) create mode 100644 Library/Artifacts/56/56a978a1d6ceaa5baf336d323c8059c9 rename Library/Artifacts/{a6/a6cd06dab9e33d07fd5e7f5563d7051c => 57/57cea675e92b91ed524dbfbad2384732} (58%) rename Library/Artifacts/{92/92a41eb4860e4edc74dc9359b13dff91 => 58/584bfa10ba019a34f193f61a8af8234c} (95%) rename Library/Artifacts/{78/785d3d33d93761707be77b701947a51d => 5a/5a67cd1c1d2d054267c35924dace948d} (62%) delete mode 100644 Library/Artifacts/5b/5b1e6b9885f48d0cb7f7595de8f8f09c rename Library/Artifacts/{0f/0fbef0624e651db1556f2704d61f6984 => 5f/5fe1db7b16479ce3d685fd4529d578ad} (58%) delete mode 100644 Library/Artifacts/63/631020ba493309d6b309642c80481319 create mode 100644 Library/Artifacts/67/676bbea90986928ca17bde8b0e4dcff0 rename Library/Artifacts/{a6/a6664b09d5cdfe1ed5889c1adc49dfe2 => 69/6917e87e06ef84d35596f9cd82da201d} (94%) rename Library/Artifacts/{f9/f93e7483bb95976d7b54ab3b903c3205 => 69/69b40d8f0393c3314bacf306bcbfb0c9} (90%) delete mode 100644 Library/Artifacts/6c/6c95962149208c32b6af1c4843df7dd2 create mode 100644 Library/Artifacts/6c/6ca518a84e66b868fd962a86e57a6358 rename Library/Artifacts/{16/163bcf49b225efc92a6f74793a83a0f0 => 6d/6ddf2d1da86033b7fffaf9f9c217a592} (97%) delete mode 100644 Library/Artifacts/6e/6ea567340460850f7eaf6cfb8281b9b7 delete mode 100644 Library/Artifacts/6f/6fffa868d4281c39bd4b725dbb0a99b9 delete mode 100644 Library/Artifacts/77/77bbd8b37d489f02dadfe86c89d317df delete mode 100644 Library/Artifacts/80/802004f37a33bffe1b682d3bc24044e9 create mode 100644 Library/Artifacts/80/8027863cef4f93f5c5bf3f10a33d4510 delete mode 100644 Library/Artifacts/86/86b02e5cf178c09116679e7707d5266a create mode 100644 Library/Artifacts/93/936f7d3dd888b41e16e2b2a706bf80fe create mode 100644 Library/Artifacts/9d/9d9d0b2e9a570291032ac0eee60f6515 delete mode 100644 Library/Artifacts/9e/9e01f22821bd69e1442d2c62f4d773ab rename Library/Artifacts/{a8/a81c845e81262dca86552d5cacb5ccc9 => 9e/9e0dea6eac5d7c56bb7949303211e307} (69%) delete mode 100644 Library/Artifacts/9e/9e3278fa93e14ee411ccd0010c37395b create mode 100644 Library/Artifacts/ab/ab7e996fcc7f232a817862d30debb912 rename Library/Artifacts/{92/927350402eb88bc635c1598fb9fbfd7c => b0/b0596290e2ebdb2fab7d93dc70445754} (99%) rename Library/Artifacts/{bd/bd7c67e6051c85be1ca741c395b8081a => b1/b1b2765edd95a67c7627857333e61774} (90%) create mode 100644 Library/Artifacts/b4/b40a40269c50ef0cb3c7ff348441df26 create mode 100644 Library/Artifacts/b4/b497df8fa384c7cfb8b1a5f7afe93894 create mode 100644 Library/Artifacts/b5/b524c3c47ed5770eaeb39f31feaaff88 rename Library/Artifacts/{8e/8e0ad6822c89b6f90e209f4197100f68 => b9/b96672da3bb3c64b8cb145b346fda9b6} (93%) delete mode 100644 Library/Artifacts/bf/bfc575a98035dd10baffdc917af7415e rename Library/Artifacts/{68/68c54a5546892378af64d91eabcbc0f3 => c0/c0a2ea048a7e0cd517c5c42b15128525} (69%) create mode 100644 Library/Artifacts/c3/c3eaf4fae7a5f0e39b905698b07ef1e8 create mode 100644 Library/Artifacts/c5/c5a39965bd0b186dc02fefd64e44c37d delete mode 100644 Library/Artifacts/c9/c958e7d121d516ce3c13778f9e454204 delete mode 100644 Library/Artifacts/cd/cd37515b89519f0e068800b24f9134df rename Library/Artifacts/{de/de3aa507514f05e7ace2551a4f75edc6 => ce/ce75a2af0b9ff2b8bf16780b3329eabe} (96%) delete mode 100644 Library/Artifacts/cf/cf1e9528d83b000d0cde3079fd702142 create mode 100644 Library/Artifacts/cf/cfaac8354e18217eeca21c864bf0ea88 delete mode 100644 Library/Artifacts/d3/d3f4455527f425d0c7591097aa95329e create mode 100644 Library/Artifacts/d7/d7d9a4a83e18ae9f0cc47eb6ffdc934c delete mode 100644 Library/Artifacts/e1/e1d4e1b9dc9625eeabd47ad42fa3a791 rename Library/Artifacts/{a6/a6fbfd855a883d0cf1caa2543db2aa26 => e5/e54c006810e2bbd4b6ee96f599d5ec77} (58%) create mode 100644 Library/Artifacts/ee/ee50891c5aa1b0c73f491d528692c70b create mode 100644 Library/Artifacts/f2/f25bfe953d1860ef09ab705fc07205d4 create mode 100644 Library/Artifacts/f3/f3c8ee316ddb535ceef59a1bb85b34a9 rename Library/Artifacts/{bf/bf3fbaa37422dbd3a2a1a3c6f75c3aa1 => f5/f565fb331afb1fc6bf3e7485c84b4bf7} (96%) delete mode 100644 Library/Artifacts/fc/fc977f43bd27767f0202d3380d1fb61a create mode 100644 Library/Artifacts/fd/fda94403a0ddc1da548527b77f339fc3 create mode 100644 Library/Artifacts/fe/fef4def3200b3dfffd7f84e8d11fb66f delete mode 100644 Library/Artifacts/ff/ffd8be4f11623381f73e69368f3f2383 create mode 100644 Library/StateCache/Hierarchy/8cbfdc-3d766602dcd74d14cb.json create mode 100644 Library/StateCache/Hierarchy/8cbfdc-9070db4f6841de145b.json create mode 100644 Library/StateCache/Hierarchy/8cbfdc-a75800d7e90ab4e438.json create mode 100644 Library/StateCache/SceneView/352ee9-3d766602dcd74d14cb.json create mode 100644 Library/StateCache/SceneView/352ee9-9070db4f6841de145b.json create mode 100644 Library/StateCache/SceneView/352ee9-a75800d7e90ab4e438.json diff --git a/.vs/RimWorld-Animation-Studio/v16/.suo b/.vs/RimWorld-Animation-Studio/v16/.suo index fde2b27a1f3f10d147d960010bd24428b8de84c3..ed4c0e080ed54bb4c25de7086fd18ae7fcfaa178 100644 GIT binary patch delta 6467 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 + { RemovePawnKeyFrame(slider.keyframeID);} foreach (PawnKeyframe keyframe in clip.keyframes) - { - KeyframeSlider keyframeSlider = Instantiate(keyframeSliderPrefab, transform); - keyframeSlider.Initialize(this, actorID, keyframe.keyframeID); - } + { AddPawnKeyFrame(keyframe.keyframeID); } - int keyframeCount = clip.keyframes.Count; + /*int keyframeCount = clip.keyframes.Count; int childCount = GetComponentsInChildren().Count(); for (int i = 0; i < Mathf.Max(keyframeCount, childCount); i++) { // Add new keyframe sliders as required if (i >= childCount) - { Instantiate(keyframeSliderPrefab, transform); } + { AddPawnKeyFrame(clip.keyframes[i].keyframeID); } // Get objects to update KeyframeSlider keyframeSlider = GetComponentsInChildren()[i]; @@ -54,8 +48,8 @@ namespace RimWorldAnimationStudio // Remove excess objects as required else - { Destroy(keyframeSlider.gameObject); } - } + { RemovePawnKeyFrame(GetComponentsInChildren()[i].keyframeID); } + }*/ } public void AddPawnKeyFrame(int keyframeID) diff --git a/Assets/Scripts/GUI/KeyframeSlider.cs b/Assets/Scripts/GUI/KeyframeSlider.cs index 6497201e..56120e0b 100644 --- a/Assets/Scripts/GUI/KeyframeSlider.cs +++ b/Assets/Scripts/GUI/KeyframeSlider.cs @@ -44,8 +44,6 @@ namespace RimWorldAnimationStudio maxValue = Workspace.StageWindowSize; value = keyframe.atTick.Value; - OnValueChanged(); - onValueChanged.AddListener(delegate (float value) { OnValueChanged(); }); } @@ -124,18 +122,22 @@ namespace RimWorldAnimationStudio // Link other slected keyframes to the movement of this one if (selectedKeyframes.NotNullOrEmpty()) { + pivotKeyframe = keyframe.atTick <= selectedKeyframes.Min(x => x.atTick) ? + selectedKeyframes.FirstOrDefault(x => x.atTick >= selectedKeyframes.Max(y => y.atTick)) : + selectedKeyframes.FirstOrDefault(x => x.atTick <= selectedKeyframes.Min(y => y.atTick)); + foreach (PawnKeyframe selectedKeyframe in selectedKeyframes) { KeyframeSlider unlinkedSlider = selectedKeyframe.GetKeyframeSlider(); if (unlinkedSlider != null) { + if (AnimationController.Instance.stretchKeyframesToggle.isOn && unlinkedSlider.keyframe.atTick == pivotKeyframe.atTick) continue; + unlinkedSlider.linkedSlider = this; unlinkedSlider.linkedOffset = unlinkedSlider.keyframe.atTick.Value - keyframe.atTick.Value; } } - - pivotKeyframe = keyframe.atTick < selectedKeyframes[0].atTick ? selectedKeyframes.Last() : selectedKeyframes.First(); } } @@ -168,13 +170,17 @@ namespace RimWorldAnimationStudio if (keyframe.atTick == Constants.minTick) { value = Constants.minTick; return; } - foreach (Selectable otherSlider in Selectable.allSelectablesArray) + foreach (Selectable linkedSlider in Selectable.allSelectablesArray) { - if (otherSlider is KeyframeSlider) - { Debug.Log("unlinked keyframes"); (otherSlider as KeyframeSlider).linkedSlider = null; } + if (linkedSlider is KeyframeSlider) + { + (linkedSlider as KeyframeSlider).linkedSlider = null; + (linkedSlider as KeyframeSlider).pivotKeyframe = null; + } } interactable = false; + Workspace.Instance.RecordEvent("Keyframe move"); } @@ -186,7 +192,7 @@ namespace RimWorldAnimationStudio if (Workspace.keyframeID.NullOrEmpty() || Workspace.keyframeID.Contains(keyframeID) == false) { linkedSlider = null; } - else if (AnimationController.Instance.stretchKeyframesToggle.isOn && linkedSlider != null && linkedSlider.IsPivotKeyframe(keyframe) == false) + else if (AnimationController.Instance.stretchKeyframesToggle.isOn && linkedSlider != null) { value = Mathf.CeilToInt(linkedSlider.keyframe.atTick.Value + linkedOffset * linkedSlider.ScaledOffsetFromPivot()); } else if (AnimationController.Instance.stretchKeyframesToggle.isOn == false && linkedSlider != null) diff --git a/Assets/Scripts/Managers/AnimationController.cs b/Assets/Scripts/Managers/AnimationController.cs index 8286d896..d411ba4c 100644 --- a/Assets/Scripts/Managers/AnimationController.cs +++ b/Assets/Scripts/Managers/AnimationController.cs @@ -421,11 +421,14 @@ namespace RimWorldAnimationStudio public void PastePawnKeyframes() { + MakeTimelineDirty(); + + int originalWindowSize = Workspace.StageWindowSize; + + List actorsInvolved = Workspace.copiedKeyframes.Select(x => x.actorID)?.ToList(); actorsInvolved = actorsInvolved?.Distinct()?.ToList(); - foreach (int i in actorsInvolved) { Debug.Log("Actor: " + i); } - if (actorsInvolved.NullOrEmpty()) { Debug.Log("Cannot paste keyframes - there were no copied keyframes to paste"); return; } if (actorsInvolved.Count > 1 && actorsInvolved.Contains(Workspace.actorID) == false) { Debug.Log("Cannot paste keyframes - keyframes copied across multiple timelines can only be pasted back into these source timelines"); return; } @@ -458,7 +461,7 @@ namespace RimWorldAnimationStudio clonedKeyframe.atTick = tickToPasteAt; PawnAnimationClip clip = Workspace.animationDef.animationStages[Workspace.stageID].animationClips[targetActorID]; - PawnKeyframe nextKeyframe = clip.keyframes.FirstOrDefault(x => x.atTick > stageTick); + PawnKeyframe nextKeyframe = clip.keyframes.FirstOrDefault(x => x.atTick > tickToPasteAt); if (nextKeyframe != null) { clip.keyframes.Insert(clip.keyframes.IndexOf(nextKeyframe), clonedKeyframe); } @@ -467,10 +470,15 @@ namespace RimWorldAnimationStudio { clip.keyframes.Add(clonedKeyframe); } clip.BuildSimpleCurves(); - animationTimelines.GetComponentsInChildren()[clonedKeyframe.actorID].AddPawnKeyFrame(clonedKeyframe.keyframeID); } + if (originalWindowSize != Workspace.StageWindowSize) + { + StretchKeyframes(originalWindowSize); + ResizeStageWindowSize(originalWindowSize); + } + Workspace.Instance.RecordEvent("Keyframe pasted"); } @@ -567,6 +575,7 @@ namespace RimWorldAnimationStudio } ResizeStageWindowSize(newStageWindowSize); + Workspace.Instance.RecordEvent("Stage length"); } public void StretchKeyframes(int newStageWindowSize) @@ -592,8 +601,6 @@ namespace RimWorldAnimationStudio Workspace.animationDef.animationStages[Workspace.stageID].stageWindowSize = newStageWindowSize; Workspace.animationDef.animationStages[Workspace.stageID].playTimeTicks = newStageWindowSize * int.Parse(cyclesNormalField.text); Workspace.animationDef.animationStages[Workspace.stageID].playTimeTicksQuick = newStageWindowSize * int.Parse(cyclesFastField.text); - - Workspace.Instance.RecordEvent("Stage length"); } public void OnCycleNormalFieldChange() diff --git a/Assets/Scripts/Managers/CameraController.cs b/Assets/Scripts/Managers/CameraController.cs index c90bc264..0be106ff 100644 --- a/Assets/Scripts/Managers/CameraController.cs +++ b/Assets/Scripts/Managers/CameraController.cs @@ -71,7 +71,7 @@ namespace RimWorldAnimationStudio public void ResetCamera() { - cam.transform.position = new Vector3(-1, 0, -10); + cam.transform.position = new Vector3(1, 0, -10); curZoom = zoom; mouseDragActive = false; diff --git a/Assets/Scripts/Managers/InputManager.cs b/Assets/Scripts/Managers/InputManager.cs index 6afcc1d8..bbc9efe5 100644 --- a/Assets/Scripts/Managers/InputManager.cs +++ b/Assets/Scripts/Managers/InputManager.cs @@ -15,7 +15,6 @@ namespace RimWorldAnimationStudio public GameObject keyframeSelector; private float lastUpdate = -1f; - private float timeBetweenUpdates = 0.15f; private float largeStep = 0.1f; private float smallStep = 0.03f; @@ -24,7 +23,7 @@ namespace RimWorldAnimationStudio public bool CanRepeatThisUpdate() { - if (Time.unscaledTime > lastUpdate + timeBetweenUpdates) + if (Time.unscaledTime > lastUpdate + Constants.actionRepeatSpeed) { lastUpdate = Time.unscaledTime; return true; @@ -402,5 +401,22 @@ namespace RimWorldAnimationStudio { Camera.main.GetComponent().ResetCamera(); } + + public void StretchKeyframesToggle() + { + AnimationController.Instance.stretchKeyframesToggle.isOn = !AnimationController.Instance.stretchKeyframesToggle.isOn; + } + + public void OpenProjectHome() + { + if (Uri.IsWellFormedUriString(Constants.projectHome, UriKind.RelativeOrAbsolute)) + { Application.OpenURL(Constants.projectHome); } + } + + public void OpenProjectWiki() + { + if (Uri.IsWellFormedUriString(Constants.projectWiki, UriKind.RelativeOrAbsolute)) + { Application.OpenURL(Constants.projectWiki); } + } } } diff --git a/Assets/Scripts/Math/Constants/Constants.cs b/Assets/Scripts/Math/Constants/Constants.cs index 891f4b4c..e181117f 100644 --- a/Assets/Scripts/Math/Constants/Constants.cs +++ b/Assets/Scripts/Math/Constants/Constants.cs @@ -7,6 +7,12 @@ namespace RimWorldAnimationStudio { public static class Constants { + public static string currentVersion = "0.0.0"; + public static string projectHome = "https://gitgud.io/AbstractConcept/rimworld-animation-studio"; + public static string projectWiki = "https://gitgud.io/AbstractConcept/rimworld-animation-studio/-/wikis/home"; + + public static float actionRepeatSpeed = 0.250f; + public static int defaultAnimationClipLength = 600; public static int minTick = 1; public static int minAnimationClipLength = 2; diff --git a/Assets/Scripts/RequiresAnimationDef.cs b/Assets/Scripts/RequiresAnimationDef.cs index 7492fb0e..c2923a7a 100644 --- a/Assets/Scripts/RequiresAnimationDef.cs +++ b/Assets/Scripts/RequiresAnimationDef.cs @@ -1,5 +1,6 @@ using System.Collections; using System.Collections.Generic; +using System.Linq; using UnityEngine; using UnityEngine.UI; @@ -8,15 +9,27 @@ namespace RimWorldAnimationStudio public class RequiresAnimationDef : MonoBehaviour { private Button button; + private List buttonText; + private List buttonTextColor = new List(); public void Start() { button = GetComponent