fix material color overlapping material name

This commit is contained in:
iAmAsval 2021-12-09 23:49:33 +01:00
parent 45f4e9a476
commit 061a0de29b
3 changed files with 19 additions and 14 deletions

View File

@ -278,10 +278,10 @@ namespace FModel.ViewModels
public void CopySelectedMaterialName() public void CopySelectedMaterialName()
{ {
if (SelectedModel is not { } m || m.SelectedGeometry is null) if (SelectedModel is not { } m || m.SelectedGeometry?.Tag is null)
return; return;
Clipboard.SetText(m.SelectedGeometry.Name.TrimEnd()); Clipboard.SetText(m.SelectedGeometry.DisplayName.TrimEnd());
} }
public async Task<bool> TryChangeSelectedMaterial(UMaterialInstance materialInstance) public async Task<bool> TryChangeSelectedMaterial(UMaterialInstance materialInstance)
@ -314,10 +314,10 @@ namespace FModel.ViewModels
Application.Current.Dispatcher.Invoke(() => Application.Current.Dispatcher.Invoke(() =>
{ {
var s = FixName(materialInstance.Name); var s = FixName(materialInstance.Name);
cam.Group3d.Add(new MeshGeometryModel3D cam.Group3d.Add(new CustomMeshGeometryModel3D
{ {
Transform = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(1,0,0), -90)), Transform = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(1,0,0), -90)),
Tag = s, Name = s, Geometry = builder.ToMeshGeometry3D(), DisplayName = s, Geometry = builder.ToMeshGeometry3D(),
Material = m, IsTransparent = isTransparent, IsRendering = isRendering Material = m, IsTransparent = isTransparent, IsRendering = isRendering
}); });
}); });
@ -384,9 +384,9 @@ namespace FModel.ViewModels
var (m, isRendering, isTransparent) = LoadMaterial(unrealMaterial); var (m, isRendering, isTransparent) = LoadMaterial(unrealMaterial);
Application.Current.Dispatcher.Invoke(() => Application.Current.Dispatcher.Invoke(() =>
{ {
cam.Group3d.Add(new MeshGeometryModel3D cam.Group3d.Add(new CustomMeshGeometryModel3D
{ {
Name = unrealMaterial.Name, Tag = FixName(section.MaterialName ?? unrealMaterial.Name), DisplayName = FixName(section.MaterialName ?? unrealMaterial.Name),
Geometry = builder.ToMeshGeometry3D(), Material = m, IsTransparent = isTransparent, Geometry = builder.ToMeshGeometry3D(), Material = m, IsTransparent = isTransparent,
IsRendering = isRendering IsRendering = isRendering
}); });
@ -642,7 +642,7 @@ namespace FModel.ViewModels
SetProperty(ref _renderingToggle, value); SetProperty(ref _renderingToggle, value);
foreach (var g in Group3d) foreach (var g in Group3d)
{ {
if (g is not MeshGeometryModel3D geometryModel) if (g is not CustomMeshGeometryModel3D geometryModel)
continue; continue;
geometryModel.IsRendering = !geometryModel.IsRendering; geometryModel.IsRendering = !geometryModel.IsRendering;
@ -659,7 +659,7 @@ namespace FModel.ViewModels
SetProperty(ref _wireframeToggle, value); SetProperty(ref _wireframeToggle, value);
foreach (var g in Group3d) foreach (var g in Group3d)
{ {
if (g is not MeshGeometryModel3D geometryModel) if (g is not CustomMeshGeometryModel3D geometryModel)
continue; continue;
geometryModel.RenderWireframe = !geometryModel.RenderWireframe; geometryModel.RenderWireframe = !geometryModel.RenderWireframe;
@ -676,7 +676,7 @@ namespace FModel.ViewModels
SetProperty(ref _showMaterialColor, value); SetProperty(ref _showMaterialColor, value);
for (int i = 0; i < Group3d.Count; i++) for (int i = 0; i < Group3d.Count; i++)
{ {
if (Group3d[i] is not MeshGeometryModel3D { Material: PBRMaterial material } m) if (Group3d[i] is not CustomMeshGeometryModel3D { Material: PBRMaterial material } m)
continue; continue;
var index = B(i); var index = B(i);
@ -701,7 +701,7 @@ namespace FModel.ViewModels
SetProperty(ref _diffuseOnlyToggle, value); SetProperty(ref _diffuseOnlyToggle, value);
foreach (var g in Group3d) foreach (var g in Group3d)
{ {
if (g is not MeshGeometryModel3D { Material: PBRMaterial material }) if (g is not CustomMeshGeometryModel3D { Material: PBRMaterial material })
continue; continue;
material.RenderAmbientOcclusionMap = !material.RenderAmbientOcclusionMap; material.RenderAmbientOcclusionMap = !material.RenderAmbientOcclusionMap;
@ -716,8 +716,8 @@ namespace FModel.ViewModels
} }
} }
private MeshGeometryModel3D _selectedGeometry; // selected material private CustomMeshGeometryModel3D _selectedGeometry; // selected material
public MeshGeometryModel3D SelectedGeometry public CustomMeshGeometryModel3D SelectedGeometry
{ {
get => _selectedGeometry; get => _selectedGeometry;
set => SetProperty(ref _selectedGeometry, value); set => SetProperty(ref _selectedGeometry, value);
@ -754,4 +754,9 @@ namespace FModel.ViewModels
} }
} }
} }
public class CustomMeshGeometryModel3D : MeshGeometryModel3D
{
public string DisplayName { get; set; }
}
} }

View File

@ -82,7 +82,7 @@ namespace FModel.Views
private void OnMouse3DDown(object sender, MouseDown3DEventArgs e) private void OnMouse3DDown(object sender, MouseDown3DEventArgs e)
{ {
if (!Keyboard.Modifiers.HasFlag(ModifierKeys.Shift) || e.HitTestResult.ModelHit is not MeshGeometryModel3D m) return; if (!Keyboard.Modifiers.HasFlag(ModifierKeys.Shift) || e.HitTestResult.ModelHit is not CustomMeshGeometryModel3D m) return;
_applicationView.ModelViewer.SelectedModel.SelectedGeometry = m; _applicationView.ModelViewer.SelectedModel.SelectedGeometry = m;
MaterialsListName.ScrollIntoView(m); MaterialsListName.ScrollIntoView(m);
} }

View File

@ -657,7 +657,7 @@
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="/FModel;component/Resources/materialicon.png" Width="16" Height="16" Margin="5 0" HorizontalAlignment="Center" /> <Image Grid.Column="0" Source="/FModel;component/Resources/materialicon.png" Width="16" Height="16" Margin="5 0" HorizontalAlignment="Center" />
<TextBlock Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Center" Text="{Binding Tag}" TextTrimming="CharacterEllipsis" /> <TextBlock Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Center" Text="{Binding DisplayName}" TextTrimming="CharacterEllipsis" />
<ToggleButton Grid.Column="3" IsChecked="{Binding IsRendering}" Padding="3" Style="{DynamicResource {x:Static adonisUi:Styles.ToolbarToggleButton}}"> <ToggleButton Grid.Column="3" IsChecked="{Binding IsRendering}" Padding="3" Style="{DynamicResource {x:Static adonisUi:Styles.ToolbarToggleButton}}">
<Viewbox Width="16" Height="16" HorizontalAlignment="Center"> <Viewbox Width="16" Height="16" HorizontalAlignment="Center">
<Canvas Width="24" Height="24"> <Canvas Width="24" Height="24">