diff --git a/Environment/environment.xml b/Environment/environment.xml index fa004b9cf..b90b363ec 100644 --- a/Environment/environment.xml +++ b/Environment/environment.xml @@ -502,5 +502,8 @@ 0.0 + + + diff --git a/Environment/volcanoes.xml b/Environment/volcanoes.xml new file mode 100644 index 000000000..d48fb2faf --- /dev/null +++ b/Environment/volcanoes.xml @@ -0,0 +1,18 @@ + + + + + +0 + + + 0 + 0 + + + + 0 + 0 + + + diff --git a/Models/Volcanoes/Kilauea/halemaumau.xml b/Models/Volcanoes/Kilauea/halemaumau.xml new file mode 100644 index 000000000..6b5a9a14c --- /dev/null +++ b/Models/Volcanoes/Kilauea/halemaumau.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + kilauea.ac + + 0.00 + 0.00 + 5.00 + + + + select + Lava + + + /environment/volcanoes/kilauea/halemaumau-activity + 0 + + + + + + Lava + Effects/model-combined-deferred + + + + scale + Lava + 330.0 + 330.0 + 1.0 + + + + material + Lava + + 0.4 + 0.32 + 0.32 + + + + + halemaumau_smoke.xml + + -20.0 + 20.0 + 0.0 + 0 + + + + /environment/volcanoes/kilauea/halemaumau-activity + 1 + + + + + + kilauea_lava_fountain.xml + + -20.0 + 20.0 + 0.0 + 0 + + + + /environment/volcanoes/kilauea/halemaumau-activity + 1 + + + + + + kilauea_smoke.xml + + 160.0 + -130.0 + 0.0 + 0 + + + + /environment/volcanoes/kilauea/halemaumau-activity + 0 + + + + + + kilauea_smoke.xml + + 180.0 + 180.0 + 0.0 + 0 + + + + /environment/volcanoes/kilauea/halemaumau-activity + 0 + + + + + + + + diff --git a/Models/Volcanoes/Kilauea/halemaumau_smoke.xml b/Models/Volcanoes/Kilauea/halemaumau_smoke.xml new file mode 100644 index 000000000..f6d03468f --- /dev/null +++ b/Models/Volcanoes/Kilauea/halemaumau_smoke.xml @@ -0,0 +1,107 @@ + + + + + + + kilauea-smoke + smoke.png + false + false + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + local + + + point + + + + 90 + 90 + 0 + 0 + + 15 + 2 + + + 0 + 0 + 10 + 0 + 0 + 40 + + + + + + 2 + 0 + + + + billboard + + + + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + 0.2 + + + + 50.0 + + + + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + 0.1 + + + + 250.0 + + + + 40 + + 1.0 + 2.50 + + + + air + true + true + + + + + \ No newline at end of file diff --git a/Models/Volcanoes/Kilauea/kilauea.ac b/Models/Volcanoes/Kilauea/kilauea.ac new file mode 100644 index 000000000..70817f30b --- /dev/null +++ b/Models/Volcanoes/Kilauea/kilauea.ac @@ -0,0 +1,24 @@ +AC3Db +MATERIAL "DefaultWhite" rgb 1.0000 1.0000 1.0000 amb 0.2000 0.2000 0.2000 emis 0.0000 0.0000 0.0000 spec 0.5000 0.5000 0.5000 shi 10 trans 0.0000 +MATERIAL "Material.001" rgb 0.8000 0.8000 0.8000 amb 1.0000 1.0000 1.0000 emis 0.0000 0.0000 0.0000 spec 0.2500 0.2500 0.2500 shi 50 trans 0.0000 +OBJECT world +name "Blender_export__kilauea.ac" +kids 1 +OBJECT poly +name "Lava" +texture "lava_texture.png" +texrep 1 1 +numvert 4 +1.0000000 0.0000000 1.0000000 +-1.0000000 0.0000000 1.0000000 +1.0000000 0.0000000 -1.0000000 +-1.0000000 0.0000000 -1.0000000 +numsurf 1 +SURF 0X20 +mat 1 +refs 4 +1 0.00000 1.00000 +0 1.00000 1.000000 +2 1.00000 0.00000 +3 0.00000 0.000000 +kids 0 diff --git a/Models/Volcanoes/Kilauea/kilauea.nas b/Models/Volcanoes/Kilauea/kilauea.nas new file mode 100644 index 000000000..1c8838ff6 --- /dev/null +++ b/Models/Volcanoes/Kilauea/kilauea.nas @@ -0,0 +1,54 @@ + var puu_oo_loop_flag = 1; + + var puu_oo_loop = func (strength, tgt_strength) { + + if (puu_oo_loop_flag == 0) + { + print("Ending Puu Oo eruption simulation."); + return; + } + + if (rand() > 0.99) {tgt_strength = 100.0;} + + tgt_strength = tgt_strength - 0.5; + if (tgt_strength < 40.0) {tgt_strength = 40.0;} + + var step = 5.0; + + if (math.abs(strength - tgt_strength) < 5.0) {step = 1.0;} + + if (strength < tgt_strength) + {strength += step;} + else + {strength -= step;} + + setprop("/environment/volcanoes/kilauea/puu-oo-eruption-strength", strength); + setprop("/environment/volcanoes/kilauea/puu-oo-eruption-quantity", int(0.5*strength)); + + + settimer(func {puu_oo_loop(strength, tgt_strength);}, 0.1); + } + + puu_oo_state_manager = func { + + print ("Puu Oo state manager"); + var state = getprop("/environment/volcanoes/kilauea/puu-oo-activity"); + + if (state == 3) + { + print("Starting Puu Oo eruption simulation."); + puu_oo_loop_flag = 1; + puu_oo_loop(50.0, 50.0); + } + else + { + puu_oo_loop_flag = 0; + } + + } + + # call state manager once to get correct autosaved behavior, otherwise use listener + + puu_oo_state_manager(); + + setlistener("/environment/volcanoes/kilauea/puu-oo-activity", puu_oo_state_manager); \ No newline at end of file diff --git a/Models/Volcanoes/Kilauea/kilauea_lava_fountain.xml b/Models/Volcanoes/Kilauea/kilauea_lava_fountain.xml new file mode 100644 index 000000000..66d110810 --- /dev/null +++ b/Models/Volcanoes/Kilauea/kilauea_lava_fountain.xml @@ -0,0 +1,107 @@ + + + + + + + kilauea-lava-fountain + lava.png + true + false + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + local + + + point + + + + 0 + 10 + 0 + 360 + + 30 + 10 + + + 0 + 0 + 10 + 0 + 0 + 40 + + + + + + 25 + 0 + + + + billboard + + + + + + 1.0 + + + 0.2 + + + 0.2 + + + 1.0 + + + + 5.0 + + + + + + 0.5 + + + 0.1 + + + 0.1 + + + 1.0 + + + + 7.0 + + + + 8 + + 200.0 + 0.50 + + + + air + true + true + + + + + \ No newline at end of file diff --git a/Models/Volcanoes/Kilauea/kilauea_smoke.xml b/Models/Volcanoes/Kilauea/kilauea_smoke.xml new file mode 100644 index 000000000..c82da40ad --- /dev/null +++ b/Models/Volcanoes/Kilauea/kilauea_smoke.xml @@ -0,0 +1,107 @@ + + + + + + + kilauea-smoke2 + smoke.png + false + false + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + local + + + point + + + + 60 + 90 + 0 + 360 + + 20 + 2 + + + 0 + 0 + 10 + 0 + 0 + 40 + + + + + + 4 + 0 + + + + billboard + + + + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + 0.4 + + + + 10.0 + + + + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + 0.05 + + + + 100.0 + + + + 15 + + 1.0 + 2.50 + + + + air + true + true + + + + + \ No newline at end of file diff --git a/Models/Volcanoes/Kilauea/lava.png b/Models/Volcanoes/Kilauea/lava.png new file mode 100644 index 000000000..12b6a443f Binary files /dev/null and b/Models/Volcanoes/Kilauea/lava.png differ diff --git a/Models/Volcanoes/Kilauea/lava_texture.png b/Models/Volcanoes/Kilauea/lava_texture.png new file mode 100644 index 000000000..28747b1af Binary files /dev/null and b/Models/Volcanoes/Kilauea/lava_texture.png differ diff --git a/Models/Volcanoes/Kilauea/lava_texture_base.png b/Models/Volcanoes/Kilauea/lava_texture_base.png new file mode 100644 index 000000000..d0f6bde89 Binary files /dev/null and b/Models/Volcanoes/Kilauea/lava_texture_base.png differ diff --git a/Models/Volcanoes/Kilauea/puu_oo.xml b/Models/Volcanoes/Kilauea/puu_oo.xml new file mode 100644 index 000000000..bae443891 --- /dev/null +++ b/Models/Volcanoes/Kilauea/puu_oo.xml @@ -0,0 +1,187 @@ + + + + + + + + + + kilauea.ac + + 0.00 + 0.00 + 8.00 + + + + select + Lava + + + /environment/volcanoes/kilauea/puu-oo-activity + 0 + + + + + + Lava + Effects/model-combined-deferred + + + + scale + Lava + 120.0 + 120.0 + 2.0 + + + + material + Lava + + 0.4 + 0.32 + 0.32 + + + + + puu_oo_smoke.xml + + -20.0 + 20.0 + 140.0 + 0 + + + + /environment/volcanoes/kilauea/puu-oo-activity + 0 + + + + + + puu_oo_lava_fountain.xml + + 0.0 + 0.0 + 0.0 + 0 + + + + /environment/volcanoes/kilauea/puu-oo-activity + 2 + + + + + + puu_oo_lava_fountain2.xml + + 0.0 + 0.0 + 0.0 + 0 + + + + /environment/volcanoes/kilauea/puu-oo-activity + 2 + + + + + + kilauea_lava_fountain.xml + + 30.0 + -20.0 + 0.0 + 0 + + + + /environment/volcanoes/kilauea/puu-oo-activity + 1 + + + + + + + + diff --git a/Models/Volcanoes/Kilauea/puu_oo_lava_fountain.xml b/Models/Volcanoes/Kilauea/puu_oo_lava_fountain.xml new file mode 100644 index 000000000..d72f53b1f --- /dev/null +++ b/Models/Volcanoes/Kilauea/puu_oo_lava_fountain.xml @@ -0,0 +1,112 @@ + + + + + + + puu-oo-lava-fountain + lava.png + true + false + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + local + + + sector + 0.0 + 15.0 + 0.0 + 360.0 + + + + 0 + 8 + 0 + 360 + + + /environment/volcanoes/kilauea/puu-oo-eruption-strength + 50.0 + + + 0 + 0 + 10 + 0 + 0 + 40 + + + + + + /environment/volcanoes/kilauea/puu-oo-eruption-quantity + 0 + + + + billboard + + + + + + 1.0 + + + 0.2 + + + 0.2 + + + 1.0 + + + + 10.0 + + + + + + 0.5 + + + 0.1 + + + 0.1 + + + 1.0 + + + + 10.0 + + + + 25 + + 200.0 + 0.50 + + + + air + true + true + + + + + \ No newline at end of file diff --git a/Models/Volcanoes/Kilauea/puu_oo_lava_fountain2.xml b/Models/Volcanoes/Kilauea/puu_oo_lava_fountain2.xml new file mode 100644 index 000000000..379dc4de7 --- /dev/null +++ b/Models/Volcanoes/Kilauea/puu_oo_lava_fountain2.xml @@ -0,0 +1,112 @@ + + + + + + + puu-oo-lava-fountain + lava.png + true + false + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + local + + + sector + 0.0 + 15.0 + 0.0 + 360.0 + + + + 0 + 12 + 0 + 360 + + + /environment/volcanoes/kilauea/puu-oo-eruption-strength + 30 + + + 0 + 0 + 10 + 0 + 0 + 40 + + + + + + /environment/volcanoes/kilauea/puu-oo-eruption-quantity + 0 + + + + billboard + + + + + + 1.0 + + + 0.2 + + + 0.2 + + + 1.0 + + + + 3.0 + + + + + + 0.5 + + + 0.1 + + + 0.1 + + + 1.0 + + + + 3.0 + + + + 20 + + 200.0 + 0.50 + + + + air + true + true + + + + + \ No newline at end of file diff --git a/Models/Volcanoes/Kilauea/puu_oo_smoke.xml b/Models/Volcanoes/Kilauea/puu_oo_smoke.xml new file mode 100644 index 000000000..81d78412b --- /dev/null +++ b/Models/Volcanoes/Kilauea/puu_oo_smoke.xml @@ -0,0 +1,107 @@ + + + + + + + puu-oo-smoke + smoke_turbulent.png + false + false + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + local + + + point + + + + 90 + 90 + 0 + 0 + + 20 + 10 + + + 0 + 0 + -40 + 0 + 0 + 40 + + + + + + 1 + 0 + + + + billboard + + + + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + 0.6 + + + + 50.0 + + + + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + 0.1 + + + + 250.0 + + + + 60 + + 1.0 + 2.50 + + + + air + true + true + + + + + \ No newline at end of file diff --git a/Models/Volcanoes/Kilauea/smoke.png b/Models/Volcanoes/Kilauea/smoke.png new file mode 100644 index 000000000..f50fa935a Binary files /dev/null and b/Models/Volcanoes/Kilauea/smoke.png differ diff --git a/Models/Volcanoes/Kilauea/smoke_turbulent.png b/Models/Volcanoes/Kilauea/smoke_turbulent.png new file mode 100644 index 000000000..f71a7ad83 Binary files /dev/null and b/Models/Volcanoes/Kilauea/smoke_turbulent.png differ diff --git a/Models/Volcanoes/Stromboli/central_crater.xml b/Models/Volcanoes/Stromboli/central_crater.xml new file mode 100644 index 000000000..cc7fab866 --- /dev/null +++ b/Models/Volcanoes/Stromboli/central_crater.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + stromboli_smoke_main.xml + + -50.0 + 50.0 + 20.0 + 0 + + + + /environment/volcanoes/stromboli/central-activity + 0 + + + + + + stromboli_smoke_minor.xml + + 50.0 + 100.0 + 20.0 + 0 + + + + /environment/volcanoes/stromboli/central-activity + 0 + + + + + + central_crater_lava_fountain.xml + + 0.0 + 0.0 + 0.0 + 170 + 10 + + + + /environment/volcanoes/stromboli/central-activity + 1 + + + + + + central_crater_lava_fountain_inner.xml + + 0.0 + 0.0 + 0.0 + 170 + 10 + + + + /environment/volcanoes/stromboli/central-activity + 1 + + + + + + + + + diff --git a/Models/Volcanoes/Stromboli/central_crater_lava_fountain.xml b/Models/Volcanoes/Stromboli/central_crater_lava_fountain.xml new file mode 100644 index 000000000..3e2c5e3de --- /dev/null +++ b/Models/Volcanoes/Stromboli/central_crater_lava_fountain.xml @@ -0,0 +1,112 @@ + + + + + + + stromboli-lava-foundain + lava.png + true + false + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + global + + + sector + 0.0 + 25.0 + 0.0 + 360.0 + + + + 0 + 15 + 0 + 360 + + + /environment/volcanoes/stromboli/stromboli-eruption-strength + 150.0 + + + 0 + 0 + 10 + 0 + 0 + 40 + + + + + + /environment/volcanoes/stromboli/stromboli-eruption-quantity + 0 + + + + billboard + + + + + + 1.0 + + + 0.2 + + + 0.2 + + + 1.0 + + + + 4.0 + + + + + + 0.5 + + + 0.1 + + + 0.1 + + + 1.0 + + + + 4.0 + + + + 22 + + 200.0 + 0.50 + + + + air + true + true + + + + + \ No newline at end of file diff --git a/Models/Volcanoes/Stromboli/central_crater_lava_fountain_inner.xml b/Models/Volcanoes/Stromboli/central_crater_lava_fountain_inner.xml new file mode 100644 index 000000000..76b5eb8de --- /dev/null +++ b/Models/Volcanoes/Stromboli/central_crater_lava_fountain_inner.xml @@ -0,0 +1,112 @@ + + + + + + + stromboli-lava-foundain-inner + lava.png + true + false + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + global + + + sector + 0.0 + 10.0 + 0.0 + 360.0 + + + + 0 + 3 + 0 + 360 + + + /environment/volcanoes/stromboli/stromboli-eruption-strength-inner + 150.0 + + + 0 + 0 + 10 + 0 + 0 + 40 + + + + + + /environment/volcanoes/stromboli/stromboli-eruption-quantity-inner + 0 + + + + billboard + + + + + + 1.0 + + + 0.2 + + + 0.2 + + + 1.0 + + + + 6.0 + + + + + + 0.5 + + + 0.1 + + + 0.1 + + + 1.0 + + + + 6.0 + + + + 22 + + 200.0 + 0.50 + + + + air + true + true + + + + + \ No newline at end of file diff --git a/Models/Volcanoes/Stromboli/lava.png b/Models/Volcanoes/Stromboli/lava.png new file mode 100644 index 000000000..bb7f943ad Binary files /dev/null and b/Models/Volcanoes/Stromboli/lava.png differ diff --git a/Models/Volcanoes/Stromboli/side_crater.xml b/Models/Volcanoes/Stromboli/side_crater.xml new file mode 100644 index 000000000..bca8c6398 --- /dev/null +++ b/Models/Volcanoes/Stromboli/side_crater.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + stromboli_smoke_minor.xml + + 50.0 + -100.0 + 0.0 + 0 + + + + /environment/volcanoes/stromboli/side-activity + 0 + + + + + + stromboli_smoke_minor.xml + + -50.0 + -120.0 + 0.0 + 0 + + + + /environment/volcanoes/stromboli/side-activity + 0 + + + + + + stromboli_smoke_main.xml + + 0.0 + 60.0 + 20.0 + 0 + + + + /environment/volcanoes/stromboli/side-activity + 0 + + + + + + side_crater_lava_fountain.xml + + 0.0 + 0.0 + 0.0 + 180.0 + 40.0 + + + + /environment/volcanoes/stromboli/side-activity + 1 + + + + + + side_crater_lava_fountain_inner.xml + + 0.0 + 0.0 + 0.0 + 180.0 + 40.0 + + + + /environment/volcanoes/stromboli/side-activity + 1 + + + + + + + + + diff --git a/Models/Volcanoes/Stromboli/side_crater_lava_fountain.xml b/Models/Volcanoes/Stromboli/side_crater_lava_fountain.xml new file mode 100644 index 000000000..db298b1a8 --- /dev/null +++ b/Models/Volcanoes/Stromboli/side_crater_lava_fountain.xml @@ -0,0 +1,112 @@ + + + + + + + stromboli-sec-lava-foundain + lava.png + true + false + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + global + + + sector + 0.0 + 20.0 + 0.0 + 360.0 + + + + 0 + 15 + 0 + 360 + + + /environment/volcanoes/stromboli/stromboli-eruption-strength-sec + 150.0 + + + 0 + 0 + 10 + 0 + 0 + 40 + + + + + + /environment/volcanoes/stromboli/stromboli-eruption-quantity-sec + 0 + + + + billboard + + + + + + 1.0 + + + 0.2 + + + 0.2 + + + 1.0 + + + + 4.0 + + + + + + 0.5 + + + 0.1 + + + 0.1 + + + 1.0 + + + + 4.0 + + + + 22 + + 200.0 + 0.50 + + + + air + true + true + + + + + \ No newline at end of file diff --git a/Models/Volcanoes/Stromboli/side_crater_lava_fountain_inner.xml b/Models/Volcanoes/Stromboli/side_crater_lava_fountain_inner.xml new file mode 100644 index 000000000..6026926d2 --- /dev/null +++ b/Models/Volcanoes/Stromboli/side_crater_lava_fountain_inner.xml @@ -0,0 +1,112 @@ + + + + + + + stromboli-sec-lava-foundain-inner + lava.png + true + false + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + global + + + sector + 0.0 + 5.0 + 0.0 + 360.0 + + + + 0 + 5 + 0 + 360 + + + /environment/volcanoes/stromboli/stromboli-eruption-strength-sec-inner + 150.0 + + + 0 + 0 + 10 + 0 + 0 + 40 + + + + + + /environment/volcanoes/stromboli/stromboli-eruption-quantity-sec-inner + 0 + + + + billboard + + + + + + 1.0 + + + 0.2 + + + 0.2 + + + 1.0 + + + + 6.0 + + + + + + 0.5 + + + 0.1 + + + 0.1 + + + 1.0 + + + + 6.0 + + + + 22 + + 200.0 + 0.50 + + + + air + true + true + + + + + \ No newline at end of file diff --git a/Models/Volcanoes/Stromboli/smoke_turbulent.png b/Models/Volcanoes/Stromboli/smoke_turbulent.png new file mode 100644 index 000000000..f71a7ad83 Binary files /dev/null and b/Models/Volcanoes/Stromboli/smoke_turbulent.png differ diff --git a/Models/Volcanoes/Stromboli/stromboli.nas b/Models/Volcanoes/Stromboli/stromboli.nas new file mode 100644 index 000000000..8562b89ff --- /dev/null +++ b/Models/Volcanoes/Stromboli/stromboli.nas @@ -0,0 +1,122 @@ + var stromboli_loop_flag = 1; + + var stromboli_central_factor = 1.0; + var stromboli_side_factor = 1.0; + + var stromboli_central_probability = 0.99; + var stromboli_side_probability = 0.99; + + + var stromboli_loop = func (timer, strength, timer_sec, strength_sec) { + + if (stromboli_loop_flag == 0) + { + print("Ending Stromboli simulation."); + return; + } + + + if ((timer <= 0.0) and (rand() > stromboli_central_probability)) + { + strength = 180.0 + 70.0 * rand(); + strength *= stromboli_central_factor; + timer = 0.3 + 0.3 * rand(); + } + else if (timer <= 0.0) + { + strength = strength - 3.0; + } + else + { + strength = strength - 0.5; + } + + if (strength < 10.0) {strength = 10.0;} + + + setprop("/environment/volcanoes/stromboli/stromboli-eruption-strength", strength ); + setprop("/environment/volcanoes/stromboli/stromboli-eruption-strength-inner", 0.95 * strength ); + setprop("/environment/volcanoes/stromboli/stromboli-eruption-quantity", int(5.0*strength + rand())); + setprop("/environment/volcanoes/stromboli/stromboli-eruption-quantity-inner", int(1.0*strength + 0.2 * rand())); + + timer = timer - 0.1; + + + if ((timer_sec <= 0.0) and (rand() > stromboli_side_probability)) + { + strength_sec = 140.0 + 60.0 * rand(); + strength_sec *= stromboli_side_factor; + timer_sec = 0.2 + 0.2 * rand(); + } + else if (timer_sec <= 0.0) + { + strength_sec = strength_sec - 3.0; + } + else + { + strength_sec = strength_sec - 0.5; + } + + if (strength_sec < 10.0) {strength_sec = 10.0;} + + + setprop("/environment/volcanoes/stromboli/stromboli-eruption-strength-sec", 0.95 * ((0.9 + 0.1 * rand()) * strength_sec) ); + setprop("/environment/volcanoes/stromboli/stromboli-eruption-strength-sec-inner", ((0.9 + 0.1 * rand()) * strength_sec) ); + setprop("/environment/volcanoes/stromboli/stromboli-eruption-quantity-sec", int(5.0*strength_sec + rand())); + setprop("/environment/volcanoes/stromboli/stromboli-eruption-quantity-sec-inner", int(1.0*strength_sec + 0.2 * rand())); + + timer_sec = timer_sec - 0.1; + + settimer(func {stromboli_loop(timer, strength, timer_sec, strength_sec);}, 0.1); + } + + stromboli_state_manager = func { + + print ("Stromboli state manager"); + var state1 = getprop("/environment/volcanoes/stromboli/central-activity"); + var state2 = getprop("/environment/volcanoes/stromboli/side-activity"); + + if (state1 > 2) + { + stromboli_central_probability = 0.99; + stromboli_central_factor = 1.0; + } + else + { + stromboli_central_probability = 0.998; + stromboli_central_factor = 0.6; + } + + if (state2 > 2) + { + stromboli_side_probability = 0.99; + stromboli_side_factor = 1.0; + } + else + { + stromboli_side_probability = 0.998; + stromboli_side_factor = 0.6; + } + + + var state = state1; + if (state2 > state) {state = state2;} + + if (state > 1) + { + print("Starting Stromboli eruption simulation."); + stromboli_loop_flag = 1; + stromboli_loop(0.0, 0.0, 0.0, 0.0); + } + else + { + stromboli_loop_flag = 0; + } + + } + + # call state manager once to get correct autosaved behavior, otherwise use listener + + stromboli_state_manager(); + setlistener("/environment/volcanoes/stromboli/central-activity", stromboli_state_manager); + setlistener("/environment/volcanoes/stromboli/side-activity", stromboli_state_manager); \ No newline at end of file diff --git a/Models/Volcanoes/Stromboli/stromboli_smoke_main.xml b/Models/Volcanoes/Stromboli/stromboli_smoke_main.xml new file mode 100644 index 000000000..0b95082ae --- /dev/null +++ b/Models/Volcanoes/Stromboli/stromboli_smoke_main.xml @@ -0,0 +1,107 @@ + + + + + + + stromboli-smoke + smoke_turbulent.png + false + false + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + local + + + point + + + + 90 + 90 + 0 + 0 + + 20 + 10 + + + 0 + 0 + -40 + 0 + 0 + 40 + + + + + + 1 + 1 + + + + billboard + + + + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + 0.6 + + + + 50.0 + + + + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + 0.1 + + + + 350.0 + + + + 120 + + 1.0 + 2.50 + + + + air + true + true + + + + + \ No newline at end of file diff --git a/Models/Volcanoes/Stromboli/stromboli_smoke_minor.xml b/Models/Volcanoes/Stromboli/stromboli_smoke_minor.xml new file mode 100644 index 000000000..88512da05 --- /dev/null +++ b/Models/Volcanoes/Stromboli/stromboli_smoke_minor.xml @@ -0,0 +1,107 @@ + + + + + + + stromboli-smoke-minor + smoke_turbulent.png + false + false + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + global + + + point + + + + 90 + 90 + 0 + 0 + + 20 + 10 + + + 0 + 0 + -40 + 0 + 0 + 40 + + + + + + 4 + 1 + + + + billboard + + + + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + 0.6 + + + + 10.0 + + + + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + /rendering/scene/diffuse/green + + + 0.1 + + + + 50.0 + + + + 30 + + 1.0 + 2.50 + + + + air + true + true + + + + + \ No newline at end of file diff --git a/Nasal/volcano.nas b/Nasal/volcano.nas new file mode 100644 index 000000000..7663e6462 --- /dev/null +++ b/Nasal/volcano.nas @@ -0,0 +1,136 @@ +# volcano management routines +# Thorsten Renk 2017 + + + + +var volcano = { + new: func(name, lat, lon) { + var v = { parents: [volcano] }; + v.lat = lat; + v.lon = lon; + v.pos = geo.Coord.new().set_latlon(lat, lon); + v.name = name; + v.loaded = 0; + return v; + }, + +}; + + +var volcano_manager = { + + dist_to_load: 100000.0, + active: 0, + + init: func { + + me.volcano_array = []; + me.pos = {}; + me.init_state(); + + }, + + start: func { + + if (me.active == 1) + { + me.run(0); + } + + }, + + init_state: func { + var state = getprop("/environment/volcanoes/enable-volcanoes"); + me.active = state; + if (state == 1) + {print("Volcanic activity on.");} + else {print ("Volcanic activity off.");} + }, + + set_state: func { + var state = getprop("/environment/volcanoes/enable-volcanoes"); + me.active = state; + if (state == 1) + { + print("Volcanic activity on."); + me.run(0); + } + else {print ("Volcanic activity off.");} + + }, + + run: func (index) { + + + if (me.active == 0) {return;} + + if (index > size(me.volcano_array) - 1) {index = 0;} + + + + if (me.volcano_array[index].loaded == 0) + { + me.pos = geo.aircraft_position(); + var dist = me.pos.distance_to(me.volcano_array[index].pos); + #print ("Distance is now: ", dist); + + var visibility = getprop("/environment/visibility-m"); + + + if ((dist < me.dist_to_load) and (dist < visibility)) + { + print("Loading ", me.volcano_array[index].name, "."); + me.volcano_array[index].set(); + me.volcano_array[index].loaded = 1; + } + } + + index += 1; + + settimer( func { me.run(index);}, 1.0); + }, + +}; + +volcano_manager.init(); + + + +# setter functions for volcano sceneries + +var set_kilauea = func { + +io.include("Models/Volcanoes/Kilauea/kilauea.nas"); +geo.put_model("Models/Volcanoes/Kilauea/halemaumau.xml", 19.4062038, -155.2840123); +geo.put_model("Models/Volcanoes/Kilauea/puu_oo.xml", 19.38881767, -155.10669939); +} + +var set_stromboli = func { + +io.include("Models/Volcanoes/Stromboli/stromboli.nas"); +geo.put_model("Models/Volcanoes/Stromboli/central_crater.xml", 38.7892, 15.2105); +geo.put_model("Models/Volcanoes/Stromboli/side_crater.xml", 38.7950, 15.2139); +} + +# volcano definitions + +var kilauea = volcano.new("Kilauea", 19.39, -155.20); +kilauea.set = set_kilauea; +append(volcano_manager.volcano_array, kilauea); + +var stromboli = volcano.new("Stromboli", 38.78, 15.21); +stromboli.set = set_stromboli; +append(volcano_manager.volcano_array, stromboli); + + +# start the manager when autosaved (need some delay for terrain loading to finish) + +settimer(func {volcano_manager.start();}, 5.0); + +# set the relevant listeners + +setlistener("/environment/volcanoes/enable-volcanoes", func {volcano_manager.set_state();},0,0 ); + + + diff --git a/gui/dialogs/volcano-kilauea.xml b/gui/dialogs/volcano-kilauea.xml new file mode 100644 index 000000000..d876ce0ba --- /dev/null +++ b/gui/dialogs/volcano-kilauea.xml @@ -0,0 +1,152 @@ + + + + Kilauea + vbox + 1 + false + 400 + + + 6 + + + + + + + + 4 + + + + + + table + + + + left + 0 + 0 + + + + + 0 + 1 + + + + halemaumau + 0 + 2 + 0 + 2 + 1 + true + /environment/volcanoes/kilauea/halemaumau-activity + + dialog-apply + halemaumau + + + + + + 0 + 3 + + + + + left + 1 + 0 + + + + + 1 + 1 + + + + puu-oo + 1 + 2 + 0 + 3 + 1 + true + /environment/volcanoes/kilauea/puu-oo-activity + + dialog-apply + puu-oo + + + + + + 1 + 3 + + + + + + + + + 12 + + + + + + 20 + + + + table + + + + + + + + diff --git a/gui/dialogs/volcano-stromboli.xml b/gui/dialogs/volcano-stromboli.xml new file mode 100644 index 000000000..48c9c6e88 --- /dev/null +++ b/gui/dialogs/volcano-stromboli.xml @@ -0,0 +1,141 @@ + + + + Stromboli + vbox + 1 + false + 400 + + + 6 + + + + + + + + 4 + + + + + + table + + + + left + 0 + 0 + + + + + 0 + 1 + + + + central + 0 + 2 + 0 + 3 + 1 + true + /environment/volcanoes/stromboli/central-activity + + dialog-apply + central + + + + + + 0 + 3 + + + + + left + 1 + 0 + + + + + 1 + 1 + + + + side + 1 + 2 + 0 + 3 + 1 + true + /environment/volcanoes/stromboli/side-activity + + dialog-apply + side + + + + + + 1 + 3 + + + + + + + + + 12 + + + + + + 20 + + + + table + + + + + + + + diff --git a/gui/dialogs/volcanoes.xml b/gui/dialogs/volcanoes.xml new file mode 100644 index 000000000..604b72d72 --- /dev/null +++ b/gui/dialogs/volcanoes.xml @@ -0,0 +1,131 @@ + + + + volcanoes + vbox + 1 + false + 400 + + + 6 + + + + + + + + 4 + + + + + + table + + + + enable-volcanoes + 0 + 0 + left + /environment/volcanoes/enable-volcanoes + + true + + dialog-apply + enable-volcanoes + + + + + + + 8 + + + + table + + + + left + 0 + 0 + + + + 2 + 0 + object-selection + left + true + 380 + /environment/volcanoes/volcano-selected + /environment/volcanoes/volcanoes-nearby/ + Kilauea + + dialog-apply + object-selection + + + + + + + + + + 12 + + + + + + 20 + + + + table + + + + + + + + diff --git a/gui/menubar.xml b/gui/menubar.xml index 5c2baff09..730c3bef0 100644 --- a/gui/menubar.xml +++ b/gui/menubar.xml @@ -330,6 +330,51 @@ + + + + + volcanoes + + + nasal + + + + dialog-show + volcanoes + + + +