diff --git a/spine-flutter/example/lib/main.dart b/spine-flutter/example/lib/main.dart index 3d6a2fa73..a14293f50 100644 --- a/spine-flutter/example/lib/main.dart +++ b/spine-flutter/example/lib/main.dart @@ -39,7 +39,7 @@ class _SpineWidgetState extends State { @override Widget build(BuildContext context) { if (skeletonDrawable != null) { - print("Skeleton loaded, creating painter"); + print("Skeleton loaded, rebuilding painter"); return CustomPaint( painter: _SpinePainter(this), child: Container() @@ -62,11 +62,15 @@ class _SpinePainter extends CustomPainter { final drawable = state.skeletonDrawable; if (drawable == null) return; final commands = drawable.render(); + canvas.save(); canvas.translate(size.width / 2, size.height); for (final cmd in commands) { - canvas.drawVertices(cmd.vertices, BlendMode.srcOut, Paint()..color = Colors.white); //drawable.atlas.atlasPagePaints[cmd.atlasPageIndex]); + canvas.drawVertices(cmd.vertices, BlendMode.srcOut, drawable.atlas.atlasPagePaints[cmd.atlasPageIndex]); } - canvas.drawLine(Offset(0, 0), Offset(size.width, size.height), Paint()..color = Colors.blue); + canvas.restore(); + canvas.drawLine(Offset(0, 0), Offset(size.width, size.height), Paint() + ..color = Colors.blue + ..strokeWidth = 4); } @override diff --git a/spine-flutter/src/CMakeLists.txt b/spine-flutter/src/CMakeLists.txt index e13394211..bf3dec3a6 100644 --- a/spine-flutter/src/CMakeLists.txt +++ b/spine-flutter/src/CMakeLists.txt @@ -18,3 +18,6 @@ set_target_properties(spine_flutter PROPERTIES ) target_include_directories(spine_flutter PUBLIC spine-cpp/include) target_compile_definitions(spine_flutter PUBLIC DART_SHARED_LIB) +#target_compile_options(spine_flutter PUBLIC -fsanitize=address -fno-omit-frame-pointer) +#set_target_properties(spine_flutter PROPERTIES LINK_FLAGS -fsanitize=address) + diff --git a/spine-flutter/src/spine_flutter.cpp b/spine-flutter/src/spine_flutter.cpp index b1efa4999..6806a2d3c 100644 --- a/spine-flutter/src/spine_flutter.cpp +++ b/spine-flutter/src/spine_flutter.cpp @@ -97,8 +97,8 @@ FFI_PLUGIN_EXPORT void spine_skeleton_drawable_update(spine_skeleton_drawable *d spine_render_command *spine_render_command_create(int32_t numVertices, int32_t numIndices, spine_blend_mode blendMode, int pageIndex) { spine_render_command *cmd = SpineExtension::alloc(1, __FILE__, __LINE__); - cmd->positions = SpineExtension::alloc(numVertices * 2, __FILE__, __LINE__); - cmd->uvs = SpineExtension::alloc(numVertices * 2, __FILE__, __LINE__); + cmd->positions = SpineExtension::alloc(numVertices << 1, __FILE__, __LINE__); + cmd->uvs = SpineExtension::alloc(numVertices << 1, __FILE__, __LINE__); cmd->colors = SpineExtension::alloc(numVertices, __FILE__, __LINE__); cmd->numVertices = numVertices; cmd->indices = SpineExtension::alloc(numIndices, __FILE__, __LINE__); @@ -219,8 +219,8 @@ FFI_PLUGIN_EXPORT spine_render_command *spine_skeleton_drawable_render(spine_ske spine_render_command *cmd = spine_render_command_create(verticesCount, indicesCount, (spine_blend_mode)slot.getData().getBlendMode(), pageIndex); - memcpy(cmd->positions, vertices->buffer(), (verticesCount << 2) * sizeof(float)); - memcpy(cmd->uvs, uvs->buffer(), (verticesCount << 2) * sizeof(float)); + memcpy(cmd->positions, vertices->buffer(), (verticesCount << 1) * sizeof(float)); + memcpy(cmd->uvs, uvs->buffer(), (verticesCount << 1) * sizeof(float)); for (int ii = 0; ii < verticesCount; ii++) cmd->colors[ii] = color; memcpy(cmd->indices, indices->buffer(), indices->size() * sizeof(uint16_t));