diff --git a/Distribution/GameData/ConformalDecals/Plugins/ConformalDecals.dll b/Distribution/GameData/ConformalDecals/Plugins/ConformalDecals.dll index 557a85e..3baf1e4 100644 Binary files a/Distribution/GameData/ConformalDecals/Plugins/ConformalDecals.dll and b/Distribution/GameData/ConformalDecals/Plugins/ConformalDecals.dll differ diff --git a/Source/ConformalDecals/MaterialModifiers/MaterialProperty.cs b/Source/ConformalDecals/MaterialModifiers/MaterialProperty.cs index 8f6e9de..0bce511 100644 --- a/Source/ConformalDecals/MaterialModifiers/MaterialProperty.cs +++ b/Source/ConformalDecals/MaterialModifiers/MaterialProperty.cs @@ -18,6 +18,7 @@ namespace ConformalDecals.MaterialModifiers { if (node == null) throw new ArgumentNullException(nameof(node)); PropertyName = node.GetValue("name"); + Debug.Log($"Parsing material property {_propertyName}"); } public abstract void Modify(Material material); diff --git a/Source/ConformalDecals/MaterialModifiers/MaterialPropertyCollection.cs b/Source/ConformalDecals/MaterialModifiers/MaterialPropertyCollection.cs index 4c818df..0348071 100644 --- a/Source/ConformalDecals/MaterialModifiers/MaterialPropertyCollection.cs +++ b/Source/ConformalDecals/MaterialModifiers/MaterialPropertyCollection.cs @@ -74,7 +74,6 @@ namespace ConformalDecals.MaterialModifiers { for (var i = 0; i < _serializedNames.Length; i++) { var property = MaterialProperty.Instantiate(_serializedProperties[i]); - Debug.Log($"insantiating {property.GetType().Name} {property.GetInstanceID()}"); _materialProperties.Add(_serializedNames[i], property); if (property is MaterialTextureProperty textureProperty && textureProperty.isMain) { @@ -112,7 +111,7 @@ namespace ConformalDecals.MaterialModifiers { var newProperty = MaterialProperty.CreateInstance(); newProperty.PropertyName = propertyName; _materialProperties.Add(propertyName, newProperty); - + return newProperty; } @@ -137,7 +136,7 @@ namespace ConformalDecals.MaterialModifiers { public MaterialTextureProperty AddTextureProperty(string propertyName, bool isMain = false) { var newProperty = AddProperty(propertyName); if (isMain) _mainTexture = newProperty; - + return newProperty; } @@ -155,13 +154,11 @@ namespace ConformalDecals.MaterialModifiers { public T ParseProperty(ConfigNode node) where T : MaterialProperty { var propertyName = node.GetValue("name"); if (string.IsNullOrEmpty(propertyName)) throw new ArgumentException("node has no name"); - Debug.Log($"Parsing material property {propertyName}"); var newProperty = AddOrGetProperty(propertyName); newProperty.ParseNode(node); if (newProperty is MaterialTextureProperty textureProperty && textureProperty.isMain) { - Debug.Log("new texture has isMain enabled"); _mainTexture = textureProperty; } @@ -203,7 +200,7 @@ namespace ConformalDecals.MaterialModifiers { public void UpdateTile(Rect tile) { if (_mainTexture == null) throw new InvalidOperationException("UpdateTile called but no main texture is specified!"); var mainTexSize = _mainTexture.Dimensions; - + Debug.Log($"Main texture is {_mainTexture.PropertyName} and its size is {mainTexSize}"); foreach (var entry in _materialProperties) { @@ -219,9 +216,9 @@ namespace ConformalDecals.MaterialModifiers { int x = index % tileCountX; int y = index / tileCountY; - + var tile = new Rect(x * tileSize.x, y * tileSize.y, tileSize.x, tileSize.y); - + UpdateTile(tile); } diff --git a/Source/ConformalDecals/MaterialModifiers/MaterialTextureProperty.cs b/Source/ConformalDecals/MaterialModifiers/MaterialTextureProperty.cs index b891873..595e66c 100644 --- a/Source/ConformalDecals/MaterialModifiers/MaterialTextureProperty.cs +++ b/Source/ConformalDecals/MaterialModifiers/MaterialTextureProperty.cs @@ -2,15 +2,14 @@ using System; using UnityEngine; namespace ConformalDecals.MaterialModifiers { - public class MaterialTextureProperty : MaterialProperty, ISerializationCallbackReceiver { + public class MaterialTextureProperty : MaterialProperty { [SerializeField] public bool isNormal; [SerializeField] public bool isMain; [SerializeField] public bool autoScale; [SerializeField] public bool autoTile; - [SerializeField] private string _textureUrl; - - private Texture2D _texture; + [SerializeField] private string _textureUrl; + [SerializeField] private Texture2D _texture; [SerializeField] private bool _hasTile; [SerializeField] private Rect _tileRect; @@ -40,13 +39,6 @@ namespace ConformalDecals.MaterialModifiers { public float AspectRatio => MaskedHeight / (float) MaskedWidth; - public void OnBeforeSerialize() { } - - public void OnAfterDeserialize() { - // Unity appears to be screwing up textures when deserializing them, so this is the fix? - _texture = LoadTexture(_textureUrl, isNormal); - } - public override void ParseNode(ConfigNode node) { base.ParseNode(node); @@ -65,13 +57,10 @@ namespace ConformalDecals.MaterialModifiers { else { TextureUrl = node.GetValue("textureUrl"); } - - Debug.Log($"parsed texture node with texture {_textureUrl}, {isMain}"); if (node.HasValue("tileRect") && !autoTile) { SetTile(ParsePropertyRect(node, "tileRect", true, _tileRect)); } - } public override void Modify(Material material) { @@ -91,7 +80,7 @@ namespace ConformalDecals.MaterialModifiers { } public void SetTile(Rect tile) { - SetTile(tile, new Vector2(_texture.width, _texture.height)); + SetTile(tile, Dimensions); } public void SetTile(Rect tile, Vector2 mainTexDimensions) { diff --git a/Source/ConformalDecals/ModuleConformalDecal.cs b/Source/ConformalDecals/ModuleConformalDecal.cs index ef0dd00..f2b678a 100644 --- a/Source/ConformalDecals/ModuleConformalDecal.cs +++ b/Source/ConformalDecals/ModuleConformalDecal.cs @@ -93,7 +93,6 @@ namespace ConformalDecals { public override void OnLoad(ConfigNode node) { this.Log("Loading module"); - this.Log($"{node.ToString()}"); try { // SETUP TRANSFORMS @@ -191,9 +190,10 @@ namespace ConformalDecals { catch (Exception e) { this.LogException("Exception parsing partmodule", e); } + + UpdateMaterials(); if (HighLogic.LoadedSceneIsGame) { - UpdateMaterials(); UpdateScale(); UpdateProjection(); }