private CustomModeSettings setup() { CustomModeSettings settings = new CustomModeSettings(); SelectorDataContainer dataObject = new SelectorDataContainer(); settings.dataInstance = dataObject; settings.name = "Part Selector"; settings.ColorModeOverride = (int)CustomModeSettings.OVERRIDE_TYPES.FUNCTION; settings.OrientationOverride = (int)CustomModeSettings.OVERRIDE_TYPES.AS_BASIC; settings.CenteringOverride = (int)CustomModeSettings.OVERRIDE_TYPES.AS_BASIC; settings.MinimodesOverride = (int)CustomModeSettings.OVERRIDE_TYPES.STATIC; settings.staticSettings.displayCOM = false; settings.staticSettings.displayEngines = false; settings.staticSettings.displayAxes = false; settings.staticSettings.displayGround = (int)ViewerConstants.GROUND_DISPMODE.OFF; settings.fillColorDelegate = returnsBlack; settings.wireColorDelegate = getPartColorSelectMode; settings.boxColorDelegate = getBoxColorSelectMode; settings.fillColorDullDelegate = returnsTrue; settings.wireColorDullDelegate = returnsFalse; settings.boxColorDullDelegate = returnsFalse; return(settings); }
public Color getBoxColorSelectMode(CustomModeSettings customMode, Part part) { if (((SelectorDataContainer)(customMode.dataInstance)).selectorTree.Active) { Part subselect = ((SelectorDataContainer)(customMode.dataInstance)).selectorTree.getSubselection(); if (part == subselect) { return(Color.cyan); } else { return(Color.black); } } else if (((SelectorDataContainer)(customMode.dataInstance)).selectorGlobal.Active) { List <Part> parts = ((SelectorDataContainer)(customMode.dataInstance)).selectorGlobal.getPartsMatchingSelection(); //if (parts == null) {MonoBehaviour.print("part list null"); return Color.red;} //if (part == null) { MonoBehaviour.print("part itself null"); return Color.red; } if (parts.Contains(part)) { return(Color.cyan); } else { return(Color.black); } } else if (((SelectorDataContainer)(customMode.dataInstance)).selectorSubmenu != null) { List <Part> parts = ((SelectorDataContainer)(customMode.dataInstance)).selectorSubmenu.getSelectedParts(); if (parts.Contains(part)) { return(Color.cyan); } else { return(Color.black); } } else { return(Color.black); } }
IVViewMenu createMenu() { CustomModeSettings settings = setup(); SelectorDataContainer container = (SelectorDataContainer)settings.dataInstance; IVVSimpleMenuItem[] INTItems = { new VViewSimpleMenuItem("Part selector (tree-traversal)", container.selectorTree), new VViewSimpleMenuItem("Part selector (global list)", container.selectorGlobal), new VViewSimpleCustomMenuItem("Zoom on selection:", container.getZoom, container.setZoom), new VViewSimpleCustomMenuItem("Affect symmetry:", container.getSymm, container.setSymm) }; VViewSimpleMenu rootMenu = new VViewSimpleMenu(INTItems, "Part selector"); container.selectorTree.setRoot((IVViewMenu)rootMenu); container.selectorGlobal.setRoot((IVViewMenu)rootMenu); container.CustomSettings = settings; rootMenu.setCustomSettings(settings); return(rootMenu); }
IVViewMenu createMenu() { CustomModeSettings settings = setup(); DiscoData data = (DiscoData)settings.dataInstance; //we dont need to, but if we want interaction in RPM we can create a menu //two options: either use a combination of VViewSimpleMenus, VViewSimpleMenuItems //and VViewSimpleCustomMenuItem, or... //Implement the IVViewMenu interface. IVVSimpleMenuItem[] INTItems = { new VViewSimpleCustomMenuItem("STROBE:", data.getStrobe, data.setStrobe) }; VViewSimpleMenu rootMenu = new VViewSimpleMenu(INTItems, "DISCO MODE"); //either way, all menus associated with a custom display mode must have that mode set rootMenu.setCustomSettings(settings); //finally, return the menu so that it can be hooked up to the list return(rootMenu); }
//we set the custom mode up in a separate function so it can //be used for both the plugin and the RPM version private CustomModeSettings setup() { CustomModeSettings settings = new CustomModeSettings(); //we store our data in a object in the custom settings //this is not strictly necessary but it does mean you can have //different states active on different screens DiscoData dataObject = new DiscoData(); settings.dataInstance = dataObject; settings.name = "DISCO MODE"; //since we want to change the color of each part, we must override that settings.ColorModeOverride = (int)CustomModeSettings.OVERRIDE_TYPES.FUNCTION; //orientation and centering can remain user-specified settings.OrientationOverride = (int)CustomModeSettings.OVERRIDE_TYPES.AS_BASIC; settings.CenteringOverride = (int)CustomModeSettings.OVERRIDE_TYPES.AS_BASIC; //we need to override the settings for minimodes to disable them settings.MinimodesOverride = (int)CustomModeSettings.OVERRIDE_TYPES.STATIC; //all minimodes off settings.staticSettings.displayCOM = false; settings.staticSettings.displayEngines = false; settings.staticSettings.displayAxes = false; settings.staticSettings.displayGround = (int)ViewerConstants.GROUND_DISPMODE.OFF; //all functions in a given category must be overrided if any are settings.fillColorDelegate = returnsRandomColor; settings.wireColorDelegate = returnsRandomColor; settings.boxColorDelegate = returnsBlack; settings.fillColorDullDelegate = returnsFalse; settings.wireColorDullDelegate = returnsFalse; settings.boxColorDullDelegate = returnsFalse; return(settings); }
//even though we dont use it, we still have to take a Part as argument to match the delegate private Color returnsRandomColor(CustomModeSettings customMode, Part part) { //grab the data object from the custom mode settings DiscoData data = (DiscoData)customMode.dataInstance; if (data.strobe) { float red = data.rand.Next(256) / 256f; float grn = data.rand.Next(256) / 256f; float blu = data.rand.Next(256) / 256f; Color newColor = new Color(red, grn, blu); return(newColor); } else { int time = Time.frameCount % 512; if (time >= 256) { time = 511 - time; } return(gradient[time]); } }
public void setCustomSettings(CustomModeSettings settings) { master.CustomSettings = settings; }
public Color returnsBlack(CustomModeSettings customMode, Part part) { return(Color.black); }
public bool returnsFalse(CustomModeSettings customMode) { return(false); }
public bool returnsTrue(CustomModeSettings customMode) { return(true); }
public Color getPartColorSelectMode(CustomModeSettings customMode, Part part) { if (((SelectorDataContainer)(customMode.dataInstance)).selectorTree.Active) { Color darkGreen = Color.green; darkGreen.g = 0.6f; darkGreen.r = 0.3f; darkGreen.b = 0.3f; Part selectedPart = ((SelectorDataContainer)(customMode.dataInstance)).selectorTree.getSelection(); if (selectedPart == null) { return(Color.grey); } if (part == selectedPart) { return(Color.green); } if (((SelectorDataContainer)(customMode.dataInstance)).getSymm()) { if (selectedPart.symmetryCounterparts.Contains(part)) { return(darkGreen); } } if (partIsOnWayToRoot(part, selectedPart, FlightGlobals.ActiveVessel.rootPart)) { return(Color.yellow); } if (part == FlightGlobals.ActiveVessel.rootPart) { return(Color.magenta); } return(Color.gray); } else if (((SelectorDataContainer)(customMode.dataInstance)).selectorGlobal.Active) { List <Part> parts = ((SelectorDataContainer)(customMode.dataInstance)).selectorGlobal.getPartsMatchingSelection(); if (parts.Contains(part)) { return(Color.green); } else { return(Color.gray); } } else if (((SelectorDataContainer)(customMode.dataInstance)).selectorSubmenu != null) { List <Part> parts = ((SelectorDataContainer)(customMode.dataInstance)).selectorSubmenu.getSelectedParts(); if (parts.Contains(part)) { return(Color.green); } else { return(Color.gray); } } else { return(Color.gray); } }
private bool returnsFalse(CustomModeSettings customMode) { return(false); }
public void setCustomSettings(CustomModeSettings settings) { MonoBehaviour.print("just tried to set a custom mode on the custom mode menu. THIS SHOULD NEVER HAPPEN."); }
public void setCustomSettings(CustomModeSettings settings) { customSettings = settings; }