diff --git a/spine-flutter/codegen/src/dart-writer.ts b/spine-flutter/codegen/src/dart-writer.ts index aeaad450e..33fd4c9e7 100644 --- a/spine-flutter/codegen/src/dart-writer.ts +++ b/spine-flutter/codegen/src/dart-writer.ts @@ -1336,8 +1336,10 @@ ${declaration} {`; lines.push(`switch (className) {`); for (const subclass of concreteSubclasses) { + const cppClass = this.classMap.get(subclass); + if (!cppClass) throw Error(`Class ${subclass} not found in class map`); const dartSubclass = this.toDartTypeName(subclass); - lines.push(` case '${subclass}':`); + lines.push(` case '${cppClass.cppType.name}':`); lines.push(` return ${dartSubclass}.fromPointer(${resultVar}.cast());`); } diff --git a/spine-flutter/test/skeleton_drawable_test.dart b/spine-flutter/test/skeleton_drawable_test.dart index 3290bef05..929703c38 100644 --- a/spine-flutter/test/skeleton_drawable_test.dart +++ b/spine-flutter/test/skeleton_drawable_test.dart @@ -91,6 +91,17 @@ void main() async { final boundsInJump = drawable.skeleton.bounds; print(' Bounds during jump: $boundsInJump'); + // Test constraint RTTI + print('\nTesting constraint RTTI:'); + + // IK Constraints + print(' Constraints:'); + for (final constraint in drawable.skeleton.constraints) { + final data = constraint?.data; + print(' Constraint type: ${constraint?.rtti.className}'); + print(' Constraint data type: ${constraint?.data?.rtti.className}'); + } + // Check manager state before cleanup print('\nBefore cleanup:'); AnimationStateEventManager.instance.debugPrint();