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();
}