MBEditor.DoParameterGUI C# (CSharp) Method

DoParameterGUI() private method

private DoParameterGUI ( MBEmitter em ) : void
em MBEmitter
return void
    void DoParameterGUI(MBEmitter em)
    {
        // Header-Block
            EditorGUILayout.BeginVertical(GUI.skin.GetStyle("Box"));
            if (DoSectionHeader(em.name+": Parameters", mColHeader,true)) {

                #region Parameters Toolbar
                EditorGUILayout.BeginHorizontal();
                if (MBGUI.DoButton("Add", "Add a parameter", true)) {
                    AddParameterMenu();
                }
                if (MBGUI.DoButton("Delete", "Delete selected parameter", SelectedObject is MBParameter)) {
                    MBEditorCommands.DeleteObject();
                }
                if (MBGUI.DoButton("Clear", "Clear all parameters except Image", SelectedEmitter.Parameters.Count>0)) {
                    if (EditorUtility.DisplayDialog("Confirm", "Really strip all parameters?", "Yes", "No")) {
                        SnapshotScene("Clear parameters");
                        List<MBParameter> pars = MBUtility.GetChildren<MBParameter>(em.transform, true, false);
                        em.Parameters.Clear();
                        foreach (MBParameter p in pars) {
                            GameObject.DestroyImmediate(p.gameObject);
                        }
                        InstantiateParameterHandler();
                        Select(SelectedEmitter);
                    }
                }
                 GUILayout.Space(10);
                 if (MBGUI.DoButton("Toggle","Toggle Parameters ViewState",true)){
                     mParametersToggleState = !mParametersToggleState;
                     if (mParametersToggleState) {
                         // show all
                         foreach (MBEditorParameterHandler handler in mHandler) {
                             string label = ParameterCaption(handler);
                             if (mSectionToggleState.ContainsKey(label))
                                 mSectionToggleState.Remove(label);
                         }
                     }
                     else {
                         // hide all
                         foreach (MBEditorParameterHandler handler in mHandler) {
                             string label = ParameterCaption(handler);
                             if (mSectionToggleState.ContainsKey(label))
                                 mSectionToggleState[label] = false;
                             else
                                 mSectionToggleState.Add(label, false);
                         }
                     }
                 }
                 mParametersAutoToggleSelected = MBGUI.DoToggle("Auto-Fold", "Fold unselected Parameters", mParametersAutoToggleSelected);

             EditorGUILayout.EndHorizontal();
                #endregion

             mDetailScroll = EditorGUILayout.BeginScrollView(mDetailScroll);

                    // Call custom node handlers
                MBEditorParameterHandler[] handlers = mHandler.ToArray();
                    foreach (MBEditorParameterHandler handler in handlers) {
                        if (handler.Target != null) {
                            GUI.backgroundColor = (handler.Target == SelectedObject) ? mColParameterSelected : mColParameter;
                            EditorGUILayout.BeginVertical(mStyleHeaderStyle);
                            GUI.backgroundColor = (handler.Target == SelectedObject) ? mColParameterHeaderSelected : mColParameterHeader;
                            if (DoParameterHeader(handler)) {
                                // Needs or Excludes?
                                DoParameterInfo(handler.ParameterInfo);
                                GUI.backgroundColor = (handler.Target == SelectedObject) ? mColParameterSelected : mColParameter;
                                // OnBirthGUI
                                if (!handler.HideBirthGUI) {
                                    EditorGUILayout.BeginVertical(mStyleHeaderStyle);
                                    handler.OnBirthGUI();
                                    EditorGUILayout.EndVertical();
                                }
                                // OnLifeGUI, if animated
                                if (handler.Target.AnimatedLife) {
                                    EditorGUILayout.BeginVertical(mStyleHeaderStyle);
                                    handler.OnLifetimeGUI();
                                    EditorGUILayout.EndVertical();
                                }
                                handler.Target.Validate();
                                _NeedRepaint |= handler.NeedRepaint;
                                handler.NeedRepaint = false;
                            }
                            EditorGUILayout.EndVertical();
                        }
                    }

             EditorGUILayout.EndScrollView();
            }
        EditorGUILayout.EndVertical();
    }