From 71eb86c15ee441bef20783e016857e36f03c8f88 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 29 Jul 2025 22:51:34 +0200 Subject: [PATCH] [c] spine_animation_state_events_* extension functions. --- spine-c/src/extensions.cpp | 34 ++++++++++++++++++++++++++++++++++ spine-c/src/extensions.h | 7 +++++++ 2 files changed, 41 insertions(+) diff --git a/spine-c/src/extensions.cpp b/spine-c/src/extensions.cpp index 1928e0d19..328bb46b5 100644 --- a/spine-c/src/extensions.cpp +++ b/spine-c/src/extensions.cpp @@ -381,6 +381,40 @@ spine_animation_state_events spine_skeleton_drawable_get_animation_state_events( } +// Animation state events functions +int32_t spine_animation_state_events_get_num_events(spine_animation_state_events events) { + if (!events) return 0; + EventListener *listener = (EventListener *) events; + return listener->events.size(); +} + +int32_t spine_animation_state_events_get_event_type(spine_animation_state_events events, int32_t index) { + if (!events) return 0; + EventListener *listener = (EventListener *) events; + if (index < 0 || index >= (int32_t)listener->events.size()) return 0; + return (int32_t) listener->events[index].type; +} + +spine_track_entry spine_animation_state_events_get_track_entry(spine_animation_state_events events, int32_t index) { + if (!events) return nullptr; + EventListener *listener = (EventListener *) events; + if (index < 0 || index >= (int32_t)listener->events.size()) return nullptr; + return (spine_track_entry) listener->events[index].entry; +} + +spine_event spine_animation_state_events_get_event(spine_animation_state_events events, int32_t index) { + if (!events) return nullptr; + EventListener *listener = (EventListener *) events; + if (index < 0 || index >= (int32_t)listener->events.size()) return nullptr; + return (spine_event) listener->events[index].event; +} + +void spine_animation_state_events_reset(spine_animation_state_events events) { + if (!events) return; + EventListener *listener = (EventListener *) events; + listener->events.clear(); +} + // Skin entries functions void spine_skin_entries_dispose(spine_skin_entries entries) { diff --git a/spine-c/src/extensions.h b/spine-c/src/extensions.h index 51bbbbe02..1f9923f56 100644 --- a/spine-c/src/extensions.h +++ b/spine-c/src/extensions.h @@ -86,6 +86,13 @@ SPINE_C_API spine_animation_state spine_skeleton_drawable_get_animation_state(sp SPINE_C_API spine_animation_state_data spine_skeleton_drawable_get_animation_state_data(spine_skeleton_drawable drawable); SPINE_C_API spine_animation_state_events spine_skeleton_drawable_get_animation_state_events(spine_skeleton_drawable drawable); +// Animation state events functions +SPINE_C_API int32_t spine_animation_state_events_get_num_events(spine_animation_state_events events); +SPINE_C_API int32_t spine_animation_state_events_get_event_type(spine_animation_state_events events, int32_t index); +SPINE_C_API spine_track_entry spine_animation_state_events_get_track_entry(spine_animation_state_events events, int32_t index); +SPINE_C_API spine_event spine_animation_state_events_get_event(spine_animation_state_events events, int32_t index); +SPINE_C_API void spine_animation_state_events_reset(spine_animation_state_events events); + // Skin functions SPINE_C_API spine_skin_entries spine_skin_get_entries(spine_skin skin);