示例#1
0
        internal static void DragFile(object sender, FileDropEventArgs e)
        {
            int n = Files.Length;

            Array.Resize(ref Files, n + 1);
            Files[n] = e.FileName;
            // reset
            LightingRelative = -1.0;
            Game.Reset();
            RefreshObjects();
            Renderer.InitializeVisibility();
            Renderer.UpdateVisibility(0.0, true);
            ObjectManager.UpdateAnimatedWorldObjects(0.01, true);
            Renderer.ApplyBackgroundColor();
        }
示例#2
0
 internal static void UpdateGraphicsSettings()
 {
     if (CurrentRouteFile != null)
     {
         Program.CurrentlyLoading = true;
         Renderer.RenderScene(0.0);
         Program.currentGameWindow.SwapBuffers();
         CameraAlignment a = Renderer.Camera.Alignment;
         if (Program.LoadRoute())
         {
             Renderer.Camera.Alignment = a;
             Program.Renderer.CameraTrackFollower.UpdateAbsolute(-1.0, true, false);
             Program.Renderer.CameraTrackFollower.UpdateAbsolute(a.TrackPosition, true, false);
             Renderer.Camera.AlignmentDirection = new CameraAlignment();
             Renderer.Camera.AlignmentSpeed     = new CameraAlignment();
             Renderer.UpdateVisibility(a.TrackPosition, true);
             ObjectManager.UpdateAnimatedWorldObjects(0.0, true);
         }
         Program.CurrentlyLoading = false;
     }
 }
示例#3
0
        internal static void DragFile(object sender, FileDropEventArgs e)
        {
            int n = Files.Length;

            Array.Resize <string>(ref Files, n + 1);
            Files[n] = e.FileName;
            // reset
            ReducedMode      = false;
            LightingRelative = -1.0;
            Game.Reset();
            Renderer.TextureManager.UnloadAllTextures();
            //Fonts.Initialize();
            Interface.ClearMessages();
            for (int i = 0; i < Files.Length; i++)
            {
#if !DEBUG
                try
                {
#endif
                if (String.Compare(System.IO.Path.GetFileName(Files[i]), "extensions.cfg", StringComparison.OrdinalIgnoreCase) == 0)
                {
                    UnifiedObject[]    carObjects, bogieObjects, couplerObjects;
                    double[]           axleLocations, couplerDistances;
                    TrainManager.Train train;
                    ExtensionsCfgParser.ParseExtensionsConfig(Files[i], out carObjects, out bogieObjects, out couplerObjects, out axleLocations, out couplerDistances, out train, true);
                    double z = 0.0;
                    for (int j = 0; j < carObjects.Length; j++)
                    {
                        Renderer.CreateObject(carObjects[j], new Vector3(0.0, 0.0, z),
                                              new Transformation(), new Transformation(), true, 0.0, 0.0, 25.0,
                                              0.0);
                        if (j < train.Cars.Length - 1)
                        {
                            z -= (train.Cars[j].Length + train.Cars[j + 1].Length) / 2.0;
                            z -= couplerDistances[j];
                        }
                    }
                    z = 0.0;
                    int trainCar = 0;
                    for (int j = 0; j < bogieObjects.Length; j++)
                    {
                        Renderer.CreateObject(bogieObjects[j], new Vector3(0.0, 0.0, z + axleLocations[j]),
                                              new Transformation(), new Transformation(), true, 0.0, 0.0, 25.0,
                                              0.0);
                        j++;
                        Renderer.CreateObject(bogieObjects[j], new Vector3(0.0, 0.0, z + axleLocations[j]),
                                              new Transformation(), new Transformation(), true, 0.0, 0.0, 25.0,
                                              0.0);
                        if (trainCar < train.Cars.Length - 1)
                        {
                            z -= (train.Cars[trainCar].Length + train.Cars[trainCar + 1].Length) / 2.0;
                            z -= couplerDistances[trainCar];
                        }
                        trainCar++;
                    }
                    z = 0.0;
                    for (int j = 0; j < couplerObjects.Length; j++)
                    {
                        z -= train.Cars[j].Length / 2.0;
                        z -= couplerDistances[j] / 2.0;

                        Renderer.CreateObject(couplerObjects[j], new Vector3(0.0, 0.0, z),
                                              new Transformation(), new Transformation(), true, 0.0, 0.0, 25.0,
                                              0.0);

                        z -= couplerDistances[j] / 2.0;
                        z -= train.Cars[j + 1].Length / 2.0;
                    }
                }
                else
                {
                    UnifiedObject o;
                    Program.CurrentHost.LoadObject(Files[i], System.Text.Encoding.UTF8, out o);
                    Renderer.CreateObject(o, Vector3.Zero,
                                          new Transformation(), new Transformation(), true, 0.0, 0.0, 25.0,
                                          0.0);
                }
#if !DEBUG
            }
            catch (Exception ex)
            {
                Interface.AddMessage(MessageType.Critical, false,
                                     "Unhandled error (" + ex.Message + ") encountered while processing the file " +
                                     Files[i] + ".");
            }
#endif
            }
            Renderer.InitializeVisibility();
            Renderer.UpdateVisibility(0.0, true);
            ObjectManager.UpdateAnimatedWorldObjects(0.01, true);
            Renderer.ApplyBackgroundColor();
        }