private bool AddMapIfNotPresent(MultiMapMaterial multiMapMaterial, TextureMapTypes mapType, ShaderResourceView shaderResourceView) { bool isChanged = false; if (multiMapMaterial != null && multiMapMaterial.TextureMaps.All(m => m.MapType != mapType)) // If this map type is not yet added, then add it now { multiMapMaterial.TextureMaps.Add(new TextureMapInfo(mapType, shaderResourceView)); isChanged = true; } return(isChanged); }
private bool UpdateMap(MultiMapMaterial multiMapMaterial, bool isMapUsed, TextureMapTypes mapType, ShaderResourceView shaderResourceView) { bool isChanged; if (isMapUsed) { isChanged = AddMapIfNotPresent(multiMapMaterial, mapType, shaderResourceView); } else { isChanged = RemoveMap(multiMapMaterial, mapType); } return(isChanged); }
private bool RemoveMap(MultiMapMaterial multiMapMaterial, TextureMapTypes mapType) { bool isChanged = false; for (var i = multiMapMaterial.TextureMaps.Count - 1; i >= 0; i--) { if (multiMapMaterial.TextureMaps[i].MapType == mapType) { multiMapMaterial.TextureMaps.RemoveAt(i); isChanged = true; } } return(isChanged); }
public KnownTextureFile(TextureMapTypes textureMapType, string fileSuffixes) { TextureMapType = textureMapType; FileSuffixes = fileSuffixes.Split(',').Select(f => f.Trim()).ToList(); }
public KnownTextureFile(TextureMapTypes textureMapType) { TextureMapType = textureMapType; FileSuffixes = new List <string>(); }
public TextureMapSelectionControl(IMultiMapMaterial material, TextureMapTypes textureMapType, string baseFolder = null) { Material = material; _physicallyBasedMaterial = material as PhysicallyBasedMaterial; TextureMapType = textureMapType; if (baseFolder != null && !baseFolder.EndsWith("\\") && !baseFolder.EndsWith("/")) { baseFolder += '\\'; } BaseFolder = baseFolder; _textureMapInfo = Material.TextureMaps.FirstOrDefault(m => m.MapType == TextureMapType); InitializeComponent(); ShowTextureTextBox = true; if (_physicallyBasedMaterial != null) { ShowFilter = textureMapType == TextureMapTypes.Metalness || textureMapType == TextureMapTypes.Glossiness || textureMapType == TextureMapTypes.Roughness || textureMapType == TextureMapTypes.MetalnessRoughness || textureMapType == TextureMapTypes.AmbientOcclusion; ShowMask = textureMapType == TextureMapTypes.Albedo || textureMapType == TextureMapTypes.BaseColor || textureMapType == TextureMapTypes.DiffuseColor; if (textureMapType == TextureMapTypes.Metalness || textureMapType == TextureMapTypes.MetalnessRoughness) { CurrentFilterValue = _physicallyBasedMaterial.Metalness; } if (textureMapType == TextureMapTypes.Roughness || textureMapType == TextureMapTypes.MetalnessRoughness) { CurrentFilterValue = _physicallyBasedMaterial.Roughness; } if (ShowMask) { CurrentMaskColor = _physicallyBasedMaterial.BaseColor.ToWpfColor(); } } else { ShowFilter = false; ShowMask = false; } // To add support for drop into TextBox, we need to use PreviewDrop and PreviewDragOver events in DragAndDropHelper //var dragAndDropHelper = new DragAndDropHelper(FileNameTextBox, ".*"); //dragAndDropHelper.FileDroped += delegate (object sender, FileDropedEventArgs e) //{ // FileNameTextBox.Text = e.FileName; // MasterCheckBox.IsChecked = true; // LoadCurrentTexture(); //}; MapTypeTextBlock.Text = textureMapType.ToString(); if (_textureMapInfo == null) { FileNameTextBox.Text = ""; TextureCheckBox.IsChecked = false; } else { if (BaseFolder != null && _textureMapInfo.TextureResourceName.StartsWith(BaseFolder)) { FileNameTextBox.Text = _textureMapInfo.TextureResourceName.Substring(BaseFolder.Length); } else { FileNameTextBox.Text = _textureMapInfo.TextureResourceName; } TextureCheckBox.IsChecked = true; } UpdateMaskHeadingTextBlock(); }