示例#1
0
        /// <summary>
        /// Use the timeline to determine if the user has "pushed" enough to indicate they want to try and click
        /// </summary>
        /// <param name="timeline"></param>
        /// <returns></returns>
        protected override bool IsFulfilled(ITimeline <IEmotivState> timeline)
        {
            var lastRecorded = timeline.Latest();

            if (lastRecorded == null)
            {
                return(false);
            }

            IEnumerable <IEmotivState> dataSet = timeline[lastRecorded.Time - RefreshInterval, lastRecorded.Time].ToArray();

            if (dataSet == null || dataSet.Count() == 0)
            {
                return(false);
            }

            float targetRate = ((float)dataSet.Where(s => s.Command == TargetCommand).Count()) / dataSet.Count();

            if (targetRate >= ThreashHold)
            {
                return(true);
            }

            return(false);
        }
示例#2
0
        /// <summary>
        /// Calculate and trigger events based on calculation.
        /// <see cref="GetRate(IEnumerable{IEmotivState})"/>
        /// </summary>
        public override void Interpret()
        {
            IEmotivState lastRecorded = Timeline.Latest();

            if (lastRecorded == null)
            {
                return;
            }

            IEnumerable <IEmotivState> dataSet = Timeline[lastRecorded.Time - Interval, lastRecorded.Time].ToArray();

            if (dataSet == null || dataSet.Count() == 0)
            {
                return;
            }

            float targetRate = GetRate(dataSet);

            //Update slider
            if (Slider != null)
            {
                Slider.value = targetRate;
            }

            //Refresh
            if (targetRate >= RefreshThreshhold)
            {
                if (OnRefresh != null)
                {
                    OnRefresh.Invoke();
                }
            }

            //Click
            if (targetRate >= ClickThreshhold)
            {
                Timeline = new Timeline <IEmotivState>();
                if (OnClick != null)
                {
                    OnClick.Invoke();
                }
            }
        }