public override Particle emit(ParticleFactory particleFactory) { Vector3f tmp = new Vector3f(0.5f - random.NextDouble(), 0.5f - random.NextDouble(), 0.5f - random.NextDouble()); tmp.stretch(new Vector3f((float)random.NextDouble() * side.x, (float)random.NextDouble() * side.y, (float)random.NextDouble() * side.z)); tmp.add(position); return particleFactory.createParticle(tmp, false, null); }
public override Particle emit(ParticleFactory particleFactory) { Vector3f tmp = new Vector3f(0.5f - random.NextDouble(), 0.5f - random.NextDouble(), 0.5f - random.NextDouble()); tmp.Normalize(); tmp.stretch(radius); tmp.add(position); return particleFactory.createParticle(tmp, false, null); }
public Particle createParticle(Vector3f emitterPosition, bool emitterUseDirection, Vector3f emitterDirection) { Color4f color = new Color4f((maximumColor.a - minimalColor.a) * random.NextDouble() + minimalColor.a, (maximumColor.r - minimalColor.r) * random.NextDouble() + minimalColor.r, (maximumColor.g - minimalColor.g) * random.NextDouble() + minimalColor.g, (maximumColor.b - minimalColor.b) * random.NextDouble() + minimalColor.b); Vector3f velocity = new Vector3f((maximumInitialVelocity.x - minimalInitialVelocity.x) * random.NextDouble(), (maximumInitialVelocity.y - minimalInitialVelocity.y) * random.NextDouble(), (maximumInitialVelocity.z - minimalInitialVelocity.z) * random.NextDouble()); velocity.add(minimalInitialVelocity); float particleLife = minimalParticleLife; float t = (maximumParticleLife - minimalParticleLife); particleLife += t * (float)random.NextDouble(); return new BillboardedParticle(emitterPosition.copy(), velocity, gravity, color, particleLife, size); }
public override void manipulate(Particle particle, Vector3f deltaVelocity, Color4f deltaColor, ref float deltaLife) { deltaVelocity.add(direction); deltaVelocity.stretch(strength); }