1
0
Fork 0

Katla and Eyjafjallajokull volcano definitions

This commit is contained in:
Thorsten Renk 2019-05-20 10:07:46 +03:00
parent 2622ae8222
commit 33e1404c51
13 changed files with 868 additions and 0 deletions

View file

@ -24,5 +24,13 @@
<main-activity type="int" userarchive="y">0</main-activity>
<flank-activity type="int" userarchive="y">0</flank-activity>
</beerenberg>
<eyjafjallajokull>
<main-activity type="int" userarchive="y">0</main-activity>
</eyjafjallajokull>
<katla>
<main-activity type="int" userarchive="y">0</main-activity>
</katla>
</PropertyList>

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

View file

@ -0,0 +1,71 @@
var eyjafjallajokull_ash_loop_flag = 0;
var eyjafjallajokull_main_factor = 1.0;
var eyjafjallajokull_main_probability = 0.985;
var eyjafjallajokull_pos = geo.Coord.new().set_latlon(63.628335, -19.62823);
var eyjafjallajokull_ash_loop = func (timer) {
if (eyjafjallajokull_ash_loop_flag == 0)
{
print("Ending Eyjafjallajökull ash eruption simulation.");
return;
}
if (timer < 0.0)
{
if (rand() > 0.6)
{
setprop("/environment/volcanoes/eyjafjallajokull/ash-main-alpha", (rand() - 0.5) * 60.0);
setprop("/environment/volcanoes/eyjafjallajokull/ash-main-beta", (rand() - 0.5) * 60.0);
}
else
{
setprop("/environment/volcanoes/eyjafjallajokull/ash-main-alpha", 0.0);
setprop("/environment/volcanoes/eyjafjallajokull/ash-main-beta", 0.0);
}
timer = 2.0 + 3.0 * rand();
}
var aircraft_pos = geo.aircraft_position();
var dist = aircraft_pos.distance_to(eyjafjallajokull_pos);
var turbulence = 1000000.0/(dist * dist);
if (turbulence > 1.0) {turbulence = 1.0;}
setprop("/environment/volcanoes/turbulence", turbulence);
timer = timer - 0.1;
settimer(func {eyjafjallajokull_ash_loop(timer);}, 0.1);
}
eyjafjallajokull_state_manager = func {
var state_main = getprop("/environment/volcanoes/eyjafjallajokull/main-activity");
if ( (state_main > 0) and (eyjafjallajokull_ash_loop_flag == 0))
{
print ("Starting Eyjafjallajökull ash eruption simulation.");
eyjafjallajokull_ash_loop_flag = 1;
eyjafjallajokull_ash_loop(0.0);
}
else if ((state_main < 1) and (eyjafjallajokull_ash_loop_flag == 1))
{
eyjafjallajokull_ash_loop_flag = 0;
setprop("/environment/volcanoes/turbulence", 0);
}
}
# call state manager once to get correct autosaved behavior, otherwise use listener
eyjafjallajokull_state_manager();
setlistener("/environment/volcanoes/eyjafjallajokull/main-activity", eyjafjallajokull_state_manager);

View file

@ -0,0 +1,110 @@
<?xml version="1.0"?>
<PropertyList>
<particlesystem>
<name>eyjafjallajokull-main-ash-eruption</name>
<texture>ash.png</texture>
<emissive>false</emissive>
<lighting>false</lighting>
<x-m>0.0</x-m>
<y-m>0.0</y-m>
<z-m>0.0</z-m>
<roll-deg>0.0</roll-deg>
<pitch-deg>0.0</pitch-deg>
<heading-deg>0.0</heading-deg>
<attach>global</attach>
<placer>
<type>point</type>
</placer>
<shooter>
<theta-min-deg>0</theta-min-deg>
<theta-max-deg>5</theta-max-deg>
<phi-min-deg>0</phi-min-deg>
<phi-max-deg>360</phi-max-deg>
<speed-mps>
<value>320</value>
<spread>300</spread>
</speed-mps>
<rotation-speed>
<x-min-deg-sec>0</x-min-deg-sec>
<y-min-deg-sec>0</y-min-deg-sec>
<z-min-deg-sec>-20</z-min-deg-sec>
<x-max-deg-sec>0</x-max-deg-sec>
<y-max-deg-sec>0</y-max-deg-sec>
<z-max-deg-sec>20</z-max-deg-sec>
</rotation-speed>
</shooter>
<counter>
<particles-per-sec>
<value>4</value>
<spread>1</spread>
</particles-per-sec>
</counter>
<align>billboard</align>
<particle>
<start>
<color>
<red>
<property>/rendering/scene/diffuse/green</property>
</red>
<green>
<property>/rendering/scene/diffuse/green</property>
</green>
<blue>
<property>/rendering/scene/diffuse/green</property>
</blue>
<alpha>
<value>0.5</value>
</alpha>
</color>
<size>
<value>350.0</value>
</size>
</start>
<end>
<color>
<red>
<property>/rendering/scene/diffuse/green</property>
</red>
<green>
<property>/rendering/scene/diffuse/green</property>
</green>
<blue>
<property>/rendering/scene/diffuse/green</property>
</blue>
<alpha>
<value>0.3</value>
</alpha>
</color>
<size>
<value>2550.0</value>
</size>
</end>
<life-sec>
<value>120</value>
</life-sec>
<mass-kg>6.15</mass-kg>
<radius-m>0.05</radius-m>
</particle>
<program>
<fluid>air</fluid>
<gravity type="bool">false</gravity>
<wind type="bool">true</wind>
</program>
</particlesystem>
</PropertyList>

View file

@ -0,0 +1,142 @@
<?xml version="1.0"?>
<PropertyList>
<particlesystem>
<name>eyjafjallajokull-main-ash-eruption-secondary</name>
<texture>ash.png</texture>
<emissive>false</emissive>
<lighting>false</lighting>
<x-m>0.0</x-m>
<y-m>0.0</y-m>
<z-m>0.0</z-m>
<roll-deg>0.0</roll-deg>
<pitch-deg>0.0</pitch-deg>
<heading-deg>0.0</heading-deg>
<attach>global</attach>
<placer>
<type>point</type>
</placer>
<shooter>
<theta-min-deg>0</theta-min-deg>
<theta-max-deg>5</theta-max-deg>
<phi-min-deg>0</phi-min-deg>
<phi-max-deg>360</phi-max-deg>
<speed-mps>
<value>240</value>
<spread>220</spread>
</speed-mps>
<rotation-speed>
<x-min-deg-sec>0</x-min-deg-sec>
<y-min-deg-sec>0</y-min-deg-sec>
<z-min-deg-sec>-20</z-min-deg-sec>
<x-max-deg-sec>0</x-max-deg-sec>
<y-max-deg-sec>0</y-max-deg-sec>
<z-max-deg-sec>20</z-max-deg-sec>
</rotation-speed>
</shooter>
<counter>
<particles-per-sec>
<value>6</value>
<spread>1</spread>
</particles-per-sec>
</counter>
<align>billboard</align>
<particle>
<start>
<color>
<red>
<property>/rendering/scene/diffuse/green</property>
</red>
<green>
<property>/rendering/scene/diffuse/green</property>
</green>
<blue>
<property>/rendering/scene/diffuse/green</property>
</blue>
<alpha>
<value>0.5</value>
</alpha>
</color>
<size>
<value>150.0</value>
</size>
</start>
<end>
<color>
<red>
<property>/rendering/scene/diffuse/green</property>
</red>
<green>
<property>/rendering/scene/diffuse/green</property>
</green>
<blue>
<property>/rendering/scene/diffuse/green</property>
</blue>
<alpha>
<value>0.3</value>
</alpha>
</color>
<size>
<value>950.0</value>
</size>
</end>
<life-sec>
<value>80</value>
</life-sec>
<mass-kg>6.15</mass-kg>
<radius-m>0.05</radius-m>
</particle>
<program>
<fluid>air</fluid>
<gravity type="bool">false</gravity>
<wind type="bool">true</wind>
</program>
</particlesystem>
<animation>
<object-name>eyjafjallajokull-main-ash-eruption-secondary</object-name>
<type>rotate</type>
<property>/environment/volcanoes/eyjafjallajokull/ash-main-alpha</property>
<factor>1</factor>
<center>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>0</z-m>
</center>
<axis>
<x>0</x>
<y>1</y>
<z>0</z>
</axis>
</animation>
<animation>
<object-name>eyjafjallajokull-main-ash-eruption-secondary</object-name>
<type>rotate</type>
<property>/environment/volcanoes/eyjafjallajokull/ash-main-beta</property>
<factor>1</factor>
<center>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>0</z-m>
</center>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
</PropertyList>

View file

@ -0,0 +1,48 @@
<?xml version="1.0"?>
<!-- Beerenberg main crater activity -->
<PropertyList>
<model>
<path>eyjafjallajokull_main_ash_eruption.xml</path>
<offsets>
<x-m>0.0</x-m>
<y-m>0.0</y-m>
<z-m>0.0</z-m>
<heading-deg>0</heading-deg>
</offsets>
<condition>
<equals>
<property>/environment/volcanoes/eyjafjallajokull/main-activity</property>
<value>1</value>
</equals>
</condition>
</model>
<model>
<path>eyjafjallajokull_main_ash_eruption_secondary.xml</path>
<offsets>
<x-m>0.0</x-m>
<y-m>0.0</y-m>
<z-m>0.0</z-m>
<heading-deg>0</heading-deg>
</offsets>
<condition>
<equals>
<property>/environment/volcanoes/eyjafjallajokull/main-activity</property>
<value>1</value>
</equals>
</condition>
</model>
</PropertyList>

BIN
Models/Volcanoes/Katla/ash.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

View file

@ -0,0 +1,71 @@
var katla_ash_loop_flag = 0;
var katla_main_factor = 1.0;
var katla_main_probability = 0.985;
var katla_pos = geo.Coord.new().set_latlon(63.65750, -19.182871);
var katla_ash_loop = func (timer) {
if (katla_ash_loop_flag == 0)
{
print("Ending Katla ash eruption simulation.");
return;
}
if (timer < 0.0)
{
if (rand() > 0.6)
{
setprop("/environment/volcanoes/katla/ash-main-alpha", (rand() - 0.5) * 60.0);
setprop("/environment/volcanoes/katla/ash-main-beta", (rand() - 0.5) * 60.0);
}
else
{
setprop("/environment/volcanoes/katla/ash-main-alpha", 0.0);
setprop("/environment/volcanoes/katla/ash-main-beta", 0.0);
}
timer = 2.0 + 3.0 * rand();
}
var aircraft_pos = geo.aircraft_position();
var dist = aircraft_pos.distance_to(katla_pos);
var turbulence = 25000000.0/(dist * dist);
if (turbulence > 1.0) {turbulence = 1.0;}
setprop("/environment/volcanoes/turbulence", turbulence);
timer = timer - 0.1;
settimer(func {katla_ash_loop(timer);}, 0.1);
}
katla_state_manager = func {
var state_main = getprop("/environment/volcanoes/katla/main-activity");
if ( (state_main > 0) and (katla_ash_loop_flag == 0))
{
print ("Starting Katla ash eruption simulation.");
katla_ash_loop_flag = 1;
katla_ash_loop(0.0);
}
else if ((state_main < 1) and (katla_ash_loop_flag == 1))
{
katla_ash_loop_flag = 0;
setprop("/environment/volcanoes/turbulence", 0);
}
}
# call state manager once to get correct autosaved behavior, otherwise use listener
katla_state_manager();
setlistener("/environment/volcanoes/katla/main-activity", katla_state_manager);

View file

@ -0,0 +1,141 @@
<?xml version="1.0"?>
<PropertyList>
<particlesystem>
<name>katla-plinian-eruption</name>
<texture>ash.png</texture>
<emissive>false</emissive>
<lighting>false</lighting>
<x-m>0.0</x-m>
<y-m>0.0</y-m>
<z-m>0.0</z-m>
<roll-deg>0.0</roll-deg>
<pitch-deg>0.0</pitch-deg>
<heading-deg>0.0</heading-deg>
<attach>global</attach>
<placer>
<type>point</type>
</placer>
<shooter>
<theta-min-deg>0</theta-min-deg>
<theta-max-deg>5</theta-max-deg>
<phi-min-deg>0</phi-min-deg>
<phi-max-deg>360</phi-max-deg>
<speed-mps>
<value>550</value>
<spread>500</spread>
</speed-mps>
<rotation-speed>
<x-min-deg-sec>0</x-min-deg-sec>
<y-min-deg-sec>0</y-min-deg-sec>
<z-min-deg-sec>-10</z-min-deg-sec>
<x-max-deg-sec>0</x-max-deg-sec>
<y-max-deg-sec>0</y-max-deg-sec>
<z-max-deg-sec>10</z-max-deg-sec>
</rotation-speed>
</shooter>
<counter>
<particles-per-sec>
<value>32</value>
<spread>1</spread>
</particles-per-sec>
</counter>
<align>billboard</align>
<particle>
<start>
<color>
<red>
<property>/rendering/scene/diffuse/green</property>
</red>
<green>
<property>/rendering/scene/diffuse/green</property>
</green>
<blue>
<property>/rendering/scene/diffuse/green</property>
</blue>
<alpha>
<value>0.6</value>
</alpha>
</color>
<size>
<value>800.0</value>
</size>
</start>
<end>
<color>
<red>
<property>/rendering/scene/diffuse/green</property>
</red>
<green>
<property>/rendering/scene/diffuse/green</property>
</green>
<blue>
<property>/rendering/scene/diffuse/green</property>
</blue>
<alpha>
<value>0.3</value>
</alpha>
</color>
<size>
<value>8850.0</value>
</size>
</end>
<life-sec>
<value>120</value>
</life-sec>
<mass-kg>6.15</mass-kg>
<radius-m>0.015</radius-m>
</particle>
<program>
<fluid>air</fluid>
<gravity type="bool">false</gravity>
<wind type="bool">true</wind>
</program>
</particlesystem>
<animation>
<object-name>katla-plinian-eruption</object-name>
<type>rotate</type>
<property>/environment/volcanoes/katla/ash-main-alpha</property>
<factor>1</factor>
<center>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>0</z-m>
</center>
<axis>
<x>0</x>
<y>1</y>
<z>0</z>
</axis>
</animation>
<animation>
<object-name>katla-plinian-eruption</object-name>
<type>rotate</type>
<property>/environment/volcanoes/katla/ash-main-beta</property>
<factor>1</factor>
<center>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>0</z-m>
</center>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
</PropertyList>

View file

@ -0,0 +1,34 @@
<?xml version="1.0"?>
<!-- Beerenberg main crater activity -->
<PropertyList>
<model>
<path>katla_plinian_eruption.xml</path>
<offsets>
<x-m>0.0</x-m>
<y-m>0.0</y-m>
<z-m>0.0</z-m>
<heading-deg>0</heading-deg>
</offsets>
<condition>
<equals>
<property>/environment/volcanoes/katla/main-activity</property>
<value>1</value>
</equals>
</condition>
</model>
</PropertyList>

View file

@ -129,6 +129,20 @@ geo.put_model("Models/Volcanoes/Beerenberg/main_crater.xml", 71.0805, -8.1496 );
}
var set_eyjafjallajokull = func {
io.include("Models/Volcanoes/Eyjafjallajokull/eyjafjallajokull.nas");
geo.put_model("Models/Volcanoes/Eyjafjallajokull/main_crater.xml", 63.628335, -19.62823 );
}
var set_katla = func {
io.include("Models/Volcanoes/Katla/katla.nas");
geo.put_model("Models/Volcanoes/Katla/main_crater.xml", 63.65750, -19.182871 );
}
# volcano definitions
var kilauea = volcano.new("Kilauea", 19.39, -155.20);
@ -147,6 +161,13 @@ var beerenberg = volcano.new("Beerenberg", 71.08, -8.15);
beerenberg.set = set_beerenberg;
append(volcano_manager.volcano_array, beerenberg);
var eyjafjallajokull = volcano.new("Eyjafjallajokull", 63.62, -19.62);
eyjafjallajokull.set = set_eyjafjallajokull;
append(volcano_manager.volcano_array, eyjafjallajokull);
var katla = volcano.new("Katla", 63.65750, -19.182871);
katla.set = set_katla;
append(volcano_manager.volcano_array, katla);
# start the manager when autosaved (need some delay for terrain loading to finish)

View file

@ -0,0 +1,111 @@
<?xml version="1.0"?>
<PropertyList>
<name>Eyjafjallajokull</name>
<layout>vbox</layout>
<default-padding>1</default-padding>
<modal>false</modal>
<width>400</width>
<empty>
<pref-height>6</pref-height>
</empty>
<text>
<label>Eyjafjallajokull activity</label>
</text>
<empty>
<pref-height>4</pref-height>
</empty>
<hrule/>
<group>
<layout>table</layout>
<text>
<label>Main crater activity</label>
<halign>left</halign>
<row>0</row>
<col>0</col>
</text>
<text>
<label>dormant</label>
<row>0</row>
<col>1</col>
</text>
<slider>
<name>main</name>
<row>0</row>
<col>2</col>
<min>0</min>
<max>1</max>
<step>1</step>
<live>true</live>
<property>/environment/volcanoes/eyjafjallajokull/main-activity</property>
<binding>
<command>dialog-apply</command>
<object-name>main</object-name>
</binding>
</slider>
<text>
<label>active</label>
<row>0</row>
<col>3</col>
</text>
</group>
<empty>
<pref-height>12</pref-height>
</empty>
<hrule/>
<empty>
<pref-height>20</pref-height>
</empty>
<group>
<layout>table</layout>
<button>
<row>0</row>
<col>0</col>
<legend>OK</legend>
<default>true</default>
<equal>true</equal>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>dialog-close</command>
</binding>
</button>
<button>
<row>0</row>
<col>1</col>
<legend>Close</legend>
<default>true</default>
<key>Esc</key>
<binding>
<command>dialog-close</command>
</binding>
</button>
</group>
</PropertyList>

111
gui/dialogs/volcano-katla.xml Executable file
View file

@ -0,0 +1,111 @@
<?xml version="1.0"?>
<PropertyList>
<name>Katla</name>
<layout>vbox</layout>
<default-padding>1</default-padding>
<modal>false</modal>
<width>400</width>
<empty>
<pref-height>6</pref-height>
</empty>
<text>
<label>Katla activity</label>
</text>
<empty>
<pref-height>4</pref-height>
</empty>
<hrule/>
<group>
<layout>table</layout>
<text>
<label>Main crater activity</label>
<halign>left</halign>
<row>0</row>
<col>0</col>
</text>
<text>
<label>dormant</label>
<row>0</row>
<col>1</col>
</text>
<slider>
<name>main</name>
<row>0</row>
<col>2</col>
<min>0</min>
<max>1</max>
<step>1</step>
<live>true</live>
<property>/environment/volcanoes/katla/main-activity</property>
<binding>
<command>dialog-apply</command>
<object-name>main</object-name>
</binding>
</slider>
<text>
<label>active</label>
<row>0</row>
<col>3</col>
</text>
</group>
<empty>
<pref-height>12</pref-height>
</empty>
<hrule/>
<empty>
<pref-height>20</pref-height>
</empty>
<group>
<layout>table</layout>
<button>
<row>0</row>
<col>0</col>
<legend>OK</legend>
<default>true</default>
<equal>true</equal>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>dialog-close</command>
</binding>
</button>
<button>
<row>0</row>
<col>1</col>
<legend>Close</legend>
<default>true</default>
<key>Esc</key>
<binding>
<command>dialog-close</command>
</binding>
</button>
</group>
</PropertyList>