Bug fixes
- Animation keys should be better synced with the animation (fewer instance of missing keys) - Copied keyframes and cloned stages should no longer be linked to each other -If you delete the first keyframe in a clip, instead of denying you, it will reset the associated actor it to its default starting position - You can now move keyframes over the first one in a clip and override it. If less than two keys remain, new keys will be generated to a minimum of a two - Fixed error when cycling through actor body parts
This commit is contained in:
parent
39f771a720
commit
23f8d8cfec
Binary file not shown.
|
@ -128,7 +128,7 @@ namespace RimWorldAnimationStudio
|
||||||
|
|
||||||
public void CloneAnimationStage()
|
public void CloneAnimationStage()
|
||||||
{
|
{
|
||||||
AnimationStage stage = Workspace.GetCurrentAnimationStage().Copy();
|
AnimationStage stage = Workspace.GetCurrentAnimationStage().GetClone();
|
||||||
stage.StageName += " (Clone)";
|
stage.StageName += " (Clone)";
|
||||||
|
|
||||||
Workspace.animationDef.AnimationStages.Insert(Workspace.StageID + 1, stage);
|
Workspace.animationDef.AnimationStages.Insert(Workspace.StageID + 1, stage);
|
||||||
|
|
|
@ -59,7 +59,7 @@ namespace RimWorldAnimationStudio
|
||||||
[XmlIgnore] public int StageLoopsQuick
|
[XmlIgnore] public int StageLoopsQuick
|
||||||
{
|
{
|
||||||
get { return Mathf.CeilToInt(PlayTimeTicksQuick / Workspace.StageWindowSize); }
|
get { return Mathf.CeilToInt(PlayTimeTicksQuick / Workspace.StageWindowSize); }
|
||||||
set { value = Math.Max(0, Math.Min(value, StageLoopsNormal)); PlayTimeTicksQuick = value * Workspace.StageWindowSize; IsLooping = value > 1; }
|
set { value = Math.Max(0, Math.Min(value, StageLoopsNormal)); PlayTimeTicksQuick = value * Workspace.StageWindowSize; }
|
||||||
}
|
}
|
||||||
|
|
||||||
// Local data
|
// Local data
|
||||||
|
@ -86,13 +86,15 @@ namespace RimWorldAnimationStudio
|
||||||
|
|
||||||
public void StretchStageWindow(int newStageWindowSize)
|
public void StretchStageWindow(int newStageWindowSize)
|
||||||
{
|
{
|
||||||
|
ResizeStageWindow(newStageWindowSize);
|
||||||
|
|
||||||
float scale = (float)newStageWindowSize / Workspace.StageWindowSize;
|
float scale = (float)newStageWindowSize / Workspace.StageWindowSize;
|
||||||
|
|
||||||
foreach (PawnAnimationClip clip in AnimationClips)
|
foreach (PawnAnimationClip clip in AnimationClips)
|
||||||
{
|
{
|
||||||
foreach (PawnKeyframe keyframe in clip.Keyframes)
|
foreach (PawnKeyframe keyframe in clip.Keyframes)
|
||||||
{
|
{
|
||||||
keyframe.atTick = Mathf.CeilToInt((float)keyframe.atTick.Value * scale);
|
keyframe.atTick = keyframe.atTick == Constants.minTick ? Constants.minTick : Mathf.CeilToInt((float)keyframe.atTick.Value * scale);
|
||||||
keyframe.TickDuration = 0;
|
keyframe.TickDuration = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,9 +106,9 @@ namespace RimWorldAnimationStudio
|
||||||
|
|
||||||
public void ResizeStageWindow(int newStageWindowSize)
|
public void ResizeStageWindow(int newStageWindowSize)
|
||||||
{
|
{
|
||||||
Workspace.GetCurrentAnimationStage().stageWindowSize = newStageWindowSize;
|
|
||||||
Workspace.GetCurrentAnimationStage().PlayTimeTicks = newStageWindowSize * StageLoopsNormal;
|
Workspace.GetCurrentAnimationStage().PlayTimeTicks = newStageWindowSize * StageLoopsNormal;
|
||||||
Workspace.GetCurrentAnimationStage().PlayTimeTicksQuick = newStageWindowSize * StageLoopsQuick;
|
Workspace.GetCurrentAnimationStage().PlayTimeTicksQuick = newStageWindowSize * StageLoopsQuick;
|
||||||
|
Workspace.GetCurrentAnimationStage().stageWindowSize = newStageWindowSize;
|
||||||
|
|
||||||
EventsManager.OnStageWindowSizeChanged(this);
|
EventsManager.OnStageWindowSizeChanged(this);
|
||||||
}
|
}
|
||||||
|
@ -121,17 +123,17 @@ namespace RimWorldAnimationStudio
|
||||||
|
|
||||||
if (lastkeyframe != null)
|
if (lastkeyframe != null)
|
||||||
{
|
{
|
||||||
PawnKeyframe keyframeA = lastkeyframe.Copy();
|
PawnKeyframe keyframeA = lastkeyframe.GetClone();
|
||||||
|
keyframeA.GenerateKeyframeID(actorID);
|
||||||
keyframeA.atTick = null;
|
keyframeA.atTick = null;
|
||||||
keyframeA.TickDuration = Constants.defaultAnimationClipLength - 1;
|
keyframeA.TickDuration = Constants.defaultAnimationClipLength - 1;
|
||||||
keyframeA.GenerateKeyframeID(actorID);
|
|
||||||
|
|
||||||
clip.Keyframes.Add(keyframeA);
|
clip.Keyframes.Add(keyframeA);
|
||||||
|
|
||||||
PawnKeyframe keyframeB = lastkeyframe.Copy();
|
PawnKeyframe keyframeB = lastkeyframe.GetClone();
|
||||||
|
keyframeB.GenerateKeyframeID(actorID);
|
||||||
keyframeB.atTick = null;
|
keyframeB.atTick = null;
|
||||||
keyframeB.TickDuration = 1;
|
keyframeB.TickDuration = 1;
|
||||||
keyframeB.GenerateKeyframeID(actorID);
|
|
||||||
|
|
||||||
clip.Keyframes.Add(keyframeB);
|
clip.Keyframes.Add(keyframeB);
|
||||||
}
|
}
|
||||||
|
@ -151,6 +153,19 @@ namespace RimWorldAnimationStudio
|
||||||
animationClips.Add(clip);
|
animationClips.Add(clip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AnimationStage GetClone()
|
||||||
|
{
|
||||||
|
AnimationStage clone = this.Copy();
|
||||||
|
|
||||||
|
foreach (PawnAnimationClip clip in clone.animationClips)
|
||||||
|
{
|
||||||
|
foreach (PawnKeyframe keyframe in clip.Keyframes)
|
||||||
|
{ keyframe.GenerateKeyframeID(keyframe.actorID); }
|
||||||
|
}
|
||||||
|
|
||||||
|
return clone;
|
||||||
|
}
|
||||||
|
|
||||||
// Pre-save / post-load
|
// Pre-save / post-load
|
||||||
public void OnPreSave()
|
public void OnPreSave()
|
||||||
{
|
{
|
||||||
|
|
|
@ -236,7 +236,7 @@ namespace RimWorldAnimationStudio
|
||||||
List<PawnKeyframe> keyframesToClone = Workspace.GetPawnKeyframesByID(Workspace.keyframeID);
|
List<PawnKeyframe> keyframesToClone = Workspace.GetPawnKeyframesByID(Workspace.keyframeID);
|
||||||
|
|
||||||
foreach (PawnKeyframe keyframe in keyframesToClone)
|
foreach (PawnKeyframe keyframe in keyframesToClone)
|
||||||
{ Workspace.copiedKeyframes.Add(keyframe.Copy()); }
|
{ Workspace.copiedKeyframes.Add(keyframe.GetClone()); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PastePawnKeyframes()
|
public void PastePawnKeyframes()
|
||||||
|
@ -273,7 +273,7 @@ namespace RimWorldAnimationStudio
|
||||||
Workspace.GetAnimationClipThatOwnsKeyframe(oldKeyframe.keyframeID).RemovePawnKeyframe(oldKeyframe.keyframeID, true);
|
Workspace.GetAnimationClipThatOwnsKeyframe(oldKeyframe.keyframeID).RemovePawnKeyframe(oldKeyframe.keyframeID, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
PawnKeyframe clonedKeyframe = copiedKeyframe.Copy();
|
PawnKeyframe clonedKeyframe = copiedKeyframe.GetClone();
|
||||||
clonedKeyframe.GenerateKeyframeID(targetActorID);
|
clonedKeyframe.GenerateKeyframeID(targetActorID);
|
||||||
clonedKeyframe.atTick = tickToPasteAt;
|
clonedKeyframe.atTick = tickToPasteAt;
|
||||||
|
|
||||||
|
@ -305,13 +305,24 @@ namespace RimWorldAnimationStudio
|
||||||
PawnKeyframe keyframe = Workspace.GetPawnKeyframe(keyframeID);
|
PawnKeyframe keyframe = Workspace.GetPawnKeyframe(keyframeID);
|
||||||
if (keyframe == null || IsOwnerOfKeyframe(keyframeID) == false) return;
|
if (keyframe == null || IsOwnerOfKeyframe(keyframeID) == false) return;
|
||||||
|
|
||||||
if (keyframe.atTick == Constants.minTick && force == false)
|
|
||||||
{ Debug.LogWarning("Cannot delete key frame - the first key frame of an animation clip cannot be deleted"); return; }
|
|
||||||
|
|
||||||
if (Keyframes.Count <= 2 && force == false)
|
|
||||||
{ Debug.LogWarning("Cannot delete key frame - an animation clip must have two or more keyframes"); return; }
|
|
||||||
|
|
||||||
Keyframes.Remove(keyframe);
|
Keyframes.Remove(keyframe);
|
||||||
|
|
||||||
|
if (Workspace.GetAllPawnKeyframesAtTick(GetOwningActorID(), Constants.minTick).NullOrEmpty())
|
||||||
|
{
|
||||||
|
PawnKeyframe newKeyframe = new PawnKeyframe();
|
||||||
|
newKeyframe.GenerateKeyframeID(GetOwningActorID());
|
||||||
|
newKeyframe.atTick = Constants.minTick;
|
||||||
|
Keyframes.Insert(0, newKeyframe);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add missing second keyframe (if needed)
|
||||||
|
if (Keyframes.Count == 1)
|
||||||
|
{
|
||||||
|
PawnKeyframe newKeyframe = Workspace.GetAllPawnKeyframesAtTick(GetOwningActorID(), Constants.minTick).First().GetClone();
|
||||||
|
newKeyframe.atTick = 10;
|
||||||
|
Keyframes.Add(newKeyframe);
|
||||||
|
}
|
||||||
|
|
||||||
BuildSimpleCurves();
|
BuildSimpleCurves();
|
||||||
|
|
||||||
EventsManager.OnKeyframeCountChanged(this);
|
EventsManager.OnKeyframeCountChanged(this);
|
||||||
|
@ -323,11 +334,6 @@ namespace RimWorldAnimationStudio
|
||||||
return Keyframes.Any(x => x.keyframeID == keyframeID);
|
return Keyframes.Any(x => x.keyframeID == keyframeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public float GetStageTickPercentage()
|
|
||||||
{
|
|
||||||
return (float)(Workspace.StageTick % duration) / duration;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pre-save / post-load
|
// Pre-save / post-load
|
||||||
public void OnPreSave()
|
public void OnPreSave()
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,7 +39,7 @@ namespace RimWorldAnimationStudio
|
||||||
// Data helper functions
|
// Data helper functions
|
||||||
[XmlIgnore] public float BodyAngle
|
[XmlIgnore] public float BodyAngle
|
||||||
{
|
{
|
||||||
get { return bodyAngle.HasValue ? bodyAngle.Value : 0f; }
|
get { return bodyAngle.HasValue ? bodyAngle.Value : (float)(bodyAngle = 0f); }
|
||||||
set { bodyAngle = value; }
|
set { bodyAngle = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -205,6 +205,14 @@ namespace RimWorldAnimationStudio
|
||||||
Workspace.RecordEvent("Actor position / orientation");
|
Workspace.RecordEvent("Actor position / orientation");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PawnKeyframe GetClone()
|
||||||
|
{
|
||||||
|
PawnKeyframe clone = this.Copy();
|
||||||
|
clone.GenerateKeyframeID(actorID);
|
||||||
|
|
||||||
|
return clone;
|
||||||
|
}
|
||||||
|
|
||||||
// Pre-save / post-load
|
// Pre-save / post-load
|
||||||
public void OnPreSave()
|
public void OnPreSave()
|
||||||
{
|
{
|
||||||
|
|
|
@ -23,7 +23,7 @@ namespace RimWorldAnimationStudio
|
||||||
{
|
{
|
||||||
PawnAnimationClip clip = Workspace.GetPawnAnimationClip(actorID);
|
PawnAnimationClip clip = Workspace.GetPawnAnimationClip(actorID);
|
||||||
|
|
||||||
float clipPercent = (float)atTick / Workspace.StageWindowSize;
|
float clipPercent = (float)(atTick % clip.duration) / clip.duration;
|
||||||
if (atTick > Constants.minTick && atTick == clip.duration) clipPercent = 1f;
|
if (atTick > Constants.minTick && atTick == clip.duration) clipPercent = 1f;
|
||||||
|
|
||||||
if (Workspace.GetCurrentAnimationStage().IsLooping == false)
|
if (Workspace.GetCurrentAnimationStage().IsLooping == false)
|
||||||
|
|
|
@ -18,6 +18,10 @@ namespace RimWorldAnimationStudio
|
||||||
{
|
{
|
||||||
EventsManager.onActorBodyPartSelected.AddListener(delegate(ActorBodyPart bodyPart) { OnActorBodyPartSelected(bodyPart); });
|
EventsManager.onActorBodyPartSelected.AddListener(delegate(ActorBodyPart bodyPart) { OnActorBodyPartSelected(bodyPart); });
|
||||||
EventsManager.onActorBodySelected.AddListener(delegate(ActorBody actorBody) { OnActorBodySelected(actorBody); });
|
EventsManager.onActorBodySelected.AddListener(delegate(ActorBody actorBody) { OnActorBodySelected(actorBody); });
|
||||||
|
EventsManager.onActorIDChanged.AddListener(delegate {
|
||||||
|
if (Workspace.ActorID == actorID)
|
||||||
|
{ EventsManager.OnActorBodySelected(this); }
|
||||||
|
});
|
||||||
|
|
||||||
if (Workspace.ActorID == actorID)
|
if (Workspace.ActorID == actorID)
|
||||||
{ Activate(); }
|
{ Activate(); }
|
||||||
|
|
|
@ -22,6 +22,7 @@ namespace RimWorldAnimationStudio
|
||||||
EventsManager.onKeyframeCountChanged.AddListener(delegate { UpdateGUI(); });
|
EventsManager.onKeyframeCountChanged.AddListener(delegate { UpdateGUI(); });
|
||||||
EventsManager.onActorIDChanged.AddListener(delegate { UpdateTimelineSelection(); });
|
EventsManager.onActorIDChanged.AddListener(delegate { UpdateTimelineSelection(); });
|
||||||
EventsManager.onStageWindowSizeChanged.AddListener(delegate { UpdateGUI(); });
|
EventsManager.onStageWindowSizeChanged.AddListener(delegate { UpdateGUI(); });
|
||||||
|
EventsManager.onAnimationStageChanged.AddListener(delegate { UpdateGUI(); });
|
||||||
|
|
||||||
UpdateTimelineSelection();
|
UpdateTimelineSelection();
|
||||||
UpdateGUI();
|
UpdateGUI();
|
||||||
|
|
|
@ -58,6 +58,8 @@ namespace RimWorldAnimationStudio
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Workspace.GetCurrentAnimationStage().ResizeStageWindow(newStageWindowSize);
|
||||||
|
|
||||||
foreach (PawnAnimationClip clip in Workspace.GetCurrentAnimationStage().AnimationClips)
|
foreach (PawnAnimationClip clip in Workspace.GetCurrentAnimationStage().AnimationClips)
|
||||||
{
|
{
|
||||||
List<PawnKeyframe> keyframes = clip.Keyframes.Where(x => x.atTick > newStageWindowSize)?.ToList();
|
List<PawnKeyframe> keyframes = clip.Keyframes.Where(x => x.atTick > newStageWindowSize)?.ToList();
|
||||||
|
@ -75,7 +77,6 @@ namespace RimWorldAnimationStudio
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Workspace.GetCurrentAnimationStage().ResizeStageWindow(newStageWindowSize);
|
|
||||||
Workspace.RecordEvent("Stage length");
|
Workspace.RecordEvent("Stage length");
|
||||||
|
|
||||||
UpdateGUI();
|
UpdateGUI();
|
||||||
|
|
|
@ -112,6 +112,7 @@ namespace RimWorldAnimationStudio
|
||||||
|
|
||||||
public void OnBeginDrag(PointerEventData eventData)
|
public void OnBeginDrag(PointerEventData eventData)
|
||||||
{
|
{
|
||||||
|
// Select key
|
||||||
Workspace.ActorID = actorID;
|
Workspace.ActorID = actorID;
|
||||||
dragTimeStart = Time.unscaledTime;
|
dragTimeStart = Time.unscaledTime;
|
||||||
dragTickStart = keyframe.atTick.Value;
|
dragTickStart = keyframe.atTick.Value;
|
||||||
|
@ -119,6 +120,12 @@ namespace RimWorldAnimationStudio
|
||||||
if (Workspace.keyframeID.NullOrEmpty() || Workspace.keyframeID.Contains(keyframeID) == false)
|
if (Workspace.keyframeID.NullOrEmpty() || Workspace.keyframeID.Contains(keyframeID) == false)
|
||||||
{ Workspace.keyframeID = new List<int> { keyframeID }; }
|
{ Workspace.keyframeID = new List<int> { keyframeID }; }
|
||||||
|
|
||||||
|
// The first key can't be moved though
|
||||||
|
if (keyframe.atTick == Constants.minTick)
|
||||||
|
{ interactable = false; return; }
|
||||||
|
|
||||||
|
interactable = true;
|
||||||
|
|
||||||
List<PawnKeyframe> selectedKeyframes = Workspace.GetPawnKeyframesByID(Workspace.keyframeID).Except(new List<PawnKeyframe>() { keyframe })?.ToList();
|
List<PawnKeyframe> selectedKeyframes = Workspace.GetPawnKeyframesByID(Workspace.keyframeID).Except(new List<PawnKeyframe>() { keyframe })?.ToList();
|
||||||
|
|
||||||
// Link other selected keyframes to the movement of this one
|
// Link other selected keyframes to the movement of this one
|
||||||
|
@ -134,6 +141,7 @@ namespace RimWorldAnimationStudio
|
||||||
|
|
||||||
if (unlinkedSlider != null)
|
if (unlinkedSlider != null)
|
||||||
{
|
{
|
||||||
|
if (selectedKeyframe.atTick == Constants.minTick) continue;
|
||||||
if (Workspace.stretchKeyframes && unlinkedSlider.keyframe.atTick == pivotKeyframe.atTick) continue;
|
if (Workspace.stretchKeyframes && unlinkedSlider.keyframe.atTick == pivotKeyframe.atTick) continue;
|
||||||
|
|
||||||
unlinkedSlider.linkedSlider = this;
|
unlinkedSlider.linkedSlider = this;
|
||||||
|
@ -147,31 +155,19 @@ namespace RimWorldAnimationStudio
|
||||||
{
|
{
|
||||||
Workspace.ActorID = actorID;
|
Workspace.ActorID = actorID;
|
||||||
|
|
||||||
// The first keyframe can't be moved
|
|
||||||
if (keyframe.atTick == Constants.minTick)
|
|
||||||
{ value = Constants.minTick; return; }
|
|
||||||
|
|
||||||
// Sticky drag
|
// Sticky drag
|
||||||
if (Time.unscaledTime - dragTimeStart < 0.05f) return;
|
if (Time.unscaledTime - dragTimeStart < 0.05f) return;
|
||||||
|
|
||||||
interactable = true;
|
|
||||||
base.OnDrag(eventData);
|
base.OnDrag(eventData);
|
||||||
|
|
||||||
// Snap to nearest keyframe (on another timeline)
|
// Snap to nearest keyframe (on another timeline)
|
||||||
int targetTick = Workspace.FindClosestKeyFrameAtTick(keyframe.atTick.Value, Mathf.CeilToInt(Workspace.StageWindowSize * 0.01f), actorID);
|
int targetTick = Workspace.FindClosestKeyFrameAtTick(keyframe.atTick.Value, Mathf.CeilToInt(Workspace.StageWindowSize * 0.01f), actorID);
|
||||||
if (Input.GetKey(KeyCode.LeftShift) && Workspace.DoesPawnKeyframeExistAtTick(Workspace.StageID, actorID, targetTick) == false)
|
if (Input.GetKey(KeyCode.LeftShift) && Workspace.DoesPawnKeyframeExistAtTick(Workspace.StageID, actorID, targetTick) == false)
|
||||||
{ value = (float)targetTick; }
|
{ value = (float)targetTick; }
|
||||||
|
|
||||||
// Prevent other frames from being moved to the first keyframe
|
|
||||||
if (value == Constants.minTick)
|
|
||||||
{ value = Constants.minTick + 1; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnEndDrag(PointerEventData eventData)
|
public void OnEndDrag(PointerEventData eventData)
|
||||||
{
|
{
|
||||||
if (keyframe.atTick == Constants.minTick)
|
|
||||||
{ value = Constants.minTick; return; }
|
|
||||||
|
|
||||||
List<PawnKeyframe> keyframesToCheck = Workspace.GetAllPawnKeyframesAtTick(actorID, keyframe.atTick.Value);
|
List<PawnKeyframe> keyframesToCheck = Workspace.GetAllPawnKeyframesAtTick(actorID, keyframe.atTick.Value);
|
||||||
if (keyframesToCheck.NotNullOrEmpty())
|
if (keyframesToCheck.NotNullOrEmpty())
|
||||||
{
|
{
|
||||||
|
@ -227,7 +223,7 @@ namespace RimWorldAnimationStudio
|
||||||
{ value = Mathf.CeilToInt(linkedSlider.keyframe.atTick.Value + linkedOffset * linkedSlider.ScaledOffsetFromPivot()); }
|
{ value = Mathf.CeilToInt(linkedSlider.keyframe.atTick.Value + linkedOffset * linkedSlider.ScaledOffsetFromPivot()); }
|
||||||
|
|
||||||
else if (Workspace.stretchKeyframes == false && linkedSlider != null)
|
else if (Workspace.stretchKeyframes == false && linkedSlider != null)
|
||||||
{ value = Mathf.Clamp(linkedSlider.keyframe.atTick.Value + linkedOffset, Constants.minTick + 1, Workspace.StageWindowSize); }
|
{ value = Mathf.Clamp(linkedSlider.keyframe.atTick.Value + linkedOffset, Constants.minTick, Workspace.StageWindowSize); }
|
||||||
|
|
||||||
else if (keyframe.atTick.Value != value)
|
else if (keyframe.atTick.Value != value)
|
||||||
{ value = keyframe.atTick.Value; }
|
{ value = keyframe.atTick.Value; }
|
||||||
|
|
|
@ -89,16 +89,19 @@ namespace RimWorldAnimationStudio
|
||||||
|
|
||||||
for (int actorID = 0; actorID < Workspace.animationDef.actors.Count; actorID++)
|
for (int actorID = 0; actorID < Workspace.animationDef.actors.Count; actorID++)
|
||||||
{
|
{
|
||||||
// Get the current actor and their animation clip
|
// Get the current actor
|
||||||
Actor actor = Workspace.GetActor(actorID);
|
Actor actor = Workspace.GetActor(actorID);
|
||||||
|
|
||||||
|
// Get their animation clip and rebuild it to ensure it is up to date
|
||||||
PawnAnimationClip clip = Workspace.GetPawnAnimationClip(actorID);
|
PawnAnimationClip clip = Workspace.GetPawnAnimationClip(actorID);
|
||||||
|
clip.BuildSimpleCurves();
|
||||||
|
|
||||||
// Get flags
|
// Get flags
|
||||||
bool quiver = Workspace.IsAnimating && Workspace.GetCurrentOrPreviousKeyframe(actorID).Quiver == true;
|
bool quiver = Workspace.IsAnimating && Workspace.GetCurrentOrPreviousKeyframe(actorID).Quiver == true;
|
||||||
bool requiresGenitals = actor.RequiredGenitals.Any(x => x == "Penis") || actor.IsFucking;
|
bool requiresGenitals = actor.RequiredGenitals.Any(x => x == "Penis") || actor.IsFucking;
|
||||||
|
|
||||||
// Get clip percentage
|
// Get clip percentage
|
||||||
float clipPercent = clip.GetStageTickPercentage();
|
float clipPercent = (float)(Workspace.StageTick % clip.duration) / clip.duration;
|
||||||
if (Workspace.StageTick > Constants.minTick && Workspace.StageTick == clip.duration) clipPercent = 1f;
|
if (Workspace.StageTick > Constants.minTick && Workspace.StageTick == clip.duration) clipPercent = 1f;
|
||||||
|
|
||||||
if (Workspace.GetCurrentAnimationStage().IsLooping == false)
|
if (Workspace.GetCurrentAnimationStage().IsLooping == false)
|
||||||
|
@ -188,7 +191,7 @@ namespace RimWorldAnimationStudio
|
||||||
// Play sounds
|
// Play sounds
|
||||||
if (Workspace.IsAnimating)
|
if (Workspace.IsAnimating)
|
||||||
{
|
{
|
||||||
PawnKeyframe keyframe = clip.keyframes.FirstOrDefault(x => x.atTick == Workspace.StageTick);
|
PawnKeyframe keyframe = clip.keyframes.FirstOrDefault(x => x.atTick == (int)(clip.duration * clipPercent));
|
||||||
|
|
||||||
if (keyframe != null && string.IsNullOrEmpty(keyframe.soundEffect) == false)
|
if (keyframe != null && string.IsNullOrEmpty(keyframe.soundEffect) == false)
|
||||||
{ actorBody.GetComponent<AudioController>().PlaySound(keyframe.soundEffect); }
|
{ actorBody.GetComponent<AudioController>().PlaySound(keyframe.soundEffect); }
|
||||||
|
|
|
@ -316,8 +316,8 @@ namespace RimWorldAnimationStudio
|
||||||
{
|
{
|
||||||
if (Workspace.animationDef == null) return;
|
if (Workspace.animationDef == null) return;
|
||||||
|
|
||||||
ActorBody actorBody = AnimationController.Instance.actorBodies.GetChild(Workspace.ActorID).GetComponent<ActorBody>();
|
ActorBody actorBody = AnimationController.Instance.actorBodies.GetComponentsInChildren<ActorBody>().FirstOrDefault(x => x.actorID == Workspace.ActorID);
|
||||||
List<ActorBodyPart> actorBodyParts = actorBody.GetComponentsInChildren<ActorBodyPart>().Where(x => x.gameObject.activeInHierarchy)?.ToList();
|
List<ActorBodyPart> actorBodyParts = actorBody?.GetComponentsInChildren<ActorBodyPart>()?.Where(x => x.gameObject.activeInHierarchy)?.ToList();
|
||||||
|
|
||||||
if (actorBodyParts.NullOrEmpty()) return;
|
if (actorBodyParts.NullOrEmpty()) return;
|
||||||
|
|
||||||
|
|
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.
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.
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.
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.
|
@ -112,10 +112,10 @@ MonoBehaviour:
|
||||||
y: 30
|
y: 30
|
||||||
width: 1920
|
width: 1920
|
||||||
height: 947
|
height: 947
|
||||||
m_MinSize: {x: 679, y: 492}
|
m_MinSize: {x: 677, y: 492}
|
||||||
m_MaxSize: {x: 14002, y: 14042}
|
m_MaxSize: {x: 14001, y: 14042}
|
||||||
vertical: 0
|
vertical: 0
|
||||||
controlID: 2473
|
controlID: 3533
|
||||||
--- !u!114 &6
|
--- !u!114 &6
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 52
|
m_ObjectHideFlags: 52
|
||||||
|
@ -137,10 +137,10 @@ MonoBehaviour:
|
||||||
y: 0
|
y: 0
|
||||||
width: 1414
|
width: 1414
|
||||||
height: 947
|
height: 947
|
||||||
m_MinSize: {x: 403, y: 492}
|
m_MinSize: {x: 402, y: 492}
|
||||||
m_MaxSize: {x: 10001, y: 14042}
|
m_MaxSize: {x: 10001, y: 14042}
|
||||||
vertical: 1
|
vertical: 1
|
||||||
controlID: 2478
|
controlID: 3534
|
||||||
--- !u!114 &7
|
--- !u!114 &7
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 52
|
m_ObjectHideFlags: 52
|
||||||
|
@ -162,10 +162,10 @@ MonoBehaviour:
|
||||||
y: 0
|
y: 0
|
||||||
width: 1414
|
width: 1414
|
||||||
height: 671
|
height: 671
|
||||||
m_MinSize: {x: 403, y: 221}
|
m_MinSize: {x: 402, y: 221}
|
||||||
m_MaxSize: {x: 8003, y: 4021}
|
m_MaxSize: {x: 8002, y: 4021}
|
||||||
vertical: 0
|
vertical: 0
|
||||||
controlID: 2479
|
controlID: 3535
|
||||||
--- !u!114 &8
|
--- !u!114 &8
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 52
|
m_ObjectHideFlags: 52
|
||||||
|
@ -398,7 +398,7 @@ MonoBehaviour:
|
||||||
scrollPos: {x: 0, y: 0}
|
scrollPos: {x: 0, y: 0}
|
||||||
m_SelectedIDs:
|
m_SelectedIDs:
|
||||||
m_LastClickedID: 0
|
m_LastClickedID: 0
|
||||||
m_ExpandedIDs: 28a2feff3ca2feffe2a2feff62fbffff7a3d0000a83d000010410000b4420000
|
m_ExpandedIDs: 74a0fcff88a0fcff2ea1fcff4cfbffffbc420000
|
||||||
m_RenameOverlay:
|
m_RenameOverlay:
|
||||||
m_UserAcceptedRename: 0
|
m_UserAcceptedRename: 0
|
||||||
m_Name:
|
m_Name:
|
||||||
|
@ -1115,9 +1115,9 @@ MonoBehaviour:
|
||||||
m_IsLocked: 0
|
m_IsLocked: 0
|
||||||
m_FolderTreeState:
|
m_FolderTreeState:
|
||||||
scrollPos: {x: 0, y: 143}
|
scrollPos: {x: 0, y: 143}
|
||||||
m_SelectedIDs: 464e0000
|
m_SelectedIDs: 4e4e0000
|
||||||
m_LastClickedID: 20038
|
m_LastClickedID: 20046
|
||||||
m_ExpandedIDs: 000000003a4e00003c4e00003e4e0000404e0000424e0000444e0000464e0000484e00004a4e00004c4e00004e4e0000504e000000ca9a3b
|
m_ExpandedIDs: 00000000424e0000444e0000464e0000484e00004a4e00004c4e00004e4e0000504e0000524e0000544e0000564e0000584e000000ca9a3b
|
||||||
m_RenameOverlay:
|
m_RenameOverlay:
|
||||||
m_UserAcceptedRename: 0
|
m_UserAcceptedRename: 0
|
||||||
m_Name:
|
m_Name:
|
||||||
|
@ -1145,7 +1145,7 @@ MonoBehaviour:
|
||||||
scrollPos: {x: 0, y: 0}
|
scrollPos: {x: 0, y: 0}
|
||||||
m_SelectedIDs:
|
m_SelectedIDs:
|
||||||
m_LastClickedID: 0
|
m_LastClickedID: 0
|
||||||
m_ExpandedIDs: 000000003a4e00003c4e00003e4e0000404e0000424e0000444e0000464e0000484e00004a4e00004c4e00004e4e0000504e000000ca9a3b
|
m_ExpandedIDs: 00000000424e0000444e0000464e0000484e00004a4e00004c4e00004e4e0000504e0000524e0000544e0000564e0000584e000000ca9a3b
|
||||||
m_RenameOverlay:
|
m_RenameOverlay:
|
||||||
m_UserAcceptedRename: 0
|
m_UserAcceptedRename: 0
|
||||||
m_Name:
|
m_Name:
|
||||||
|
@ -1295,4 +1295,4 @@ MonoBehaviour:
|
||||||
m_PrefName: Preview_InspectorPreview
|
m_PrefName: Preview_InspectorPreview
|
||||||
m_PreviewWindow: {fileID: 0}
|
m_PreviewWindow: {fileID: 0}
|
||||||
m_LastInspectedObjectInstanceID: -1
|
m_LastInspectedObjectInstanceID: -1
|
||||||
m_LastVerticalScrollValue: 100
|
m_LastVerticalScrollValue: 0
|
||||||
|
|
|
@ -21,10 +21,10 @@ MonoBehaviour:
|
||||||
y: 30
|
y: 30
|
||||||
width: 1920
|
width: 1920
|
||||||
height: 947
|
height: 947
|
||||||
m_MinSize: {x: 679, y: 492}
|
m_MinSize: {x: 677, y: 492}
|
||||||
m_MaxSize: {x: 14002, y: 14042}
|
m_MaxSize: {x: 14001, y: 14042}
|
||||||
vertical: 0
|
vertical: 0
|
||||||
controlID: 2139
|
controlID: 3438
|
||||||
--- !u!114 &2
|
--- !u!114 &2
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 52
|
m_ObjectHideFlags: 52
|
||||||
|
@ -138,10 +138,10 @@ MonoBehaviour:
|
||||||
y: 0
|
y: 0
|
||||||
width: 1414
|
width: 1414
|
||||||
height: 947
|
height: 947
|
||||||
m_MinSize: {x: 403, y: 492}
|
m_MinSize: {x: 402, y: 492}
|
||||||
m_MaxSize: {x: 10001, y: 14042}
|
m_MaxSize: {x: 10001, y: 14042}
|
||||||
vertical: 1
|
vertical: 1
|
||||||
controlID: 2140
|
controlID: 3439
|
||||||
--- !u!114 &4
|
--- !u!114 &4
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 52
|
m_ObjectHideFlags: 52
|
||||||
|
@ -163,10 +163,10 @@ MonoBehaviour:
|
||||||
y: 0
|
y: 0
|
||||||
width: 1414
|
width: 1414
|
||||||
height: 671
|
height: 671
|
||||||
m_MinSize: {x: 403, y: 221}
|
m_MinSize: {x: 402, y: 221}
|
||||||
m_MaxSize: {x: 8003, y: 4021}
|
m_MaxSize: {x: 8002, y: 4021}
|
||||||
vertical: 0
|
vertical: 0
|
||||||
controlID: 2141
|
controlID: 3440
|
||||||
--- !u!114 &5
|
--- !u!114 &5
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 52
|
m_ObjectHideFlags: 52
|
||||||
|
@ -186,8 +186,8 @@ MonoBehaviour:
|
||||||
y: 0
|
y: 0
|
||||||
width: 337
|
width: 337
|
||||||
height: 671
|
height: 671
|
||||||
m_MinSize: {x: 201, y: 221}
|
m_MinSize: {x: 200, y: 200}
|
||||||
m_MaxSize: {x: 4001, y: 4021}
|
m_MaxSize: {x: 4000, y: 4000}
|
||||||
m_ActualView: {fileID: 6}
|
m_ActualView: {fileID: 6}
|
||||||
m_Panes:
|
m_Panes:
|
||||||
- {fileID: 6}
|
- {fileID: 6}
|
||||||
|
@ -224,7 +224,7 @@ MonoBehaviour:
|
||||||
scrollPos: {x: 0, y: 0}
|
scrollPos: {x: 0, y: 0}
|
||||||
m_SelectedIDs:
|
m_SelectedIDs:
|
||||||
m_LastClickedID: 0
|
m_LastClickedID: 0
|
||||||
m_ExpandedIDs: 62fbffff7a3d0000a83d000010410000b4420000
|
m_ExpandedIDs: 4cfbffffbc420000
|
||||||
m_RenameOverlay:
|
m_RenameOverlay:
|
||||||
m_UserAcceptedRename: 0
|
m_UserAcceptedRename: 0
|
||||||
m_Name:
|
m_Name:
|
||||||
|
@ -939,8 +939,8 @@ MonoBehaviour:
|
||||||
y: 671
|
y: 671
|
||||||
width: 1414
|
width: 1414
|
||||||
height: 276
|
height: 276
|
||||||
m_MinSize: {x: 231, y: 271}
|
m_MinSize: {x: 230, y: 250}
|
||||||
m_MaxSize: {x: 10001, y: 10021}
|
m_MaxSize: {x: 10000, y: 10000}
|
||||||
m_ActualView: {fileID: 12}
|
m_ActualView: {fileID: 12}
|
||||||
m_Panes:
|
m_Panes:
|
||||||
- {fileID: 12}
|
- {fileID: 12}
|
||||||
|
@ -998,9 +998,9 @@ MonoBehaviour:
|
||||||
m_IsLocked: 0
|
m_IsLocked: 0
|
||||||
m_FolderTreeState:
|
m_FolderTreeState:
|
||||||
scrollPos: {x: 0, y: 143}
|
scrollPos: {x: 0, y: 143}
|
||||||
m_SelectedIDs: 464e0000
|
m_SelectedIDs: 4e4e0000
|
||||||
m_LastClickedID: 20038
|
m_LastClickedID: 20046
|
||||||
m_ExpandedIDs: 000000003a4e00003c4e00003e4e0000404e0000424e0000444e0000464e0000484e00004a4e00004c4e00004e4e0000504e000000ca9a3b
|
m_ExpandedIDs: 00000000424e0000444e0000464e0000484e00004a4e00004c4e00004e4e0000504e0000524e0000544e0000564e0000584e000000ca9a3b
|
||||||
m_RenameOverlay:
|
m_RenameOverlay:
|
||||||
m_UserAcceptedRename: 0
|
m_UserAcceptedRename: 0
|
||||||
m_Name:
|
m_Name:
|
||||||
|
@ -1028,7 +1028,7 @@ MonoBehaviour:
|
||||||
scrollPos: {x: 0, y: 0}
|
scrollPos: {x: 0, y: 0}
|
||||||
m_SelectedIDs:
|
m_SelectedIDs:
|
||||||
m_LastClickedID: 0
|
m_LastClickedID: 0
|
||||||
m_ExpandedIDs: 000000003a4e00003c4e00003e4e0000404e0000424e0000444e0000464e0000484e00004a4e00004c4e00004e4e0000504e000000ca9a3b
|
m_ExpandedIDs: 00000000424e0000444e0000464e0000484e00004a4e00004c4e00004e4e0000504e0000524e0000544e0000564e0000584e000000ca9a3b
|
||||||
m_RenameOverlay:
|
m_RenameOverlay:
|
||||||
m_UserAcceptedRename: 0
|
m_UserAcceptedRename: 0
|
||||||
m_Name:
|
m_Name:
|
||||||
|
@ -1053,8 +1053,8 @@ MonoBehaviour:
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_ResourceFile:
|
m_ResourceFile:
|
||||||
m_ListAreaState:
|
m_ListAreaState:
|
||||||
m_SelectedInstanceIDs: ec440000
|
m_SelectedInstanceIDs:
|
||||||
m_LastClickedInstanceID: 17644
|
m_LastClickedInstanceID: 0
|
||||||
m_HadKeyboardFocusLastEvent: 0
|
m_HadKeyboardFocusLastEvent: 0
|
||||||
m_ExpandedInstanceIDs: c6230000303a0000063a0000a83d00005c66000000870000f8860000004a00004a4600000c430000004900007e9800000249000086980000000000007a140100
|
m_ExpandedInstanceIDs: c6230000303a0000063a0000a83d00005c66000000870000f8860000004a00004a4600000c430000004900007e9800000249000086980000000000007a140100
|
||||||
m_RenameOverlay:
|
m_RenameOverlay:
|
||||||
|
@ -1203,5 +1203,5 @@ MonoBehaviour:
|
||||||
m_ControlHash: -371814159
|
m_ControlHash: -371814159
|
||||||
m_PrefName: Preview_InspectorPreview
|
m_PrefName: Preview_InspectorPreview
|
||||||
m_PreviewWindow: {fileID: 0}
|
m_PreviewWindow: {fileID: 0}
|
||||||
m_LastInspectedObjectInstanceID: 17644
|
m_LastInspectedObjectInstanceID: -1
|
||||||
m_LastVerticalScrollValue: 100
|
m_LastVerticalScrollValue: 0
|
||||||
|
|
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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -130,129 +130,129 @@ ScriptsOnlyBuild:
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 11264}
|
Script: {instanceID: 11264}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 11268}
|
Script: {instanceID: 11270}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 11292}
|
Script: {instanceID: 11294}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 11450}
|
Script: {instanceID: 11452}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 11504}
|
Script: {instanceID: 11506}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 11580}
|
Script: {instanceID: 11582}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 11592}
|
Script: {instanceID: 11594}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 11606}
|
Script: {instanceID: 11608}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 11660}
|
Script: {instanceID: 11662}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 11734}
|
Script: {instanceID: 11736}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 11760}
|
Script: {instanceID: 11762}
|
||||||
- Class: 114
|
|
||||||
Script: {instanceID: 11764}
|
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 11766}
|
Script: {instanceID: 11766}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 11774}
|
Script: {instanceID: 11768}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 11784}
|
Script: {instanceID: 11776}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 11806}
|
Script: {instanceID: 11786}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 11870}
|
Script: {instanceID: 11808}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 11876}
|
Script: {instanceID: 11872}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 12144}
|
Script: {instanceID: 11878}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 12180}
|
Script: {instanceID: 12146}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 12324}
|
Script: {instanceID: 12182}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 12348}
|
Script: {instanceID: 12326}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 12364}
|
Script: {instanceID: 12350}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 12434}
|
Script: {instanceID: 12366}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 12614}
|
Script: {instanceID: 12436}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 12638}
|
Script: {instanceID: 12616}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 12756}
|
Script: {instanceID: 12640}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 12880}
|
Script: {instanceID: 12758}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 12924}
|
Script: {instanceID: 12882}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13174}
|
Script: {instanceID: 12926}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13200}
|
Script: {instanceID: 13176}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13240}
|
Script: {instanceID: 13202}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13250}
|
Script: {instanceID: 13242}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13260}
|
Script: {instanceID: 13252}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13270}
|
Script: {instanceID: 13262}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13372}
|
Script: {instanceID: 13272}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13390}
|
Script: {instanceID: 13374}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13392}
|
Script: {instanceID: 13392}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13426}
|
Script: {instanceID: 13394}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13466}
|
Script: {instanceID: 13428}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13482}
|
Script: {instanceID: 13468}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13498}
|
Script: {instanceID: 13484}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13510}
|
Script: {instanceID: 13500}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13514}
|
Script: {instanceID: 13512}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13550}
|
Script: {instanceID: 13516}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13682}
|
Script: {instanceID: 13552}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13708}
|
Script: {instanceID: 13684}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13840}
|
Script: {instanceID: 13710}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13914}
|
Script: {instanceID: 13842}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 13918}
|
Script: {instanceID: 13916}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 14046}
|
Script: {instanceID: 13920}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 14110}
|
Script: {instanceID: 14048}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 14206}
|
Script: {instanceID: 14112}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 14356}
|
Script: {instanceID: 14208}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 14504}
|
Script: {instanceID: 14358}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 14530}
|
Script: {instanceID: 14506}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 14532}
|
Script: {instanceID: 14532}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 14564}
|
Script: {instanceID: 14534}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 14586}
|
Script: {instanceID: 14566}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 14588}
|
Script: {instanceID: 14588}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 14628}
|
Script: {instanceID: 14590}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 14634}
|
Script: {instanceID: 14630}
|
||||||
- Class: 114
|
- Class: 114
|
||||||
Script: {instanceID: 14676}
|
Script: {instanceID: 14636}
|
||||||
|
- Class: 114
|
||||||
|
Script: {instanceID: 14678}
|
||||||
- Class: 115
|
- Class: 115
|
||||||
Script: {instanceID: 0}
|
Script: {instanceID: 0}
|
||||||
- Class: 128
|
- Class: 128
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,2 +1,4 @@
|
||||||
Base path: 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data', plugins path 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/PlaybackEngines'
|
Base path: 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data', plugins path 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/PlaybackEngines'
|
||||||
Cmd: initializeCompiler
|
Cmd: initializeCompiler
|
||||||
|
|
||||||
|
Quitting shader compiler process
|
||||||
|
|
|
@ -1,2 +1,4 @@
|
||||||
Base path: 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data', plugins path 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/PlaybackEngines'
|
Base path: 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data', plugins path 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/PlaybackEngines'
|
||||||
Cmd: initializeCompiler
|
Cmd: initializeCompiler
|
||||||
|
|
||||||
|
Quitting shader compiler process
|
||||||
|
|
|
@ -1,2 +1,4 @@
|
||||||
Base path: 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data', plugins path 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/PlaybackEngines'
|
Base path: 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data', plugins path 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/PlaybackEngines'
|
||||||
Cmd: initializeCompiler
|
Cmd: initializeCompiler
|
||||||
|
|
||||||
|
Quitting shader compiler process
|
||||||
|
|
|
@ -1,2 +1,4 @@
|
||||||
Base path: 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data', plugins path 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/PlaybackEngines'
|
Base path: 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data', plugins path 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/PlaybackEngines'
|
||||||
Cmd: initializeCompiler
|
Cmd: initializeCompiler
|
||||||
|
|
||||||
|
Quitting shader compiler process
|
||||||
|
|
|
@ -1,2 +1,4 @@
|
||||||
Base path: 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data', plugins path 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/PlaybackEngines'
|
Base path: 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data', plugins path 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/PlaybackEngines'
|
||||||
Cmd: initializeCompiler
|
Cmd: initializeCompiler
|
||||||
|
|
||||||
|
Quitting shader compiler process
|
||||||
|
|
|
@ -1,2 +1,4 @@
|
||||||
Base path: 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data', plugins path 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/PlaybackEngines'
|
Base path: 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data', plugins path 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/PlaybackEngines'
|
||||||
Cmd: initializeCompiler
|
Cmd: initializeCompiler
|
||||||
|
|
||||||
|
Quitting shader compiler process
|
||||||
|
|
|
@ -1,2 +1,4 @@
|
||||||
Base path: 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data', plugins path 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/PlaybackEngines'
|
Base path: 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data', plugins path 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/PlaybackEngines'
|
||||||
Cmd: initializeCompiler
|
Cmd: initializeCompiler
|
||||||
|
|
||||||
|
Quitting shader compiler process
|
||||||
|
|
|
@ -1,2 +1,4 @@
|
||||||
Base path: 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data', plugins path 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/PlaybackEngines'
|
Base path: 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data', plugins path 'C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/PlaybackEngines'
|
||||||
Cmd: initializeCompiler
|
Cmd: initializeCompiler
|
||||||
|
|
||||||
|
Quitting shader compiler process
|
||||||
|
|
Loading…
Reference in New Issue