Ejemplo n.º 1
0
        private void LoadModel(bool required)
        {
            if (ofdLoadModel.ShowDialog(this) == DialogResult.OK)
            {
                m_ModelFileName = ofdLoadModel.FileName.Replace('/', '\\');
                m_ModelPath     = m_ModelFileName.Substring(0, m_ModelFileName.LastIndexOf('\\') + 1);
                m_ModelFormat   = ofdLoadModel.FileName.Substring(ofdLoadModel.FileName.Length - 3, 3).ToLower();

                ModelBase loadedModel = BMDImporter.LoadModel(m_ModelFileName);
                m_ImportedModel = BMDImporter.ConvertModelToBMD(ref m_ImportedModel.m_File,
                                                                m_ModelFileName, 1f, m_ModelImportSettings.m_ExtraOptions, false);
                m_Materials = loadedModel.m_Materials;

                m_MdlLoaded = true;

                PrerenderModel();

                glModelView.SetShowMarioReference(true);
                glModelView.Refresh();

                PopulateColTypes();

                tbModelName.Text = m_ModelFileName;
            }
            else if (required)
            {
                m_EarlyClosure = true;
                Close();
            }
        }
Ejemplo n.º 2
0
        private void LoadModel(bool required)
        {
            if (ofdLoadModel.ShowDialog(this) == DialogResult.OK)
            {
                m_ModelFileName = ofdLoadModel.FileName.Replace('/', '\\');
                m_ModelPath     = m_ModelFileName.Substring(0, m_ModelFileName.LastIndexOf('\\') + 1);
                m_ModelFormat   = ofdLoadModel.FileName.Substring(ofdLoadModel.FileName.Length - 3, 3).ToLower();

                BMDImporter importer = new BMDImporter();
                m_ImportedModel = importer.ConvertModelToBMD(ref m_ImportedModel.m_File,
                                                             m_ModelFileName, Vector3.One, m_ExtraOptions, false);
                m_Materials = importer.GetModelMaterials(m_ModelFileName);

                m_MdlLoaded = true;

                PrerenderModel();

                PopulateColTypes();

                tbModelName.Text = m_ModelFileName;
            }
            else if (required)
            {
                m_EarlyClosure = true;
                Close();
            }
        }
Ejemplo n.º 3
0
        private void ImportModel()
        {
            float faceSizeThreshold = 0.001f;

            if (txtThreshold.Text == "")
            {
                faceSizeThreshold = 0.001f;//Default value
            }
            else
            {
                try { faceSizeThreshold = float.Parse(txtThreshold.Text, Helper.USA); }
                catch { MessageBox.Show(txtThreshold.Text + "\nis not a valid float value. Please enter a value in format 0.123"); return; }
            }
            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();
            BMDImporter importer = new BMDImporter();

            m_ImportedModel = importer.ConvertModelToBMD(ref m_ImportedModel.m_File,
                                                         m_ModelFileName, m_Scale, m_ExtraOptions, true);

            PrerenderModel();
            glModelView.Refresh();
            if (cbGenerateCollision.Checked)
            {
                float kclScale = (!chkInGamePreview.Checked) ? m_Scale.X : (m_Scale.X * m_InGameModelScale);
                slStatus.Text = "Importing collision map... This may take a few minutes, please be patient.";
                try
                {
                    kcl = Program.m_ROM.GetFileFromName(m_KCLName);
                    new KCLImporter().ConvertModelToKCL(kcl, m_ModelFileName, kclScale, faceSizeThreshold, 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
                    {
                        MessageBox.Show("An error occurred importing the collision map:\n\n" +
                                        e.Message + "\n\n" + e.StackTrace);
                    }
                }
            }
            slStatus.Text = "Finished importing.";

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

            try { ((LevelEditorForm)Owner).UpdateLevelModel(); }
            catch { }
        }
Ejemplo n.º 4
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);
                }
            }
        }