private void MatViewPanel_TextureEntryOnDoubleClick(object sender, EventArgs e) { // Get our entry TextureEntry Entry = (sender as TextureEntry); // Create our browser; once the user has finished with this menu they should? have a material. string MaterialName = ""; IMaterial OurMaterial = Entry.GetMaterial(); if (OurMaterial != null) { MaterialName = OurMaterial.GetMaterialName(); } MaterialBrowser Browser = new MaterialBrowser(MaterialName); IMaterial SelectedMaterial = Browser.GetSelectedMaterial(); // Set the new material data, notify the map editor that a change has been made. if (SelectedMaterial != null) { currentMaterials[Entry].MaterialName = SelectedMaterial.GetMaterialName(); currentMaterials[Entry].MaterialHash = SelectedMaterial.GetMaterialHash(); Entry.SetMaterial(SelectedMaterial); OnObjectUpdated(sender, e); } // Yeet the browser into the shadow realm. Browser.Dispose(); Browser = null; Entry.IsSelected = false; }
private void LoadMaterials() { if (isMaterialTabFocused && !hasLoadedMaterials) { MatViewPanel.Controls.Clear(); currentMaterials.Clear(); if (FrameResource.IsFrameType(currentObject)) { if (currentObject is FrameObjectSingleMesh) { var entry = (currentObject as FrameObjectSingleMesh); MaterialStruct[] materialAssignments = entry.Material.Materials[LODComboBox.SelectedIndex]; for (int x = 0; x != materialAssignments.Length; x++) { TextureEntry textEntry = new TextureEntry(); var mat = materialAssignments[x]; IMaterial material = MaterialsManager.LookupMaterialByHash(mat.MaterialHash); textEntry.OnEntrySingularClick += MatViewPanel_TextureEntryOnSingularClick; textEntry.OnEntryDoubleClick += MatViewPanel_TextureEntryOnDoubleClick; textEntry.SetMaterial(material); currentMaterials.Add(textEntry, mat); MatViewPanel.Controls.Add(textEntry); } } } hasLoadedMaterials = true; } }
private void PopulateBrowser(IMaterial[] materials) { FlowPanel_Materials.Controls.Clear(); for (int x = 0; x < materials.Length; x++) { var mat = materials[x]; TextureEntry textEntry = new TextureEntry(); textEntry.SetMaterial(mat); textEntry.OnEntrySingularClick += TextureEntry_OnSingularClick; textEntry.OnEntryDoubleClick += TextureEntry_OnDoubleClick; FlowPanel_Materials.Controls.Add(textEntry); } }