Merge remote-tracking branch 'Exter-N/stuff-for-65'

This commit is contained in:
Ottermandias 2023-10-05 17:57:00 +02:00
commit 19c4c3b50e
2 changed files with 15 additions and 15 deletions

View file

@ -26,14 +26,11 @@ public sealed unsafe class LiveMaterialPreviewer : LiveMaterialPreviewerBase
if (_shaderPackage == null) if (_shaderPackage == null)
throw new InvalidOperationException("Material doesn't have a shader package"); throw new InvalidOperationException("Material doesn't have a shader package");
var material = (Structs.Material*)Material; var material = Material;
_originalShPkFlags = material->ShaderPackageFlags; _originalShPkFlags = material->ShaderFlags;
if (material->MaterialParameter->TryGetBuffer(out var materialParameter)) _originalMaterialParameter = material->MaterialParameterCBuffer->TryGetBuffer().ToArray();
_originalMaterialParameter = materialParameter.ToArray();
else
_originalMaterialParameter = Array.Empty<float>();
_originalSamplerFlags = new uint[material->TextureCount]; _originalSamplerFlags = new uint[material->TextureCount];
for (var i = 0; i < _originalSamplerFlags.Length; ++i) for (var i = 0; i < _originalSamplerFlags.Length; ++i)
@ -46,11 +43,12 @@ public sealed unsafe class LiveMaterialPreviewer : LiveMaterialPreviewerBase
if (reset) if (reset)
{ {
var material = (Structs.Material*)Material; var material = Material;
material->ShaderPackageFlags = _originalShPkFlags; material->ShaderFlags = _originalShPkFlags;
if (material->MaterialParameter->TryGetBuffer(out var materialParameter)) var materialParameter = material->MaterialParameterCBuffer->TryGetBuffer();
if (!materialParameter.IsEmpty)
_originalMaterialParameter.AsSpan().CopyTo(materialParameter); _originalMaterialParameter.AsSpan().CopyTo(materialParameter);
for (var i = 0; i < _originalSamplerFlags.Length; ++i) for (var i = 0; i < _originalSamplerFlags.Length; ++i)
@ -71,11 +69,12 @@ public sealed unsafe class LiveMaterialPreviewer : LiveMaterialPreviewerBase
if (!CheckValidity()) if (!CheckValidity())
return; return;
var constantBuffer = ((Structs.Material*)Material)->MaterialParameter; var constantBuffer = Material->MaterialParameterCBuffer;
if (constantBuffer == null) if (constantBuffer == null)
return; return;
if (!constantBuffer->TryGetBuffer(out var buffer)) var buffer = constantBuffer->TryGetBuffer();
if (buffer.IsEmpty)
return; return;
for (var i = 0; i < _shaderPackage->MaterialElementCount; ++i) for (var i = 0; i < _shaderPackage->MaterialElementCount; ++i)
@ -102,10 +101,10 @@ public sealed unsafe class LiveMaterialPreviewer : LiveMaterialPreviewerBase
var id = 0u; var id = 0u;
var found = false; var found = false;
var samplers = (Structs.ShaderPackageUtility.Sampler*)_shaderPackage->Samplers; var samplers = _shaderPackage->Samplers;
for (var i = 0; i < _shaderPackage->SamplerCount; ++i) for (var i = 0; i < _shaderPackage->SamplerCount; ++i)
{ {
if (samplers[i].Crc == samplerCrc) if (samplers[i].CRC == samplerCrc)
{ {
id = samplers[i].Id; id = samplers[i].Id;
found = true; found = true;
@ -116,7 +115,7 @@ public sealed unsafe class LiveMaterialPreviewer : LiveMaterialPreviewerBase
if (!found) if (!found)
return; return;
var material = (Structs.Material*)Material; var material = Material;
for (var i = 0; i < material->TextureCount; ++i) for (var i = 0; i < material->TextureCount; ++i)
{ {
if (material->Textures[i].Id == id) if (material->Textures[i].Id == id)
@ -136,7 +135,7 @@ public sealed unsafe class LiveMaterialPreviewer : LiveMaterialPreviewerBase
if (mtrlHandle == null) if (mtrlHandle == null)
return false; return false;
var shpkHandle = ((Structs.MtrlResource*)mtrlHandle)->ShpkResourceHandle; var shpkHandle = mtrlHandle->ShaderPackageResourceHandle;
if (shpkHandle == null) if (shpkHandle == null)
return false; return false;

View file

@ -36,6 +36,7 @@ public partial class ModEditWindow
"bguvscroll.shpk", "bguvscroll.shpk",
"channeling.shpk", "channeling.shpk",
"characterglass.shpk", "characterglass.shpk",
"charactershadowoffset.shpk",
"character.shpk", "character.shpk",
"cloud.shpk", "cloud.shpk",
"createviewposition.shpk", "createviewposition.shpk",