fix to emit

pull/225/head
mob-sakai 2022-06-16 22:43:23 +09:00
parent 386170cbf6
commit d9e7eb9732
4 changed files with 41 additions and 1 deletions

View File

@ -311,6 +311,14 @@ namespace Coffee.UIExtensions
} }
} }
internal void UpdateParticleCount()
{
for (var i = 0; i < m_Renderers.Count; i++)
{
m_Renderers[i].UpdateParticleCount();
}
}
protected override void OnEnable() protected override void OnEnable()
{ {
#if !SERIALIZE_FIELD_MASKABLE #if !SERIALIZE_FIELD_MASKABLE

View File

@ -4,7 +4,7 @@ MonoImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 2 serializedVersion: 2
defaultReferences: [] defaultReferences: []
executionOrder: -100 executionOrder: 0
icon: {instanceID: 0} icon: {instanceID: 0}
userData: userData:
assetBundleName: assetBundleName:

View File

@ -21,6 +21,7 @@ namespace Coffee.UIExtensions
private ParticleSystemRenderer _renderer; private ParticleSystemRenderer _renderer;
private ParticleSystem _particleSystem; private ParticleSystem _particleSystem;
internal int _prevParticleCount = 0;
//private ParticleSystem _emitter; //private ParticleSystem _emitter;
private UIParticle _parent; private UIParticle _parent;
private int _index; private int _index;
@ -111,6 +112,7 @@ namespace Coffee.UIExtensions
_parent = null; _parent = null;
_particleSystem = null; _particleSystem = null;
_renderer = null; _renderer = null;
_prevParticleCount = 0;
if (0 <= index ) if (0 <= index )
{ {
_index = index; _index = index;
@ -135,6 +137,7 @@ namespace Coffee.UIExtensions
if (_particleSystem.isPlaying) if (_particleSystem.isPlaying)
{ {
_particleSystem.Clear(); _particleSystem.Clear();
_particleSystem.Pause();
} }
_prewarm = _particleSystem.main.prewarm; _prewarm = _particleSystem.main.prewarm;
@ -157,6 +160,7 @@ namespace Coffee.UIExtensions
_prevPsPos = _particleSystem.transform.position; _prevPsPos = _particleSystem.transform.position;
_prevScreenSize = new Vector2Int(Screen.width, Screen.height); _prevScreenSize = new Vector2Int(Screen.width, Screen.height);
_delay = true; _delay = true;
_prevParticleCount = 0;
canvasRenderer.SetTexture(null); canvasRenderer.SetTexture(null);
@ -301,6 +305,12 @@ namespace Coffee.UIExtensions
s_Renderers.Clear(); s_Renderers.Clear();
} }
internal void UpdateParticleCount()
{
if (!_particleSystem) return;
_prevParticleCount = _particleSystem.particleCount;
}
protected override void OnEnable() protected override void OnEnable()
{ {
base.OnEnable(); base.OnEnable();
@ -447,6 +457,22 @@ namespace Coffee.UIExtensions
return; return;
} }
// Emitted particles found.
if (_prevParticleCount != _particleSystem.particleCount)
{
var size = _particleSystem.particleCount;
var particles = ParticleSystemExtensions.GetParticleArray(size);
_particleSystem.GetParticles(particles, size);
for (var i = _prevParticleCount; i < size; i++)
{
var p = particles[i];
p.position = p.position.GetScaled(scale.Inverse());
particles[i] = p;
}
_particleSystem.SetParticles(particles, size);
}
// get world position. // get world position.
var psTransform = _particleSystem.transform; var psTransform = _particleSystem.transform;
var originWorldPosition = psTransform.position; var originWorldPosition = psTransform.position;

View File

@ -93,6 +93,12 @@ namespace Coffee.UIExtensions
{ {
s_ActiveAttractors[i].Attract(); s_ActiveAttractors[i].Attract();
} }
// UpdateParticleCount.
for (var i = 0; i < s_ActiveParticles.Count; i++)
{
s_ActiveParticles[i].UpdateParticleCount();
}
} }
public static void GetGroupedRenderers(int groupId, int index, List<UIParticleRenderer> results) public static void GetGroupedRenderers(int groupId, int index, List<UIParticleRenderer> results)