void HighlightPartsOff(HighlightParts hp) { if (hp.highlightedParts > 0) { for (int i = hp.highlightParts.Count - 1; i >= 0; i--) { try { hp.highlightedParts--; hp.highlightParts[i].SetHighlightDefault(); hp.highlightParts[i].SetHighlight(false, false); Highlighter highlighter = hp.highlightParts[i].highlighter; hp.highlightParts[i].highlighter.ConstantOff(); hp.highlightParts[i].highlighter.SeeThroughOff(); } catch (Exception ex) { Log.Error("HighlightPartsOff: " + ex.Message + " on part, removing part from highlight list"); hp.highlightParts.Remove(hp.highlightParts[i]); } } if (hp.highlightedParts < 0) { Log.Error("Too many parts unhighlighted"); hp.highlightedParts = 0; } } }
/// <summary> /// Create a new HighlightList with the interval specified /// </summary> /// <param name="interval"></param> /// <returns>HighlightList id</returns> public int CreateHighlightList(float interval = 1f) { if (!CheckInit()) { return(-1); } // surround the creation with a try, just in case of any problems try { HighlightParts hp = new HighlightParts(); hp.highlightParts = new List <Part>(); hp.id = highlightCnt++; hp.interval = interval; hp.alwaysOn = (interval <= 0); hp.loadedScene = HighLogic.LoadedScene; hPartsLists.Add(hp.id, hp); return(hp.id); } catch (Exception ex) { Log.Error("CreateHighlightList: " + ex.Message); return(-1); } }
void HighlightPartsOn(HighlightParts hp) { if (hp.highlightActive) { for (int i = hp.highlightParts.Count - 1; i >= 0; i--) { Part part = hp.highlightParts[i]; try { hp.highlightedParts++; part.SetHighlightColor(hp.highlightC); part.highlighter.ConstantOn(hp.edgeHighlightColor); part.highlighter.SeeThroughOn(); } catch (Exception ex) { Log.Error("HighlightPartsOn: " + ex.Message + " on part, removing part from highlight list"); hp.highlightParts.Remove(part); } } } }