Пример #1
0
        private void btnImportColMap_Click(object sender, EventArgs e)
        {
            float scale;

            if (!Helper.TryParseFloat(txtScale.Text, out scale))
            {
                MessageBox.Show("Please enter a valid float value for scale, eg. 1.23");
                return;
            }
            float faceSizeThreshold;

            if (!Helper.TryParseFloat(txtThreshold.Text, out faceSizeThreshold))
            {
                MessageBox.Show("Please enter a valid float value, eg. 1.23");
                return;
            }

            try
            {
                KCLImporter.ConvertModelToKCL(m_KCL.m_File, txtModelName.Text, scale, faceSizeThreshold, m_MatColTypes);
            }
            catch (Exception ex)
            {
                new ExceptionMessageBox(ex).ShowDialog();
                return;
            }

            LoadKCL(m_KCL.m_File);
            RenderKCLMesh();
            GL.DeleteLists(m_KCLMeshDLists[2], 1); m_KCLMeshDLists[2] = 0;
            glModelView.Refresh();
        }
Пример #2
0
        private void btnOpenModel_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Filter = Strings.MODEL_FORMATS_FILTER;
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                txtModelName.Text = ofd.FileName;
                m_MatColTypes     = KCLImporter.GetMaterialsList(ofd.FileName);
                if (Properties.Settings.Default.RememberMaterialCollisionTypeAssignments)
                {
                    string key = ofd.FileName;
                    if (m_SavedMaterialCollisionTypes.ContainsKey(key))
                    {
                        Dictionary <string, int> materialCollisionTypeAssignments = m_SavedMaterialCollisionTypes[key];
                        if (materialCollisionTypeAssignments.Keys.Count == m_MatColTypes.Keys.Count &&
                            materialCollisionTypeAssignments.Keys.Except(m_MatColTypes.Keys).Count() < 1)
                        {
                            m_MatColTypes = materialCollisionTypeAssignments;
                        }
                        else
                        {
                            m_SavedMaterialCollisionTypes.Remove(key);
                        }
                    }
                }
                PopulateColTypes();
            }
        }
Пример #3
0
        private void ImportModel()
        {
            NitroFile kcl;//This'll hold the KCL file that is to be replaced, either a level's or an object's

            //If it's an object it'll be scaled down - need to get back to original value
            slStatus.Text = "Importing model...";
            glModelView.Refresh();
            m_ImportedModel = BMDImporter.ConvertModelToBMD(ref m_ImportedModel.m_File,
                                                            m_ModelFileName, m_ModelImportSettings.m_Scale, m_ModelImportSettings.m_ExtraOptions, true);

            PrerenderModel();
            glModelView.Refresh();
            if (m_ModelImportSettings.m_GenerateKCL)
            {
                float kclScale = (!chkInGamePreview.Checked) ? m_ModelImportSettings.m_Scale : (m_ModelImportSettings.m_Scale * m_ModelImportSettings.m_InGameModelScale);
                slStatus.Text = "Importing collision map... This may take a few minutes, please be patient.";
                try
                {
                    kcl = Program.m_ROM.GetFileFromName(m_KCLName);
                    KCLImporter.ConvertModelToKCL(kcl, m_ModelFileName, kclScale, m_ModelImportSettings.m_KCLMinimumFaceSize, m_MatColTypes);
                }
                catch (Exception e)
                {
                    if (e.Message.Contains("NitroROM: cannot find file"))
                    {
                        MessageBox.Show("This object has no collision data, however the model will still be imported.");
                    }
                    else
                    {
                        new ExceptionMessageBox("Error importing collision map", e).ShowDialog();
                    }
                    return;
                }
            }
            slStatus.Text = "Finished importing.";

            m_SavedModelImportSettings[m_BMDName] = m_ModelImportSettings;
            m_SavedMaterialCollisionTypes[m_ModelPath + m_ModelFileName] = m_MatColTypes;

            RefreshScale(1f);
            tbScale.Text = "1";

            if (Owner != null)
            {
                try
                {
                    ((LevelEditorForm)Owner).UpdateLevelModel();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.StackTrace);
                }
            }
        }