protected void FromXml(XmlReader r)
        {
            // search attributes to see if Type is specified
            string type = null;

            for (int i = 0; i < r.AttributeCount; i++)
            {
                r.MoveToAttribute(i);
                if (r.Name == "Type")
                {
                    type = r.Value;
                    break;
                }
            }
            r.MoveToElement();

            if (type == "HeightfieldMosaic")
            {
                terrainGenerator = new Multiverse.Lib.HeightfieldGenerator.HeightfieldTerrainGenerator(r);
            }
            else
            {
                Multiverse.Generator.FractalTerrainGenerator gen = new Multiverse.Generator.FractalTerrainGenerator();

                gen.FromXML(r);

                terrainGenerator = gen;
            }
        }
示例#2
0
        public void Execute()
        {
            // save old terrain object for undo
            undoTerrainGenerator = app.TerrainGenerator;

            // load the new terrain
            app.LoadMap(terrainFilename);
        }
        public WorldTerrain(WorldEditor worldEditor)
        {
            app = worldEditor;

            terrainDisplay = new AutoSplatTerrainDisplay(this, app);

            terrainGenerator = DefaultTerrainGenerator();
        }
        public void Execute()
        {
            // save old terrain object for undo
            undoTerrainGenerator = app.TerrainGenerator;

            // load the new terrain
            app.LoadMap(terrainFilename);
        }
        public WorldTerrain(WorldEditor worldEditor)
        {
            app = worldEditor;

            terrainDisplay = new AutoSplatTerrainDisplay(this, app);

            terrainGenerator = DefaultTerrainGenerator();
        }
        public void LoadTerrainFile(string filename)
        {
            int    dot     = filename.LastIndexOf('.');
            string fileExt = filename.Substring(dot + 1);

            switch (fileExt)
            {
            case "mvt":
                XmlReader r = XmlReader.Create(filename, app.XMLReaderSettings);

                // read until we find the start of the world description
                while (r.Read())
                {
                    // look for the start of the terrain description
                    if (r.NodeType == XmlNodeType.Element)
                    {
                        if (r.Name == "Terrain")
                        {
                            LoadTerrain(r);
                            break;
                        }
                    }
                }
                r.Close();
                break;

            case "mmf":
                int    lastslash = filename.LastIndexOf('\\');
                string baseName  = filename.Substring(lastslash + 1, dot - lastslash - 1);

                try
                {
                    terrainGenerator     = new Multiverse.Lib.HeightfieldGenerator.HeightfieldTerrainGenerator(baseName, 1, 0);
                    app.TerrainGenerator = terrainGenerator;
                }
                catch (Axiom.Core.AxiomException ex)
                {
                    System.Windows.Forms.MessageBox.Show(ex.Message);
                }

                break;
            }
        }
        protected void FromXml(XmlReader r)
        {
            // search attributes to see if Type is specified
            string type = null;
            for (int i = 0; i < r.AttributeCount; i++)
            {
                r.MoveToAttribute(i);
                if (r.Name == "Type")
                {
                    type = r.Value;
                    break;
                }
            }
            r.MoveToElement();

            if (type == "HeightfieldMosaic")
            {
                terrainGenerator = new Multiverse.Lib.HeightfieldGenerator.HeightfieldTerrainGenerator(r);
            }
            else
            {
                Multiverse.Generator.FractalTerrainGenerator gen = new Multiverse.Generator.FractalTerrainGenerator();

                gen.FromXML(r);

                terrainGenerator = gen;
            }
        }
        public void LoadTerrainFile(string filename)
        {
            int dot = filename.LastIndexOf('.');
            string fileExt = filename.Substring(dot + 1);

            switch (fileExt)
            {
                case "mvt":
                    XmlReader r = XmlReader.Create(filename, app.XMLReaderSettings);

                    // read until we find the start of the world description
                    while (r.Read())
                    {
                        // look for the start of the terrain description
                        if (r.NodeType == XmlNodeType.Element)
                        {
                            if (r.Name == "Terrain")
                            {

                                LoadTerrain(r);
                                break;
                            }
                        }
                    }
                    r.Close();
                    break;
                case "mmf":
                    int lastslash = filename.LastIndexOf('\\');
                    string baseName = filename.Substring(lastslash + 1, dot - lastslash - 1);

                    try
                    {
                        terrainGenerator = new Multiverse.Lib.HeightfieldGenerator.HeightfieldTerrainGenerator(baseName, 1, 0);
                        app.TerrainGenerator = terrainGenerator;
                    }
                    catch (Axiom.Core.AxiomException ex)
                    {
                        System.Windows.Forms.MessageBox.Show(ex.Message);
                    }

                    break;
            }
        }
        public WorldEditor()
        {
            undoRedo = new UndoRedo();
            InitializeComponent();
            config = new WorldEditorConfig();
            helpURL = config.HelpBaseURL;
            feedbackURL = config.FeedbackBaseURL;
            releaseNoteURL = config.ReleaseNotesURL;

            // create the default terrain generator
            terrainGenerator = DefaultTerrainGenerator();
            RepositoryClass.Instance.InitializeRepositoryPath();
            designateRepositoriesDialog = new DesignateRepositoriesDialog();
            List<string> validityLog = RepositoryClass.Instance.CheckForValidRepository();
            if (validityLog.Count != 0)
            {
                using (SetAssetRepositoryDialog dlg = new SetAssetRepositoryDialog(this))
                {
                    DialogResult result;

                    result = dlg.ShowDialog();
                    if (result != DialogResult.OK)
                    {
                        return;
                    }
                }
            }

            List<string> log = RepositoryClass.Instance.InitializeRepository();
            CheckLogAndMaybeExit(log);

            InitAxiomControl();
            instance = this;
            DisplayObject.collisionManager = collisionManager;
            assets = new AssetCollection();
            AssetListConverter.assetCollection = assets;
            SpeedWindFileListUITypeEditor.assetCollection = assets;
            TreeDescriptionFilenameUITypeEditor.assetCollection = assets;
            ImageNameUITypeEditor.assetCollection = assets;
            ParticleEffectNameUITypeEditor.assetCollection = assets;

            // Read in and set user preferences

            object ret;
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "DisplayFog", (object)displayFog);
            if (ret == null || String.Equals(ret.ToString(), "True"))
            {
                ret = (object)true;
            }
            else
            {
                ret = (object)false;
            }
            displayFog = (bool)ret;
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "DisplayLight", (object)displayLights);
            if (ret == null || String.Equals(ret.ToString(), "True"))
            {
                ret = (object)true;
            }
            else
            {
                ret = (object)false;
            }
            displayLights = (bool)ret;
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "DisplayRegionMarkers", (object)true);
            if (ret == null || String.Equals(ret.ToString(), "True"))
            {
                ret = (object)true;
            }
            else
            {
                ret = (object)false;
            }
            displayBoundaryMarkers = (bool)ret;
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "DisplayRoadMarkers", (object)true);
            if (ret == null || String.Equals(ret.ToString(), "True"))
            {
                ret = (object)true;
            }
            else
            {
                ret = (object)false;
            }
            displayRoadMarkers = (bool)ret;
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "DisplayMarkerPoints", (object)true);
            if (ret == null || String.Equals(ret.ToString(), "True"))
            {
                ret = (object)true;
            }
            else
            {
                ret = (object)false;
            }
            displayMarkerPoints = (bool)ret;
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "DisplayPointLightMarkers", (object)true);
            if (ret == null || String.Equals(ret.ToString(), "True"))
            {
                ret = (object)true;
            }
            else
            {
                ret = (object)false;
            }
            displayPointLightMarker = (bool)ret;
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "Disable All Markers", (object)false);
            if (ret == null || String.Equals(ret.ToString(), "False"))
            {
                ret = (object)false;
            }
            else
            {
                ret = (object)true;
            }
            disableAllMarkers = (bool)ret;
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "Display Terrain Decals", (object)true);
            if (ret == null || String.Equals(ret.ToString(), "True"))
            {
                ret = (object)true;
            }
            else
            {
                ret = (object)false;
            }
            displayTerrainDecals = (bool)ret;
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "LockCameraToObject", (object)false);
            if (ret == null || String.Equals(ret.ToString(), "False"))
            {
                ret = (object)false;
            }
            else
            {
                ret = (object)true;
            }
            lockCameraToObject = (bool)ret;
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "CameraFollowsTerrain", (object)false);
            if (ret == null || String.Equals(ret.ToString(), "False"))
            {
                ret = (object)false;
            }
            else
            {
                ret = (object)true;
            }
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "CameraStaysAboveTerrain", (object)true);
            if (ret == null || String.Equals(ret.ToString(), "True"))
            {
                ret = (object)true;
            }
            else
            {
                ret = (object)false;
            }
            cameraAboveTerrain = (bool)ret;
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "DisplayOcean", (object)DisplayOcean);
            if (ret == null || String.Equals(ret.ToString(), "True"))
            {
                ret = (object)true;
            }
            else
            {
                ret = (object)false;
            }
            DisplayOcean = (bool)ret;
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "DisplayShadows", (object)false);
            if (ret == null || String.Equals(ret.ToString(), "False"))
            {
                ret = (object)false;
            }
            else
            {
                ret = (object)true;
            }
            DisplayShadows = (bool)ret;
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "CameraNearDistance", (object)1f);
            if (ret == null)
            {
                ret = (object)1f;
            }
            CameraNearDistance = float.Parse(ret.ToString());
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "AutoSaveEnable", (object)autoSaveEnabled);
            if (ret == null || String.Equals(ret.ToString(), "True"))
            {
                ret = (object)true;
            }
            else
            {
                ret = (object)false;
            }
            autoSaveEnabled = (bool)ret;
            if (ret == null || String.Equals(ret.ToString(), "True"))
            {
                ret = (object)true;
            }
            else
            {
                ret = (object)false;
            }
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "AutoSaveTime", (object)autoSaveTime);
            if (ret == null)
            {
                autoSaveTime = 30 * 60 * 1000;
            }
            else
            {
                autoSaveTime = uint.Parse(ret.ToString());
            }

            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "CameraDefaultSpeed", (object)(Config.DefaultCamSpeed));
            if (ret != null)
            {
                camSpeed = float.Parse(ret.ToString());
            }
            else
            {
                camSpeed = Config.DefaultCamSpeed;
            }
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "CameraSpeedIncrement", (object)(Config.DefaultCamSpeedIncrement));
            if (ret != null)
            {
                camSpeedIncrement = float.Parse(ret.ToString());
            }
            else
            {
                camSpeedIncrement = Config.DefaultCamSpeedIncrement;
            }
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "PresetCameraSpeed1", (object)(Config.DefaultPresetCamSpeed1));
            if (ret != null)
            {
                presetCameraSpeed1 = float.Parse(ret.ToString());
            }
            else
            {
                presetCameraSpeed1 = Config.DefaultPresetCamSpeed1;
            }
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "PresetCameraSpeed2", (object)(Config.DefaultPresetCamSpeed2));
            if (ret != null)
            {
                presetCameraSpeed2 = float.Parse(ret.ToString());
            }
            else
            {
                presetCameraSpeed2 = config.DefaultPresetCamSpeed2;
            }
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "PresetCameraSpeed3", (object)(Config.DefaultPresetCamSpeed3));
            if (ret != null)
            {
                presetCameraSpeed3 = float.Parse(ret.ToString());
            }
            else
            {
                presetCameraSpeed3 = Config.DefaultPresetCamSpeed3;
            }
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "PresetCameraSpeed4", (object)(Config.DefaultPresetCamSpeed4));
            if (ret != null)
            {
                presetCameraSpeed4 = float.Parse(ret.ToString());
            }
            else
            {
                presetCameraSpeed4 = Config.DefaultPresetCamSpeed4;
            }

            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "CameraAccelerate", (object)Config.DefaultAccelerateCamera);
            if (ret != null && String.Equals(ret.ToString(), "False"))
            {
                accelerateCamera = false;
            }
            else
            {
                accelerateCamera = true;
            }

            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "CameraAccelerationRate", (object)(Config.DefaultCamAccelRate));
            if (ret != null)
            {
                defaultCamAccelSpeed = float.Parse(ret.ToString());
            }
            else
            {
                defaultCamAccelSpeed = Config.DefaultCamAccelRate;
            }
            camAccel = defaultCamAccelSpeed;
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "CameraAccelerationIncrement", (object)(Config.DefaultCamAccelRateIncrement));
            if (ret != null)
            {
                camAccelIncrement = float.Parse(ret.ToString());
            }
            else
            {
                camAccelIncrement = Config.DefaultCamAccelRateIncrement;
            }

            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "PresetCameraAccelRate1", (object)(Config.DefaultPresetCamAccel1));
            if (ret != null)
            {
                presetCameraAccel1 = float.Parse(ret.ToString());
            }
            else
            {
                presetCameraAccel1 = Config.DefaultPresetCamAccel1;
            }

            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "PresetCameraAccelRate2", (object)(Config.DefaultPresetCamAccel2));
            if (ret != null)
            {
                presetCameraAccel2 = float.Parse(ret.ToString());
            }
            else
            {
                presetCameraAccel2 = Config.DefaultPresetCamAccel2;
            }
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "PresetCameraAccelRate3", (object)(Config.DefaultPresetCamAccel3));
            if (ret != null)
            {
                presetCameraAccel3 = float.Parse(ret.ToString());
            }
            else
            {
                presetCameraAccel3 = Config.DefaultPresetCamAccel3;
            }
            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "PresetCameraAccelRate4", (object)(Config.DefaultPresetCamAccel4));
            if (ret != null)
            {
                presetCameraAccel4 = float.Parse(ret.ToString());
            }
            else
            {
                presetCameraAccel4 = Config.DefaultPresetCamAccel4;
            }

            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "CameraTurnRate", (object)Config.DefaultCameraTurnRate);
            if (ret != null)
            {
                cameraTurnIncrement = float.Parse(ret.ToString());
            }
            else
            {
                cameraTurnIncrement = Config.DefaultCameraTurnRate;
            }

            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "MouseWheelMultiplier", (object)Config.DefaultMouseWheelMultiplier);
            if (ret != null)
            {
                mouseWheelMultiplier = float.Parse(ret.ToString());
            }
            else
            {
                mouseWheelMultiplier = Config.DefaultMouseWheelMultiplier;
            }

            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "MWMPreset1", (object)Config.DefaultPresetMWM1);
            if (ret != null)
            {
                presetMWM1 = float.Parse(ret.ToString());
            }
            else
            {
                presetMWM1 = Config.DefaultPresetMWM1;
            }

            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "MWMPreset2", (object)Config.DefaultPresetMWM2);
            if (ret != null)
            {
                presetMWM2 = float.Parse(ret.ToString());
            }
            else
            {
                presetMWM2 = Config.DefaultPresetMWM2;
            }

            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "MWMPreset3", (object)Config.DefaultPresetMWM3);
            if (ret != null)
            {
                presetMWM3 = float.Parse(ret.ToString());
            }
            else
            {
                presetMWM3 = Config.DefaultPresetMWM3;
            }

            ret = Registry.GetValue(Config.WorldEditorBaseRegistryKey, "MWMPreset4", (object)Config.DefaultPresetMWM4);
            if (ret != null)
            {
                presetMWM4 = float.Parse(ret.ToString());
            }
            else
            {
                presetMWM4 = Config.DefaultPresetMWM4;
            }

            setToolStripMWMDropDownMenu();

            setToolStripAccelSpeedDropDownMenu();

            random = new Random();

            templates = new NameValueTemplateCollection("./NameValueTemplates");
            NameValueUITypeEditor.nvt = templates;

            xmlWriterSettings = new XmlWriterSettings();
            xmlWriterSettings.Indent = true;

            xmlReaderSettings = new XmlReaderSettings();

            createKeybindings();

            StatusBarAddItem(fpsStatusValueLabel);
            StatusBarAddItem(mouseGroundCoorPanel);
            StatusBarAddItem(cameraSpeedStatusLabel);
            StatusBarAddItem(cameraStatusLabel);
            activeBoundaryListToolStripStatusLabel.Name = "activeBoundaryList";

            RepositoryClass.Instance.InitializeRepositoryPath();

            timerFreq = Stopwatch.Frequency;

            lastFrameTime = Stopwatch.GetTimestamp();

            showPathDialog = new ShowPathDialog();
        }