Skip to content

Commit

Permalink
emissive color support
Browse files Browse the repository at this point in the history
  • Loading branch information
4sval committed Dec 3, 2021
1 parent 7033e57 commit e085b09
Showing 1 changed file with 53 additions and 20 deletions.
73 changes: 53 additions & 20 deletions FModel/ViewModels/ModelViewerViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -137,25 +137,13 @@ public async Task LoadExport(UObject export)
public void RenderingToggle()
{
if (SelectedModel == null) return;
foreach (var g in SelectedModel.Group3d)
{
if (g is not MeshGeometryModel3D geometryModel)
continue;

geometryModel.IsRendering = !geometryModel.IsRendering;
}
SelectedModel.RenderingToggle = !SelectedModel.RenderingToggle;
}

public void WirefreameToggle()
{
if (SelectedModel == null) return;
foreach (var g in SelectedModel.Group3d)
{
if (g is not MeshGeometryModel3D geometryModel)
continue;

geometryModel.RenderWireframe = !geometryModel.RenderWireframe;
}
SelectedModel.WireframeToggle = !SelectedModel.WireframeToggle;
}

public void MaterialColorToggle()
Expand All @@ -167,7 +155,7 @@ public void MaterialColorToggle()
public void DiffuseOnlyToggle()
{
if (SelectedModel == null) return;
SelectedModel.ShowDiffuseOnly = !SelectedModel.ShowDiffuseOnly;
SelectedModel.DiffuseOnlyToggle = !SelectedModel.DiffuseOnlyToggle;
}

public void FocusOnSelectedMesh()
Expand Down Expand Up @@ -462,6 +450,17 @@ private void PushLod(CMeshSection[] sections, CMeshVertex[] verts, FRawStaticInd
m.RenderAmbientOcclusionMap = parameters.SpecularValue > 0;
});
}

if (parameters.Emissive is UTexture2D emissive && parameters.EmissiveColor is { A: > 0 } emissiveColor)
{
var s = emissive.Decode()?.Encode().AsStream();
var c = new Color4(emissiveColor.R, emissiveColor.G, emissiveColor.B, emissiveColor.A);
Application.Current.Dispatcher.Invoke(() =>
{
m.EmissiveColor = c;
m.EmissiveMap = new TextureModel(s);
});
}
}
else
{
Expand Down Expand Up @@ -528,6 +527,40 @@ public bool IsVisible
set => SetProperty(ref _isVisible, value);
}

private bool _renderingToggle;
public bool RenderingToggle
{
get => _renderingToggle;
set
{
SetProperty(ref _renderingToggle, value);
foreach (var g in Group3d)
{
if (g is not MeshGeometryModel3D geometryModel)
continue;

geometryModel.IsRendering = !geometryModel.IsRendering;
}
}
}

private bool _wireframeToggle;
public bool WireframeToggle
{
get => _wireframeToggle;
set
{
SetProperty(ref _wireframeToggle, value);
foreach (var g in Group3d)
{
if (g is not MeshGeometryModel3D geometryModel)
continue;

geometryModel.RenderWireframe = !geometryModel.RenderWireframe;
}
}
}

private bool _showMaterialColor;
public bool ShowMaterialColor
{
Expand All @@ -553,21 +586,21 @@ public bool ShowMaterialColor
}
}

private bool _showDiffuseOnly;
public bool ShowDiffuseOnly
private bool _diffuseOnlyToggle;
public bool DiffuseOnlyToggle
{
get => _showDiffuseOnly;
get => _diffuseOnlyToggle;
set
{
SetProperty(ref _showDiffuseOnly, value);
SetProperty(ref _diffuseOnlyToggle, value);
foreach (var g in Group3d)
{
if (g is not MeshGeometryModel3D { Material: PBRMaterial material })
continue;

material.RenderAmbientOcclusionMap = !material.RenderAmbientOcclusionMap;
material.RenderDisplacementMap = !material.RenderDisplacementMap;
material.RenderEmissiveMap = !material.RenderEmissiveMap;
// material.RenderEmissiveMap = !material.RenderEmissiveMap;
// material.RenderEnvironmentMap = !material.RenderEnvironmentMap;
material.RenderIrradianceMap = !material.RenderIrradianceMap;
material.RenderRoughnessMetallicMap = !material.RenderRoughnessMetallicMap;
Expand Down

0 comments on commit e085b09

Please sign in to comment.