コード例 #1
0
        protected override void Update(TimeSpan gameTime)
        {
            this.timeAcumulator += gameTime.TotalSeconds;

            double phase = this.timeAcumulator % Period;

            if (phase < StartPeriod)
            {
                this.Camera.Transform.LookAt(this.startLookAt);
            }
            else if (phase < EaseInPeriod)
            {
                float lerp = (float)((phase - StartPeriod) / StartPeriod);
                this.Camera.Transform.LookAt(Vector3.Lerp(this.startLookAt, this.endLookAt, lerp));
            }
            else if (phase < EndPeriod)
            {
                this.Camera.Transform.LookAt(this.endLookAt);
            }
            else if (phase < EaseOutPeriod)
            {
                float lerp = (float)((phase - EndPeriod) / StartPeriod);
                lerp = (float)easing.Ease(lerp);
                this.Camera.Transform.LookAt(Vector3.Lerp(this.endLookAt, this.startLookAt, lerp));
            }
        }
コード例 #2
0
        private static void OnTimerTick(RadCartesianChart chart)
        {
            CameraInfo cameraInfo = GetOrCreateCameraInfo(chart);

            double durationInSeconds = 1.5;
            Point  targetOffset      = new Point(100, -75);

            TimeSpan timeSpan = DateTime.Now - cameraInfo.initialAnimationDateTime;

            if (durationInSeconds < timeSpan.TotalSeconds)
            {
                cameraInfo.initialAnimationTimer.Stop();
                cameraInfo.initialAnimationTimer = null;
                return;
            }

            double progress = timeSpan.TotalSeconds / durationInSeconds;

            EasingFunctionBase ease = new BackEase {
                EasingMode = EasingMode.EaseIn
            };
            double easedProgress = ease.Ease(progress);
            double hOffset       = easedProgress * targetOffset.X;

            ease = new CubicEase {
                EasingMode = EasingMode.EaseInOut
            };
            easedProgress = ease.Ease(progress);
            double vOffset = easedProgress * targetOffset.Y;

            MoveCamera(chart, new Point(hOffset, vOffset));
        }