2018-06-22 18:48:14 +08:00
|
|
|
|
using UnityEditor;
|
|
|
|
|
using UnityEditor.UI;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
namespace Coffee.UIExtensions
|
|
|
|
|
{
|
2018-11-28 15:36:16 +08:00
|
|
|
|
[CustomEditor (typeof (UIParticle))]
|
2018-06-22 18:48:14 +08:00
|
|
|
|
[CanEditMultipleObjects]
|
|
|
|
|
public class UIParticleEditor : GraphicEditor
|
|
|
|
|
{
|
|
|
|
|
//################################
|
|
|
|
|
// Constant or Static Members.
|
|
|
|
|
//################################
|
2018-11-28 15:36:16 +08:00
|
|
|
|
static readonly GUIContent contentParticleMaterial = new GUIContent ("Particle Material", "The material for rendering particles");
|
|
|
|
|
static readonly GUIContent contentTrailMaterial = new GUIContent ("Trail Material", "The material for rendering particle trails");
|
2018-06-22 18:48:14 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//################################
|
|
|
|
|
// Public/Protected Members.
|
|
|
|
|
//################################
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// This function is called when the object becomes enabled and active.
|
|
|
|
|
/// </summary>
|
2018-11-28 15:36:16 +08:00
|
|
|
|
protected override void OnEnable ()
|
2018-06-22 18:48:14 +08:00
|
|
|
|
{
|
2018-11-28 15:36:16 +08:00
|
|
|
|
base.OnEnable ();
|
|
|
|
|
_spParticleSystem = serializedObject.FindProperty ("m_ParticleSystem");
|
|
|
|
|
_spTrailParticle = serializedObject.FindProperty ("m_TrailParticle");
|
2018-06-22 18:48:14 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Implement this function to make a custom inspector.
|
|
|
|
|
/// </summary>
|
2018-11-28 15:36:16 +08:00
|
|
|
|
public override void OnInspectorGUI ()
|
2018-06-22 18:48:14 +08:00
|
|
|
|
{
|
2018-11-28 15:36:16 +08:00
|
|
|
|
serializedObject.Update ();
|
2018-06-22 18:48:14 +08:00
|
|
|
|
|
2018-11-28 15:36:16 +08:00
|
|
|
|
EditorGUILayout.PropertyField (_spParticleSystem);
|
2018-06-22 18:48:14 +08:00
|
|
|
|
EditorGUI.indentLevel++;
|
|
|
|
|
var ps = _spParticleSystem.objectReferenceValue as ParticleSystem;
|
|
|
|
|
if (ps)
|
|
|
|
|
{
|
2018-11-28 15:36:16 +08:00
|
|
|
|
var pr = ps.GetComponent<ParticleSystemRenderer> ();
|
|
|
|
|
var sp = new SerializedObject (pr).FindProperty ("m_Materials");
|
2018-06-22 18:48:14 +08:00
|
|
|
|
|
2018-11-28 15:36:16 +08:00
|
|
|
|
EditorGUILayout.PropertyField (sp.GetArrayElementAtIndex (0), contentParticleMaterial);
|
|
|
|
|
EditorGUILayout.PropertyField (sp.GetArrayElementAtIndex (1), contentTrailMaterial);
|
|
|
|
|
sp.serializedObject.ApplyModifiedProperties ();
|
2018-06-22 18:48:14 +08:00
|
|
|
|
|
2018-11-28 15:36:16 +08:00
|
|
|
|
if (!Application.isPlaying && pr.enabled)
|
2018-06-22 18:48:14 +08:00
|
|
|
|
{
|
2018-11-28 15:36:16 +08:00
|
|
|
|
EditorGUILayout.HelpBox ("ParticleSystemRenderer will be disable on playing.", MessageType.Info);
|
2018-06-22 18:48:14 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
EditorGUI.indentLevel--;
|
|
|
|
|
|
2018-11-28 15:36:16 +08:00
|
|
|
|
EditorGUI.BeginDisabledGroup (true);
|
|
|
|
|
EditorGUILayout.PropertyField (_spTrailParticle);
|
|
|
|
|
EditorGUI.EndDisabledGroup ();
|
2018-06-22 18:48:14 +08:00
|
|
|
|
|
2018-11-21 22:00:55 +08:00
|
|
|
|
if ((target as UIParticle).GetComponentsInParent<UIParticle> (false).Length == 1)
|
|
|
|
|
{
|
|
|
|
|
EditorGUILayout.PropertyField (serializedObject.FindProperty ("m_Scale"));
|
|
|
|
|
}
|
2018-11-28 13:19:33 +08:00
|
|
|
|
EditorGUILayout.PropertyField (serializedObject.FindProperty ("m_IgnoreParent"));
|
2018-11-21 22:00:55 +08:00
|
|
|
|
|
2018-11-28 15:36:16 +08:00
|
|
|
|
serializedObject.ApplyModifiedProperties ();
|
2018-06-22 18:48:14 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//################################
|
|
|
|
|
// Private Members.
|
|
|
|
|
//################################
|
|
|
|
|
SerializedProperty _spParticleSystem;
|
|
|
|
|
SerializedProperty _spTrailParticle;
|
|
|
|
|
}
|
|
|
|
|
}
|