[godot] Fix module build for Godot 4.x

This commit is contained in:
Mario Zechner 2024-10-09 11:13:37 +02:00
parent 64c3e9af16
commit 13127aa587
3 changed files with 35 additions and 36 deletions

View File

@ -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;

View File

@ -32,6 +32,8 @@
#ifdef SPINE_GODOT_EXTENSION
#include <godot_cpp/classes/encoded_object_as_id.hpp>
#else
#include <core/io/marshalls.h>
#endif
void SpineAnimationMix::_bind_methods() {

View File

@ -98,7 +98,32 @@ public:
Vector<Vector2> 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<CanvasItemMaterial> material_normal(memnew(CanvasItemMaterial));
material_normal->set_blend_mode(CanvasItemMaterial::BLEND_MODE_MIX);
default_materials[spine::BlendMode_Normal] = material_normal;
Ref<CanvasItemMaterial> material_additive(memnew(CanvasItemMaterial));
material_additive->set_blend_mode(CanvasItemMaterial::BLEND_MODE_ADD);
default_materials[spine::BlendMode_Additive] = material_additive;
Ref<CanvasItemMaterial> material_multiply(memnew(CanvasItemMaterial));
material_multiply->set_blend_mode(CanvasItemMaterial::BLEND_MODE_MUL);
default_materials[spine::BlendMode_Multiply] = material_multiply;
Ref<CanvasItemMaterial> 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<CanvasItemMaterial> material_normal(memnew(CanvasItemMaterial));
material_normal->set_blend_mode(CanvasItemMaterial::BLEND_MODE_MIX);
statics.default_materials[spine::BlendMode_Normal] = material_normal;
Ref<CanvasItemMaterial> material_additive(memnew(CanvasItemMaterial));
material_additive->set_blend_mode(CanvasItemMaterial::BLEND_MODE_ADD);
statics.default_materials[spine::BlendMode_Additive] = material_additive;
Ref<CanvasItemMaterial> material_multiply(memnew(CanvasItemMaterial));
material_multiply->set_blend_mode(CanvasItemMaterial::BLEND_MODE_MUL);
statics.default_materials[spine::BlendMode_Multiply] = material_multiply;
Ref<CanvasItemMaterial> 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;
}