public override void GetParams(CMaterialParams parameters) { // ??? }
public override void GetParams(CMaterialParams parameters) { throw new System.NotImplementedException(); }
public MaterialExporter(UUnrealMaterial?unrealMaterial, bool bNoOtherTextures) : this() { if (unrealMaterial == null) { return; } _internalFilePath = unrealMaterial.Owner?.Name ?? unrealMaterial.Name; var allTextures = new List <UUnrealMaterial>(); unrealMaterial.AppendReferencedTextures(allTextures, false); var parameters = new CMaterialParams(); unrealMaterial.GetParams(parameters); if ((parameters.IsNull || parameters.Diffuse == unrealMaterial) && allTextures.Count == 0) { return; } var sb = new StringBuilder(); var toExport = new List <UUnrealMaterial>(); void Proc(string name, UUnrealMaterial?arg) { if (arg == null) { return; } sb.AppendLine($"{name}={arg.Name}"); switch (bNoOtherTextures) { case true when !name.StartsWith("Other["): case false: toExport.Add(arg); break; } } Proc("Diffuse", parameters.Diffuse); Proc("Normal", parameters.Normal); Proc("Specular", parameters.Specular); Proc("SpecPower", parameters.SpecPower); Proc("Opacity", parameters.Opacity); Proc("Emissive", parameters.Emissive); Proc("Cube", parameters.Cube); Proc("Mask", parameters.Mask); // Export other textures var numOtherTextures = 0; foreach (var texture in allTextures) { if (toExport.Contains(texture)) { continue; } Proc($"Other[{numOtherTextures++}]", texture); } _fileData = sb.ToString().Trim(); foreach (var texture in toExport) { if (texture == unrealMaterial || texture is not UTexture2D t) { continue; } var bNearest = false; if (t.TryGetValue(out FName trigger, "LODGroup", "Filter") && !trigger.IsNone) { bNearest = trigger.Text.EndsWith("TEXTUREGROUP_Pixels2D", StringComparison.OrdinalIgnoreCase) || trigger.Text.EndsWith("TF_Nearest", StringComparison.OrdinalIgnoreCase); } _textures[t.Owner?.Name ?? t.Name] = t.Decode(bNearest); } if (!bNoOtherTextures && unrealMaterial is UMaterialInstanceConstant { Parent : { } } material) { _parentData = new MaterialExporter(material.Parent, bNoOtherTextures); } }
public MaterialExporter(UUnrealMaterial?unrealMaterial) : this() { if (unrealMaterial == null) { return; } _internalFilePath = unrealMaterial.Owner?.Name ?? unrealMaterial.Name; var allTextures = new List <UUnrealMaterial>(); unrealMaterial.AppendReferencedTextures(allTextures, false); var parameters = new CMaterialParams(); unrealMaterial.GetParams(parameters); if ((parameters.IsNull || parameters.Diffuse == unrealMaterial) && allTextures.Count == 0) { return; } var sb = new StringBuilder(); var toExport = new List <UUnrealMaterial>(); void Proc(string name, UUnrealMaterial?arg) { if (arg == null) { return; } sb.AppendLine($"{name}={arg.Name}"); toExport.Add(arg); } Proc("Diffuse", parameters.Diffuse); Proc("Normal", parameters.Normal); Proc("Specular", parameters.Specular); Proc("SpecPower", parameters.SpecPower); Proc("Opacity", parameters.Opacity); Proc("Emissive", parameters.Emissive); Proc("Cube", parameters.Cube); Proc("Mask", parameters.Mask); // Export other textures var numOtherTextures = 0; foreach (var texture in allTextures) { if (toExport.Contains(texture)) { continue; } Proc($"Other[{numOtherTextures++}]", texture); } _fileData = sb.ToString().Trim(); foreach (var texture in toExport) { if (texture == unrealMaterial || !(texture is UTexture2D t)) { continue; } _textures[t.Owner?.Name ?? t.Name] = t.Decode(); } if (unrealMaterial is UMaterialInstanceConstant { Parent : { } } material) { _parentData = new MaterialExporter(material.Parent); } }