@@ -51,8 +51,7 @@ void Events::UpdateCoroutines(BeatmapCallbacksController* callbackController) {
5151}
5252
5353[[nodiscard]]
54- Tracks::ffi::EventData* makeEvent (float eventTime, CustomEventAssociatedData const & eventAD,
55- TrackW track,
54+ Tracks::ffi::EventData* makeEvent (float eventTime, CustomEventAssociatedData const & eventAD, TrackW track,
5655 PathPropertyW pathProperty, PointDefinitionW pointData) {
5756 auto eventType = Tracks::ffi::CEventType {
5857 .ty = Tracks::ffi::CEventTypeEnum::AssignPathAnimation,
@@ -75,8 +74,8 @@ Tracks::ffi::EventData* makeEvent(float eventTime, CustomEventAssociatedData con
7574 return eventData;
7675}
7776[[nodiscard]]
78- Tracks::ffi::EventData* makeEvent (float eventTime, CustomEventAssociatedData const & eventAD,
79- TrackW const & track, PropertyW const & property, PointDefinitionW const & pointData) {
77+ Tracks::ffi::EventData* makeEvent (float eventTime, CustomEventAssociatedData const & eventAD, TrackW const & track,
78+ PropertyW const & property, PointDefinitionW const & pointData) {
8079 auto eventType = Tracks::ffi::CEventType {
8180 .ty = Tracks::ffi::CEventTypeEnum::AnimateTrack,
8281 .data = {
@@ -94,95 +93,103 @@ Tracks::ffi::EventData* makeEvent(float eventTime, CustomEventAssociatedData con
9493 .point_data_ptr = pointData,
9594 };
9695
96+ CRASH_UNLESS (pointData);
9797 auto eventData = Tracks::ffi::event_data_to_rust (&cEventData);
98+ CRASH_UNLESS (eventData);
9899
99100 return eventData;
100101}
101102void CustomEventCallback (BeatmapCallbacksController* callbackController,
102103 CustomJSONData::CustomEventData* customEventData) {
103- PAPER_IL2CPP_CATCH_HANDLER (
104- bool isType = false ;
105104
106- auto typeHash = customEventData->typeHash ;
105+ bool isType = false ;
106+
107+ auto typeHash = customEventData->typeHash ;
107108
108109#define TYPE_GET (jsonName, varName ) \
109110 static auto jsonNameHash_##varName = std::hash<std::string_view>()(jsonName); \
110- if (!isType && typeHash == (jsonNameHash_##varName)) isType = true ;
111+ if (!isType && typeHash == (jsonNameHash_##varName)) isType = true
111112
112- TYPE_GET (" AnimateTrack" , AnimateTrack) TYPE_GET (" AssignPathAnimation" , AssignPathAnimation)
113+ TYPE_GET (" AnimateTrack" , AnimateTrack);
114+ TYPE_GET (" AssignPathAnimation" , AssignPathAnimation);
113115
114- if (!isType) { return ; }
116+ if (!isType) {
117+ return ;
118+ }
115119
116- CustomEventAssociatedData const & eventAD = getEventAD (customEventData);
120+ CustomEventAssociatedData const & eventAD = getEventAD (customEventData);
117121
118- auto * customBeatmapData = il2cpp_utils::cast<CustomJSONData::CustomBeatmapData>(callbackController->_beatmapData );
119- TracksAD::BeatmapAssociatedData& beatmapAD = TracksAD::getBeatmapAD (customBeatmapData->customData );
122+ auto * customBeatmapData = il2cpp_utils::cast<CustomJSONData::CustomBeatmapData>(callbackController->_beatmapData );
123+ TracksAD::BeatmapAssociatedData& beatmapAD = TracksAD::getBeatmapAD (customBeatmapData->customData );
120124
121- // fail safe, idek why this needs to be done smh
122- // CJD you bugger
123- if (!eventAD.parsed ) {
124- TLogger::Logger.debug (" callbackController {}" , fmt::ptr (callbackController));
125- TLogger::Logger.debug (" _beatmapData {}" , fmt::ptr (callbackController->_beatmapData ));
126- TLogger::Logger.debug (" customBeatmapData {}" , fmt::ptr (customBeatmapData));
125+ // fail safe, idek why this needs to be done smh
126+ // CJD you bugger
127+ if (!eventAD.parsed ) {
128+ TLogger::Logger.debug (" callbackController {}" , fmt::ptr (callbackController));
129+ TLogger::Logger.debug (" _beatmapData {}" , fmt::ptr (callbackController->_beatmapData ));
130+ TLogger::Logger.debug (" customBeatmapData {}" , fmt::ptr (customBeatmapData));
127131
128- if (!beatmapAD.valid ) {
129- TLogger::Logger.debug (" Beatmap wasn't parsed when event is invoked, what?" );
130- TracksAD::readBeatmapDataAD (customBeatmapData);
131- }
132+ if (!beatmapAD.valid ) {
133+ TLogger::Logger.debug (" Beatmap wasn't parsed when event is invoked, what?" );
134+ TracksAD::readBeatmapDataAD (customBeatmapData);
135+ }
132136
133- LoadTrackEvent (customEventData, beatmapAD, customBeatmapData->v2orEarlier );
134- }
137+ LoadTrackEvent (customEventData, beatmapAD, customBeatmapData->v2orEarlier );
138+ }
135139
136- auto duration = eventAD.duration ;
140+ auto duration = eventAD.duration ;
137141
138- if (!TracksStatic::bpmController) {
139- CJDLogger::Logger.fmtLog <Paper::LogLevel::ERR>(" BPM CONTROLLER NOT INITIALIZED" );
140- }
142+ if (!TracksStatic::bpmController) {
143+ CJDLogger::Logger.fmtLog <Paper::LogLevel::ERR>(" BPM CONTROLLER NOT INITIALIZED" );
144+ }
141145
142- auto bpm = TracksStatic::bpmController->currentBpm ; // spawnController->get_currentBpm()
146+ auto bpm = TracksStatic::bpmController->currentBpm ; // spawnController->get_currentBpm()
143147
144- duration = 60 .0f * duration / bpm;
148+ duration = 60 .0f * duration / bpm;
145149
146- auto easing = eventAD.easing ; auto repeat = eventAD.repeat ;
150+ auto easing = eventAD.easing ;
151+ auto repeat = eventAD.repeat ;
147152
148- bool noDuration = duration == 0 || customEventData->time + (duration * (repeat + 1 )) <
149- TracksStatic::bpmController->_beatmapCallbacksController ->songTime ;
153+ bool noDuration = duration == 0 || customEventData->time + (duration * (repeat + 1 )) <
154+ TracksStatic::bpmController->_beatmapCallbacksController ->songTime ;
150155
151- auto tracksContext = beatmapAD.internal_tracks_context ;
156+ auto tracksContext = beatmapAD.internal_tracks_context ;
152157
153- auto coroutineManager = tracksContext->GetCoroutineManager ();
154- auto baseManager = tracksContext->GetBaseProviderContext ();
155- auto eventTime = customEventData->time ;
156- auto songTime = callbackController->_songTime ;
158+ auto coroutineManager = tracksContext->GetCoroutineManager ();
159+ auto baseManager = tracksContext->GetBaseProviderContext ();
160+ auto eventTime = customEventData->time ;
161+ auto songTime = callbackController->_songTime ;
157162
158- for (auto const & track
159- : eventAD.tracks ) {
160- switch (eventAD.type ) {
161- case EventType::animateTrack: {
162- for (auto const & animateTrackData : eventAD.animateTrackData ) {
163- for (auto const & [property, pointData] : animateTrackData.properties ) {
164163
165- auto event = makeEvent (eventTime, eventAD, track, property, pointData);
166- Tracks::ffi::start_event_coroutine (coroutineManager, bpm, songTime, baseManager, event);
167- }
168- }
169- break ;
170- }
171- case EventType::assignPathAnimation: {
172- for (auto const & assignPathAnimationData : eventAD.assignPathAnimation ) {
173- for (auto const & [pathProperty, pointData] : assignPathAnimationData.pathProperties ) {
174- auto event = makeEvent (eventTime, eventAD, track, pathProperty, pointData);
175- Tracks::ffi::start_event_coroutine (coroutineManager, bpm, songTime, baseManager, event);
176- }
177- }
178- break ;
164+ for (auto const & track : eventAD.tracks ) {
165+
166+ switch (eventAD.type ) {
167+ case EventType::animateTrack: {
168+ for (auto const & animateTrackData : eventAD.animateTrackData ) {
169+
170+ TLogger::Logger.fmtLog <Paper::LogLevel::INF>(" Processing event for track {} with duration {} at time {} properties {}" ,
171+ track.GetName (), duration, eventTime, animateTrackData.properties .size ());
172+
173+ for (auto const & [property, pointData] : animateTrackData.properties ) {
174+ auto event = makeEvent (eventTime, eventAD, track, property, pointData);
175+ Tracks::ffi::start_event_coroutine (coroutineManager, bpm, songTime, baseManager, event);
179176 }
180- default :
181- break ;
177+ }
178+ break ;
179+ }
180+ case EventType::assignPathAnimation: {
181+ for (auto const & assignPathAnimationData : eventAD.assignPathAnimation ) {
182+ for (auto const & [pathProperty, pointData] : assignPathAnimationData.pathProperties ) {
183+ auto event = makeEvent (eventTime, eventAD, track, pathProperty, pointData);
184+ Tracks::ffi::start_event_coroutine (coroutineManager, bpm, songTime, baseManager, event);
182185 }
183186 }
184-
185- )
187+ break ;
188+ }
189+ default :
190+ break ;
191+ }
192+ }
186193}
187194
188195void Events::AddEventCallbacks () {
0 commit comments