示例#1
0
        /* Save the new level */
        private void saveLevel_Click(object sender, EventArgs e)
        {
            if (levelName.Text == "")
            {
                MessageBox.Show("Level must have a name!", "No level name.", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            for (int i = 0; i < LevelFile.GetData().Count; i++)
            {
                if (LevelFile.GetData()[i].levelName == levelName.Text)
                {
                    MessageBox.Show("Level name must be unique!", "Level name already exists.", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
            }

            string pathToEnv = "ENV/PRODUCTION/" + levelName.Text.Trim().ToUpper().Replace(' ', '_') + "/";

            LevelFile.GetData().Add(new Level(levelName.Text, "DATA/" + pathToEnv, (LevelType)levelType.SelectedIndex));
            LevelFile.SaveData();

            Directory.CreateDirectory(pathToEnv);
            File.WriteAllBytes(pathToEnv + "COMMANDS.BIN", Properties.Resources.COMMANDS_BIN);
            File.WriteAllBytes(pathToEnv + "COMMANDS.JSON", Properties.Resources.COMMANDS_JSON);
            ModelsFile.GetFiles().Clear();
            ModelsFile.Save(pathToEnv);
            TexturesFile.GetFiles().Clear();
            TexturesFile.Save(pathToEnv);

            MessageBox.Show("Saved!", "Complete.", MessageBoxButtons.OK, MessageBoxIcon.Information);
            this.Close();
        }
示例#2
0
 private void ReloadList()
 {
     modelList.Items.Clear();
     ModelsFile.Load(levelPath);
     TexturesFile.Load(levelPath);
     foreach (Model model in ModelsFile.GetFiles())
     {
         if (!modelList.Items.Contains(model.modelName))
         {
             modelList.Items.Add(model.modelName);                                             //We share names between LOD0&1, so don't duplicate
         }
     }
 }
示例#3
0
        /* Import */
        private void importModel_Click(object sender, EventArgs e)
        {
            if (modelName.Text == "")
            {
                MessageBox.Show("Name cannot be blank!", "Invalid input", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (pathToLod0.Text == "" || pathToLod1.Text == "")
            {
                MessageBox.Show("Models must be selected for both LOD 0 & 1!", "Invalid input", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            for (int i = 0; i < ModelsFile.GetFiles().Count; i++)
            {
                if (ModelsFile.GetFiles()[i].modelName == modelName.Text)
                {
                    MessageBox.Show("Model name must be unique!", "Invalid input", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
            }

            Model newModelLOD0 = new Model(modelName.Text, LevelOfDetail.HIGH);

            if (!newModelLOD0.LoadFromOBJ(pathToLod0.Text))
            {
                MessageBox.Show("Model selected for LOD0 is invalid!\nModel must be triangulated and contain UV data.", "Invalid LOD0", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            Model newModelLOD1 = new Model(modelName.Text, LevelOfDetail.LOW);

            if (!newModelLOD1.LoadFromOBJ(pathToLod1.Text))
            {
                MessageBox.Show("Model selected for LOD1 is invalid!\nModel must be triangulated and contain UV data.", "Invalid LOD0", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            ModelsFile.AddFile(newModelLOD0);
            TexturesFile.AddFilesFromModel(newModelLOD0);
            ModelsFile.AddFile(newModelLOD1);
            TexturesFile.AddFilesFromModel(newModelLOD1);

            MessageBox.Show("Model successfully imported.", "Import complete", MessageBoxButtons.OK, MessageBoxIcon.Information);
            this.Close();
        }
示例#4
0
        /* Delete a model from the level */
        private void deleteModel_Click(object sender, EventArgs e)
        {
            if (modelList.SelectedIndex == -1)
            {
                return;
            }

            for (int i = 0; i < ModelsFile.GetFiles().Count; i++)
            {
                if (ModelsFile.GetFiles()[i].modelName == modelList.Items[modelList.SelectedIndex].ToString())
                {
                    ModelsFile.RemoveFile(ModelsFile.GetFiles()[i]);
                }
            }

            Texture[] prevTexs = new Texture[TexturesFile.GetFiles().Count];
            TexturesFile.GetFiles().CopyTo(prevTexs);
            TexturesFile.GetFiles().Clear();
            for (int i = 0; i < ModelsFile.GetFiles().Count; i++)
            {
                for (int x = 0; x < ModelsFile.GetFiles()[i].modelParts.Count; x++)
                {
                    for (int y = 0; y < prevTexs.Length; y++)
                    {
                        if (prevTexs[y].textureID == ModelsFile.GetFiles()[i].modelParts[x].thisMaterial.textureID)
                        {
                            TexturesFile.AddFile(prevTexs[y]);
                            break;
                        }
                    }
                }
            }

            ModelsFile.Save(levelPath);
            TexturesFile.Save(levelPath);

            ReloadList();
        }