Esempio n. 1
0
        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);
        }
Esempio n. 3
0
 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++;
             }
         }
     }
 }
Esempio n. 4
0
 public void RemoveBeatmapEventCallback(CustomEventCallbackData callbackData)
 {
     _customEventCallbackData?.Remove(callbackData);
 }