コード例 #1
0
        public override void PrepareFrame(ElapsedTime elapsedTime, bool updateFull)
        {
            base.PrepareFrame(elapsedTime, updateFull);

            if (Animation && Owner.Viewer.RealTime > AnimationStart + AnimationLength)
            {
                Animation = false;
            }

            if (Owner.Viewer.RealTime > 0.1)
            {
                // TODO: Casting to MSTSLocomotive here suggests a problem with the data model in the Simulator.
                var playerLocomotive = Owner.Viewer.PlayerLocomotive as MSTSLocomotive;
                if (playerLocomotive != null && playerLocomotive.Train != null && playerLocomotive.OdometerVisible)
                {
                    SetNotice(Viewer.Catalog.GetStringFmt("Odometer {0}", FormatStrings.FormatShortDistanceDisplay(playerLocomotive.OdometerM, Owner.Viewer.MilepostUnitsMetric)));
                }
                // Camera notices are temporary so we put them after to override.
                if (Owner.Viewer.Camera != null)
                {
                    if (Owner.Viewer.Camera.Name != Camera)
                    {
                        Camera = Owner.Viewer.Camera.Name;
                        // Changing camera should not notify FOV change.
                        FieldOfView = Owner.Viewer.Camera.FieldOfView;
                        SetNotice(Viewer.Catalog.GetStringFmt("Camera: {0}", Camera));
                    }
                    else if (FieldOfView != Owner.Viewer.Camera.FieldOfView)
                    {
                        FieldOfView = Owner.Viewer.Camera.FieldOfView;
                        SetNotice(Viewer.Catalog.GetStringFmt("FOV: {0:F0}°", FieldOfView));
                    }
                }
            }
        }