public void Emit(Part particle, Vector2 position)
        {
            particle.Reset();
            particle.position = position;

            float angle = (float)(Math.PI * 2 * Atlas.Rand);

            if (strength.Max != 0 || strength.Min != 0)
            {
                particle.vectors[1] = new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle))
                    * strength.ToDivision(Atlas.Rand);
            }

            particle.angle = (float)(Math.PI * 2 * Atlas.Rand);
            particle.color = Color.Lerp(Color.White, Color.Gray, Atlas.Rand);

            particle.life = _totalLife;
        }
Beispiel #2
0
 public virtual void Emit(Part particle, Vector2 position)
 {
     particle.Reset();
     particle.position = position;
     particle.life     = 1;
 }
Beispiel #3
0
 public virtual void Emit(Part particle, Vector2 position)
 {
     particle.Reset();
     particle.position = position;
     particle.life = 1;
 }
        public void Emit(Part particle, Vector2 position)
        {
            particle.Reset();
            particle.position = position;

            float angle = Atlas.Rand * (float)Math.PI * 2;

            wantedAngle = wantedAngle % ((float)Math.PI * 2);
            if (wantedAngle < 0) wantedAngle = wantedAngle + (float)Math.PI * 2;

            while (Math.Abs(angle - wantedAngle) > (float)Math.PI) angle = angle + Math.Sign(wantedAngle - angle) * (float)Math.PI * 2;

            float power = 1 - (Math.Abs(angle - wantedAngle) / ((float)Math.PI)) * wantedAngleWeight;

            particle.vectors[0] = new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle))
                * strength.ToDivision(Atlas.Rand * power);

            particle.angle = angle;
            particle.color = color;

            particle.life = _totalLife;
        }