73 lines
3.5 KiB
C#
73 lines
3.5 KiB
C#
|
namespace Dreamteck.Splines.Editor
|
||
|
{
|
||
|
using UnityEngine;
|
||
|
using System.Collections;
|
||
|
using UnityEditor;
|
||
|
|
||
|
[CustomEditor(typeof(ParticleController))]
|
||
|
[CanEditMultipleObjects]
|
||
|
public class ParticleControllerEditor : SplineUserEditor
|
||
|
{
|
||
|
protected override void BodyGUI()
|
||
|
{
|
||
|
base.BodyGUI();
|
||
|
ParticleController user = (ParticleController)target;
|
||
|
|
||
|
serializedObject.Update();
|
||
|
SerializedProperty _particleSystem = serializedObject.FindProperty("_particleSystem");
|
||
|
|
||
|
SerializedProperty emitPoint = serializedObject.FindProperty("emitPoint");
|
||
|
SerializedProperty offset = serializedObject.FindProperty("offset");
|
||
|
SerializedProperty volumetric = serializedObject.FindProperty("volumetric");
|
||
|
SerializedProperty pauseWhenNotVisible = serializedObject.FindProperty("pauseWhenNotVisible");
|
||
|
SerializedProperty applyRotation = serializedObject.FindProperty("apply3DRotation");
|
||
|
SerializedProperty emitFromShell = serializedObject.FindProperty("emitFromShell");
|
||
|
SerializedProperty scale = serializedObject.FindProperty("scale");
|
||
|
SerializedProperty motionType = serializedObject.FindProperty("motionType");
|
||
|
SerializedProperty wrapMode = serializedObject.FindProperty("wrapMode");
|
||
|
SerializedProperty minCycles = serializedObject.FindProperty("minCycles");
|
||
|
SerializedProperty maxCycles = serializedObject.FindProperty("maxCycles");
|
||
|
|
||
|
EditorGUI.BeginChangeCheck();
|
||
|
EditorGUILayout.PropertyField(_particleSystem, new GUIContent("Particle System"));
|
||
|
if (_particleSystem.objectReferenceValue == null)
|
||
|
{
|
||
|
EditorGUILayout.HelpBox("No particle system is assigned", MessageType.Error);
|
||
|
return;
|
||
|
}
|
||
|
EditorGUILayout.PropertyField(pauseWhenNotVisible);
|
||
|
EditorGUILayout.PropertyField(emitPoint);
|
||
|
EditorGUILayout.PropertyField(offset);
|
||
|
EditorGUILayout.PropertyField(applyRotation);
|
||
|
EditorGUILayout.PropertyField(volumetric);
|
||
|
if (volumetric.boolValue)
|
||
|
{
|
||
|
EditorGUILayout.PropertyField(emitFromShell);
|
||
|
EditorGUILayout.PropertyField(scale);
|
||
|
}
|
||
|
EditorGUILayout.PropertyField(motionType);
|
||
|
if(motionType.intValue == (int)ParticleController.MotionType.FollowForward || motionType.intValue == (int)ParticleController.MotionType.FollowBackward)
|
||
|
{
|
||
|
EditorGUILayout.PropertyField(wrapMode);
|
||
|
EditorGUILayout.Space();
|
||
|
EditorGUILayout.LabelField("Path cycles (over " + user.particleSystemComponent.main.startLifetime.constantMax + "s.)", EditorStyles.boldLabel);
|
||
|
EditorGUILayout.PropertyField(minCycles, new GUIContent("Min. Cycles"));
|
||
|
if (minCycles.floatValue < 0f) minCycles.floatValue = 0f;
|
||
|
EditorGUILayout.PropertyField(maxCycles, new GUIContent("Max. Cycles"));
|
||
|
if (maxCycles.floatValue < minCycles.floatValue) maxCycles.floatValue = minCycles.floatValue;
|
||
|
}
|
||
|
|
||
|
if (EditorGUI.EndChangeCheck())
|
||
|
{
|
||
|
serializedObject.ApplyModifiedProperties();
|
||
|
}
|
||
|
|
||
|
if (!Application.isPlaying)
|
||
|
{
|
||
|
EditorGUILayout.HelpBox("Particles may not work in the editor preview. Play the game to see the in-game result.", MessageType.Info);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|