This commit is contained in:
badlogic 2019-03-08 16:38:19 +01:00
commit bd4a7328a5
4 changed files with 18 additions and 16 deletions

View File

@ -89,23 +89,25 @@ void USpineSkeletonAnimationComponent::BeginPlay() {
void USpineSkeletonAnimationComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) { void USpineSkeletonAnimationComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) {
Super::Super::TickComponent(DeltaTime, TickType, ThisTickFunction); Super::Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
InternalTick(DeltaTime); InternalTick(DeltaTime, true, TickType == LEVELTICK_ViewportsOnly);
} }
void USpineSkeletonAnimationComponent::InternalTick(float DeltaTime, bool CallDelegates) { void USpineSkeletonAnimationComponent::InternalTick(float DeltaTime, bool CallDelegates, bool Preview) {
CheckState(); CheckState();
if (state && bAutoPlaying) { if (state && bAutoPlaying) {
if (lastPreviewAnimation != PreviewAnimation) { if (Preview) {
if (PreviewAnimation != "") SetAnimation(0, PreviewAnimation, true); if (lastPreviewAnimation != PreviewAnimation) {
else SetEmptyAnimation(0, 0); if (PreviewAnimation != "") SetAnimation(0, PreviewAnimation, true);
lastPreviewAnimation = PreviewAnimation; else SetEmptyAnimation(0, 0);
} lastPreviewAnimation = PreviewAnimation;
}
if (lastPreviewSkin != PreviewSkin) { if (lastPreviewSkin != PreviewSkin) {
if (PreviewSkin != "") SetSkin(PreviewSkin); if (PreviewSkin != "") SetSkin(PreviewSkin);
else SetSkin("default"); else SetSkin("default");
lastPreviewSkin = PreviewSkin; lastPreviewSkin = PreviewSkin;
}
} }
state->update(DeltaTime); state->update(DeltaTime);
state->apply(*skeleton); state->apply(*skeleton);

View File

@ -258,7 +258,7 @@ void USpineSkeletonComponent::TickComponent (float DeltaTime, ELevelTick TickTyp
InternalTick(DeltaTime); InternalTick(DeltaTime);
} }
void USpineSkeletonComponent::InternalTick(float DeltaTime, bool CallDelegates) { void USpineSkeletonComponent::InternalTick(float DeltaTime, bool CallDelegates, bool Preview) {
CheckState(); CheckState();
if (skeleton) { if (skeleton) {

View File

@ -260,10 +260,10 @@ public:
UPROPERTY(BlueprintAssignable, Category="Components|Spine|Animation") UPROPERTY(BlueprintAssignable, Category="Components|Spine|Animation")
FSpineAnimationDisposeDelegate AnimationDispose; FSpineAnimationDisposeDelegate AnimationDispose;
UPROPERTY(Transient, EditAnywhere, Category=Spine) UPROPERTY(EditAnywhere, Category=Spine)
FString PreviewAnimation; FString PreviewAnimation;
UPROPERTY(Transient, EditAnywhere, Category=Spine) UPROPERTY(EditAnywhere, Category=Spine)
FString PreviewSkin; FString PreviewSkin;
// used in C event callback. Needs to be public as we can't call // used in C event callback. Needs to be public as we can't call
@ -271,7 +271,7 @@ public:
void GCTrackEntry(UTrackEntry* entry) { trackEntries.Remove(entry); } void GCTrackEntry(UTrackEntry* entry) { trackEntries.Remove(entry); }
protected: protected:
virtual void CheckState () override; virtual void CheckState () override;
virtual void InternalTick(float DeltaTime, bool CallDelegates = true) override; virtual void InternalTick(float DeltaTime, bool CallDelegates = true, bool Preview = false) override;
virtual void DisposeState () override; virtual void DisposeState () override;
spine::AnimationState* state; spine::AnimationState* state;

View File

@ -133,7 +133,7 @@ public:
protected: protected:
virtual void CheckState (); virtual void CheckState ();
virtual void InternalTick(float DeltaTime, bool CallDelegates = true); virtual void InternalTick(float DeltaTime, bool CallDelegates = true, bool Preview = false);
virtual void DisposeState (); virtual void DisposeState ();
spine::Skeleton* skeleton; spine::Skeleton* skeleton;