Esempio n. 1
0
        public void update(float frameTime, List<CollisionSurface> listCollisionSurfaces, List<Manipulator> listManipulators)
        {
            Vector3f positionTemp = position.copy();
            velocity.add(gravity);
            positionTemp.add(velocity * frameTime);
            remainingLife -= frameTime;

            foreach (CollisionSurface cs in listCollisionSurfaces)
            {
                if (cs.getActive() && cs.collisionDetect(position, positionTemp))
                {
                    velocity = cs.computeTrajectory(velocity);
                    positionTemp = position.copy();
                    positionTemp.add(velocity * frameTime);
                }
            }

            foreach (Manipulator m in listManipulators)
            {
                if (m.getActive())
                {
                    Vector3f deltaVelocity = new Vector3f(0.0f, 0.0f, 0.0f);
                    Color4f deltaColor = new Color4f(0.0f, 0.0f, 0.0f, 0.0f);
                    float deltaLife = 0.0f;
                    m.manipulate(this, deltaVelocity, deltaColor, ref deltaLife);
                    velocity.add(deltaVelocity.stretch(frameTime));
                    color.add(deltaColor.multiply(frameTime));
                    remainingLife += deltaLife * frameTime;
                }
            }

            position.set(positionTemp);
        }
Esempio n. 2
0
        public Vector3f computeTrajectory(Vector3f vector)
        {
            Vector3f newTrajectory = new Vector3f(vector.x, 0 - vector.y, vector.z);
            newTrajectory.stretch(friction);

            return newTrajectory;
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        public override void manipulate(Particle particle, Vector3f deltaVelocity, Color4f deltaColor, ref float deltaLife)
        {
            Vector3f tmp = this.position.diff(particle.position);
            float len2 = tmp.length2();
            if (len2 > size2)
                return;
            else if (len2 < threshold2)
            {
                deltaVelocity.set(particle.velocity);
                deltaVelocity.stretch(strength);
                deltaVelocity.invert();
                return;
            }

            len2 = size2 / len2;

            deltaVelocity.set(tmp);
            deltaVelocity.stretch(strength);
            deltaVelocity.stretch(len2);
        }
Esempio n. 6
0
 public override void manipulate(Particle particle, Vector3f deltaVelocity, Color4f deltaColor, ref float deltaLife)
 {
     deltaVelocity.set(particle.velocity);
     deltaVelocity.stretch(strength);
     deltaVelocity.invert();
 }
Esempio n. 7
0
 public override void manipulate(Particle particle, Vector3f deltaVelocity, Color4f deltaColor, ref float deltaLife)
 {
     deltaVelocity.add(direction);
     deltaVelocity.stretch(strength);
 }