public CustomEventCallbackData AddCustomEventCallback(CustomEventCallback callback, float aheadTime = 0, bool callIfBeforeStartTime = true) { CustomEventCallbackData customEventCallbackData = new CustomEventCallbackData(callback, aheadTime, callIfBeforeStartTime); _customEventCallbackData.Add(customEventCallbackData); return(customEventCallbackData); }
/// <summary> /// Registers a callback for a given custom event type. /// </summary> /// <param name="callback">Called when an event of type <paramref name="eventType"/> occurs.</param> /// <param name="eventType">The type of event to call the callback for.</param> /// <param name="aheadTime">How far in advance of the event's position in the song to call the callback.</param> /// <returns>An ID that can be used with <see cref="RemoveCustomEventCallback(int)"/> to unregister the callback later</returns> public int AddCustomEventCallback(Action <CustomEventData> callback, string eventType, float aheadTime, bool callIfBeforeStartTime = false) { var callbackData = new CustomEventCallbackData(callback, eventType, aheadTime, callIfBeforeStartTime); if (!callbackDatas.ContainsKey(eventType)) { callbackDatas[eventType] = new List <CustomEventCallbackData>(); } callbackDatas[eventType].Add(callbackData); return(callbackData.id); }
private void LateUpdate() { if (_beatmapObjectCallbackController.enabled && _beatmapData is CustomBeatmapData customBeatmapData) { for (int l = 0; l < _customEventCallbackData.Count; l++) { CustomEventCallbackData customEventCallbackData = _customEventCallbackData[l]; while (customEventCallbackData.nextEventIndex < customBeatmapData.customEventData.Length) { CustomEventData customEventData = customBeatmapData.customEventData[customEventCallbackData.nextEventIndex]; if (customEventData.time - customEventCallbackData.aheadTime >= _audioTimeSource.songTime) { break; } if (customEventData.time >= _spawningStartTime || customEventCallbackData.callIfBeforeStartTime) // skip events before song start { customEventCallbackData.callback(customEventData); } customEventCallbackData.nextEventIndex++; } } } }
public void RemoveBeatmapEventCallback(CustomEventCallbackData callbackData) { _customEventCallbackData?.Remove(callbackData); }