internal int TickEmission(TCParticleSystem system) { Vector3 curEmitPos = ParticleEmitter.GetEmitPos(system, transform); if (m_firstEmit) { PrevPos = curEmitPos; PrevSpeed = Vector3.zero; m_firstEmit = false; } if (EmissionType == ParticleEmitter.EmissionMethod.PerSecond) { m_femit += system.Manager.ParticleTimeDelta * EmissionRate; } else { Vector3 pos = curEmitPos; Vector3 delta = pos - PrevPos; m_femit += delta.magnitude * EmissionRate; } int num = Mathf.FloorToInt(m_femit); m_femit -= num; return(num); }
internal static Vector3 GetEmitPos(TCParticleSystem system, Transform trans) { Vector3 pos = Vector3.zero; switch (system.Manager.SimulationSpace) { case Space.World: pos = trans.position; break; case Space.Local: pos = trans.position - system.transform.position; break; case Space.Parent: pos = trans.localPosition; break; } return(pos); }