public void Reset() { Position = Vector3.zero; Scale = Vector3.one; Color = Color.white; mbColor = Color; //mbImageAnimTime = 0; ImageFrameIndex = 0; Heading = Vector3.zero; Velocity = Vector3.zero; Mass = 1; Acceleration = 0; Friction = 0; Force = Vector3.zero; Orientation = 0; AngularRotation = 0; Rotation = Vector3.zero; Parent = null; UserData = null; }
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(); }
/// <summary> /// Creates a clone of an existing emitter and adds it as a child of source /// </summary> /// <param name="source">the emitter to be cloned</param> /// <param name="parent">the parent of the new emitter</param> /// <returns>the new emitter</returns> public MBEmitter AddEmitter(MBEmitter source, MBObject parent) { MBEmitter em = null; if (source && parent.Matches(typeof(MBParticleSystem),typeof(MBAnchor),typeof(MBEmitter))) { if (parent is MBEmitter && ((MBEmitter)parent).IsTrail) return null; em = (MBEmitter)Object.Instantiate(source); // initialize em hierarchy em.SetParent(parent); em.mbReloadHierarchy(); em.Transform.position = parent.Transform.position; } return em; }
void DoDebuggingGUI(MBEmitter em) { EditorGUILayout.BeginVertical(GUI.skin.GetStyle("Box")); if (DoSectionHeader("General", mColHeader, true)) { EditorGUILayout.BeginHorizontal(); em.mbDebugging = MBGUI.DoToggle("Enable", "Enable visualization", em.mbDebugging); em.mbDebugRate = MBGUI.DoFloatSlider("Rate", "Visualization amount", em.mbDebugRate, 0f, 1f); EditorGUILayout.EndHorizontal(); } if (DoSectionHeader("Options", mColHeader, true)) { EditorGUILayout.BeginHorizontal(); em.mbDebugSize = MBGUI.DoToggle("Size", "Show size gizmo", em.mbDebugSize); em.mbDebugSizeCol = MBGUI.DoColorField("Color", "Gizmo color", em.mbDebugSizeCol); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); em.mbDebugOrientation = MBGUI.DoToggle("Orientation", "Show orientation gizmo", em.mbDebugOrientation); em.mbDebugOrientationCol = MBGUI.DoColorField("Color", "Gizmo color", em.mbDebugOrientationCol); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); em.mbDebugSpeed = MBGUI.DoToggle("Speed", "Show speed gizmo", em.mbDebugSpeed); em.mbDebugSpeedCol = MBGUI.DoColorField("Color", "Gizmo color", em.mbDebugSpeedCol); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); em.mbDebugHeading = MBGUI.DoToggle("Heading", "Show heading gizmo", em.mbDebugHeading); em.mbDebugHeadingCol = MBGUI.DoColorField("Color", "Gizmo color", em.mbDebugHeadingCol); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); em.mbDebugForces = MBGUI.DoToggle("Forces", "Show forces gizmo", em.mbDebugForces); em.mbDebugForcesCol = MBGUI.DoColorField("Color", "Gizmo color", em.mbDebugForcesCol); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); em.mbDebugZones = MBGUI.DoToggle("Zones", "Color particles affected by zones", em.mbDebugZones); em.mbDebugZonesCol = MBGUI.DoColorField("Color", "Gizmo color", em.mbDebugZonesCol); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); em.mbDebugAge = MBGUI.DoToggle("Age", "Show age gizmo", em.mbDebugAge); em.mbDebugAgeCol = MBGUI.DoColorField("Color", "Gizmo color", em.mbDebugAgeCol); EditorGUILayout.EndHorizontal(); } }
/// <summary> /// Whether an item is spawned by this pool /// </summary> /// <param name="item">an item</param> /// <returns>true if the item is spawned by this pool</returns> public bool IsSpawned(MBEmitter item) { return mSpawned.Contains(item); }
/// <summary> /// Whether an item is managed by this pool /// </summary> /// <param name="item">an item</param> /// <returns>true if item is managed by this pool</returns> public bool IsManaged(MBEmitter item) { if (mSpawned.Contains(item) || mStock.Contains(item)) return true; else return false; }
/// <summary> /// Despawn an item and add it back to the stock /// </summary> /// <param name="item"></param> public void Despawn(MBEmitter item) { if (!PoolingEnabled || !PoolSource) return; if (IsSpawned(item)) { #if UNITY_4_0 item.gameObject.SetActive(false); #else item.gameObject.active = false; #endif item.EmitterStopsPlaying -= callbackAutoDespawn; item.name = PoolSource.name + "_stock"; item.Transform.position = Vector3.zero; mSpawned.Remove(item); mStock.Push(item); } }
public MBEmitter AddEmitter(MBEmitter source) { return ParticleSystem.AddEmitter(source, this); }