66 lines
2.4 KiB
C#
66 lines
2.4 KiB
C#
#if UNITY_EDITOR
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Reflection;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace Kamgam.UGUIParticles
|
|
{
|
|
public static class EditorParticleSystemEffectUtils
|
|
{
|
|
public static Type _editorUtils = typeof(UnityEditor.EditorUtility).Assembly.GetType("UnityEditor.ParticleSystemEditorUtils");
|
|
public static Type _effectUtils = typeof(UnityEditor.EditorUtility).Assembly.GetType("UnityEditor.ParticleSystemEffectUtils");
|
|
|
|
public static bool IsSupported()
|
|
{
|
|
return _editorUtils != null && _effectUtils != null;
|
|
}
|
|
|
|
public static void Play()
|
|
{
|
|
if (_editorUtils != null)
|
|
{
|
|
var playbackIsScrubbing = _editorUtils.GetProperty("playbackIsScrubbing", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public);
|
|
if (playbackIsScrubbing != null)
|
|
playbackIsScrubbing.SetValue(null, false);
|
|
|
|
var playbackTime = _editorUtils.GetProperty("playbackTime", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public);
|
|
if (playbackTime != null)
|
|
playbackTime.SetValue(null, 0f);
|
|
}
|
|
|
|
if (_effectUtils != null)
|
|
{
|
|
var startEffect = _effectUtils.GetMethod("StartEffect", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public);
|
|
if (startEffect != null)
|
|
startEffect.Invoke(null, null);
|
|
}
|
|
}
|
|
|
|
public static void Stop()
|
|
{
|
|
if (_editorUtils != null)
|
|
{
|
|
var playbackIsScrubbing = _editorUtils.GetProperty("playbackIsScrubbing", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public);
|
|
if (playbackIsScrubbing != null)
|
|
playbackIsScrubbing.SetValue(null, false);
|
|
|
|
var playbackTime = _editorUtils.GetProperty("playbackTime", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public);
|
|
if (playbackTime != null)
|
|
playbackTime.SetValue(null, 0f);
|
|
}
|
|
|
|
if (_effectUtils != null)
|
|
{
|
|
var stopEffect = _effectUtils.GetMethod("StopEffect", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public);
|
|
if (stopEffect != null)
|
|
stopEffect.Invoke(null, null);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
|
|
|