//TODO this should spawn MULTILINEAR EVENTS, you will need a list of "mFollow" in this case ;)
 public TimedEventChain then(System.Func <float, bool> aEvent, float aTime = 0)
 {
     mEvent  = aEvent;
     mTime   = aTime;
     mFollow = new TimedEventChain();
     return(mFollow);
 }
        public static TimedEventChain first(TimedEventDistributor aEventDistributor, System.Func <float, bool> aEvent, float aTime = 0)
        {
            TimedEventChain f = new TimedEventChain();
            TimedEventChain r = f.then(aEvent, aTime);

            aEventDistributor.add_event_raw(f.call, aTime);
            return(r);
        }
    public TimedEventChain add_event(System.Func <float, bool> aEvent, float aTime = 0)
    {
        TimedEventChain r = TimedEventChain.first(this, aEvent, aTime);

        return(r);
    }