//--------------------------------------------------------------------------------------
        public static TimerCreationInfo createResetOnFinishedCreationInfo(float startTime, bool shouldStartOnReset, bool startOnCreation, Finished finishedDelegate)
        {
            TimerEventInfo event_info = new TimerEventInfo()
            {
                finished_delegate = finishedDelegate,
                started_delegate  = null,
                stopped_delegate  = null,
                updated_delegate  = null
            };

            return(createResetOnFinishedCreationInfo(startTime, shouldStartOnReset, startOnCreation, event_info));
        }
        //--------------------------------------------------------------------------------------
        public static TimerCreationInfo createResetOnFinishedCreationInfo(float startTime, bool shouldStartOnReset, bool startOnCreation, TimerEventInfo eventInfo)
        {
            TimerCreationInfo info = new TimerCreationInfo
            {
                start_time        = startTime,
                start_on_creation = startOnCreation,
                finish_behaviour  = shouldStartOnReset
                    ? TimerFinishedBehaviour.RESET_START_ON_FINSHED
                    : TimerFinishedBehaviour.RESET_STOP_ON_FINISHED,

                finished_delegate = eventInfo.finished_delegate,
                started_delegate  = eventInfo.started_delegate,
                stopped_delegate  = eventInfo.stopped_delegate,
                updated_delegate  = eventInfo.updated_delegate
            };

            return(info);
        }
        //--------------------------------------------------------------------------------------
        public static TimerCreationInfo createRemoveOnFinishedCreationInfo(float startTime, bool startOnCreation, TimerEventInfo eventInfo)
        {
            TimerCreationInfo info = new TimerCreationInfo
            {
                start_time        = startTime,
                start_on_creation = startOnCreation,
                finish_behaviour  = TimerFinishedBehaviour.REMOVE_ON_FINISHED,

                finished_delegate = eventInfo.finished_delegate,
                started_delegate  = eventInfo.started_delegate,
                stopped_delegate  = eventInfo.stopped_delegate,
                updated_delegate  = eventInfo.updated_delegate
            };

            return(info);
        }