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