From 13127aa58736935e7bd98262b3844e2031af5c08 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 9 Oct 2024 11:13:37 +0200 Subject: [PATCH] [godot] Fix module build for Godot 4.x --- spine-godot/spine_godot/SpineEditorPlugin.cpp | 4 +- .../spine_godot/SpineSkeletonDataResource.cpp | 2 + spine-godot/spine_godot/SpineSprite.cpp | 65 +++++++++---------- 3 files changed, 35 insertions(+), 36 deletions(-) diff --git a/spine-godot/spine_godot/SpineEditorPlugin.cpp b/spine-godot/spine_godot/SpineEditorPlugin.cpp index 8f146b171..9dec0ac3d 100644 --- a/spine-godot/spine_godot/SpineEditorPlugin.cpp +++ b/spine-godot/spine_godot/SpineEditorPlugin.cpp @@ -51,14 +51,16 @@ Error SpineAtlasResourceImportPlugin::import(const String &source_file, const St atlas->set_normal_texture_prefix(options["normal_map_prefix"]); atlas->load_from_atlas_file_internal(source_file, true); - String file_name = save_path + String(".") + _get_save_extension(); #if VERSION_MAJOR > 3 #ifdef SPINE_GODOT_EXTENSION + String file_name = save_path + String(".") + _get_save_extension(); auto error = ResourceSaver::get_singleton()->save(atlas, file_name); #else + String file_name = save_path + String(".") + get_save_extension(); auto error = ResourceSaver::save(atlas, file_name); #endif #else + String file_name = save_path + String(".") + get_save_extension(); auto error = ResourceSaver::save(file_name, atlas); #endif return error; diff --git a/spine-godot/spine_godot/SpineSkeletonDataResource.cpp b/spine-godot/spine_godot/SpineSkeletonDataResource.cpp index 60bff5993..73e594db3 100644 --- a/spine-godot/spine_godot/SpineSkeletonDataResource.cpp +++ b/spine-godot/spine_godot/SpineSkeletonDataResource.cpp @@ -32,6 +32,8 @@ #ifdef SPINE_GODOT_EXTENSION #include +#else +#include #endif void SpineAnimationMix::_bind_methods() { diff --git a/spine-godot/spine_godot/SpineSprite.cpp b/spine-godot/spine_godot/SpineSprite.cpp index d599691ea..d9df6f94e 100644 --- a/spine-godot/spine_godot/SpineSprite.cpp +++ b/spine-godot/spine_godot/SpineSprite.cpp @@ -98,7 +98,32 @@ public: Vector scratch_points; #endif - SpineSpriteStatics(): sprite_count(0) {} + SpineSpriteStatics() : sprite_count(0) { + quad_indices.setSize(6, 0); + quad_indices[0] = 0; + quad_indices[1] = 1; + quad_indices[2] = 2; + quad_indices[3] = 2; + quad_indices[4] = 3; + quad_indices[5] = 0; + scratch_vertices.ensureCapacity(1200); + + Ref material_normal(memnew(CanvasItemMaterial)); + material_normal->set_blend_mode(CanvasItemMaterial::BLEND_MODE_MIX); + default_materials[spine::BlendMode_Normal] = material_normal; + + Ref material_additive(memnew(CanvasItemMaterial)); + material_additive->set_blend_mode(CanvasItemMaterial::BLEND_MODE_ADD); + default_materials[spine::BlendMode_Additive] = material_additive; + + Ref material_multiply(memnew(CanvasItemMaterial)); + material_multiply->set_blend_mode(CanvasItemMaterial::BLEND_MODE_MUL); + default_materials[spine::BlendMode_Multiply] = material_multiply; + + Ref material_screen(memnew(CanvasItemMaterial)); + material_screen->set_blend_mode(CanvasItemMaterial::BLEND_MODE_SUB); + default_materials[spine::BlendMode_Screen] = material_screen; + } static SpineSpriteStatics &instance() { static SpineSpriteStatics inst; @@ -417,36 +442,6 @@ void SpineSprite::_bind_methods() { SpineSprite::SpineSprite() : update_mode(SpineConstant::UpdateMode_Process), preview_skin("Default"), preview_animation("-- Empty --"), preview_frame(false), preview_time(0), skeleton_clipper(nullptr), modified_bones(false) { skeleton_clipper = new spine::SkeletonClipping(); auto statics = SpineSpriteStatics::instance(); - // One material per blend mode, shared across all sprites. - if (!statics.default_materials[0].is_valid()) { - Ref material_normal(memnew(CanvasItemMaterial)); - material_normal->set_blend_mode(CanvasItemMaterial::BLEND_MODE_MIX); - statics.default_materials[spine::BlendMode_Normal] = material_normal; - - Ref material_additive(memnew(CanvasItemMaterial)); - material_additive->set_blend_mode(CanvasItemMaterial::BLEND_MODE_ADD); - statics.default_materials[spine::BlendMode_Additive] = material_additive; - - Ref material_multiply(memnew(CanvasItemMaterial)); - material_multiply->set_blend_mode(CanvasItemMaterial::BLEND_MODE_MUL); - statics.default_materials[spine::BlendMode_Multiply] = material_multiply; - - Ref material_screen(memnew(CanvasItemMaterial)); - material_screen->set_blend_mode(CanvasItemMaterial::BLEND_MODE_SUB); - statics.default_materials[spine::BlendMode_Screen] = material_screen; - } - - // Setup static scratch buffers - if (statics.quad_indices.size() == 0) { - statics.quad_indices.setSize(6, 0); - statics.quad_indices[0] = 0; - statics.quad_indices[1] = 1; - statics.quad_indices[2] = 2; - statics.quad_indices[3] = 2; - statics.quad_indices[4] = 3; - statics.quad_indices[5] = 0; - statics.scratch_vertices.ensureCapacity(1200); - } // Default debug settings debug_root = false; @@ -1003,7 +998,7 @@ void SpineSprite::draw() { #ifdef SPINE_GODOT_EXTENSION if (GEOMETRY2D::get_singleton()->is_point_in_polygon(mouse_position, statics.scratch_points)) { #else - if (GEOMETRY2D::is_point_in_polygon(mouse_position, scratch_points)) { + if (GEOMETRY2D::is_point_in_polygon(mouse_position, statics.scratch_points)) { #endif hovered_slot = slot; color = Color(1, 1, 1, 1); @@ -1043,7 +1038,7 @@ void SpineSprite::draw() { #ifdef SPINE_GODOT_EXTENSION if (GEOMETRY2D::get_singleton()->is_point_in_polygon(mouse_position, statics.scratch_points)) { #else - if (GEOMETRY2D::is_point_in_polygon(mouse_position, scratch_points)) { + if (GEOMETRY2D::is_point_in_polygon(mouse_position, statics.scratch_points)) { #endif hovered_slot = slot; color = Color(1, 1, 1, 1); @@ -1116,7 +1111,7 @@ void SpineSprite::draw() { #ifdef SPINE_GODOT_EXTENSION if (GEOMETRY2D::get_singleton()->is_point_in_polygon(mouse_local_position, statics.scratch_points)) { #else - if (GEOMETRY2D::is_point_in_polygon(mouse_local_position, scratch_points)) { + if (GEOMETRY2D::is_point_in_polygon(mouse_local_position, statics.scratch_points)) { #endif hovered_bone = bone; } @@ -1144,7 +1139,7 @@ void SpineSprite::draw() { #ifdef SPINE_GODOT_EXTENSION if (GEOMETRY2D::get_singleton()->is_point_in_polygon(mouse_local_position, statics.scratch_points)) { #else - if (GEOMETRY2D::is_point_in_polygon(mouse_local_position, scratch_points)) { + if (GEOMETRY2D::is_point_in_polygon(mouse_local_position, statics.scratch_points)) { #endif hovered_bone = bone; }