| 248 | } |
| 249 | |
| 250 | static void PostEventsInterval(HRigInstance instance, const dmRigDDF::RigAnimation* animation, float start_cursor, float end_cursor, float duration, bool backwards, float blend_weight) |
| 251 | { |
| 252 | const uint32_t track_count = animation->m_EventTracks.m_Count; |
| 253 | for (uint32_t ti = 0; ti < track_count; ++ti) |
| 254 | { |
| 255 | const dmRigDDF::EventTrack* track = &animation->m_EventTracks[ti]; |
| 256 | const uint32_t key_count = track->m_Keys.m_Count; |
| 257 | for (uint32_t ki = 0; ki < key_count; ++ki) |
| 258 | { |
| 259 | const dmRigDDF::EventKey* key = &track->m_Keys[ki]; |
| 260 | float cursor = key->m_T; |
| 261 | if (backwards) |
| 262 | cursor = duration - cursor; |
| 263 | if (start_cursor <= cursor && cursor < end_cursor) |
| 264 | { |
| 265 | RigKeyframeEventData event_data; |
| 266 | event_data.m_EventId = track->m_EventId; |
| 267 | event_data.m_AnimationId = animation->m_Id; |
| 268 | event_data.m_BlendWeight = blend_weight; |
| 269 | event_data.m_T = key->m_T; |
| 270 | event_data.m_Integer = key->m_Integer; |
| 271 | event_data.m_Float = key->m_Float; |
| 272 | event_data.m_String = key->m_String; |
| 273 | |
| 274 | instance->m_EventCallback(RIG_EVENT_TYPE_KEYFRAME, (void*)&event_data, instance->m_EventCBUserData1, instance->m_EventCBUserData2); |
| 275 | } |
| 276 | } |
| 277 | } |
| 278 | } |
| 279 | |
| 280 | static void PostEvents(HRigInstance instance, RigPlayer* player, const dmRigDDF::RigAnimation* animation, float dt, float prev_cursor, float duration, bool completed, float blend_weight) |
| 281 | { |