private void FillModelsGridView() { ModelsGridView.DataSource = null; ModelsToImport.Clear(); foreach (var mesh in SceneToImport.Meshes) { if (!mesh.Faces.Any(x => x.IndexCount == 3)) { continue; } var modelInfo = new ImportModelInfo() { Selected = true, Name = mesh.Name, TriangleCount = mesh.FaceCount, IsFlexible = mesh.HasBones, IsTextured = mesh.HasTextureCoords(0), Mesh = mesh, SurfaceID = PreferredSurfaceID >= 0 ? PreferredSurfaceID : 0 }; ModelsToImport.Add(modelInfo); } ModelsGridView.DataSource = ModelsToImport; }
private void RebuildSurfaceList() { SurfaceList.Clear(); int existingSurfaces = Project.Surfaces.Max(x => x.SurfaceID); int maxSurface = existingSurfaces; if (ModelsToImport.Any()) { maxSurface = Math.Max(maxSurface, ModelsToImport.Max(x => x.SurfaceID)); } for (int i = 0; i <= maxSurface + 1; i++) { if (i <= existingSurfaces) { SurfaceList.Add(new SurfaceItem(i, $"Surface {i}") { ExistingMeshes = Project.Surfaces[i].GetAllMeshReferences().Count() }); } else { SurfaceList.Add(new SurfaceItem(i, $"*Surface {i}")); } } }
private void UpdateRowSurfaceComboBox(DataGridViewRow row) { var cboCell = row.Cells[SurfaceColumn.Index] as DataGridViewComboBoxCell; var currentModel = row.DataBoundItem as ImportModelInfo; var visibleSurfaces = new List <SurfaceItem>(); foreach (var surface in SurfaceList) { if (surface.ID == 0) { visibleSurfaces.Add(surface); continue; } int meshCount = surface.ExistingMeshes + ModelsToImport .Count(x => x.Selected && x != currentModel && x.SurfaceID == surface.ID); } }
private void CheckUncheckButton_Click(object sender, EventArgs e) { if (ModelsToImport.Count == 0) { return; } int checkedCount = ModelsToImport.Count(x => x.Selected); int uncheckedCount = ModelsToImport.Count(x => !x.Selected); foreach (var model in ModelsToImport) { model.Selected = (checkedCount < uncheckedCount); } foreach (DataGridViewRow row in ModelsGridView.Rows) { ModelsGridView.UpdateCellValue(SelectionColumn.Index, row.Index); } }
private void ValidateSelection() { ModelsToImport.RemoveAll(x => !x.Selected); DialogResult = DialogResult.OK; }