From 34e50f74d5d213a7b665cffa50616244083ad8f8 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 10 Nov 2022 11:49:36 +0100 Subject: [PATCH 1/2] [cocos2d-objc] Ensure skeleton/state are updated once before rendering the first frame. --- spine-cocos2d-objc/src/spine/SkeletonAnimation.h | 1 + spine-cocos2d-objc/src/spine/SkeletonAnimation.m | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/spine-cocos2d-objc/src/spine/SkeletonAnimation.h b/spine-cocos2d-objc/src/spine/SkeletonAnimation.h index 4b6e1af10..c8328be1b 100644 --- a/spine-cocos2d-objc/src/spine/SkeletonAnimation.h +++ b/spine-cocos2d-objc/src/spine/SkeletonAnimation.h @@ -54,6 +54,7 @@ typedef void(^spUpdateWorldTransformsListener)(SkeletonAnimation* node); spDisposeListener _disposeListener; spCompleteListener _completeListener; spEventListener _eventListener; + bool _updatedOnce; } + (id) skeletonWithData:(spSkeletonData*)skeletonData ownsSkeletonData:(bool)ownsSkeletonData; diff --git a/spine-cocos2d-objc/src/spine/SkeletonAnimation.m b/spine-cocos2d-objc/src/spine/SkeletonAnimation.m index 96f0e4bc8..219c11b84 100644 --- a/spine-cocos2d-objc/src/spine/SkeletonAnimation.m +++ b/spine-cocos2d-objc/src/spine/SkeletonAnimation.m @@ -104,6 +104,7 @@ static _TrackEntryListeners* getListeners (spTrackEntry* entry) { _state->listener = animationCallback; _spAnimationState* stateInternal = (_spAnimationState*)_state; + _updatedOnce = false; } - (id) initWithData:(spSkeletonData*)skeletonData ownsSkeletonData:(bool)ownsSkeletonData { @@ -156,6 +157,7 @@ static _TrackEntryListeners* getListeners (spTrackEntry* entry) { if (_preUpdateWorldTransformsListener) _preUpdateWorldTransformsListener(self); spSkeleton_updateWorldTransform(_skeleton); if (_postUpdateWorldTransformsListener) _postUpdateWorldTransformsListener(self); + _updatedOnce = true; } - (void) setAnimationStateData:(spAnimationStateData*)stateData { @@ -276,4 +278,9 @@ static _TrackEntryListeners* getListeners (spTrackEntry* entry) { getListeners(entry)->eventListener = [listener copy]; } +-(void)draw:(CCRenderer *)renderer transform:(const GLKMatrix4 *)transform { + if (!_updatedOnce) [self update:0]; + [super draw:renderer transform:transform]; +} + @end From 726ad4ddbe5c9c8b386b495692c2f55c2039d15d Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Fri, 11 Nov 2022 06:20:22 +0100 Subject: [PATCH 2/2] [godot] Fix convert.py to release lock before renaming .json files. --- spine-godot/convert.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/spine-godot/convert.py b/spine-godot/convert.py index c6bde08f5..38c56a506 100755 --- a/spine-godot/convert.py +++ b/spine-godot/convert.py @@ -20,17 +20,19 @@ import os import pathlib import codecs -def convert_json(filename): - with open(filename) as file: - content = file.read() - if "skeleton" in content and "hash" in content and "spine" in content: - path = pathlib.Path(filename) - new_path = path.with_suffix('.spine-json') - print("Renaming " + str(path) + " to " + str(new_path)) - path.rename(new_path) - if os.path.exists(filename + ".import"): - print("Removing " + str(filename) + ".import") - os.remove(filename + ".import") +def convert_json(filename): + file = codecs.open(filename, "r", "utf-8") + content = file.read() + file.close() + + if "skeleton" in content and "hash" in content and "spine" in content: + path = pathlib.Path(filename) + new_path = path.with_suffix('.spine-json') + print("Renaming " + str(path) + " to " + str(new_path)) + path.rename(new_path) + if os.path.exists(filename + ".import"): + print("Removing " + str(filename) + ".import") + os.remove(filename + ".import") def convert_tscn_or_tres(filename): file = codecs.open(filename, "r", "utf-8")