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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        //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);
        }
Exemple #6
0
        //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]);
            }
        }
Exemple #7
0
 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);
     }
 }
Exemple #12
0
 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;
 }