SHOW:
|
|
- or go back to the newest paste.
1 | // Spawn between 300 and 400 particles per second | |
2 | partsys.emitter.spawnRateMin = 300.0f; | |
3 | partsys.emitter.spawnRateMax = 400.0f; | |
4 | ||
5 | //===================================================================================================================== | |
6 | // Generators determine the initial attributes of the particles | |
7 | //===================================================================================================================== | |
8 | ||
9 | partsys.generators.add(new RandomEnergyGenerator(6, 7)); // Particles live between 6 and 7 seconds. | |
10 | ||
11 | // For the position and velocity, use random values between a min and max coordinate value. | |
12 | partsys.generators.add(new MinMaxPositionGenerator(new Vector3f(-0.2f, -0.2f, -0.2f), new Vector3f(0.2f, 0.2f, 0.2f))); | |
13 | partsys.generators.add(new MinMaxVelocityGenerator(new Vector3f(-1f, 0.5f, -1f), new Vector3f(+1f, 2.0f, +1f))); | |
14 | ||
15 | //===================================================================================================================== | |
16 | // Affectors determine how the attributes change over time | |
17 | //===================================================================================================================== | |
18 | ||
19 | partsys.affectors.add(new ForwardEulerAffector()); // enables simple physics | |
20 | partsys.affectors.add(new StaticForceAffector(new Vector3f(0, 0.25f, 0))); // adds upward force | |
21 | partsys.affectors.add(new DampingAffector(0.6f)); // simulates air friction | |
22 | ||
23 | - | // The following defines and adds a multi-key RGBA gradient, so the colors change over time |
23 | + | // The following defines and adds a multi-key RGBA gradient, so the colors change over time |
24 | // Note: this currently uses Vector4f, but will be changed to use Color instead | |
25 | EnergyColorAffector energyColorAffector = new EnergyColorAffector(); | |
26 | energyColorAffector.gradientMap.put(6.5f, new Vector4f(0.9f, 0.9f, 0.9f, 0.8f)); | |
27 | energyColorAffector.gradientMap.put(6.4f, new Vector4f(1.0f, 1.0f, 0.3f, 1.0f)); | |
28 | energyColorAffector.gradientMap.put(5.6f, new Vector4f(1.0f, 0.2f, 0.1f, 0.0f)); | |
29 | energyColorAffector.gradientMap.put(5.0f, new Vector4f(1.0f, 0.2f, 0.1f, 0.7f)); | |
30 | energyColorAffector.gradientMap.put(2.5f, new Vector4f(0.1f, 0.1f, 0.1f, 0.0f)); | |
31 | energyColorAffector.gradientMap.put(1.0f, new Vector4f(0.1f, 0.1f, 0.1f, 1.0f)); | |
32 | energyColorAffector.gradientMap.put(0.0f, new Vector4f(0.1f, 0.1f, 0.1f, 0.0f)); | |
33 | partsys.affectors.add(energyColorAffector); | |
34 | ||
35 | // In a similar fashion, the size (xyz) over time can be controlled. (Z makes no sense with billboards :P) | |
36 | EnergySizeAffector energySizeAffector = new EnergySizeAffector(); | |
37 | energySizeAffector.gradientMap.put(6.5f, new Vector3f(0.01f, 0.01f, 0.01f)); | |
38 | energySizeAffector.gradientMap.put(6.2f, new Vector3f(0.1f, 0.1f, 0.1f)); | |
39 | energySizeAffector.gradientMap.put(5.0f, new Vector3f(0.0f, 0.0f, 0.0f)); | |
40 | energySizeAffector.gradientMap.put(2.5f, new Vector3f(0.01f, 0.01f, 0.01f)); | |
41 | energySizeAffector.gradientMap.put(0.0f, new Vector3f(0.7f, 0.7f, 0.7f)); | |
42 | partsys.affectors.add(energySizeAffector); | |
43 | ||
44 | ||
45 | partsys.affectors.add(new TurbulenceAffector(2.5f)); // Adds some randomness to the motion (random forces) | |
46 | ||
47 | // end of particle system definition |