diff --git a/.vs/RimWorld-Animation-Studio/v16/.suo b/.vs/RimWorld-Animation-Studio/v16/.suo index e9a35aa8..85ae282c 100644 Binary files a/.vs/RimWorld-Animation-Studio/v16/.suo and b/.vs/RimWorld-Animation-Studio/v16/.suo differ diff --git a/Assets/Scripts/AnimationComponents/PawnAnimationClip.cs b/Assets/Scripts/AnimationComponents/PawnAnimationClip.cs index d17c7647..587e3838 100644 --- a/Assets/Scripts/AnimationComponents/PawnAnimationClip.cs +++ b/Assets/Scripts/AnimationComponents/PawnAnimationClip.cs @@ -96,11 +96,11 @@ namespace RimWorldAnimationStudio { PawnKeyframe keyframe = Keyframes[i]; + if (keyframe.HasValidKeyframeID() == false) + { keyframe.GenerateKeyframeID(GetOwningActorID()); } + if (keyframe.atTick.HasValue) { - if (keyframe.HasValidKeyframeID() == false) - { keyframe.GenerateKeyframeID(Workspace.animationDef.AnimationStages[Workspace.StageID].AnimationClips.IndexOf(this)); } - BodyAngle.Add((float)keyframe.atTick / (float)duration, keyframe.BodyAngle, true); HeadAngle.Add((float)keyframe.atTick / (float)duration, keyframe.HeadAngle, true); BodyOffsetX.Add((float)keyframe.atTick / (float)duration, keyframe.BodyOffsetX, true); @@ -343,12 +343,8 @@ namespace RimWorldAnimationStudio public void OnPostLoad() { - Addons = addons.Copy(); - foreach (PawnKeyframe keyframe in Keyframes) - { - keyframe.OnPostLoad(); - } + { keyframe.OnPostLoad(); } } } } diff --git a/Assets/Scripts/AnimationComponents/PawnKeyframe.cs b/Assets/Scripts/AnimationComponents/PawnKeyframe.cs index ef2c64ea..fc052bf1 100644 --- a/Assets/Scripts/AnimationComponents/PawnKeyframe.cs +++ b/Assets/Scripts/AnimationComponents/PawnKeyframe.cs @@ -16,8 +16,8 @@ namespace RimWorldAnimationStudio public float? headBob; public float? bodyOffsetX; public float? bodyOffsetZ; - public int? headFacing; - public int? bodyFacing; + public float? headFacing; + public float? bodyFacing; public float? genitalAngle; public bool? quiver; public int? tickDuration; @@ -69,14 +69,14 @@ namespace RimWorldAnimationStudio [XmlIgnore] public int HeadFacing { - get { return headFacing.HasValue ? headFacing.Value : (int)(headFacing = 2); } - set { headFacing = value; } + get { return headFacing.HasValue ? (int)headFacing.Value : (int)(headFacing = 2); } + set { headFacing = (int)value; } } [XmlIgnore] public int BodyFacing { - get { return bodyFacing.HasValue ? bodyFacing.Value : (int)(bodyFacing = 2); } - set { bodyFacing = value; } + get { return bodyFacing.HasValue ? (int)bodyFacing.Value : (int)(bodyFacing = 2); } + set { bodyFacing = (int)value; } } [XmlIgnore] public float GenitalAngle @@ -227,12 +227,7 @@ namespace RimWorldAnimationStudio public void OnPostLoad() { - AddonKeyframes.Clear(); - foreach (AddonKeyframe addonKeyframe in addonKeyframes) - { - AddonKeyframes.Add(addonKeyframe.Copy()); - } } } } diff --git a/Assets/Scripts/Data/ActorPosition.cs b/Assets/Scripts/Data/ActorPosition.cs index 7f86b12f..9e8be354 100644 --- a/Assets/Scripts/Data/ActorPosition.cs +++ b/Assets/Scripts/Data/ActorPosition.cs @@ -21,10 +21,9 @@ namespace RimWorldAnimationStudio public ActorPosition(int actorID, int atTick) { - Actor actor = Workspace.GetActor(actorID); PawnAnimationClip clip = Workspace.GetPawnAnimationClip(actorID); - float clipPercent = atTick / Workspace.StageWindowSize; + float clipPercent = (float)atTick / Workspace.StageWindowSize; if (atTick > Constants.minTick && atTick == clip.duration) clipPercent = 1f; if (Workspace.GetCurrentAnimationStage().IsLooping == false) diff --git a/Assets/Scripts/GUI/Cards/ActorCard.cs b/Assets/Scripts/GUI/Cards/ActorCard.cs index 9ec1a120..3573fe66 100644 --- a/Assets/Scripts/GUI/Cards/ActorCard.cs +++ b/Assets/Scripts/GUI/Cards/ActorCard.cs @@ -89,14 +89,17 @@ namespace RimWorldAnimationStudio public void UpdateRaceDropdown() { - raceDropdown.ClearOptions(); int index = raceDropdown.value; + raceDropdown.ClearOptions(); IEnumerable optionsList = DefaultTags.defNames.Concat(CustomTags.defNames); foreach (string defName in optionsList) { raceDropdown.options.Add(new Dropdown.OptionData(defName)); } raceDropdown.value = Mathf.Clamp(index, 0, raceDropdown.options.Count - 1); + raceDropdown.captionText.text = raceDropdown.options[raceDropdown.value].text; + + UpdateGUI(); } public void UpdateGUI() diff --git a/Assets/Scripts/GUI/DialogBoxes/RaceSettingsDialog.cs b/Assets/Scripts/GUI/DialogBoxes/RaceSettingsDialog.cs index b3c92abf..9561bf8e 100644 --- a/Assets/Scripts/GUI/DialogBoxes/RaceSettingsDialog.cs +++ b/Assets/Scripts/GUI/DialogBoxes/RaceSettingsDialog.cs @@ -20,7 +20,7 @@ namespace RimWorldAnimationStudio protected override void OnEnable() { raceSelectDropdown.ClearOptions(); - raceSelectDropdown.AddOptions(PawnRaceDefs.allDefs.Select(x => x.defName).ToList()); + raceSelectDropdown.AddOptions(DefaultTags.defNames.Concat(CustomTags.defNames).ToList()); base.OnEnable(); } diff --git a/Assets/Scripts/GUI/DialogBoxes/SelectDefNamesDialog.cs b/Assets/Scripts/GUI/DialogBoxes/SelectDefNamesDialog.cs index ebcf5a50..35893b26 100644 --- a/Assets/Scripts/GUI/DialogBoxes/SelectDefNamesDialog.cs +++ b/Assets/Scripts/GUI/DialogBoxes/SelectDefNamesDialog.cs @@ -43,7 +43,10 @@ namespace RimWorldAnimationStudio { Button deleteButton = _optionToggle.Find("DeleteButton").GetComponent