refactor
parent
7b21c500ef
commit
01459b06b8
|
@ -223,13 +223,7 @@ namespace Coffee.UIExtensions
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
|
||||||
// Animated properties
|
// Animated properties
|
||||||
EditorGUI.BeginChangeCheck();
|
|
||||||
AnimatedPropertiesEditor.DrawAnimatableProperties(m_AnimatableProperties, mats);
|
AnimatedPropertiesEditor.DrawAnimatableProperties(m_AnimatableProperties, mats);
|
||||||
if (EditorGUI.EndChangeCheck())
|
|
||||||
{
|
|
||||||
foreach (UIParticle t in targets)
|
|
||||||
t.SetMaterialDirty();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Target ParticleSystems.
|
// Target ParticleSystems.
|
||||||
_ro.DoLayoutList();
|
_ro.DoLayoutList();
|
||||||
|
|
|
@ -194,7 +194,7 @@ namespace Coffee.UIExtensions
|
||||||
|
|
||||||
for (var i = 0; i < m_Renderers.Count; i++)
|
for (var i = 0; i < m_Renderers.Count; i++)
|
||||||
{
|
{
|
||||||
GetRenderer(i).Clear();
|
GetRenderer(i).Clear(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
var j = 0;
|
var j = 0;
|
||||||
|
@ -206,21 +206,24 @@ namespace Coffee.UIExtensions
|
||||||
GetRenderer(j++).Set(this, particles[i], true);
|
GetRenderer(j++).Set(this, particles[i], true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateRenderers()
|
internal void UpdateTransformScale()
|
||||||
{
|
{
|
||||||
var newScale = Vector3.one;
|
//var newScale = Vector3.one;
|
||||||
//if (uiScaling)
|
//if (uiScaling)
|
||||||
{
|
//{
|
||||||
newScale = transform.parent.lossyScale.Inverse();
|
// newScale = transform.parent.lossyScale.Inverse();
|
||||||
}
|
//}
|
||||||
|
var newScale = transform.parent.lossyScale.Inverse();
|
||||||
if (transform.localScale != newScale)
|
if (transform.localScale != newScale)
|
||||||
{
|
{
|
||||||
transform.localScale = newScale;
|
transform.localScale = newScale;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void UpdateRenderers()
|
||||||
|
{
|
||||||
var bakeCamera = GetBakeCamera();
|
var bakeCamera = GetBakeCamera();
|
||||||
for (var i = 0; i < m_Renderers.Count; i++)
|
for (var i = 0; i < m_Renderers.Count; i++)
|
||||||
{
|
{
|
||||||
|
@ -248,7 +251,7 @@ namespace Coffee.UIExtensions
|
||||||
{
|
{
|
||||||
_tracker.Clear();
|
_tracker.Clear();
|
||||||
UIParticleUpdater.Unregister(this);
|
UIParticleUpdater.Unregister(this);
|
||||||
m_Renderers.ForEach(r=>r.Clear());
|
m_Renderers.ForEach(r => r.Clear());
|
||||||
UnregisterDirtyMaterialCallback(UpdateRendererMaterial);
|
UnregisterDirtyMaterialCallback(UpdateRendererMaterial);
|
||||||
|
|
||||||
base.OnDisable();
|
base.OnDisable();
|
||||||
|
@ -282,11 +285,11 @@ namespace Coffee.UIExtensions
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private UIParticleRenderer GetRenderer(int index)
|
internal UIParticleRenderer GetRenderer(int index)
|
||||||
{
|
{
|
||||||
if (m_Renderers.Count <= index)
|
if (m_Renderers.Count <= index)
|
||||||
{
|
{
|
||||||
m_Renderers.Add(UIParticleRenderer.AddRenderer(this));
|
m_Renderers.Add(UIParticleRenderer.AddRenderer(this, index));
|
||||||
}
|
}
|
||||||
return m_Renderers[index];
|
return m_Renderers[index];
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,13 +15,14 @@ namespace Coffee.UIExtensions
|
||||||
{
|
{
|
||||||
private static readonly CombineInstance[] s_CombineInstances = new CombineInstance[] { new CombineInstance() };
|
private static readonly CombineInstance[] s_CombineInstances = new CombineInstance[] { new CombineInstance() };
|
||||||
private static ParticleSystem.Particle[] s_Particles = new ParticleSystem.Particle[2048];
|
private static ParticleSystem.Particle[] s_Particles = new ParticleSystem.Particle[2048];
|
||||||
private static List<Material> s_Materials = new List<Material>(2);
|
private static readonly List<Material> s_Materials = new List<Material>(2);
|
||||||
private static MaterialPropertyBlock s_Mpb;
|
private static MaterialPropertyBlock s_Mpb;
|
||||||
|
|
||||||
private ParticleSystemRenderer _renderer;
|
private ParticleSystemRenderer _renderer;
|
||||||
private ParticleSystem _particleSystem;
|
private ParticleSystem _particleSystem;
|
||||||
//private ParticleSystem _emitter;
|
//private ParticleSystem _emitter;
|
||||||
private UIParticle _parent;
|
private UIParticle _parent;
|
||||||
|
private int _index;
|
||||||
private bool _isTrail;
|
private bool _isTrail;
|
||||||
private Material _modifiedMaterial;
|
private Material _modifiedMaterial;
|
||||||
private Vector3 _prevScale;
|
private Vector3 _prevScale;
|
||||||
|
@ -46,7 +47,7 @@ namespace Coffee.UIExtensions
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static UIParticleRenderer AddRenderer(UIParticle parent)
|
public static UIParticleRenderer AddRenderer(UIParticle parent, int index)
|
||||||
{
|
{
|
||||||
// Create renderer object.
|
// Create renderer object.
|
||||||
var go = new GameObject("UIParticleRenderer", typeof(UIParticleRenderer))
|
var go = new GameObject("UIParticleRenderer", typeof(UIParticleRenderer))
|
||||||
|
@ -65,6 +66,7 @@ namespace Coffee.UIExtensions
|
||||||
// Add renderer component.
|
// Add renderer component.
|
||||||
var renderer = go.GetComponent<UIParticleRenderer>();
|
var renderer = go.GetComponent<UIParticleRenderer>();
|
||||||
renderer._parent = parent;
|
renderer._parent = parent;
|
||||||
|
renderer._index = index;
|
||||||
|
|
||||||
return renderer;
|
return renderer;
|
||||||
}
|
}
|
||||||
|
@ -96,7 +98,7 @@ namespace Coffee.UIExtensions
|
||||||
return modifiedMaterial;
|
return modifiedMaterial;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Clear()
|
public void Clear(int index = -1)
|
||||||
{
|
{
|
||||||
if (_renderer)
|
if (_renderer)
|
||||||
{
|
{
|
||||||
|
@ -105,6 +107,10 @@ namespace Coffee.UIExtensions
|
||||||
_parent = null;
|
_parent = null;
|
||||||
_particleSystem = null;
|
_particleSystem = null;
|
||||||
_renderer = null;
|
_renderer = null;
|
||||||
|
if (0 <= index )
|
||||||
|
{
|
||||||
|
_index = index;
|
||||||
|
}
|
||||||
//_emitter = null;
|
//_emitter = null;
|
||||||
|
|
||||||
material = null;
|
material = null;
|
||||||
|
|
|
@ -10,6 +10,14 @@ namespace Coffee.UIExtensions
|
||||||
static readonly List<UIParticle> s_ActiveParticles = new List<UIParticle>();
|
static readonly List<UIParticle> s_ActiveParticles = new List<UIParticle>();
|
||||||
private static int frameCount = 0;
|
private static int frameCount = 0;
|
||||||
|
|
||||||
|
public static int uiParticleCount
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return s_ActiveParticles.Count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void Register(UIParticle particle)
|
public static void Register(UIParticle particle)
|
||||||
{
|
{
|
||||||
if (!particle) return;
|
if (!particle) return;
|
||||||
|
@ -41,16 +49,17 @@ namespace Coffee.UIExtensions
|
||||||
Profiler.BeginSample("[UIParticle] Refresh");
|
Profiler.BeginSample("[UIParticle] Refresh");
|
||||||
for (var i = 0; i < s_ActiveParticles.Count; i++)
|
for (var i = 0; i < s_ActiveParticles.Count; i++)
|
||||||
{
|
{
|
||||||
|
var uip = s_ActiveParticles[i];
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
s_ActiveParticles[i].UpdateRenderers();
|
uip.UpdateTransformScale();
|
||||||
|
uip.UpdateRenderers();
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Debug.LogException(e);
|
Debug.LogException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Profiler.EndSample();
|
Profiler.EndSample();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue