Esempio n. 1
0
        private static void RenderAdditionalVariableFields(RunJobStep runJobStep)
        {
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Additional Variables", EditorStyles.boldLabel);

            if (GUILayout.Button(new GUIContent("Add", "Adds an additional variable"),
                                 EditorStyles.miniButton, GUILayout.Width(35)))
            {
                ShowAddVariableDialog(runJobStep);
            }

            _addVarButtonRect = GUILayoutUtility.GetLastRect();

            EditorGUILayout.EndHorizontal();

            // render variables
            if (runJobStep.NewVariables.Count == 0)
            {
                EditorGUILayout.HelpBox("Nothing added. You can create additional variables for a job that you wish to run.", MessageType.Info);
                return;
            }

            foreach (var keyValuePair in runJobStep.NewVariables)
            {
                EditorGUILayout.BeginHorizontal();
                RenderVariableField(keyValuePair.Value);

                if (GUILayout.Button(new GUIContent("-", "Remove variable field"), EditorStyles.miniButton, GUILayout.Width(16)))
                {
                    KeysToRemove.Add(keyValuePair.Key);
                }

                EditorGUILayout.EndHorizontal();
            }
        }
Esempio n. 2
0
        private static void RenderExistingVariableFields(RunJobStep runJobStep)
        {
            var targetJob       = runJobStep.TargetJob;
            var formulaEnabled  = runJobStep.Formulas["TargetJob"].MainFormula.Enabled;
            var jobHasVariables = targetJob.Variables.Count > 0;

            if (formulaEnabled)
            {
                return;
            }

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Job Variables", EditorStyles.boldLabel);

            GUI.enabled = jobHasVariables;

            if (GUILayout.Button(new GUIContent("Add", "Adds an existing variable to the TargetJob.\nThis option is unavailable for a formula-resolved job."),
                                 EditorStyles.miniButton, GUILayout.Width(35)))
            {
                ShowAddExistingVariableMenu(runJobStep);
            }

            GUI.enabled = true;

            _addVarButtonRect = GUILayoutUtility.GetLastRect();

            EditorGUILayout.EndHorizontal();

            if (!jobHasVariables)
            {
                EditorGUILayout.HelpBox("This job has no variables", MessageType.Info);
                return;
            }

            // render variables
            if (runJobStep.TargetJobVariables.Count == 0)
            {
                EditorGUILayout.HelpBox("Nothing added. Add job variables that you wish to modify before starting the job.", MessageType.Info);
                return;
            }

            foreach (var keyValuePair in runJobStep.TargetJobVariables)
            {
                EditorGUILayout.BeginHorizontal();
                RenderVariableField(keyValuePair.Value);

                if (GUILayout.Button(new GUIContent("-", "Remove variable field"), EditorStyles.miniButton, GUILayout.Width(16)))
                {
                    KeysToRemove.Add(keyValuePair.Key);
                }

                EditorGUILayout.EndHorizontal();
            }
        }
Esempio n. 3
0
        private static void ShowAddVariableDialog(RunJobStep runJobStep)
        {
            var formulaEnabled = runJobStep.Formulas["TargetJob"].MainFormula.Enabled;

            var newVariablePopup = new VariableCreationPopup(varName =>
            {
                if (formulaEnabled)
                {
                    return(true);
                }

                return(!runJobStep.TargetJob.Variables.Any(x => x.Name.Equals(varName)));
            });

            newVariablePopup.VariableCreated += variable => { runJobStep.NewVariables.Add(variable.Name, variable); };

            PopupWindow.Show(_addVarButtonRect, newVariablePopup);
        }
Esempio n. 4
0
        private static void RemovePendingKeys(RunJobStep runJobStep)
        {
            if (KeysToRemove.Count == 0)
            {
                return;
            }

            foreach (var key in KeysToRemove)
            {
                if (runJobStep.TargetJobVariables.Remove(key))
                {
                    continue;
                }

                runJobStep.NewVariables.Remove(key);
            }

            KeysToRemove.Clear();
        }
Esempio n. 5
0
        private static void UpdateJobVariables(RunJobStep runJobStep)
        {
            runJobStep.TargetJobVariables.Clear();

            var tempNewVariables = new Dictionary <string, BaseField>();

            foreach (var keyValuePair in runJobStep.NewVariables)
            {
                // if "additional variables" has a job variable, then move it there
                if (runJobStep.TargetJob.Variables.Contains(keyValuePair.Value))
                {
                    runJobStep.TargetJobVariables.Add(keyValuePair.Key, keyValuePair.Value);
                }
                else
                {
                    tempNewVariables.Add(keyValuePair.Key, keyValuePair.Value);
                }
            }

            // remove "job variables" from new variables
            runJobStep.NewVariables = tempNewVariables;
        }
Esempio n. 6
0
        private static void ShowAddExistingVariableMenu(RunJobStep runJobStep)
        {
            var menu      = new GenericMenu();
            var targetJob = runJobStep.TargetJob;

            foreach (var @var in targetJob.Variables)
            {
                var jobVariable = @var;
                if (!runJobStep.TargetJobVariables.ContainsKey(jobVariable.Name))
                {
                    menu.AddItem(new GUIContent(jobVariable.Name), false, () =>
                    {
                        var newVariableField = Field <object> .Create(jobVariable.Name,
                                                                      jobVariable.ReturnType.MakeDefaultValue(), jobVariable.ReturnType);

                        runJobStep.TargetJobVariables.Add(jobVariable.Name, newVariableField);
                    });
                }
            }

            menu.ShowAsContext();
        }