From e6288942ea47346948ee796fd926d418023b28e6 Mon Sep 17 00:00:00 2001 From: drewcassidy Date: Mon, 9 Nov 2020 19:34:34 -0800 Subject: [PATCH] Cleanup and fix onVariantApplied --- .../Plugins/ConformalDecals.dll | Bin 85504 -> 86016 bytes Source/ConformalDecals/DecalConfig.cs | 1 - .../ConformalDecals/ModuleConformalDecal.cs | 8 +++-- Source/ConformalDecals/ProjectionTarget.cs | 32 +++++++++--------- Source/ConformalDecals/Text/FontLoader.cs | 1 - 5 files changed, 22 insertions(+), 20 deletions(-) diff --git a/GameData/ConformalDecals/Plugins/ConformalDecals.dll b/GameData/ConformalDecals/Plugins/ConformalDecals.dll index a28242fb21a008f194efe72d9d64d82bc955662c..95daf2b9467022133a3d5342abc7f54dac965fb9 100644 GIT binary patch delta 32641 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 diff --git a/Source/ConformalDecals/DecalConfig.cs b/Source/ConformalDecals/DecalConfig.cs index a0cc843..7a3e730 100644 --- a/Source/ConformalDecals/DecalConfig.cs +++ b/Source/ConformalDecals/DecalConfig.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using ConformalDecals.Text; using ConformalDecals.Util; using TMPro; -using UniLinq; using UnityEngine; namespace ConformalDecals { diff --git a/Source/ConformalDecals/ModuleConformalDecal.cs b/Source/ConformalDecals/ModuleConformalDecal.cs index b5a8b78..36dfbf5 100644 --- a/Source/ConformalDecals/ModuleConformalDecal.cs +++ b/Source/ConformalDecals/ModuleConformalDecal.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using ConformalDecals.MaterialProperties; using ConformalDecals.Util; +using UniLinq; using UnityEngine; namespace ConformalDecals { @@ -236,7 +237,7 @@ namespace ConformalDecals { opacity = defaultOpacity; cutoff = defaultCutoff; wear = defaultWear; - + UpdateTextures(); UpdateScale(); @@ -343,7 +344,10 @@ namespace ConformalDecals { } protected void OnVariantApplied(Part eventPart, PartVariant variant) { - if (_isAttached && eventPart == part.parent) { + if (_isAttached && eventPart != null) { + if (projectMultiple && eventPart != part.parent) return; + else if (!_targets.Select(o => o.targetPart).Contains(eventPart)) return; + UpdateTargets(); } } diff --git a/Source/ConformalDecals/ProjectionTarget.cs b/Source/ConformalDecals/ProjectionTarget.cs index 007b50a..fc0eb0c 100644 --- a/Source/ConformalDecals/ProjectionTarget.cs +++ b/Source/ConformalDecals/ProjectionTarget.cs @@ -8,8 +8,8 @@ using UnityEngine.Rendering; namespace ConformalDecals { public class ProjectionTarget { // Target object data - private readonly Transform _target; - private readonly Part _targetPart; + public readonly Transform target; + public readonly Part targetPart; private readonly Mesh _targetMesh; private readonly Matrix4x4 _decalMatrix; private readonly Vector3 _decalNormal; @@ -22,8 +22,8 @@ namespace ConformalDecals { public ProjectionTarget(Part targetPart, Transform target, MeshRenderer renderer, MeshFilter filter, Matrix4x4 orthoMatrix, Transform projector, bool useBaseNormal) { - _targetPart = targetPart; - _target = target; + this.targetPart = targetPart; + this.target = target; _targetMesh = filter.sharedMesh; _useBaseNormal = useBaseNormal; _decalMPB = new MaterialPropertyBlock(); @@ -41,22 +41,22 @@ namespace ConformalDecals { var flightID = (uint) ParseUtil.ParseInt(node, "part"); var targetPath = ParseUtil.ParseString(node, "targetPath"); var targetName = ParseUtil.ParseString(node, "targetName"); - + _decalMatrix = ParseUtil.ParseMatrix4x4(node, "decalMatrix"); _decalNormal = ParseUtil.ParseVector3(node, "decalNormal"); _decalTangent = ParseUtil.ParseVector3(node, "decalTangent"); _useBaseNormal = useBaseNormal; _decalMPB = new MaterialPropertyBlock(); - _targetPart = vessel[flightID]; - if (_targetPart == null) throw new IndexOutOfRangeException("Vessel returned null part"); - _target = LoadTransformPath(targetPath, _targetPart.transform); - if (_target.name != targetName) throw new FormatException("Target name does not match"); + targetPart = vessel[flightID]; + if (targetPart == null) throw new IndexOutOfRangeException("Vessel returned null part"); + target = LoadTransformPath(targetPath, targetPart.transform); + if (target.name != targetName) throw new FormatException("Target name does not match"); - var renderer = _target.GetComponent(); - var filter = _target.GetComponent(); + var renderer = target.GetComponent(); + var filter = target.GetComponent(); - if (!ValidateTarget(_target, renderer, filter)) throw new FormatException("Invalid target"); + if (!ValidateTarget(target, renderer, filter)) throw new FormatException("Invalid target"); _targetMesh = filter.sharedMesh; @@ -85,17 +85,17 @@ namespace ConformalDecals { _decalMPB.SetFloat(PropertyIDs._RimFalloff, partMPB.GetFloat(PropertyIDs._RimFalloff)); _decalMPB.SetColor(PropertyIDs._RimColor, partMPB.GetColor(PropertyIDs._RimColor)); - Graphics.DrawMesh(_targetMesh, _target.localToWorldMatrix, decalMaterial, 0, camera, 0, _decalMPB, ShadowCastingMode.Off, true); + Graphics.DrawMesh(_targetMesh, target.localToWorldMatrix, decalMaterial, 0, camera, 0, _decalMPB, ShadowCastingMode.Off, true); } public ConfigNode Save() { var node = new ConfigNode("TARGET"); - node.AddValue("part", _targetPart.flightID); + node.AddValue("part", targetPart.flightID); node.AddValue("decalMatrix", _decalMatrix); node.AddValue("decalNormal", _decalNormal); node.AddValue("decalTangent", _decalTangent); - node.AddValue("targetPath", SaveTransformPath(_target, _targetPart.transform)); // used to find the target transform - node.AddValue("targetName", _target.name); // used to validate the mesh has not changed since last load + node.AddValue("targetPath", SaveTransformPath(target, targetPart.transform)); // used to find the target transform + node.AddValue("targetName", target.name); // used to validate the mesh has not changed since last load return node; } diff --git a/Source/ConformalDecals/Text/FontLoader.cs b/Source/ConformalDecals/Text/FontLoader.cs index 01f16ad..a784959 100644 --- a/Source/ConformalDecals/Text/FontLoader.cs +++ b/Source/ConformalDecals/Text/FontLoader.cs @@ -1,6 +1,5 @@ using System.IO; using System.Collections; -using System.Collections.Generic; using ConformalDecals.Util; using TMPro; using UniLinq;