mirror of
https://gitgud.io/AbstractConcept/rimworld-animation-studio.git
synced 2024-08-15 00:43:27 +00:00
Bug fixes plus extra features
- Insert adds a new keyframe to the selected timeline - New stages have frames cloned from the last frame of current stage - Existing key are now replaced when another key is dropped on them - Fixed bug where starting a new animation could result in errors
This commit is contained in:
parent
ca22fa0c18
commit
2989d9a72c
137 changed files with 527 additions and 668 deletions
.vs/RimWorld-Animation-Studio/v16
Assets
Resources/Textures/UI
Scenes
Scripts
StreamingAssets
Build/RimWorld-Animation-Studio_Data
Managed
Assembly-CSharp.dllUnity.2D.Animation.Runtime.dllUnity.2D.Animation.Triangle.Runtime.dllUnity.2D.Common.Runtime.dllUnity.2D.PixelPerfect.dllUnity.2D.SpriteShape.Runtime.dllUnity.InternalAPIEngineBridge.001.dllUnity.Mathematics.dllUnity.TextMeshPro.dllUnity.Timeline.dllUnityEngine.UI.dll
StreamingAssets
globalgamemanagersglobalgamemanagers.assetslevel0resources.assetsresources.assets.resSLibrary
ArtifactDB
Artifacts
09
0b
0c
11
12
19
1c
21
22
25
26
28
29
2f
38
3b
3c
3f
43
44
45
47
48
4e
4f
58
5a
5c
5d
64
67
7c
7f
85
8d
91
92
93
96
a1
a4
b4
b6
b9
ba
bb
cd
d1
d3
de
e0
e5
Binary file not shown.
BIN
Assets/Resources/Textures/UI/LinearScale_test.png
Normal file
BIN
Assets/Resources/Textures/UI/LinearScale_test.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 1.7 KiB |
116
Assets/Resources/Textures/UI/LinearScale_test.png.meta
Normal file
116
Assets/Resources/Textures/UI/LinearScale_test.png.meta
Normal file
|
@ -0,0 +1,116 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 656b64fca82a9e14bbafce96bf8b5cbf
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: -1
|
||||
mipBias: -100
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 0
|
||||
spriteMeshType: 0
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load diff
|
@ -121,5 +121,12 @@ namespace RimWorldAnimationStudio
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
public int GetActorID()
|
||||
{
|
||||
if (Workspace.animationDef == null) return -1;
|
||||
|
||||
return Workspace.animationDef.actors.IndexOf(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Xml;
|
||||
using System.Xml.Serialization;
|
||||
|
@ -89,17 +90,46 @@ namespace RimWorldAnimationStudio
|
|||
|
||||
public override void ValidateData() { }
|
||||
|
||||
public bool MakeNew()
|
||||
public int GetOwningActorID()
|
||||
{
|
||||
PawnKeyframe keyframeA = new PawnKeyframe();
|
||||
keyframeA.tickDuration = Constants.defaultAnimationClipLength - 1;
|
||||
keyframes.Add(keyframeA);
|
||||
if (Workspace.animationDef == null) return -1;
|
||||
|
||||
PawnKeyframe keyframeB = new PawnKeyframe();
|
||||
keyframes.Add(keyframeB);
|
||||
return Workspace.animationDef.animationStages[Workspace.stageID].animationClips.IndexOf(this);
|
||||
}
|
||||
|
||||
public bool MakeNew(int actorID = -1)
|
||||
{
|
||||
PawnKeyframe lastkeyframe = null;
|
||||
|
||||
if (actorID >= 0)
|
||||
{ lastkeyframe = Workspace.animationDef.animationStages[Workspace.stageID].animationClips[actorID]?.keyframes?.Last(); }
|
||||
|
||||
if (lastkeyframe != null)
|
||||
{
|
||||
PawnKeyframe keyframeA = lastkeyframe.Copy();
|
||||
keyframeA.atTick = null;
|
||||
keyframeA.tickDuration = Constants.defaultAnimationClipLength - 1;
|
||||
keyframeA.GenerateKeyframeID(actorID);
|
||||
keyframes.Add(keyframeA);
|
||||
|
||||
PawnKeyframe keyframeB = lastkeyframe.Copy();
|
||||
keyframeB.atTick = null;
|
||||
keyframeB.tickDuration = 1;
|
||||
keyframeB.GenerateKeyframeID(actorID);
|
||||
keyframes.Add(keyframeB);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
PawnKeyframe keyframeA = new PawnKeyframe();
|
||||
keyframeA.tickDuration = Constants.defaultAnimationClipLength - 1;
|
||||
keyframes.Add(keyframeA);
|
||||
|
||||
PawnKeyframe keyframeB = new PawnKeyframe();
|
||||
keyframes.Add(keyframeB);
|
||||
}
|
||||
|
||||
BuildSimpleCurves();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,23 +36,31 @@ namespace RimWorldAnimationStudio
|
|||
{ clip.keyframes = clip.keyframes.OrderBy(x => x.atTick).ToList(); }
|
||||
}
|
||||
|
||||
public int GetStageID()
|
||||
{
|
||||
if (Workspace.animationDef == null) return -1;
|
||||
|
||||
return Workspace.animationDef.animationStages.IndexOf(this);
|
||||
}
|
||||
|
||||
public bool MakeNew()
|
||||
{
|
||||
if (Workspace.animationDef == null)
|
||||
{ Debug.LogWarning("Cannot make new animation stage - there is no AnimationDef"); return false; }
|
||||
|
||||
foreach(Actor actor in Workspace.animationDef.actors)
|
||||
Workspace.animationDef.animationStages.Add(this);
|
||||
|
||||
foreach (Actor actor in Workspace.animationDef.actors)
|
||||
{
|
||||
PawnAnimationClip clip = new PawnAnimationClip();
|
||||
|
||||
if (clip.MakeNew())
|
||||
if (clip.MakeNew(actor.GetActorID()))
|
||||
{ animationClips.Add(clip); }
|
||||
}
|
||||
|
||||
Initialize();
|
||||
playTimeTicksQuick = playTimeTicks;
|
||||
Workspace.animationDef.animationStages.Add(this);
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,10 +31,8 @@ namespace RimWorldAnimationStudio
|
|||
|
||||
public void LogMessage(string logString, string stackTrace, LogType type)
|
||||
{
|
||||
if (currentMessages > maxMessages)
|
||||
{ return; }
|
||||
|
||||
currentMessages++;
|
||||
if (currentMessages > maxMessages) return;
|
||||
currentMessages++;
|
||||
|
||||
currentMessage.text = logString;
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ namespace RimWorldAnimationStudio
|
|||
public void Start()
|
||||
{
|
||||
keybindLabel = GetComponent<Text>();
|
||||
keybindLabel.text = KeybindConfig.Instance.GetKeybindLabel(command);
|
||||
keybindLabel.text = KeybindConfig.GetKeybindLabel(command);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -117,7 +117,7 @@ namespace RimWorldAnimationStudio
|
|||
if (Workspace.keyframeID.NullOrEmpty() || Workspace.keyframeID.Contains(keyframeID) == false)
|
||||
{ Workspace.keyframeID = new List<int> { keyframeID }; }
|
||||
|
||||
List<PawnKeyframe> selectedKeyframes = Workspace.Instance.GetPawnKeyframes(Workspace.keyframeID).Except(new List<PawnKeyframe>() { keyframe })?.ToList();
|
||||
List<PawnKeyframe> selectedKeyframes = Workspace.Instance.GetPawnKeyframesByID(Workspace.keyframeID).Except(new List<PawnKeyframe>() { keyframe })?.ToList();
|
||||
|
||||
// Link other slected keyframes to the movement of this one
|
||||
if (selectedKeyframes.NotNullOrEmpty())
|
||||
|
@ -170,12 +170,39 @@ namespace RimWorldAnimationStudio
|
|||
if (keyframe.atTick == Constants.minTick)
|
||||
{ value = Constants.minTick; return; }
|
||||
|
||||
foreach (Selectable linkedSlider in Selectable.allSelectablesArray)
|
||||
List<PawnKeyframe> keyframesToCheck = Workspace.Instance.GetPawnKeyframesAtTick(actorID, keyframe.atTick.Value);
|
||||
if (keyframesToCheck.NotNullOrEmpty())
|
||||
{
|
||||
if (linkedSlider is KeyframeSlider)
|
||||
{
|
||||
(linkedSlider as KeyframeSlider).linkedSlider = null;
|
||||
(linkedSlider as KeyframeSlider).pivotKeyframe = null;
|
||||
foreach (PawnKeyframe _keyframe in keyframesToCheck)
|
||||
{
|
||||
if (_keyframe != keyframe)
|
||||
{ AnimationController.Instance.RemovePawnKeyframe(actorID, _keyframe.keyframeID); }
|
||||
}
|
||||
}
|
||||
|
||||
foreach (Selectable selectable in Selectable.allSelectablesArray)
|
||||
{
|
||||
if (selectable is KeyframeSlider)
|
||||
{
|
||||
KeyframeSlider linkedSlider = selectable.GetComponent<KeyframeSlider>();
|
||||
PawnKeyframe linkedKeyframe = linkedSlider.keyframe;
|
||||
|
||||
if (linkedSlider.linkedSlider != null)
|
||||
{
|
||||
keyframesToCheck = Workspace.Instance.GetPawnKeyframesAtTick(actorID, linkedKeyframe.atTick.Value);
|
||||
|
||||
if (keyframesToCheck.NotNullOrEmpty() && keyframesToCheck.Count > 1)
|
||||
{
|
||||
foreach (PawnKeyframe _keyframe in keyframesToCheck)
|
||||
{
|
||||
if (_keyframe.keyframeID != linkedKeyframe.keyframeID)
|
||||
{ AnimationController.Instance.RemovePawnKeyframe(actorID, _keyframe.keyframeID); Debug.Log("delete"); }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
linkedSlider.linkedSlider = null;
|
||||
linkedSlider.pivotKeyframe = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -8,26 +8,30 @@ using UnityEngine;
|
|||
|
||||
namespace RimWorldAnimationStudio
|
||||
{
|
||||
public class KeybindConfig : Singleton<KeybindConfig>
|
||||
public class KeybindConfig
|
||||
{
|
||||
private static List<Keybind> keybinds = new List<Keybind>();
|
||||
private static bool initialized = false;
|
||||
|
||||
public void Awake()
|
||||
public static void Initialize()
|
||||
{
|
||||
string path = Path.Combine(Application.streamingAssetsPath, "keybindConfig.xml");
|
||||
|
||||
keybinds = XmlUtility.ReadXML<List<Keybind>>(path);
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
public List<Keybind> GetAllKeybinds()
|
||||
public static List<Keybind> GetAllKeybinds()
|
||||
{
|
||||
if (initialized == false)
|
||||
{ Initialize(); }
|
||||
|
||||
return keybinds;
|
||||
}
|
||||
|
||||
public string GetKeybindLabel(string command)
|
||||
public static string GetKeybindLabel(string command)
|
||||
{
|
||||
string label = "";
|
||||
Keybind keybind = keybinds.FirstOrDefault(x => x.command == command);
|
||||
Keybind keybind = GetAllKeybinds()?.FirstOrDefault(x => x.command == command);
|
||||
|
||||
if (keybind == null) return label;
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ namespace RimWorldAnimationStudio
|
|||
private float playBackSpeed = 1f;
|
||||
|
||||
public void MakeDirty()
|
||||
{ isDirty = true; }
|
||||
{ isDirty = true; isTimelineDirty = true; }
|
||||
|
||||
public void MakeTimelineDirty()
|
||||
{ isTimelineDirty = true; }
|
||||
|
@ -255,10 +255,11 @@ namespace RimWorldAnimationStudio
|
|||
|
||||
public void Reset()
|
||||
{
|
||||
Workspace.stageID = 0;
|
||||
isAnimating = false;
|
||||
timeSinceLastUpdate = 0;
|
||||
cycleIndex = 0;
|
||||
|
||||
MakeDirty();
|
||||
}
|
||||
|
||||
public void InitializeAnimationTimeline()
|
||||
|
@ -377,7 +378,7 @@ namespace RimWorldAnimationStudio
|
|||
|
||||
public void ClonePawnKeyframe()
|
||||
{
|
||||
List<PawnKeyframe> keyframesToClone = Workspace.Instance.GetPawnKeyframes(Workspace.keyframeID);
|
||||
List<PawnKeyframe> keyframesToClone = Workspace.Instance.GetPawnKeyframesByID(Workspace.keyframeID);
|
||||
|
||||
foreach (PawnKeyframe keyframe in keyframesToClone)
|
||||
{
|
||||
|
@ -413,7 +414,7 @@ namespace RimWorldAnimationStudio
|
|||
{
|
||||
Workspace.copiedKeyframes.Clear();
|
||||
|
||||
List<PawnKeyframe> keyframesToClone = Workspace.Instance.GetPawnKeyframes(Workspace.keyframeID);
|
||||
List<PawnKeyframe> keyframesToClone = Workspace.Instance.GetPawnKeyframesByID(Workspace.keyframeID);
|
||||
|
||||
foreach (PawnKeyframe keyframe in keyframesToClone)
|
||||
{ Workspace.copiedKeyframes.Add(keyframe.Copy()); }
|
||||
|
|
|
@ -70,10 +70,9 @@ namespace RimWorldAnimationStudio
|
|||
Workspace.animationDef = animationDef;
|
||||
animationDef.Initialize();
|
||||
|
||||
Workspace.Instance.ClearHistory();
|
||||
AnimationController.Instance.Reset();
|
||||
Workspace.Instance.Reset();
|
||||
Workspace.Instance.RecordEvent("AnimationDef loaded");
|
||||
|
||||
AnimationController.Instance.MakeDirty();
|
||||
}
|
||||
|
||||
public void RunPostLoadOperations(AnimationDef animationDef)
|
||||
|
|
|
@ -61,7 +61,7 @@ namespace RimWorldAnimationStudio
|
|||
bool canRepeatThisUpdate = CanRepeatThisUpdate();
|
||||
|
||||
// Check keybinds
|
||||
foreach (Keybind keybind in KeybindConfig.Instance.GetAllKeybinds())
|
||||
foreach (Keybind keybind in KeybindConfig.GetAllKeybinds())
|
||||
{
|
||||
if (IsModifierKeyHeld() && keybind.keyModifiers.NullOrEmpty()) goto nextKeybind;
|
||||
|
||||
|
@ -207,6 +207,12 @@ namespace RimWorldAnimationStudio
|
|||
AnimationController.Instance.ToggleAnimation();
|
||||
}
|
||||
|
||||
public void AddKeyframe()
|
||||
{
|
||||
if (Workspace.animationDef == null) return;
|
||||
AnimationController.Instance.AddPawnKeyframe();
|
||||
}
|
||||
|
||||
public void CopyKeyframes()
|
||||
{
|
||||
if (Workspace.animationDef == null) return;
|
||||
|
|
|
@ -14,6 +14,8 @@ namespace RimWorldAnimationStudio
|
|||
public string message = "Undefined";
|
||||
public string executedCommand;
|
||||
public float delay = 0f;
|
||||
public Vector2 offset = new Vector2(5f, -15f);
|
||||
public bool flipX = false;
|
||||
|
||||
private GameObject tooltip;
|
||||
private Text tooltipText;
|
||||
|
@ -33,12 +35,13 @@ namespace RimWorldAnimationStudio
|
|||
|
||||
if (isDisplayed == false)
|
||||
{
|
||||
tooltip.GetComponent<RectTransform>().pivot = flipX ? new Vector2(1, 1) : new Vector2(0, 1);
|
||||
tooltipText.text = message;
|
||||
|
||||
if (executedCommand != null && executedCommand != "")
|
||||
{ tooltipText.text += " (" + KeybindConfig.Instance.GetKeybindLabel(executedCommand) + ")"; }
|
||||
{ tooltipText.text += " (" + KeybindConfig.GetKeybindLabel(executedCommand) + ")"; }
|
||||
|
||||
tooltip.transform.position = (Vector2)transform.position + new Vector2(5f, -15f);
|
||||
tooltip.transform.position = (Vector2)transform.position + offset;
|
||||
tooltip.gameObject.SetActive(true);
|
||||
|
||||
LayoutRebuilder.ForceRebuildLayoutImmediate(tooltip.GetComponent<RectTransform>());
|
||||
|
|
|
@ -7,7 +7,7 @@ using System.Threading.Tasks;
|
|||
namespace RimWorldAnimationStudio
|
||||
{
|
||||
[Serializable]
|
||||
public class HistoricRecord
|
||||
public class WorkspaceRecord
|
||||
{
|
||||
public int recordID = 0;
|
||||
public string eventDesc;
|
||||
|
|
|
@ -14,7 +14,7 @@ namespace RimWorldAnimationStudio
|
|||
|
||||
public static List<int> keyframeID = new List<int>();
|
||||
|
||||
[SerializeField] private List<HistoricRecord> workspaceHistory = new List<HistoricRecord>();
|
||||
[SerializeField] private List<WorkspaceRecord> workspaceHistory = new List<WorkspaceRecord>();
|
||||
[SerializeField] private int maxHistoryDepth = 100;
|
||||
|
||||
public static ActorManipulationMode actorManipulationMode = ActorManipulationMode.Pan;
|
||||
|
@ -53,6 +53,11 @@ namespace RimWorldAnimationStudio
|
|||
return animationDef?.animationStages[stageID]?.animationClips[actorID]?.keyframes.FirstOrDefault(x => x.atTick == stageTick);
|
||||
}
|
||||
|
||||
public List<PawnKeyframe> GetPawnKeyframesAtTick(int actorID, int atTick)
|
||||
{
|
||||
return animationDef?.animationStages[stageID]?.animationClips[actorID]?.keyframes.Where(x => x.atTick == atTick)?.ToList();
|
||||
}
|
||||
|
||||
public PawnAnimationClip GetCurrentPawnAnimationClip()
|
||||
{
|
||||
return animationDef.animationStages[stageID].animationClips[actorID];
|
||||
|
@ -74,7 +79,7 @@ namespace RimWorldAnimationStudio
|
|||
return animationDef.animationStages[stageID].animationClips[actorID].keyframes.FirstOrDefault(x => x.keyframeID == keyframeID);
|
||||
}
|
||||
|
||||
public List<PawnKeyframe> GetPawnKeyframes(List<int> keyframeIDs)
|
||||
public List<PawnKeyframe> GetPawnKeyframesByID(List<int> keyframeIDs)
|
||||
{
|
||||
List<PawnKeyframe> pawnKeyframes = new List<PawnKeyframe>();
|
||||
|
||||
|
@ -203,12 +208,23 @@ namespace RimWorldAnimationStudio
|
|||
}
|
||||
|
||||
[SerializeField]
|
||||
public LinkedList<HistoricRecord> pastSnapshots = new LinkedList<HistoricRecord>();
|
||||
public LinkedList<HistoricRecord> futureSnapshots = new LinkedList<HistoricRecord>();
|
||||
public LinkedList<WorkspaceRecord> pastSnapshots = new LinkedList<WorkspaceRecord>();
|
||||
public LinkedList<WorkspaceRecord> futureSnapshots = new LinkedList<WorkspaceRecord>();
|
||||
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
actorID = 0;
|
||||
stageID = 0;
|
||||
keyframeID.Clear();
|
||||
selectedBodyPart = null;
|
||||
|
||||
ClearHistory();
|
||||
}
|
||||
|
||||
public void MakeHistoricRecord(string eventDesc)
|
||||
{
|
||||
HistoricRecord record = new HistoricRecord();
|
||||
WorkspaceRecord record = new WorkspaceRecord();
|
||||
record.recordID = pastSnapshots.Count;
|
||||
record.eventDesc = eventDesc;
|
||||
record.animationDef = animationDef.Copy();
|
||||
|
@ -221,7 +237,7 @@ namespace RimWorldAnimationStudio
|
|||
{ pastSnapshots.RemoveFirst(); }
|
||||
}
|
||||
|
||||
public void RestoreToHistoricRecord(HistoricRecord record)
|
||||
public void RestoreToHistoricRecord(WorkspaceRecord record)
|
||||
{
|
||||
animationDef = record.animationDef.Copy();
|
||||
stageID = record.stageID;
|
||||
|
@ -232,8 +248,8 @@ namespace RimWorldAnimationStudio
|
|||
|
||||
public void Undo()
|
||||
{
|
||||
HistoricRecord recordToRead = pastSnapshots.Last?.Previous?.Value;
|
||||
HistoricRecord recordToStore = pastSnapshots.Last?.Value;
|
||||
WorkspaceRecord recordToRead = pastSnapshots.Last?.Previous?.Value;
|
||||
WorkspaceRecord recordToStore = pastSnapshots.Last?.Value;
|
||||
|
||||
if (recordToRead == null || recordToStore == null) return;
|
||||
|
||||
|
@ -246,7 +262,7 @@ namespace RimWorldAnimationStudio
|
|||
|
||||
public void Redo()
|
||||
{
|
||||
HistoricRecord recordToReadAndStore = futureSnapshots.Last?.Value;
|
||||
WorkspaceRecord recordToReadAndStore = futureSnapshots.Last?.Value;
|
||||
|
||||
if (recordToReadAndStore == null) return;
|
||||
|
||||
|
|
|
@ -131,6 +131,16 @@
|
|||
</mac>
|
||||
</Keybind>
|
||||
|
||||
<Keybind>
|
||||
<command>AddKeyframe</command>
|
||||
<win>
|
||||
<keyCode>Insert</keyCode>
|
||||
</win>
|
||||
<mac>
|
||||
<keyCode>Insert</keyCode>
|
||||
</mac>
|
||||
</Keybind>
|
||||
|
||||
<Keybind>
|
||||
<command>CopyKeyframes</command>
|
||||
<win>
|
||||
|
@ -162,34 +172,34 @@
|
|||
<keyCode>X</keyCode>
|
||||
</mac>
|
||||
</Keybind>
|
||||
|
||||
|
||||
<Keybind>
|
||||
<command>DeleteKeyframes</command>
|
||||
<win>
|
||||
<keyCode>Backspace</keyCode>
|
||||
<keyCode>Delete</keyCode>
|
||||
</win>
|
||||
<mac>
|
||||
<keyCode>Backspace</keyCode>
|
||||
<keyCode>Delete</keyCode>
|
||||
</mac>
|
||||
</Keybind>
|
||||
|
||||
|
||||
<Keybind>
|
||||
<command>DeleteKeyframes</command>
|
||||
<win>
|
||||
<keyCode>Delete</keyCode>
|
||||
<keyCode>Backspace</keyCode>
|
||||
</win>
|
||||
<mac>
|
||||
<keyCode>Delete</keyCode>
|
||||
<keyCode>Backspace</keyCode>
|
||||
</mac>
|
||||
</Keybind>
|
||||
|
||||
<Keybind>
|
||||
<command>ActorMovementMode</command>
|
||||
<win>
|
||||
<keyCode>M</keyCode>
|
||||
<keyCode>E</keyCode>
|
||||
</win>
|
||||
<mac>
|
||||
<keyCode>M</keyCode>
|
||||
<keyCode>E</keyCode>
|
||||
</mac>
|
||||
</Keybind>
|
||||
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -131,6 +131,16 @@
|
|||
</mac>
|
||||
</Keybind>
|
||||
|
||||
<Keybind>
|
||||
<command>AddKeyframe</command>
|
||||
<win>
|
||||
<keyCode>Insert</keyCode>
|
||||
</win>
|
||||
<mac>
|
||||
<keyCode>Insert</keyCode>
|
||||
</mac>
|
||||
</Keybind>
|
||||
|
||||
<Keybind>
|
||||
<command>CopyKeyframes</command>
|
||||
<win>
|
||||
|
@ -162,34 +172,34 @@
|
|||
<keyCode>X</keyCode>
|
||||
</mac>
|
||||
</Keybind>
|
||||
|
||||
|
||||
<Keybind>
|
||||
<command>DeleteKeyframes</command>
|
||||
<win>
|
||||
<keyCode>Backspace</keyCode>
|
||||
<keyCode>Delete</keyCode>
|
||||
</win>
|
||||
<mac>
|
||||
<keyCode>Backspace</keyCode>
|
||||
<keyCode>Delete</keyCode>
|
||||
</mac>
|
||||
</Keybind>
|
||||
|
||||
|
||||
<Keybind>
|
||||
<command>DeleteKeyframes</command>
|
||||
<win>
|
||||
<keyCode>Delete</keyCode>
|
||||
<keyCode>Backspace</keyCode>
|
||||
</win>
|
||||
<mac>
|
||||
<keyCode>Delete</keyCode>
|
||||
<keyCode>Backspace</keyCode>
|
||||
</mac>
|
||||
</Keybind>
|
||||
|
||||
<Keybind>
|
||||
<command>ActorMovementMode</command>
|
||||
<win>
|
||||
<keyCode>M</keyCode>
|
||||
<keyCode>E</keyCode>
|
||||
</win>
|
||||
<mac>
|
||||
<keyCode>M</keyCode>
|
||||
<keyCode>E</keyCode>
|
||||
</mac>
|
||||
</Keybind>
|
||||
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Library/Artifacts/09/0908c3b560faa120991466142c752046
Normal file
BIN
Library/Artifacts/09/0908c3b560faa120991466142c752046
Normal file
Binary file not shown.
BIN
Library/Artifacts/0b/0b93a5f74d0ed4a39993a71b0ee2f723
Normal file
BIN
Library/Artifacts/0b/0b93a5f74d0ed4a39993a71b0ee2f723
Normal file
Binary file not shown.
BIN
Library/Artifacts/0c/0c9df7bb409d6121c0fbb0f128cf75b4
Normal file
BIN
Library/Artifacts/0c/0c9df7bb409d6121c0fbb0f128cf75b4
Normal file
Binary file not shown.
BIN
Library/Artifacts/11/11b43cee23a98cf3f78ac4475c34e36d
Normal file
BIN
Library/Artifacts/11/11b43cee23a98cf3f78ac4475c34e36d
Normal file
Binary file not shown.
BIN
Library/Artifacts/12/12addefdaca15ff7b10b72b5ee132877
Normal file
BIN
Library/Artifacts/12/12addefdaca15ff7b10b72b5ee132877
Normal file
Binary file not shown.
BIN
Library/Artifacts/19/19dc01fed57b8bc544f181a698a8cdf5
Normal file
BIN
Library/Artifacts/19/19dc01fed57b8bc544f181a698a8cdf5
Normal file
Binary file not shown.
BIN
Library/Artifacts/1c/1c2b0a1da342583dbf774b6959176578
Normal file
BIN
Library/Artifacts/1c/1c2b0a1da342583dbf774b6959176578
Normal file
Binary file not shown.
BIN
Library/Artifacts/21/21f5d1b599601aa73a09ab0f38c4c620
Normal file
BIN
Library/Artifacts/21/21f5d1b599601aa73a09ab0f38c4c620
Normal file
Binary file not shown.
BIN
Library/Artifacts/22/22715ba79118a087fe9f6bb1f219df9d
Normal file
BIN
Library/Artifacts/22/22715ba79118a087fe9f6bb1f219df9d
Normal file
Binary file not shown.
BIN
Library/Artifacts/25/25bbfc6f784c0a4f9ab94d5af4f45b10
Normal file
BIN
Library/Artifacts/25/25bbfc6f784c0a4f9ab94d5af4f45b10
Normal file
Binary file not shown.
BIN
Library/Artifacts/26/26c3c3ec803f657f91222f1cb4efabdf
Normal file
BIN
Library/Artifacts/26/26c3c3ec803f657f91222f1cb4efabdf
Normal file
Binary file not shown.
BIN
Library/Artifacts/28/28ed4e9299f1d8673c518abe7ca864ec
Normal file
BIN
Library/Artifacts/28/28ed4e9299f1d8673c518abe7ca864ec
Normal file
Binary file not shown.
BIN
Library/Artifacts/29/298da16a3c0ec071142aa2eef0459aef
Normal file
BIN
Library/Artifacts/29/298da16a3c0ec071142aa2eef0459aef
Normal file
Binary file not shown.
BIN
Library/Artifacts/29/29cba4d19b6be95b3edd1eebc90f9bf9
Normal file
BIN
Library/Artifacts/29/29cba4d19b6be95b3edd1eebc90f9bf9
Normal file
Binary file not shown.
BIN
Library/Artifacts/2f/2f3ef15f3ca60e0d9aa0201f87252e98
Normal file
BIN
Library/Artifacts/2f/2f3ef15f3ca60e0d9aa0201f87252e98
Normal file
Binary file not shown.
BIN
Library/Artifacts/38/38ef8ff2e11fa2796549cce691d09967
Normal file
BIN
Library/Artifacts/38/38ef8ff2e11fa2796549cce691d09967
Normal file
Binary file not shown.
BIN
Library/Artifacts/3b/3b12ee745e9381e66e6aa81c34d8a6a1
Normal file
BIN
Library/Artifacts/3b/3b12ee745e9381e66e6aa81c34d8a6a1
Normal file
Binary file not shown.
BIN
Library/Artifacts/3b/3b815578602c8041115081cdae53eafd
Normal file
BIN
Library/Artifacts/3b/3b815578602c8041115081cdae53eafd
Normal file
Binary file not shown.
BIN
Library/Artifacts/3b/3bab7ef136481bb38ed5982be99f2fbe
Normal file
BIN
Library/Artifacts/3b/3bab7ef136481bb38ed5982be99f2fbe
Normal file
Binary file not shown.
BIN
Library/Artifacts/3c/3c4f7b9463fd4a846be013d6adece911
Normal file
BIN
Library/Artifacts/3c/3c4f7b9463fd4a846be013d6adece911
Normal file
Binary file not shown.
After (image error) Size: 432 B |
BIN
Library/Artifacts/3f/3f3d5814b23fb9cdb57f5f62a534a63a
Normal file
BIN
Library/Artifacts/3f/3f3d5814b23fb9cdb57f5f62a534a63a
Normal file
Binary file not shown.
BIN
Library/Artifacts/43/434dfce8555b0b942475ecadf7919b7a
Normal file
BIN
Library/Artifacts/43/434dfce8555b0b942475ecadf7919b7a
Normal file
Binary file not shown.
BIN
Library/Artifacts/44/44c00ee436814a600c3cae4bfedf25ba
Normal file
BIN
Library/Artifacts/44/44c00ee436814a600c3cae4bfedf25ba
Normal file
Binary file not shown.
BIN
Library/Artifacts/45/4509d19e59246a904af19f2e57af6894
Normal file
BIN
Library/Artifacts/45/4509d19e59246a904af19f2e57af6894
Normal file
Binary file not shown.
BIN
Library/Artifacts/47/47e7ef722e066aa91c68f41e065ab58b
Normal file
BIN
Library/Artifacts/47/47e7ef722e066aa91c68f41e065ab58b
Normal file
Binary file not shown.
BIN
Library/Artifacts/48/480d740993caffd1043c65725d5a6789
Normal file
BIN
Library/Artifacts/48/480d740993caffd1043c65725d5a6789
Normal file
Binary file not shown.
BIN
Library/Artifacts/48/48d16e8c08c8744b8282f2b1989ba5c3
Normal file
BIN
Library/Artifacts/48/48d16e8c08c8744b8282f2b1989ba5c3
Normal file
Binary file not shown.
BIN
Library/Artifacts/4e/4ed3a56b9d616e76b9213f382fde842d
Normal file
BIN
Library/Artifacts/4e/4ed3a56b9d616e76b9213f382fde842d
Normal file
Binary file not shown.
BIN
Library/Artifacts/4f/4f4cb3ae5a3a020ce2552406ab830ea0
Normal file
BIN
Library/Artifacts/4f/4f4cb3ae5a3a020ce2552406ab830ea0
Normal file
Binary file not shown.
BIN
Library/Artifacts/58/580d2c1a3749106a706429489c1a34d4
Normal file
BIN
Library/Artifacts/58/580d2c1a3749106a706429489c1a34d4
Normal file
Binary file not shown.
BIN
Library/Artifacts/5a/5ac5c571d98b032512c8d90eebadb69e
Normal file
BIN
Library/Artifacts/5a/5ac5c571d98b032512c8d90eebadb69e
Normal file
Binary file not shown.
BIN
Library/Artifacts/5c/5c016124793ce6128eacf0517d5b6513
Normal file
BIN
Library/Artifacts/5c/5c016124793ce6128eacf0517d5b6513
Normal file
Binary file not shown.
BIN
Library/Artifacts/5c/5c9f8b80ce5711f64aa10979f8a4825f
Normal file
BIN
Library/Artifacts/5c/5c9f8b80ce5711f64aa10979f8a4825f
Normal file
Binary file not shown.
BIN
Library/Artifacts/5d/5d6a700a00ca51de48c7e9c5370154ee
Normal file
BIN
Library/Artifacts/5d/5d6a700a00ca51de48c7e9c5370154ee
Normal file
Binary file not shown.
Binary file not shown.
BIN
Library/Artifacts/64/6428b1de60ec30f2fbd2dfa225cf70a1
Normal file
BIN
Library/Artifacts/64/6428b1de60ec30f2fbd2dfa225cf70a1
Normal file
Binary file not shown.
After (image error) Size: 564 B |
BIN
Library/Artifacts/64/64a42bc1cfe0c9933938e3b5f557a628
Normal file
BIN
Library/Artifacts/64/64a42bc1cfe0c9933938e3b5f557a628
Normal file
Binary file not shown.
BIN
Library/Artifacts/67/6711627f0dbdf70a14432a4bda7aefe8
Normal file
BIN
Library/Artifacts/67/6711627f0dbdf70a14432a4bda7aefe8
Normal file
Binary file not shown.
BIN
Library/Artifacts/7c/7c1b2240fcb2f38797ed81f8f55bbc4e
Normal file
BIN
Library/Artifacts/7c/7c1b2240fcb2f38797ed81f8f55bbc4e
Normal file
Binary file not shown.
BIN
Library/Artifacts/7f/7fdc5d56b4dc36a6685e6d0eb81664cb
Normal file
BIN
Library/Artifacts/7f/7fdc5d56b4dc36a6685e6d0eb81664cb
Normal file
Binary file not shown.
BIN
Library/Artifacts/85/852bcf8a90ffe08c80e4b9fe5d160940
Normal file
BIN
Library/Artifacts/85/852bcf8a90ffe08c80e4b9fe5d160940
Normal file
Binary file not shown.
BIN
Library/Artifacts/8d/8d714929a8404cc99ba068b4b8cb960e
Normal file
BIN
Library/Artifacts/8d/8d714929a8404cc99ba068b4b8cb960e
Normal file
Binary file not shown.
BIN
Library/Artifacts/8d/8dcf9ae5fb6b36e897129c49085a7eaa
Normal file
BIN
Library/Artifacts/8d/8dcf9ae5fb6b36e897129c49085a7eaa
Normal file
Binary file not shown.
BIN
Library/Artifacts/91/91f14f6491b6397df4927fd3174bf293
Normal file
BIN
Library/Artifacts/91/91f14f6491b6397df4927fd3174bf293
Normal file
Binary file not shown.
BIN
Library/Artifacts/92/92532687220ed0268df57149241c8bb3
Normal file
BIN
Library/Artifacts/92/92532687220ed0268df57149241c8bb3
Normal file
Binary file not shown.
BIN
Library/Artifacts/93/93aae6745f9e67fa5e10b4478ee54a97
Normal file
BIN
Library/Artifacts/93/93aae6745f9e67fa5e10b4478ee54a97
Normal file
Binary file not shown.
BIN
Library/Artifacts/96/968e49b2a50757fe970ad6265af5347a
Normal file
BIN
Library/Artifacts/96/968e49b2a50757fe970ad6265af5347a
Normal file
Binary file not shown.
BIN
Library/Artifacts/96/9693516529a5e89bc0d6512652523a03
Normal file
BIN
Library/Artifacts/96/9693516529a5e89bc0d6512652523a03
Normal file
Binary file not shown.
BIN
Library/Artifacts/a1/a115c4ee9b4974672701bb0b36c8ee61
Normal file
BIN
Library/Artifacts/a1/a115c4ee9b4974672701bb0b36c8ee61
Normal file
Binary file not shown.
BIN
Library/Artifacts/a1/a11aa315e41fefdcd39566c41ccd7fa0
Normal file
BIN
Library/Artifacts/a1/a11aa315e41fefdcd39566c41ccd7fa0
Normal file
Binary file not shown.
BIN
Library/Artifacts/a4/a45bb5973a4b91ec9f13f0cae9ae172b
Normal file
BIN
Library/Artifacts/a4/a45bb5973a4b91ec9f13f0cae9ae172b
Normal file
Binary file not shown.
BIN
Library/Artifacts/b4/b4d8839cf1d651dc20ab67fb3cbf7497
Normal file
BIN
Library/Artifacts/b4/b4d8839cf1d651dc20ab67fb3cbf7497
Normal file
Binary file not shown.
BIN
Library/Artifacts/b6/b6d5764b23a816e17df6d4315f3e8802
Normal file
BIN
Library/Artifacts/b6/b6d5764b23a816e17df6d4315f3e8802
Normal file
Binary file not shown.
BIN
Library/Artifacts/b9/b94792035ebe1f43d6aab29f43f5b9cd
Normal file
BIN
Library/Artifacts/b9/b94792035ebe1f43d6aab29f43f5b9cd
Normal file
Binary file not shown.
BIN
Library/Artifacts/ba/ba644c82d4f72d5c6d9f20126bceaa74
Normal file
BIN
Library/Artifacts/ba/ba644c82d4f72d5c6d9f20126bceaa74
Normal file
Binary file not shown.
BIN
Library/Artifacts/bb/bb59e1af23a561851d4851ee483af4ec
Normal file
BIN
Library/Artifacts/bb/bb59e1af23a561851d4851ee483af4ec
Normal file
Binary file not shown.
BIN
Library/Artifacts/bb/bb6905227ac53eb20b0676cdc794d479
Normal file
BIN
Library/Artifacts/bb/bb6905227ac53eb20b0676cdc794d479
Normal file
Binary file not shown.
BIN
Library/Artifacts/cd/cd12484328d9bf16c018135af8dd8ddf
Normal file
BIN
Library/Artifacts/cd/cd12484328d9bf16c018135af8dd8ddf
Normal file
Binary file not shown.
BIN
Library/Artifacts/d1/d1282be4075b6021dabc7fcde4cfb0cf
Normal file
BIN
Library/Artifacts/d1/d1282be4075b6021dabc7fcde4cfb0cf
Normal file
Binary file not shown.
BIN
Library/Artifacts/d3/d32f16afe1c3229c5bb7e22ea994f544
Normal file
BIN
Library/Artifacts/d3/d32f16afe1c3229c5bb7e22ea994f544
Normal file
Binary file not shown.
BIN
Library/Artifacts/de/de48b5a2b5367e9d05eebf98e545c742
Normal file
BIN
Library/Artifacts/de/de48b5a2b5367e9d05eebf98e545c742
Normal file
Binary file not shown.
BIN
Library/Artifacts/de/dee7cd0898a0892111d380873ef8d4cf
Normal file
BIN
Library/Artifacts/de/dee7cd0898a0892111d380873ef8d4cf
Normal file
Binary file not shown.
BIN
Library/Artifacts/e0/e04768c58b5dbffad61991929754d113
Normal file
BIN
Library/Artifacts/e0/e04768c58b5dbffad61991929754d113
Normal file
Binary file not shown.
BIN
Library/Artifacts/e5/e583aeb6385629b47615f3e76d6aaac5
Normal file
BIN
Library/Artifacts/e5/e583aeb6385629b47615f3e76d6aaac5
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue