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();
     }
 }
Exemple #4
0
 public TemplateOptionUIItem(TemplateOptionsItem options)
 {
     m_options                   = options;
     m_currentOption             = m_options.DefaultOptionIndex;
     m_invertActionOnDeselection = options.Setup == AseOptionItemSetup.InvertActionOnDeselection;
 }
Exemple #5
0
        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);
        }
Exemple #6
0
 public TemplateOptionUIItem(TemplateOptionsItem options)
 {
     m_options       = options;
     m_currentOption = m_options.DefaultOptionIndex;
 }