Firework description format
Flaredance Firework Screensaver is flexible enough to allow you construct the fireworks at your own! All you need for this is to make a firework configuration file, name it as "particle_***.xml" (replacing the asterisks with something descriptive at your choice) and place it to the Flaredance Firework Screensaver folder.
Empty XML data file without fireworks looks like the following:
<?xml version="1.0" encoding="windows-1252"?>
<particles xmlns="https://www.zerge.com/particles.xsd">
</particles>
Inside the tags pair <particles></particles> can be several <Particle> tags describing firework configurations:
<Particle
name="unique particle configuration name"
launch="set to 1 to allow launching this"
trailsound="sound to be played while particle flies"
deathsound="sound to be played when particle dies"
inherit="another configuration name to inherit parameters from">
<description>short description text</description>
<lifetime value="particle life time in seconds" randomness=""/>
<density value="particle density in kg's per m3" randomness=""/>
<energy value="fuel energy amount per kg" randomness=""/>
<colorhue value="particle color hue" randomness=""/>
<colorsat value="particle color saturation" randomness=""/>
<smoke value="smoke intensity 0..1" randomness=""/>
<spread value="trail particle spreading energy" randomness=""/>
<mass>
<carried value="mass (kg) of carried particles" randomness=""/>
<trail value="mass (kg) of trailing particles" randomness=""/>
<fuel value="mass (kg) of fuel" randomness=""/>
<light value="mass (kg) of light fuel" randomness=""/>
<explosive value="mass (kg) of explosive" randomness=""/>
</mass>
<intensity>
<trail value="trail particles expense kg/sec" randomness=""/>
<fuel value="fuel expense kg/sec" randomness=""/>
<light value="light expense kg/sec" randomness=""/>
</intensity>
<timing>
<trail invert="">
<delay value="" randomness=""/>
<hold value="" randomness=""/>
<pause value="" randomness=""/>
</trail>
<fuel invert="">
<delay value="" randomness=""/>
<hold value="" randomness=""/>
<pause value="" randomness=""/>
</fuel>
<light invert="">
<delay value="" randomness=""/>
<hold value="" randomness=""/>
<pause value="" randomness=""/>
</light>
</timing>
<trails>
<trail value="name of trail particle" weight=""/>
</trails>
<childs>
<child value="name of child particle" weight=""/>
</childs>
</Particle>
Remarks
Sound parameters can be either built-in sounds ("none", "start", "flight", "death" or "clap") or external PCM waveform audio files. In last case, sound parameter value is an absolute file path to *.wav file or file path relative to a folder where configuration file resides.
Randomness parameter is a floating point value from 0.0 (determined and constant) to 1.0 (random in range ±100% from base value). For example, if you set some parameter value to 5 and randomness to 0.5, this parameter during simulation will vary from 2.5 to 7.5, i.e. at ±50% of base value.
Color saturation varies from 0.0 (grayscale) to 1.0 (full-color). Color hue value varies in same range, where 0.0 corresponds to blue, 0.3 to red, 0.5 to yellow, 0.7 to green, 0.9 to cyan and 1.0 blue again closes the loop.
Carried particles are particles to be released after explosion. Trailing particles are being thrown during flight.
Fuel used to give additional energy to the particle – in real rockets the small portion of powder drives the charge longer and higher.
Timing parameters are used to set the mode of expending fuel, trails and light emission. Timing parameter has delay, hold and pause randomizable values measured in seconds.
Delay determines initial time of inactivity.
Hold determines length of active part of pulse.
Pause determines length of inactive part of pulse.
Hold and pause times change each other while particle is active and corresponding resource (fuel or light emitter) was not depleted.
Timing can be inverted by setting 'invert' attribute to non-empty value.
Intensity parameters determines amount of resources expended per each second of activity.
List of child or trail particles can contain several kinds of particles. Circular dependencies are not allowed. You can adjust ratios between several particles in children or trails lists by setting different 'weight' attributes to them. These weights will be normalized before operation.