コード例 #1
0
        /// <summary>
        ///     更新
        ///     會更新物件位置
        /// </summary>
        protected void UpdateProgress(double currentTime)
        {
            //開始 結束 進度
            var startProgress = PathPrecentageCounter.CalculatePrecentage(_hitObject.StartTime - currentTime + DelayTime);
            var endProgress   = PathPrecentageCounter.CalculatePrecentage(_hitObject.EndTime - currentTime + DelayTime);
            //影響程度
            var CurveEasingTypesPrecentage = _hitObject.CurveEasingTypesPrecentage;

            //修正
            startProgress = MathHelper.Clamp(startProgress, 0, 1);
            endProgress   = MathHelper.Clamp(endProgress, 0, 1);
            //根據設定曲線去改變百分比
            startProgress = Interpolation.ApplyEasing(_hitObject.CurveEasingTypes, startProgress, 0, 1, 1) * CurveEasingTypesPrecentage + startProgress * (1 - CurveEasingTypesPrecentage);
            endProgress   = Interpolation.ApplyEasing(_hitObject.CurveEasingTypes, endProgress, 0, 1, 1) * CurveEasingTypesPrecentage + endProgress * (1 - CurveEasingTypesPrecentage);


            //更新開始打擊和放開打擊的位置定義
            Components.ForEach(c => c.UpdateProgress(startProgress, endProgress));
        }
コード例 #2
0
        //update progress
        public static void UpdateTemplate(this IHasTemplate drawableObject, double currentTime)
        {
            //start progress
            var startProgress = PathPrecentageCounter.CalculatePrecentage(drawableObject.RpObject.StartTime - currentTime + DelayTime, 1);
            //end progress
            var endProgress = PathPrecentageCounter.CalculatePrecentage(drawableObject.RpObject.StartTime - currentTime + DelayTime, 1);

            //影響程度
            var CurveEasingTypesPrecentage = 0;

            //修正
            startProgress = MathHelper.Clamp(startProgress, 0, 1);
            endProgress   = MathHelper.Clamp(endProgress, 0, 1);
            //fix precentage by EasingTypes
            startProgress = Interpolation.ApplyEasing(Easing.None, startProgress, 0, 1, 1) * CurveEasingTypesPrecentage + startProgress * (1 - CurveEasingTypesPrecentage);
            endProgress   = Interpolation.ApplyEasing(Easing.None, endProgress, 0, 1, 1) * CurveEasingTypesPrecentage + endProgress * (1 - CurveEasingTypesPrecentage);

            //update all
            foreach (IComponentUpdateEachFrame single in drawableObject.Components.Where(n => n is IComponentUpdateEachFrame))
            {
                single.UpdateProgress(startProgress, endProgress);
            }
        }