From 8d8795c57dfeb8b02ea675beed7ccc93127ef603 Mon Sep 17 00:00:00 2001 From: blowfish Date: Wed, 27 Feb 2019 22:46:39 -0800 Subject: [PATCH] Unify material modifiers Allows float and color properties to be set on actual parts now, not just fairings --- .../GameData/ReStock/Plugins/Restock.dll | Bin 13824 -> 15872 bytes .../ColorPropertyMaterialModifier.cs | 22 +++++++ .../FloatPropertyMaterialModifier.cs | 22 +++++++ .../MaterialModifiers/IMaterialModifier.cs | 10 +++ .../MaterialModifierParser.cs | 62 ++++++++++++++++++ .../TexturePropertyMaterialModifier.cs | 22 +++++++ .../ModuleRestockModifyFairingMaterials.cs | 40 +++++------ .../Restock/ModuleRestockModifyMaterials.cs | 23 +++---- Source/Restock/Restock.csproj | 5 ++ 9 files changed, 171 insertions(+), 35 deletions(-) create mode 100644 Source/Restock/MaterialModifiers/ColorPropertyMaterialModifier.cs create mode 100644 Source/Restock/MaterialModifiers/FloatPropertyMaterialModifier.cs create mode 100644 Source/Restock/MaterialModifiers/IMaterialModifier.cs create mode 100644 Source/Restock/MaterialModifiers/MaterialModifierParser.cs create mode 100644 Source/Restock/MaterialModifiers/TexturePropertyMaterialModifier.cs diff --git a/Distribution/Restock/GameData/ReStock/Plugins/Restock.dll b/Distribution/Restock/GameData/ReStock/Plugins/Restock.dll index 822ad7b5f6efc9a4383db667ae492e2c48c1f1e7..05e139eda039263c5aefaec2b920c224030399f6 100644 GIT binary patch literal 15872 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 Cl(yXf literal 13824 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 - UpdateMaterial(renderer.material, node); - } - } - - private void UpdateMaterial(Material material, ConfigNode node) - { foreach (ConfigNode node2 in node.nodes) { - if (node2.name == "COLOR_PROPERTY") + IMaterialModifier modifier; + try { - string name = node2.GetValue("name"); - Color color = ConfigNode.ParseColor(node2.GetValue("color")); - - material.SetColor(name, color); + modifier = parser.Parse(node2); } - else if (node2.name == "FLOAT_PROPERTY") + catch (Exception ex) { - string name = node2.GetValue("name"); - float value = float.Parse(node2.GetValue("value")); + Debug.LogException(new Exception($"[{nameof(ModuleRestockModifyFairingMaterials)}] cannot parse node as material modifier: \n{node2.ToString()}\n", ex)); + continue; + } - material.SetFloat(name, value); + modifier.Modify(fairingModule.FairingMaterial); + modifier.Modify(fairingModule.FairingConeMaterial); + modifier.Modify(fairingModule.FairingFlightMaterial); + modifier.Modify(fairingModule.FairingFlightConeMaterial); + + foreach (ProceduralFairings.FairingPanel fairingPanel in fairingModule.Panels) + { + MeshRenderer renderer = fairingPanel.go.GetComponent(); + modifier.Modify(renderer.material); } } } diff --git a/Source/Restock/ModuleRestockModifyMaterials.cs b/Source/Restock/ModuleRestockModifyMaterials.cs index c91aa9cd..dffdf3d0 100644 --- a/Source/Restock/ModuleRestockModifyMaterials.cs +++ b/Source/Restock/ModuleRestockModifyMaterials.cs @@ -1,5 +1,6 @@ using System; using UnityEngine; +using Restock.MaterialModifiers; namespace Restock { @@ -40,28 +41,24 @@ namespace Restock } - foreach (ConfigNode node3 in node2.GetNodes("TEXTURE_PROPERTY")) - { - string name = node3.GetValue("name"); - string textureUrl = node3.GetValue("textureUrl"); - bool normalMapToggle = false; + MaterialModifierParser parser = new MaterialModifierParser(); - if (node3.GetValue("isNormalMap") is string normalMapToggleString) + foreach (ConfigNode node3 in node2.nodes) + { + IMaterialModifier modifier; + try { - normalMapToggle = bool.Parse(normalMapToggleString); + modifier = parser.Parse(node3); } - - GameDatabase.TextureInfo textureInfo = GameDatabase.Instance.GetTextureInfo(textureUrl); - - if (textureInfo == null) + catch (Exception ex) { - Debug.LogError($"Cannot find texture: {textureUrl}"); + Debug.LogException(new Exception($"[{nameof(ModuleRestockModifyMaterials)}] cannot parse node as material modifier: \n{node3.ToString()}\n", ex)); continue; } foreach (Renderer renderer in renderers) { - renderer.material.SetTexture(name, normalMapToggle ? textureInfo.normalMap : textureInfo.texture); + modifier.Modify(renderer.material); } } } diff --git a/Source/Restock/Restock.csproj b/Source/Restock/Restock.csproj index edf1073e..d831f31a 100644 --- a/Source/Restock/Restock.csproj +++ b/Source/Restock/Restock.csproj @@ -41,6 +41,11 @@ + + + + +