增加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.X = value.X;
skeleton.Y = value.Y; skeleton.Y = value.Y;
Update(0);
} }
} }
public override bool FlipX public override bool FlipX
{ {
get => skeleton.FlipX; get => skeleton.FlipX;
set => skeleton.FlipX = value; set { skeleton.FlipX = value; Update(0); }
} }
public override bool FlipY public override bool FlipY
{ {
get => skeleton.FlipY; get => skeleton.FlipY;
set => skeleton.FlipY = value; set { skeleton.FlipY = value; Update(0); }
} }
public override string CurrentAnimation public override string CurrentAnimation

View File

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

View File

@@ -95,58 +95,12 @@ namespace SpineViewer.Spine.Implementations.Spine
public override float Scale public override float Scale
{ {
get get => Math.Abs(skeleton.ScaleX);
{
if (skeletonBinary is not null)
return skeletonBinary.Scale;
else if (skeletonJson is not null)
return skeletonJson.Scale;
else
return 1f;
}
set set
{ {
// 保存状态 skeleton.ScaleX = Math.Sign(skeleton.ScaleX) * value;
var position = Position; skeleton.ScaleY = Math.Sign(skeleton.ScaleY) * value;
var flipX = FlipX; Update(0);
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;
}
}
} }
} }
@@ -157,6 +111,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{ {
skeleton.X = value.X; skeleton.X = value.X;
skeleton.Y = value.Y; skeleton.Y = value.Y;
Update(0);
} }
} }
@@ -167,6 +122,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{ {
if (skeleton.ScaleX > 0 && value || skeleton.ScaleX < 0 && !value) if (skeleton.ScaleX > 0 && value || skeleton.ScaleX < 0 && !value)
skeleton.ScaleX *= -1; skeleton.ScaleX *= -1;
Update(0);
} }
} }
@@ -177,6 +133,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{ {
if (skeleton.ScaleY > 0 && value || skeleton.ScaleY < 0 && !value) if (skeleton.ScaleY > 0 && value || skeleton.ScaleY < 0 && !value)
skeleton.ScaleY *= -1; skeleton.ScaleY *= -1;
Update(0);
} }
} }

View File

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

View File

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

View File

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

View File

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