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(); } }
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(); } }
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 { } }
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); } } }