public TemplateOptionPortItem(TemplateMultiPassMasterNode owner, TemplateOptionsItem options) { m_options = options; InputPort port = owner.InputPorts.Find(x => x.Name.Equals(options.Name)); if (port != null) { m_portId = port.PortId; } }
public TemplateOptionUIItem(TemplateOptionsItem options) { m_options = options; if (m_options.Type == AseOptionsType.Field) { m_options.FieldValue.FloatValue = m_options.DefaultFieldValue; } else { m_currentOption = m_options.DefaultOptionIndex; } m_invertActionOnDeselection = options.Setup == AseOptionItemSetup.InvertActionOnDeselection; }
static void FillOptionAction(TemplateOptionsItem currentOption, ref List <List <TemplateActionItem> > actionItemsList) { if (currentOption != null) { currentOption.ActionsPerOption = new TemplateActionItemGrid(actionItemsList.Count); for (int i = 0; i < actionItemsList.Count; i++) { currentOption.ActionsPerOption[i] = actionItemsList[i].ToArray(); actionItemsList[i].Clear(); } actionItemsList.Clear(); } }
public TemplateOptionUIItem(TemplateOptionsItem options) { m_options = options; m_currentOption = m_options.DefaultOptionIndex; m_invertActionOnDeselection = options.Setup == AseOptionItemSetup.InvertActionOnDeselection; }
public static TemplateOptionsContainer GenerateOptionsContainer(bool isSubShader, string data) { TemplateOptionsContainer optionsContainer = new TemplateOptionsContainer(); Match match = Regex.Match(data, isSubShader ? SubShaderOptionsMainPattern : PassOptionsMainPattern); optionsContainer.Enabled = match.Success; if (match.Success) { try { optionsContainer.Body = match.Value; optionsContainer.Index = match.Index; List <TemplateOptionsItem> optionItemsList = new List <TemplateOptionsItem>(); List <List <TemplateActionItem> > actionItemsList = new List <List <TemplateActionItem> >(); Dictionary <string, int> optionItemToIndex = new Dictionary <string, int>(); TemplateOptionsItem currentOption = null; //OPTIONS OVERALL SETUP string[] setupLines = match.Groups[1].Value.Split(':'); for (int i = 0; i < setupLines.Length; i++) { if (AseOptionsSetupDict.ContainsKey(setupLines[i])) { AseOptionsSetup setup = AseOptionsSetupDict[setupLines[i]]; switch (setup) { case AseOptionsSetup.CopyOptionsFromMainPass: optionsContainer.CopyOptionsFromMainPass = true; break; } } else { string[] args = setupLines[i].Split('='); if (args.Length > 1 && AseOptionsSetupDict.ContainsKey(args[0])) { AseOptionsSetup setup = AseOptionsSetupDict[args[0]]; switch (setup) { case AseOptionsSetup.Id: if (!int.TryParse(args[1], out optionsContainer.Id)) { optionsContainer.Id = -1; } break; case AseOptionsSetup.Name: optionsContainer.Name = args[1]; break; } } } } //AVAILABLE OPTIONS string body = match.Groups[2].Value.Replace("\t", string.Empty); string[] optionLines = body.Split('\n'); for (int oL = 0; oL < optionLines.Length; oL++) { string[] optionItems = optionLines[oL].Split(':'); if (optionItems.Length > 0) { string[] itemIds = optionItems[0].Split(OptionsDataSeparator); switch (itemIds[0]) { case "Option": { //Fills previous option with its actions //actionItemsList is cleared over here FillOptionAction(currentOption, ref actionItemsList); optionItemToIndex.Clear(); currentOption = new TemplateOptionsItem(); currentOption.Type = AseOptionsType.Option; string[] optionItemSetup = optionItems[1].Split(OptionsDataSeparator); currentOption.Name = optionItemSetup[0]; if (optionItemSetup.Length > 1) { if (AseOptionItemSetupDict.ContainsKey(optionItemSetup[1])) { currentOption.Setup = AseOptionItemSetupDict[optionItemSetup[1]]; } } currentOption.Id = itemIds.Length > 1 ? itemIds[1] : optionItems[1]; currentOption.DisplayOptions = optionItems[2].Split(OptionsDataSeparator); currentOption.DisableIdx = currentOption.DisplayOptions.Length; optionItems[2] += ",disable"; currentOption.Options = optionItems[2].Split(OptionsDataSeparator); currentOption.Count = currentOption.Options.Length; for (int opIdx = 0; opIdx < currentOption.Options.Length; opIdx++) { optionItemToIndex.Add(currentOption.Options[opIdx], opIdx); actionItemsList.Add(new List <TemplateActionItem>()); } if (optionItems.Length > 3) { currentOption.DefaultOption = optionItems[3]; } else { currentOption.DefaultOption = currentOption.Options[0]; } if (currentOption.Options.Length == 2 || (currentOption.Options.Length == 3 && currentOption.Options[2].Equals("disable"))) { if ((currentOption.Options[0].Equals("true") && currentOption.Options[1].Equals("false")) || (currentOption.Options[0].Equals("false") && currentOption.Options[1].Equals("true"))) { // Toggle 0 is false and 1 is true currentOption.Options[0] = "false"; currentOption.Options[1] = "true"; currentOption.UIWidget = AseOptionsUIWidget.Toggle; } } else if (currentOption.Options.Length > 2) { currentOption.UIWidget = AseOptionsUIWidget.Dropdown; } else { Debug.LogWarning("Detected an option with less than two items:" + optionItems[1]); } optionItemsList.Add(currentOption); } break; case "Port": { //Fills previous option with its actions //actionItemsList is cleared over here FillOptionAction(currentOption, ref actionItemsList); optionItemToIndex.Clear(); currentOption = new TemplateOptionsItem(); currentOption.Type = AseOptionsType.Port; if (isSubShader && optionItems.Length > 2) { currentOption.Id = optionItems[1]; currentOption.Name = optionItems[2]; } else { currentOption.Name = optionItems[1]; } currentOption.Options = new string[] { "On", "Off" }; optionItemToIndex.Add(currentOption.Options[0], 0); optionItemToIndex.Add(currentOption.Options[1], 1); actionItemsList.Add(new List <TemplateActionItem>()); actionItemsList.Add(new List <TemplateActionItem>()); optionItemsList.Add(currentOption); } break; default: { if (optionItemToIndex.ContainsKey(optionItems[0])) { int idx = 0; if (currentOption != null && currentOption.UIWidget == AseOptionsUIWidget.Toggle) { idx = (optionItems[0].Equals("true")) ? 1 : 0; if (optionItems[0].Equals("disable")) { idx = 2; } } else { idx = optionItemToIndex[optionItems[0]]; } actionItemsList[idx].Add(CreateActionItem(isSubShader, optionItems)); } else { //string[] ids = optionItems[ 0 ].Split( ',' ); if (itemIds.Length > 1) { for (int i = 0; i < itemIds.Length; i++) { if (optionItemToIndex.ContainsKey(itemIds[i])) { int idx = optionItemToIndex[itemIds[i]]; actionItemsList[idx].Add(CreateActionItem(isSubShader, optionItems)); } } } } } break; } } } //Fills last option with its actions FillOptionAction(currentOption, ref actionItemsList); actionItemsList.Clear(); actionItemsList = null; optionsContainer.Options = optionItemsList.ToArray(); optionItemsList.Clear(); optionItemsList = null; optionItemToIndex.Clear(); optionItemToIndex = null; } catch (Exception e) { Debug.LogException(e); } } return(optionsContainer); }
public TemplateOptionUIItem(TemplateOptionsItem options) { m_options = options; m_currentOption = m_options.DefaultOptionIndex; }