增加update0

This commit is contained in:
ww-rm
2025-03-27 09:09:22 +08:00
parent 239847aee7
commit a372a89b5e
7 changed files with 31 additions and 56 deletions

View File

@@ -149,19 +149,20 @@ namespace SpineViewer.Spine.Implementations.Spine
{
skeleton.X = value.X;
skeleton.Y = value.Y;
Update(0);
}
}
public override bool FlipX
{
get => skeleton.FlipX;
set => skeleton.FlipX = value;
set { skeleton.FlipX = value; Update(0); }
}
public override bool FlipY
{
get => skeleton.FlipY;
set => skeleton.FlipY = value;
set { skeleton.FlipY = value; Update(0); }
}
public override string CurrentAnimation

View File

@@ -148,19 +148,20 @@ namespace SpineViewer.Spine.Implementations.Spine
{
skeleton.X = value.X;
skeleton.Y = value.Y;
Update(0);
}
}
public override bool FlipX
{
get => skeleton.FlipX;
set => skeleton.FlipX = value;
set { skeleton.FlipX = value; Update(0); }
}
public override bool FlipY
{
get => skeleton.FlipY;
set => skeleton.FlipY = value;
set { skeleton.FlipY = value; Update(0); }
}
public override string CurrentAnimation

View File

@@ -95,58 +95,12 @@ namespace SpineViewer.Spine.Implementations.Spine
public override float Scale
{
get
{
if (skeletonBinary is not null)
return skeletonBinary.Scale;
else if (skeletonJson is not null)
return skeletonJson.Scale;
else
return 1f;
}
get => Math.Abs(skeleton.ScaleX);
set
{
// 保存状态
var position = Position;
var flipX = FlipX;
var flipY = FlipY;
var savedTrack0 = animationState.GetCurrent(0);
var val = Math.Max(value, SCALE_MIN);
if (skeletonBinary is not null)
{
skeletonBinary.Scale = val;
skeletonData = skeletonBinary.ReadSkeletonData(SkelPath);
}
else if (skeletonJson is not null)
{
skeletonJson.Scale = val;
skeletonData = skeletonJson.ReadSkeletonData(SkelPath);
}
// reload skel-dependent data
animationStateData = new AnimationStateData(skeletonData) { DefaultMix = animationStateData.DefaultMix };
skeleton = new Skeleton(skeletonData);
animationState = new AnimationState(animationStateData);
// 恢复状态
Position = position;
FlipX = flipX;
FlipY = flipY;
// 恢复原本 Track0 上所有动画
if (savedTrack0 is not null)
{
var entry = animationState.SetAnimation(0, savedTrack0.Animation.Name, true);
entry.TrackTime = savedTrack0.TrackTime;
var savedEntry = savedTrack0.Next;
while (savedEntry is not null)
{
entry = animationState.AddAnimation(0, savedEntry.Animation.Name, true, 0);
entry.TrackTime = savedEntry.TrackTime;
savedEntry = savedEntry.Next;
}
}
skeleton.ScaleX = Math.Sign(skeleton.ScaleX) * value;
skeleton.ScaleY = Math.Sign(skeleton.ScaleY) * value;
Update(0);
}
}
@@ -157,6 +111,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
skeleton.X = value.X;
skeleton.Y = value.Y;
Update(0);
}
}
@@ -167,6 +122,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
if (skeleton.ScaleX > 0 && value || skeleton.ScaleX < 0 && !value)
skeleton.ScaleX *= -1;
Update(0);
}
}
@@ -177,6 +133,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
if (skeleton.ScaleY > 0 && value || skeleton.ScaleY < 0 && !value)
skeleton.ScaleY *= -1;
Update(0);
}
}

View File

@@ -106,6 +106,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
skeleton.ScaleX = Math.Sign(skeleton.ScaleX) * value;
skeleton.ScaleY = Math.Sign(skeleton.ScaleY) * value;
Update(0);
}
}
@@ -116,6 +117,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
skeleton.X = value.X;
skeleton.Y = value.Y;
Update(0);
}
}
@@ -126,6 +128,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
if (skeleton.ScaleX > 0 && value || skeleton.ScaleX < 0 && !value)
skeleton.ScaleX *= -1;
Update(0);
}
}
@@ -136,6 +139,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
if (skeleton.ScaleY > 0 && value || skeleton.ScaleY < 0 && !value)
skeleton.ScaleY *= -1;
Update(0);
}
}

View File

@@ -102,6 +102,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
skeleton.ScaleX = Math.Sign(skeleton.ScaleX) * value;
skeleton.ScaleY = Math.Sign(skeleton.ScaleY) * value;
Update(0);
}
}
@@ -112,6 +113,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
skeleton.X = value.X;
skeleton.Y = value.Y;
Update(0);
}
}
@@ -122,6 +124,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
if (skeleton.ScaleX > 0 && value || skeleton.ScaleX < 0 && !value)
skeleton.ScaleX *= -1;
Update(0);
}
}
@@ -132,6 +135,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
if (skeleton.ScaleY > 0 && value || skeleton.ScaleY < 0 && !value)
skeleton.ScaleY *= -1;
Update(0);
}
}

View File

@@ -102,6 +102,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
skeleton.ScaleX = Math.Sign(skeleton.ScaleX) * value;
skeleton.ScaleY = Math.Sign(skeleton.ScaleY) * value;
Update(0);
}
}
@@ -112,6 +113,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
skeleton.X = value.X;
skeleton.Y = value.Y;
Update(0);
}
}
@@ -122,6 +124,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
if (skeleton.ScaleX > 0 && value || skeleton.ScaleX < 0 && !value)
skeleton.ScaleX *= -1;
Update(0);
}
}
@@ -132,6 +135,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
if (skeleton.ScaleY > 0 && value || skeleton.ScaleY < 0 && !value)
skeleton.ScaleY *= -1;
Update(0);
}
}

View File

@@ -102,6 +102,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
skeleton.ScaleX = Math.Sign(skeleton.ScaleX) * value;
skeleton.ScaleY = Math.Sign(skeleton.ScaleY) * value;
Update(0);
}
}
@@ -112,6 +113,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
skeleton.X = value.X;
skeleton.Y = value.Y;
Update(0);
}
}
@@ -122,6 +124,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
if (skeleton.ScaleX > 0 && value || skeleton.ScaleX < 0 && !value)
skeleton.ScaleX *= -1;
Update(0);
}
}
@@ -132,6 +135,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{
if (skeleton.ScaleY > 0 && value || skeleton.ScaleY < 0 && !value)
skeleton.ScaleY *= -1;
Update(0);
}
}