diff --git a/spine-godot/spine_godot/SpineAnimation.cpp b/spine-godot/spine_godot/SpineAnimation.cpp index c3236db8f..f8f6ad75f 100644 --- a/spine-godot/spine_godot/SpineAnimation.cpp +++ b/spine-godot/spine_godot/SpineAnimation.cpp @@ -47,7 +47,9 @@ void SpineAnimation::_bind_methods() { String SpineAnimation::get_name() { SPINE_CHECK(get_spine_object(), "") - return get_spine_object()->getName().buffer(); + String name; + name.parse_utf8(get_spine_object()->getName().buffer()); + return name; } float SpineAnimation::get_duration() { diff --git a/spine-godot/spine_godot/SpineAnimationTrack.cpp b/spine-godot/spine_godot/SpineAnimationTrack.cpp index 39e7732b8..19f4cbf21 100644 --- a/spine-godot/spine_godot/SpineAnimationTrack.cpp +++ b/spine-godot/spine_godot/SpineAnimationTrack.cpp @@ -250,7 +250,9 @@ Ref SpineAnimationTrack::create_animation(spine::Animation *animation Ref animation_ref; INSTANTIATE(animation_ref); - animation_ref->set_name(String(animation->getName().buffer()) + (loop ? "" : "_looped")); + String name; + name.parse_utf8(animation.getName().buffer()); + animation_ref->set_name(name + (loop ? "" : "_looped")); #if VERSION_MAJOR > 3 // animation_ref->set_loop(!loop); #else @@ -260,7 +262,7 @@ Ref SpineAnimationTrack::create_animation(spine::Animation *animation animation_ref->add_track(Animation::TYPE_VALUE); animation_ref->track_set_path(0, NodePath(".:animation_name")); - animation_ref->track_insert_key(0, 0, animation->getName().buffer()); + animation_ref->track_insert_key(0, 0, name); animation_ref->add_track(Animation::TYPE_VALUE); animation_ref->track_set_path(1, NodePath(".:loop")); @@ -298,7 +300,9 @@ void SpineAnimationTrack::update_animation_state(const Variant &variant_sprite) } auto current_entry = animation_state->getCurrent(track_index); bool should_set_mix = mix_duration >= 0; - bool should_set_animation = !current_entry || (animation_name != current_entry->getAnimation()->getName().buffer() || current_entry->getLoop() != loop); + String other_name; + if (current_entry) other_name.parse_utf8(current_entry->getAnimation()->getName().buffer()); + bool should_set_animation = !current_entry || (animation_name != other_name || current_entry->getLoop() != loop); if (should_set_animation) { if (!EMPTY(animation_name)) { @@ -316,7 +320,7 @@ void SpineAnimationTrack::update_animation_state(const Variant &variant_sprite) if (debug) print_line(String("Setting animation {0} with mix_duration {1} on track {2} on {3}").format(varray(animation_name, mix_duration, track_index, sprite->get_name())).utf8().ptr()); } else { - if (!current_entry || (String("") != current_entry->getAnimation()->getName().buffer())) { + if (!current_entry || (String("") != other_name)) { auto entry = animation_state->setEmptyAnimation(track_index, should_set_mix ? mix_duration : 0); entry->setTrackEnd(FLT_MAX); if (debug) print_line(String("Setting empty animation with mix_duration {0} on track {1} on {2}").format(varray(mix_duration, track_index, sprite->get_name())).utf8().ptr()); @@ -423,7 +427,9 @@ void SpineAnimationTrack::update_animation_state(const Variant &variant_sprite) if (animation_player->is_playing()) { auto current_entry = animation_state->getCurrent(track_index); bool should_set_mix = mix_duration >= 0; - bool should_set_animation = !current_entry || (animation_name != current_entry->getAnimation()->getName().buffer() || current_entry->getLoop() != loop) || animation_changed; + String other_name; + if (current_entry) other_name.parse_utf8(current_entry->getAnimation()->getName().buffer()); + bool should_set_animation = !current_entry || (animation_name != other_name || current_entry->getLoop() != loop) || animation_changed; animation_changed = false; if (should_set_animation) { @@ -442,7 +448,7 @@ void SpineAnimationTrack::update_animation_state(const Variant &variant_sprite) if (debug) print_line(String("Setting animation {0} with mix_duration {1} on track {2} on {3}").format(varray(animation_name, mix_duration, track_index, sprite->get_name())).utf8().ptr()); } else { - if (!current_entry || (String("") != current_entry->getAnimation()->getName().buffer())) { + if (!current_entry || (String("") != other_name)) { auto entry = animation_state->setEmptyAnimation(track_index, should_set_mix ? mix_duration : 0); entry->setTrackEnd(FLT_MAX); if (debug) print_line(String("Setting empty animation with mix_duration {0} on track {1} on {2}").format(varray(mix_duration, track_index, sprite->get_name())).utf8().ptr()); diff --git a/spine-godot/spine_godot/SpineAttachment.cpp b/spine-godot/spine_godot/SpineAttachment.cpp index df9684ab1..283a7f7bf 100644 --- a/spine-godot/spine_godot/SpineAttachment.cpp +++ b/spine-godot/spine_godot/SpineAttachment.cpp @@ -41,7 +41,9 @@ SpineAttachment::~SpineAttachment() { String SpineAttachment::get_attachment_name() { SPINE_CHECK(get_spine_object(), "") - return get_spine_object()->getName().buffer(); + String name; + name.parse_utf8(get_spine_object()->getName().buffer()); + return name; } Ref SpineAttachment::copy() { diff --git a/spine-godot/spine_godot/SpineBoneData.cpp b/spine-godot/spine_godot/SpineBoneData.cpp index 49456c89c..b5ab4aa4a 100644 --- a/spine-godot/spine_godot/SpineBoneData.cpp +++ b/spine-godot/spine_godot/SpineBoneData.cpp @@ -68,7 +68,9 @@ int SpineBoneData::get_index() { String SpineBoneData::get_bone_name() { SPINE_CHECK(get_spine_object(), "") - return get_spine_object()->getName().buffer(); + String name; + name.parse_utf8(get_spine_object()->getName().buffer()); + return name; } Ref SpineBoneData::get_parent() { diff --git a/spine-godot/spine_godot/SpineConstraintData.cpp b/spine-godot/spine_godot/SpineConstraintData.cpp index 744ad7bcd..f602cc00d 100644 --- a/spine-godot/spine_godot/SpineConstraintData.cpp +++ b/spine-godot/spine_godot/SpineConstraintData.cpp @@ -41,7 +41,9 @@ void SpineConstraintData::_bind_methods() { String SpineConstraintData::get_constraint_name() { SPINE_CHECK(get_spine_object(), "") - return get_spine_object()->getName().buffer(); + String name; + name.parse_utf8(get_spine_object()->getName().buffer()); + return name; } int SpineConstraintData::get_order() { diff --git a/spine-godot/spine_godot/SpineEventData.cpp b/spine-godot/spine_godot/SpineEventData.cpp index cd30495e5..201a98c90 100644 --- a/spine-godot/spine_godot/SpineEventData.cpp +++ b/spine-godot/spine_godot/SpineEventData.cpp @@ -48,7 +48,9 @@ void SpineEventData::_bind_methods() { String SpineEventData::get_event_name() { SPINE_CHECK(get_spine_object(), "") - return get_spine_object()->getName().buffer(); + String name; + name.parse_utf8(get_spine_object()->getName().buffer()); + return name; } int SpineEventData::get_int_value() { diff --git a/spine-godot/spine_godot/SpineSkeletonDataResource.cpp b/spine-godot/spine_godot/SpineSkeletonDataResource.cpp index a36623961..d0f3c9e64 100644 --- a/spine-godot/spine_godot/SpineSkeletonDataResource.cpp +++ b/spine-godot/spine_godot/SpineSkeletonDataResource.cpp @@ -627,7 +627,9 @@ SpineSkeletonDataResource::find_physics_constraint( String SpineSkeletonDataResource::get_skeleton_name() const { SPINE_CHECK(skeleton_data, "") - return skeleton_data->getName().buffer(); + String name; + name.parse_utf8(skeleton_data->getName().buffer()); + return name; } Array SpineSkeletonDataResource::get_bones() const { diff --git a/spine-godot/spine_godot/SpineSkin.cpp b/spine-godot/spine_godot/SpineSkin.cpp index 2a6de0a95..6161409d2 100644 --- a/spine-godot/spine_godot/SpineSkin.cpp +++ b/spine-godot/spine_godot/SpineSkin.cpp @@ -123,7 +123,9 @@ Array SpineSkin::find_attachments_for_slot(int slot_index) { String SpineSkin::get_name() { SPINE_CHECK(get_spine_object(), "") - return get_spine_object()->getName().buffer(); + String name; + name.parse_utf8(get_spine_object()->getName().buffer()); + return name; } void SpineSkin::add_skin(Ref other) { diff --git a/spine-godot/spine_godot/SpineSlotData.cpp b/spine-godot/spine_godot/SpineSlotData.cpp index 94bff5253..b967b8ca6 100644 --- a/spine-godot/spine_godot/SpineSlotData.cpp +++ b/spine-godot/spine_godot/SpineSlotData.cpp @@ -53,7 +53,9 @@ int SpineSlotData::get_index() { String SpineSlotData::get_name() { SPINE_CHECK(get_spine_object(), String("")) - return get_spine_object()->getName().buffer(); + String name; + name.parse_utf8(get_spine_object()->getName().buffer()); + return name; } Ref SpineSlotData::get_bone_data() { diff --git a/spine-godot/spine_godot/SpineSprite.cpp b/spine-godot/spine_godot/SpineSprite.cpp index 0e106988e..cab444818 100644 --- a/spine-godot/spine_godot/SpineSprite.cpp +++ b/spine-godot/spine_godot/SpineSprite.cpp @@ -1223,7 +1223,9 @@ void SpineSprite::draw() { float inverse_zoom = 1 / get_viewport()->get_global_canvas_transform().get_scale().x * editor_scale; Vector hover_text_lines; if (hovered_slot) { - hover_text_lines.push_back(String("Slot: ") + hovered_slot->getData().getName().buffer()); + String name; + name.parse_utf8(hovered_slot->getData().getName().buffer()); + hover_text_lines.push_back(String("Slot: ") + name); } if (hovered_bone) { @@ -1231,7 +1233,9 @@ void SpineSprite::draw() { debug_bones_thickness *= 1.1; draw_bone(hovered_bone, Color(debug_bones_color.r, debug_bones_color.g, debug_bones_color.b, 1)); debug_bones_thickness = thickness; - hover_text_lines.push_back(String("Bone: ") + hovered_bone->getData().getName().buffer()); + String name; + name.parse_utf8(hovered_bone->getData().getName().buffer()); + hover_text_lines.push_back(String("Bone: ") + name); } auto global_scale = get_global_scale();