From 33a00182ffdb77c56489f6b401b9b1a874820f83 Mon Sep 17 00:00:00 2001 From: badlogic Date: Fri, 10 Nov 2017 11:10:29 +0100 Subject: [PATCH 1/2] [ue4] Need to temporarily disable queue draining of animation state when setting or adding new animations. Closes #1037 --- .../Private/SpineSkeletonAnimationComponent.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonAnimationComponent.cpp b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonAnimationComponent.cpp index 927920bcb..a575af97d 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonAnimationComponent.cpp +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonAnimationComponent.cpp @@ -150,10 +150,18 @@ float USpineSkeletonAnimationComponent::GetTimeScale() { return 1; } +// we need to disable the queue when setting or adding animations, see #1037 +extern "C" { + void _spAnimationState_disableQueue(spAnimationState* state); + void _spAnimationState_enableQueue(spAnimationState* state); +} + UTrackEntry* USpineSkeletonAnimationComponent::SetAnimation (int trackIndex, FString animationName, bool loop) { CheckState(); if (state && spSkeletonData_findAnimation(skeleton->data, TCHAR_TO_UTF8(*animationName))) { + _spAnimationState_disableQueue(state); spTrackEntry* entry = spAnimationState_setAnimationByName(state, trackIndex, TCHAR_TO_UTF8(*animationName), loop ? 1 : 0); + _spAnimationState_enableQueue(state); UTrackEntry* uEntry = NewObject(); uEntry->SetTrackEntry(entry); trackEntries.Add(uEntry); @@ -165,7 +173,9 @@ UTrackEntry* USpineSkeletonAnimationComponent::SetAnimation (int trackIndex, FSt UTrackEntry* USpineSkeletonAnimationComponent::AddAnimation (int trackIndex, FString animationName, bool loop, float delay) { CheckState(); if (state && spSkeletonData_findAnimation(skeleton->data, TCHAR_TO_UTF8(*animationName))) { + _spAnimationState_disableQueue(state); spTrackEntry* entry = spAnimationState_addAnimationByName(state, trackIndex, TCHAR_TO_UTF8(*animationName), loop ? 1 : 0, delay); + _spAnimationState_enableQueue(state); UTrackEntry* uEntry = NewObject(); uEntry->SetTrackEntry(entry); trackEntries.Add(uEntry); From 843159b6c31a09bc447f82002e32de8dcc43e7e6 Mon Sep 17 00:00:00 2001 From: badlogic Date: Fri, 10 Nov 2017 11:27:23 +0100 Subject: [PATCH 2/2] [cocos2dx] Updated Android.mk. Closes #1036 --- .../example/proj.android/jni/Android.mk | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/spine-cocos2dx/example/proj.android/jni/Android.mk b/spine-cocos2dx/example/proj.android/jni/Android.mk index 876195d72..28e4d5739 100755 --- a/spine-cocos2dx/example/proj.android/jni/Android.mk +++ b/spine-cocos2dx/example/proj.android/jni/Android.mk @@ -12,21 +12,26 @@ LOCAL_MODULE := MyGame_shared LOCAL_MODULE_FILENAME := libMyGame LOCAL_SRC_FILES := hellocpp/main.cpp \ - ../../Classes/AppDelegate.cpp \ - ../../Classes/BatchingExample.cpp \ - ../../Classes/GoblinsExample.cpp \ - ../../Classes/RaptorExample.cpp \ - ../../Classes/SimpleCommand.cpp \ - ../../Classes/SpineboyExample.cpp \ - ../../Classes/TankExample.cpp \ - ../../../src/spine/AttachmentVertices.cpp \ - ../../../src/spine/Cocos2dAttachmentLoader.cpp \ - ../../../src/spine/SkeletonAnimation.cpp \ - ../../../src/spine/SkeletonBatch.cpp \ - ../../../src/spine/SkeletonTwoColorBatch.cpp \ - ../../../src/spine/SkeletonRenderer.cpp \ - ../../../src/spine/spine-cocos2dx.cpp \ - ../../../../spine-c/spine-c/src/spine/Animation.c \ + ../../Classes/AppDelegate.cpp \ + ../../Classes/BatchingExample.cpp \ + ../../Classes/GoblinsExample.cpp \ + ../../Classes/RaptorExample.cpp \ + ../../Classes/SimpleCommand.cpp \ + ../../Classes/SpineboyExample.cpp \ + ../../Classes/CoinExample.cpp \ + ../../Classes/TankExample.cpp \ + ../../../src/spine/AttachmentVertices.cpp \ + ../../../src/spine/Cocos2dAttachmentLoader.cpp \ + ../../../src/spine/SkeletonAnimation.cpp \ + ../../../src/spine/SkeletonBatch.cpp \ + ../../../src/spine/SkeletonTwoColorBatch.cpp \ + ../../../src/spine/SkeletonRenderer.cpp \ + ../../../src/spine/spine-cocos2dx.cpp \ + ../../../../spine-c/spine-c/src/spine/Animation.c \ + ../../../../spine-c/spine-c/src/spine/ClippingAttachment.c \ + ../../../../spine-c/spine-c/src/spine/SkeletonClipping.c \ + ../../../../spine-c/spine-c/src/spine/Triangulator.c \ + ../../../../spine-c/spine-c/src/spine/Array.c \ ../../../../spine-c/spine-c/src/spine/AnimationState.c \ ../../../../spine-c/spine-c/src/spine/AnimationStateData.c \ ../../../../spine-c/spine-c/src/spine/Atlas.c \