diff --git a/Source/Virgin_Kalactic/VirginGeneric/NodeUtilities.cs b/Source/Virgin_Kalactic/VirginGeneric/NodeUtilities.cs index 2699b27..96c1eae 100644 --- a/Source/Virgin_Kalactic/VirginGeneric/NodeUtilities.cs +++ b/Source/Virgin_Kalactic/VirginGeneric/NodeUtilities.cs @@ -2,7 +2,7 @@ using KSP; using UnityEngine; using System.Collections.Generic; -using System.Linq; +using System.Data.Linq; namespace NodeUtilities @@ -13,19 +13,23 @@ public class NodeToggle : PartModule [KSPEvent(guiActive = false, guiActiveEditor = true, guiName = "Show Nodes")] public void ShowNodes() { + MyDebugLog("ShowNodes: start"); this.Events["HideNodes"].active = true; this.Events["ShowNodes"].active = false; - if (aNVisualList == null) - aNVisualList = new List(part.attachNodes); + + refreshANVisualList(); + foreach (AttachNode node in aNVisualList) { createVisibleNode(node); } + MyDebugLog("ShowNodes: end"); } [KSPEvent(guiActive = false, guiActiveEditor = true, guiName = "Hide Nodes", active = false)] public void HideNodes() { + MyDebugLog("HideNodes: start"); this.Events["HideNodes"].active = false; this.Events["ShowNodes"].active = true; @@ -33,32 +37,37 @@ public void HideNodes() { node.icon.renderer.enabled = false; } + MyDebugLog("HideNodes: end"); } - private List aNList; private List aNVisualList; //private Dictionary attachNodesStates = new Dictionary(); EditorVesselOverlays vesselOverlays; Material crashTestNodeMaterial; + public override void OnStart(PartModule.StartState state) { - //Debug.Log("NodeToggle Prep"); - if (aNList == null && HighLogic.LoadedSceneIsEditor) + MyDebugLog("OnStart: start"); + if (HighLogic.LoadedSceneIsEditor) { + if (aNList == null) + { + MyDebugLog("Processing AttachNodes for: " + part.name); - Debug.Log("Processing AttachNodes for: " + part.name); - - aNList = new List(part.attachNodes); - Debug.Log("Nodes: " + aNList.Count); + aNList = new List(part.attachNodes); + MyDebugLog("Nodes: " + aNList.Count); - foreach (AttachNode node in aNList) - { - Debug.Log("Node: " + node.id); - //attachNodesStates.Add(node.id, true); - populateToggle(node); + foreach (AttachNode node in aNList) + { + MyDebugLog("Node: " + node.id); + //attachNodesStates.Add(node.id, true); + populateToggle(node); + } } + + refreshANVisualList(); } @@ -66,11 +75,12 @@ public override void OnStart(PartModule.StartState state) typeof(EditorVesselOverlays)); crashTestNodeMaterial = vesselOverlays.CoMmarker.gameObject.renderer.material; + MyDebugLog("OnStart: end"); } private void populateToggle(AttachNode node) { - Debug.Log("-Creating Event for: " + node.id); + MyDebugLog("populateToggle: " + node.id); BaseEvent item = new BaseEvent(new BaseEventList(part, this), node.GetHashCode().ToString(), () => toggle(node.GetHashCode())); @@ -79,36 +89,40 @@ private void populateToggle(AttachNode node) item.guiName = node.id + " || Active"; Events.Add(item); + MyDebugLog("populateToggle: end"); } public void toggle(int caller) { + MyDebugLog("toggle Start: " + caller); int hashcode = caller.GetHashCode(); + MyDebugLog(hashcode); AttachNode node = aNList.Find(a => a.GetHashCode() == caller.GetHashCode()); + MyDebugLog("Toggling Node: " + node.id); AttachNode nodeVisual = aNVisualList.Find(a => a.GetHashCode() == caller.GetHashCode()); - Debug.Log("Toggling Node: " + node.id); - + MyDebugLog(nodeVisual); if (part.attachNodes.Contains(node)) { - Debug.Log("Node Exists, Removing"); + MyDebugLog("Node Exists, Removing"); part.attachNodes.Remove(node); Events[node.GetHashCode().ToString()].guiName = node.id + " || Inactive"; enableVisualNodes(nodeVisual, false); } else { - Debug.Log("Node Absent, Adding"); + MyDebugLog("Node Absent, Adding"); part.attachNodes.Add(node); + MyDebugLog("attachNodes: " + node.id); Events[node.GetHashCode().ToString()].guiName = node.id + " || Active"; enableVisualNodes(nodeVisual, true); } - Debug.Log("Toggle Complete"); + MyDebugLog("Toggle: end"); } private void createVisibleNode(AttachNode node) { - + MyDebugLog("createVisibleNode: " + node); if (!Events[node.GetHashCode().ToString()].guiName.Contains("Inactive")) { @@ -124,18 +138,24 @@ private void createVisibleNode(AttachNode node) node.icon.transform.position = (this.part.transform.TransformPoint(node.position)); node.icon.renderer.enabled = true; } + MyDebugLog("Toggle: end"); } void enableVisualNodes(AttachNode node, bool isEnabled) { + MyDebugLog("enableVisualNodes: start: node: " + node + " enabled: " + isEnabled); if (this.Events["HideNodes"].active == true) { + createVisibleNode(node); + MyDebugLog("Set Node: " + isEnabled); node.icon.renderer.enabled = isEnabled; } + MyDebugLog("enableVisualNodes: exit"); } void resetVisualNodes(Part part) { + MyDebugLog("createVisibleNode: " + part); this.Events["HideNodes"].active = false; this.Events["ShowNodes"].active = true; @@ -143,7 +163,27 @@ void resetVisualNodes(Part part) { node.icon.renderer.enabled = false; } + MyDebugLog("enableVisualNodes: exit"); } + // Populates ANVisualList with current attachNodes + void refreshANVisualList() + { + MyDebugLog("refreshANVisualList: start"); + if (aNVisualList == null) + { + MyDebugLog("Setting aNVisualList"); + aNVisualList = new List(part.attachNodes); + } + MyDebugLog("refreshANVisualList: end"); + } + + // Pipe out debug if DEBUG constant is true. + void MyDebugLog(object message) + { +#if DEBUG + Debug.Log(message); +#endif + } } }