996 lines
29 KiB
Text
996 lines
29 KiB
Text
|
|
########################################################
|
|
# routines to set up, transform and manage local weather
|
|
# Thorsten Renk, August 2011
|
|
########################################################
|
|
|
|
# function purpose
|
|
#
|
|
# select_cloud_model to define the cloud parameters, given the cloud type and subtype
|
|
|
|
|
|
###########################################################
|
|
# define various cloud models
|
|
###########################################################
|
|
|
|
var select_cloud_model = func(type, subtype) {
|
|
|
|
var rn = rand();
|
|
var path="Models/Weather/blank.ac";
|
|
|
|
|
|
if (type == "Cumulus (cloudlet)"){
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
if (subtype == "small")
|
|
{
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cumulus_sheet2.rgb";
|
|
cloudAssembly.n_sprites = 10;
|
|
cloudAssembly.min_width = 500.0;
|
|
cloudAssembly.max_width = 700.0;
|
|
cloudAssembly.min_height = 500.0;
|
|
cloudAssembly.max_height = 700.0;
|
|
cloudAssembly.min_cloud_width = 1300;
|
|
cloudAssembly.min_cloud_height = 750;
|
|
cloudAssembly.bottom_shade = 0.4;
|
|
}
|
|
else
|
|
{
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cumulus_sheet1.rgb";
|
|
cloudAssembly.n_sprites = 5;
|
|
cloudAssembly.min_width = 600.0;
|
|
cloudAssembly.max_width = 900.0;
|
|
cloudAssembly.min_height = 600.0;
|
|
cloudAssembly.max_height = 900.0;
|
|
cloudAssembly.min_cloud_width = 1300;
|
|
cloudAssembly.min_cloud_height = 950;
|
|
cloudAssembly.bottom_shade = 0.4;
|
|
}
|
|
|
|
|
|
# characterize the basic texture sheet
|
|
cloudAssembly.num_tex_x = 3;
|
|
cloudAssembly.num_tex_y = 3;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.z_scale = 1.0;
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
}
|
|
|
|
else if (type == "Cu (volume)"){
|
|
|
|
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
if (subtype == "small")
|
|
{
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cumulus_sheet2.rgb";
|
|
cloudAssembly.n_sprites = 5;
|
|
cloudAssembly.min_width = 400.0;
|
|
cloudAssembly.max_width = 700.0;
|
|
cloudAssembly.min_height = 400.0;
|
|
cloudAssembly.max_height = 700.0;
|
|
cloudAssembly.min_cloud_width = 1000;
|
|
cloudAssembly.min_cloud_height = 1000;
|
|
cloudAssembly.bottom_shade = 0.4;
|
|
}
|
|
else
|
|
{
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cumulus_sheet1.rgb";
|
|
cloudAssembly.n_sprites = 5;
|
|
cloudAssembly.min_width = 800.0;
|
|
cloudAssembly.max_width = 1100.0;
|
|
cloudAssembly.min_height = 800.0;
|
|
cloudAssembly.max_height = 1100.0;
|
|
cloudAssembly.min_cloud_width = 1500;
|
|
cloudAssembly.min_cloud_height = 1150;
|
|
cloudAssembly.bottom_shade = 0.4;
|
|
}
|
|
|
|
|
|
# characterize the basic texture sheet
|
|
cloudAssembly.num_tex_x = 3;
|
|
cloudAssembly.num_tex_y = 3;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.z_scale = 1.0;
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
}
|
|
|
|
|
|
else if (type == "Congestus"){
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
if (subtype == "small")
|
|
{
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cumulus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 3;
|
|
cloudAssembly.num_tex_y = 3;
|
|
cloudAssembly.n_sprites = 5;
|
|
cloudAssembly.min_width = 600.0;
|
|
cloudAssembly.max_width = 900.0;
|
|
cloudAssembly.min_height = 600.0;
|
|
cloudAssembly.max_height = 900.0;
|
|
cloudAssembly.min_cloud_width = 1300;
|
|
cloudAssembly.min_cloud_height = 1000;
|
|
cloudAssembly.bottom_shade = 0.4;
|
|
}
|
|
else
|
|
{
|
|
|
|
if (rand() > 0.5)
|
|
{
|
|
cloudAssembly.texture_sheet = "/Models/Weather/congestus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 1;
|
|
cloudAssembly.num_tex_y = 3;
|
|
cloudAssembly.min_width = 1300.0;
|
|
cloudAssembly.max_width = 2000.0;
|
|
cloudAssembly.min_height = 600.0;
|
|
cloudAssembly.max_height = 900.0;
|
|
}
|
|
else
|
|
{
|
|
cloudAssembly.texture_sheet = "/Models/Weather/congestus_sheet2.rgb";
|
|
cloudAssembly.num_tex_x = 1;
|
|
cloudAssembly.num_tex_y = 2;
|
|
cloudAssembly.min_width = 1200.0;
|
|
cloudAssembly.max_width = 1800.0;
|
|
cloudAssembly.min_height = 700.0;
|
|
cloudAssembly.max_height = 1000.0;
|
|
}
|
|
|
|
|
|
cloudAssembly.n_sprites = 3;
|
|
cloudAssembly.min_cloud_width = 2200.0;
|
|
cloudAssembly.min_cloud_height = 1200.0;
|
|
cloudAssembly.bottom_shade = 0.4;
|
|
|
|
}
|
|
cloudAssembly.z_scale = 1.0;
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
|
|
}
|
|
else if (type == "Stratocumulus"){
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
if (subtype == "small")
|
|
{
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cumulus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 3;
|
|
cloudAssembly.num_tex_y = 3;
|
|
cloudAssembly.n_sprites = 7;
|
|
cloudAssembly.min_width = 600.0;
|
|
cloudAssembly.max_width = 900.0;
|
|
cloudAssembly.min_height = 600.0;
|
|
cloudAssembly.max_height = 900.0;
|
|
cloudAssembly.min_cloud_width = 1300;
|
|
cloudAssembly.min_cloud_height = 1300;
|
|
cloudAssembly.bottom_shade = 0.4;
|
|
}
|
|
else
|
|
{
|
|
if (rand() > 0.66)
|
|
{
|
|
cloudAssembly.texture_sheet = "/Models/Weather/congestus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 1;
|
|
cloudAssembly.num_tex_y = 3;
|
|
cloudAssembly.min_width = 1900.0;
|
|
cloudAssembly.max_width = 2100.0;
|
|
cloudAssembly.min_height = 1000.0;
|
|
cloudAssembly.max_height = 1100.0;
|
|
cloudAssembly.n_sprites = 3;
|
|
cloudAssembly.bottom_shade = 0.5;
|
|
cloudAssembly.min_cloud_width = 3500.0;
|
|
cloudAssembly.min_cloud_height = 1600.0;
|
|
}
|
|
else if (rand() > 0.33)
|
|
{
|
|
cloudAssembly.texture_sheet = "/Models/Weather/congestus_sheet2.rgb";
|
|
cloudAssembly.num_tex_x = 1;
|
|
cloudAssembly.num_tex_y = 2;
|
|
cloudAssembly.min_width = 1900.0;
|
|
cloudAssembly.max_width = 2000.0;
|
|
cloudAssembly.min_height = 1000.0;
|
|
cloudAssembly.max_height = 1100.0;
|
|
cloudAssembly.n_sprites = 3;
|
|
cloudAssembly.bottom_shade = 0.4;
|
|
cloudAssembly.min_cloud_width = 3500.0;
|
|
cloudAssembly.min_cloud_height = 1600.0;
|
|
}
|
|
else
|
|
{
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cumulus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 3;
|
|
cloudAssembly.num_tex_y = 3;
|
|
cloudAssembly.min_width = 800.0;
|
|
cloudAssembly.max_width = 1000.0;
|
|
cloudAssembly.min_height = 800.0;
|
|
cloudAssembly.max_height = 1000.0;
|
|
cloudAssembly.n_sprites = 5;
|
|
cloudAssembly.bottom_shade = 0.4;
|
|
cloudAssembly.min_cloud_width = 3000.0;
|
|
cloudAssembly.min_cloud_height = 1100.0;
|
|
}
|
|
}
|
|
|
|
|
|
cloudAssembly.z_scale = 1.0;
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
|
|
|
|
|
|
}
|
|
else if (type == "Cumulus (whisp)"){
|
|
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
var mult = 1.0;
|
|
|
|
# characterize the basic texture sheet
|
|
cloudAssembly.texture_sheet = "/Models/Weather/altocumulus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 3;
|
|
cloudAssembly.num_tex_y = 3;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 0.8;
|
|
cloudAssembly.n_sprites = 4;
|
|
cloudAssembly.min_width = 400.0 * mult;
|
|
cloudAssembly.max_width = 600.0 * mult;
|
|
cloudAssembly.min_height = 400.0 * mult;
|
|
cloudAssembly.max_height = 600.0 * mult;
|
|
cloudAssembly.min_cloud_width = 800;
|
|
cloudAssembly.min_cloud_height = 800;
|
|
cloudAssembly.z_scale = 1.0;
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
|
|
|
|
}
|
|
else if (type == "Cumulus bottom"){
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
var mult = 1.0;
|
|
|
|
# characterize the basic texture sheet
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cumulus_bottom_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 1;
|
|
cloudAssembly.num_tex_y = 1;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 0.4;
|
|
cloudAssembly.n_sprites = 4;
|
|
cloudAssembly.min_width = 600.0 * mult;
|
|
cloudAssembly.max_width = 800.0 * mult;
|
|
cloudAssembly.min_height = 600.0 * mult;
|
|
cloudAssembly.max_height = 800.0 * mult;
|
|
cloudAssembly.min_cloud_width = 1200 * mult * mult;
|
|
cloudAssembly.min_cloud_height = 800 * mult * mult;
|
|
cloudAssembly.z_scale = 0.6;
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
|
|
}
|
|
else if (type == "Congestus bottom"){
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
var mult = 1.0;
|
|
|
|
# characterize the basic texture sheet
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cumulus_bottom_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 1;
|
|
cloudAssembly.num_tex_y = 1;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 0.4;
|
|
cloudAssembly.n_sprites = 4;
|
|
cloudAssembly.min_width = 1100.0 * mult;
|
|
cloudAssembly.max_width = 1400.0 * mult;
|
|
cloudAssembly.min_height = 1100.0 * mult;
|
|
cloudAssembly.max_height = 1400.0 * mult;
|
|
cloudAssembly.min_cloud_width = 1600 * mult * mult;
|
|
cloudAssembly.min_cloud_height = 1200 * mult * mult;
|
|
cloudAssembly.z_scale = 0.4;
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
|
|
}
|
|
else if (type == "Stratocumulus bottom"){
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
# characterize the basic texture sheet
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cumulus_bottom_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 1;
|
|
cloudAssembly.num_tex_y = 1;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 0.7;
|
|
cloudAssembly.n_sprites = 3;
|
|
cloudAssembly.min_width = 1200.0;
|
|
cloudAssembly.max_width = 1600.0;
|
|
cloudAssembly.min_height = 1200.0 ;
|
|
cloudAssembly.max_height = 1600.0;
|
|
cloudAssembly.min_cloud_width = 2000 ;
|
|
cloudAssembly.min_cloud_height = 1700;
|
|
cloudAssembly.z_scale = 0.4;
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
|
|
}
|
|
else if (type == "Cumulonimbus (cloudlet)"){
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
# characterize the basic texture sheet
|
|
|
|
|
|
cloudAssembly.num_tex_x = 2;
|
|
cloudAssembly.num_tex_y = 2;
|
|
|
|
if (rand() < 0.5)
|
|
{cloudAssembly.texture_sheet = "/Models/Weather/cumulonimbus_sheet2.rgb";}
|
|
else
|
|
{cloudAssembly.texture_sheet = "/Models/Weather/cumulonimbus_sheet1.rgb";}
|
|
|
|
var mult = 1.0;
|
|
if (subtype == "small") {mult = 0.7;}
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 0.6;
|
|
cloudAssembly.n_sprites = 5;
|
|
cloudAssembly.min_width = 1700.0 * mult;
|
|
cloudAssembly.max_width = 2200.0 * mult;
|
|
cloudAssembly.min_height = 1700.0 * mult;
|
|
cloudAssembly.max_height = 2200.0 * mult;
|
|
cloudAssembly.min_cloud_width = 3500.0 * mult;
|
|
cloudAssembly.min_cloud_height = 3500.0 * mult;
|
|
cloudAssembly.z_scale = 1.0;
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
}
|
|
|
|
else if (type == "Altocumulus"){
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
var mult = 1.0;
|
|
if (subtype == "small") {mult = 0.7;}
|
|
else {mult = 1.0;}
|
|
|
|
# characterize the basic texture sheet
|
|
cloudAssembly.texture_sheet = "/Models/Weather/altocumulus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 3;
|
|
cloudAssembly.num_tex_y = 3;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 0.7;
|
|
cloudAssembly.n_sprites = 6;
|
|
cloudAssembly.min_width = 40.0 * mult;
|
|
cloudAssembly.max_width = 600.0 * mult;
|
|
cloudAssembly.min_height = 400.0 * mult;
|
|
cloudAssembly.max_height = 600.0 * mult;
|
|
cloudAssembly.min_cloud_width = 1000 * mult * mult;
|
|
cloudAssembly.min_cloud_height = 1000 * mult * mult;
|
|
cloudAssembly.z_scale = 0.8;
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
}
|
|
|
|
else if (type == "Stratus (structured)"){
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
var mult = 1.0;
|
|
if (subtype == "small") {mult = 0.7;}
|
|
else {mult = 1.0;}
|
|
|
|
# characterize the basic texture sheet
|
|
cloudAssembly.texture_sheet = "/Models/Weather/altocumulus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 3;
|
|
cloudAssembly.num_tex_y = 3;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 0.4;
|
|
# cloudAssembly.n_sprites = 25;
|
|
cloudAssembly.n_sprites = 12;
|
|
cloudAssembly.min_width = 1700.0 * mult;
|
|
cloudAssembly.max_width = 2500.0 * mult;
|
|
cloudAssembly.min_height = 1700.0 * mult;
|
|
cloudAssembly.max_height = 2500.0 * mult;
|
|
cloudAssembly.min_cloud_width = 3200.0 * mult * mult;
|
|
cloudAssembly.min_cloud_height = 500.0 * mult * mult + cloudAssembly.max_height;
|
|
cloudAssembly.z_scale = 0.3;
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
}
|
|
|
|
else if (type == "Stratus structured CS"){
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
var mult = 1.0;
|
|
|
|
mult = mult * local_weather.cloud_size_scale;
|
|
|
|
# characterize the basic texture sheet
|
|
cloudAssembly.texture_sheet = "/Models/Weather/altocumulus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 3;
|
|
cloudAssembly.num_tex_y = 3;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 0.4;
|
|
cloudAssembly.n_sprites = 6;
|
|
cloudAssembly.min_width = 1000.0 * mult;
|
|
cloudAssembly.max_width = 1000.0 * mult;
|
|
cloudAssembly.min_height = 1000.0 * mult;
|
|
cloudAssembly.max_height = 1000.0 * mult;
|
|
cloudAssembly.min_cloud_width = 1305 * mult;
|
|
cloudAssembly.min_cloud_height = 1305.0 * mult;
|
|
cloudAssembly.z_scale = 0.3;
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
}
|
|
|
|
else if (type == "Altocumulus perlucidus"){
|
|
|
|
# new code
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
var mult = 1.0;
|
|
if (subtype == "small") {mult = 0.7;}
|
|
else if (subtype == "huge") {mult = 1.5;}
|
|
|
|
# characterize the basic texture sheet
|
|
cloudAssembly.texture_sheet = "/Models/Weather/altocumulus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 3;
|
|
cloudAssembly.num_tex_y = 3;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 0.7;
|
|
cloudAssembly.n_sprites = 25;
|
|
cloudAssembly.min_width = 1700.0 * mult;
|
|
cloudAssembly.max_width = 2500.0 * mult;
|
|
cloudAssembly.min_height = 1700.0 * mult;
|
|
cloudAssembly.max_height = 2500.0 * mult;
|
|
cloudAssembly.min_cloud_width = 3200.0 * mult * mult;
|
|
cloudAssembly.min_cloud_height = 500.0 * mult * mult + cloudAssembly.max_height;
|
|
cloudAssembly.z_scale = 0.2;
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
}
|
|
else if ((type == "Cumulonimbus") or (type == "Cumulonimbus (rain)")) {
|
|
if (subtype == "small") {
|
|
if (rn > 0.5) {path = "Models/Weather/cumulonimbus_small1.xml";}
|
|
else {path = "Models/Weather/cumulonimbus_small2.xml";}
|
|
}
|
|
else if (subtype == "large") {
|
|
if (rn > 0.5) {path = "Models/Weather/cumulonimbus_small1.xml";}
|
|
else {path = "Models/Weather/cumulonimbus_small2.xml";}
|
|
}
|
|
}
|
|
else if (type == "Cirrus") {
|
|
if (subtype == "large") {
|
|
if (rn > 0.916) {path = "Models/Weather/cirrus1.xml";}
|
|
else if (rn > 0.833) {path = "Models/Weather/cirrus2.xml";}
|
|
else if (rn > 0.75) {path = "Models/Weather/cirrus3.xml";}
|
|
else if (rn > 0.666) {path = "Models/Weather/cirrus4.xml";}
|
|
else if (rn > 0.583) {path = "Models/Weather/cirrus5.xml";}
|
|
else if (rn > 0.500) {path = "Models/Weather/cirrus6.xml";}
|
|
else if (rn > 0.416) {path = "Models/Weather/cirrus7.xml";}
|
|
else if (rn > 0.333) {path = "Models/Weather/cirrus8.xml";}
|
|
else if (rn > 0.250) {path = "Models/Weather/cirrus9.xml";}
|
|
else if (rn > 0.166) {path = "Models/Weather/cirrus10.xml";}
|
|
else if (rn > 0.083) {path = "Models/Weather/cirrus11.xml";}
|
|
else {path = "Models/Weather/cirrus12.xml";}
|
|
}
|
|
else if (subtype == "small") {
|
|
if (rn > 0.75) {path = "Models/Weather/cirrus_amorphous1.xml";}
|
|
else if (rn > 0.5) {path = "Models/Weather/cirrus_amorphous2.xml";}
|
|
else if (rn > 0.25) {path = "Models/Weather/cirrus_amorphous3.xml";}
|
|
else {path = "Models/Weather/cirrus_amorphous4.xml";}
|
|
}
|
|
}
|
|
else if (type == "Cirrocumulus") {
|
|
if (subtype == "small") {
|
|
if (rn > 0.5) {path = "Models/Weather/cirrocumulus1.xml";}
|
|
else {path = "Models/Weather/cirrocumulus2.xml";}
|
|
}
|
|
else if (subtype == "large") {
|
|
if (rn > 0.875) {path = "Models/Weather/cirrocumulus1.xml";}
|
|
else if (rn > 0.750){path = "Models/Weather/cirrocumulus4.xml";}
|
|
else if (rn > 0.625){path = "Models/Weather/cirrocumulus5.xml";}
|
|
else if (rn > 0.500){path = "Models/Weather/cirrocumulus6.xml";}
|
|
else if (rn > 0.385){path = "Models/Weather/cirrocumulus7.xml";}
|
|
else if (rn > 0.250){path = "Models/Weather/cirrocumulus8.xml";}
|
|
else if (rn > 0.125){path = "Models/Weather/cirrocumulus9.xml";}
|
|
else {path = "Models/Weather/cirrocumulus10.xml";}
|
|
}
|
|
}
|
|
else if (type=="Noctilucent") {
|
|
if (rn>0.75) {path = "Models/Weather/noctilucent7.xml";}
|
|
else if (rn > 0.5) {path = "Models/Weather/noctilucent8.xml";}
|
|
else if (rn > 0.25) {path = "Models/Weather/noctilucent9.xml";}
|
|
else {path = "Models/Weather/noctilucent10.xml";}
|
|
}
|
|
else if (type=="Impostor sheet") {
|
|
if (subtype=="Nimbus") {
|
|
if (rn>0.0) {path = "Models/Weather/impostor_nimbus.xml";}
|
|
}
|
|
else if (subtype=="broken") {
|
|
if (rn>0.5) {path = "Models/Weather/impostor_broken1.xml";}
|
|
else if (rn>0.0) {path = "Models/Weather/impostor_broken2.xml";}
|
|
}
|
|
else if (subtype=="scattered") {
|
|
if (rn>0.6) {path = "Models/Weather/impostor_scattered1.xml";}
|
|
else if (rn>0.4) {path = "Models/Weather/impostor_scattered2.xml";}
|
|
else if (rn > 0.2) {path = "Models/Weather/impostor_few1.xml";}
|
|
else {path = "Models/Weather/impostor_few2.xml";}
|
|
}
|
|
else if (subtype=="few") {
|
|
if (rn>0.7) {path = "Models/Weather/impostor_few1.xml";}
|
|
else if (rn>0.4) {path = "Models/Weather/impostor_few2.xml";}
|
|
else if (rn>0.3) {path = "Models/Weather/impostor_scattered2.xml";}
|
|
else {path = "void";}
|
|
}
|
|
}
|
|
else if (type == "Cirrocumulus (cloudlet)") {
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
var mult = 1.0;
|
|
if (subtype == "small") {mult = 0.6;}
|
|
else if (subtype == "huge") {mult = 1.5;}
|
|
|
|
# characterize the basic texture sheet
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cirrocumulus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 3;
|
|
cloudAssembly.num_tex_y = 3;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 1.0;
|
|
cloudAssembly.n_sprites = 8;
|
|
cloudAssembly.min_width = 700.0 * mult;
|
|
cloudAssembly.max_width = 1200.0 * mult;
|
|
cloudAssembly.min_height = 700.0 * mult;
|
|
cloudAssembly.max_height = 1200.0 * mult;
|
|
cloudAssembly.min_cloud_width = 1500.0;
|
|
cloudAssembly.min_cloud_height = 1300.0 * mult;
|
|
cloudAssembly.z_scale = 0.3;
|
|
|
|
path = "new";
|
|
}
|
|
else if (type == "Cirrocumulus (new)") {
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
var mult = 1.0;
|
|
if (subtype == "small") {mult = 0.7;}
|
|
else {mult = 1.3;}
|
|
|
|
# characterize the basic texture sheet
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cirrocumulus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 3;
|
|
cloudAssembly.num_tex_y = 3;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 1.0;
|
|
cloudAssembly.n_sprites = 2;
|
|
cloudAssembly.min_width = 200.0 * mult;
|
|
cloudAssembly.max_width = 300.0 * mult;
|
|
cloudAssembly.min_height = 200.0 * mult;
|
|
cloudAssembly.max_height = 300.0 * mult;
|
|
cloudAssembly.min_cloud_width = 400.0 * mult;
|
|
cloudAssembly.min_cloud_height = 400.0 * mult;
|
|
cloudAssembly.z_scale = 0.5;
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
}
|
|
|
|
else if (type == "Fogpatch") {
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
var mult = 1.0;
|
|
if (subtype == "small") {mult = 0.7;}
|
|
else {mult = 1.0;}
|
|
|
|
mult = mult * local_weather.cloud_size_scale;
|
|
|
|
# characterize the basic texture sheet
|
|
cloudAssembly.texture_sheet = "/Models/Weather/fogpatch_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 1;
|
|
cloudAssembly.num_tex_y = 1;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 1.0;
|
|
cloudAssembly.n_sprites = 1;
|
|
cloudAssembly.min_width = 300.0 * mult;
|
|
cloudAssembly.max_width = 300.0 * mult;
|
|
cloudAssembly.min_height = 300.0 * mult;
|
|
cloudAssembly.max_height = 300.0 * mult;
|
|
cloudAssembly.min_cloud_width = 305.0 * mult;
|
|
cloudAssembly.min_cloud_height = 305.0 * mult;
|
|
cloudAssembly.z_scale = 0.5;
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
}
|
|
|
|
else if (type == "Nimbus") {
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
var mult = 1.0;
|
|
if (subtype == "small") {mult = 0.7;}
|
|
else {mult = 1.0;}
|
|
|
|
# characterize the basic texture sheet
|
|
cloudAssembly.texture_sheet = "/Models/Weather/nimbus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 2;
|
|
cloudAssembly.num_tex_y = 3;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 0.6;
|
|
#cloudAssembly.n_sprites = 10;
|
|
cloudAssembly.n_sprites = 5;
|
|
cloudAssembly.min_width = 2700.0 * mult;
|
|
cloudAssembly.max_width = 3000.0 * mult;
|
|
cloudAssembly.min_height = 2700.0 * mult;
|
|
cloudAssembly.max_height = 3000.0 * mult;
|
|
cloudAssembly.min_cloud_width = 3500.0 * mult;
|
|
cloudAssembly.min_cloud_height = 3200.0 * mult;
|
|
cloudAssembly.z_scale = 0.4;
|
|
cloudAssembly.tracer_flag = 1;
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
}
|
|
else if (type == "Stratus") {
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
var mult = 1.0;
|
|
if (subtype == "small")
|
|
{
|
|
mult = 0.8;
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cirrocumulus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 3;
|
|
cloudAssembly.num_tex_y = 3;
|
|
cloudAssembly.n_sprites = 10;
|
|
cloudAssembly.z_scale = 0.6;
|
|
}
|
|
else
|
|
{
|
|
mult = 1.0;
|
|
cloudAssembly.texture_sheet = "/Models/Weather/stratus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 3;
|
|
cloudAssembly.num_tex_y = 2;
|
|
#cloudAssembly.n_sprites = 10;
|
|
cloudAssembly.n_sprites = 6;
|
|
cloudAssembly.z_scale = 0.4;
|
|
}
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 0.4;
|
|
cloudAssembly.min_width = 2000.0 * mult;
|
|
cloudAssembly.max_width = 2500.0 * mult;
|
|
cloudAssembly.min_height = 2000.0 * mult;
|
|
cloudAssembly.max_height = 2500.0 * mult;
|
|
cloudAssembly.min_cloud_width = 5000.0;
|
|
cloudAssembly.min_cloud_height = 2600 * mult; #1.1 * cloudAssembly.max_height;
|
|
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
|
|
}
|
|
else if (type == "Stratus (thin)") {
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
var mult = 1.0;
|
|
if (subtype == "small")
|
|
{
|
|
mult = 0.5;
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cirrocumulus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 3;
|
|
cloudAssembly.num_tex_y = 3;
|
|
# cloudAssembly.n_sprites = 20;
|
|
cloudAssembly.n_sprites = 10;
|
|
cloudAssembly.z_scale = 0.4;
|
|
}
|
|
else
|
|
{
|
|
mult = 1.0;
|
|
cloudAssembly.texture_sheet = "/Models/Weather/stratus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 3;
|
|
cloudAssembly.num_tex_y = 2;
|
|
# cloudAssembly.n_sprites = 10;
|
|
cloudAssembly.n_sprites = 6;
|
|
cloudAssembly.z_scale = 0.3;
|
|
}
|
|
|
|
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 0.8;
|
|
cloudAssembly.min_width = 1900.0 * mult;
|
|
cloudAssembly.max_width = 2400.0 * mult;
|
|
cloudAssembly.min_height = 1900.0 * mult;
|
|
cloudAssembly.max_height = 2400.0 * mult;
|
|
cloudAssembly.min_cloud_width = 4200.0;
|
|
cloudAssembly.min_cloud_height = 2500.0 * mult;
|
|
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
|
|
|
|
}
|
|
else if (type == "Cirrostratus") {
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
var mult = 1.0;
|
|
if (subtype == "small") {mult = 0.7;}
|
|
else {mult = 1.0;}
|
|
|
|
# characterize the basic texture sheet
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cirrostratus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 2;
|
|
cloudAssembly.num_tex_y = 2;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 1.0;
|
|
cloudAssembly.n_sprites = 4;
|
|
cloudAssembly.min_width = 3500.0 * mult;
|
|
cloudAssembly.max_width = 4000.0 * mult;
|
|
cloudAssembly.min_height = 3500.0 * mult;
|
|
cloudAssembly.max_height = 4000.0 * mult;
|
|
cloudAssembly.min_cloud_width = 8000.0;
|
|
cloudAssembly.min_cloud_height = 50.0;
|
|
cloudAssembly.z_scale = 0.3;
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
|
|
}
|
|
else if (type == "Cirrostratus (small)") {
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
var mult = 1.0;
|
|
if (subtype == "small") {mult = 0.45;}
|
|
else {mult = 0.7;}
|
|
|
|
# characterize the basic texture sheet
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cirrostratus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 2;
|
|
cloudAssembly.num_tex_y = 2;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 1.0;
|
|
cloudAssembly.n_sprites = 2;
|
|
cloudAssembly.min_width = 3500.0 * mult;
|
|
cloudAssembly.max_width = 4000.0 * mult;
|
|
cloudAssembly.min_height = 3500.0 * mult;
|
|
cloudAssembly.max_height = 4000.0 * mult;
|
|
cloudAssembly.min_cloud_width = 4500.0 * mult;
|
|
cloudAssembly.min_cloud_height = 4500.0 * mult;
|
|
cloudAssembly.z_scale = 0.5;
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
|
|
}
|
|
|
|
else if (type == "Fog (thin)") {
|
|
if (subtype == "small") {
|
|
if (rn > 0.8) {path = "Models/Weather/stratus_thin1.xml";}
|
|
else if (rn > 0.6) {path = "Models/Weather/stratus_thin2.xml";}
|
|
else if (rn > 0.4) {path = "Models/Weather/stratus_thin3.xml";}
|
|
else if (rn > 0.2) {path = "Models/Weather/stratus_thin4.xml";}
|
|
else {path = "Models/Weather/stratus_thin5.xml";}
|
|
}
|
|
else if (subtype == "large") {
|
|
if (rn > 0.8) {path = "Models/Weather/stratus_thin1.xml";}
|
|
else if (rn > 0.6) {path = "Models/Weather/stratus_thin2.xml";}
|
|
else if (rn > 0.4) {path = "Models/Weather/stratus_thin3.xml";}
|
|
else if (rn > 0.2) {path = "Models/Weather/stratus_thin4.xml";}
|
|
else {path = "Models/Weather/stratus_thin5.xml";}
|
|
}
|
|
}
|
|
else if (type == "Fog (thick)") {
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
var mult = 1.0;
|
|
if (subtype == "small")
|
|
{
|
|
mult = 0.8;
|
|
cloudAssembly.texture_sheet = "/Models/Weather/stratus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 3;
|
|
cloudAssembly.num_tex_y = 2;
|
|
cloudAssembly.n_sprites = 5;
|
|
cloudAssembly.z_scale = 1.0;
|
|
}
|
|
else
|
|
{
|
|
mult = 1.0;
|
|
cloudAssembly.texture_sheet = "/Models/Weather/stratus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 3;
|
|
cloudAssembly.num_tex_y = 2;
|
|
cloudAssembly.n_sprites = 5;
|
|
cloudAssembly.z_scale = 1.0;
|
|
}
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 0.4;
|
|
cloudAssembly.min_width = 2000.0 * mult;
|
|
cloudAssembly.max_width = 2500.0 * mult;
|
|
cloudAssembly.min_height = 2000.0 * mult;
|
|
cloudAssembly.max_height = 2500.0 * mult;
|
|
cloudAssembly.min_cloud_width = 5000.0;
|
|
cloudAssembly.min_cloud_height = 1.1 * cloudAssembly.max_height;
|
|
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
}
|
|
else if (type == "Test") {path="Models/Weather/single_cloud.xml";}
|
|
else if (type == "Box_test") {
|
|
if (subtype == "standard") {
|
|
if (rn > 0.8) {path = "Models/Weather/cloudbox1.xml";}
|
|
else if (rn > 0.6) {path = "Models/Weather/cloudbox2.xml";}
|
|
else if (rn > 0.4) {path = "Models/Weather/cloudbox3.xml";}
|
|
else if (rn > 0.2) {path = "Models/Weather/cloudbox4.xml";}
|
|
else {path = "Models/Weather/cloudbox5.xml";}
|
|
}
|
|
else if (subtype == "core") {
|
|
if (rn > 0.8) {path = "Models/Weather/cloudbox_core1.xml";}
|
|
else if (rn > 0.6) {path = "Models/Weather/cloudbox_core2.xml";}
|
|
else if (rn > 0.4) {path = "Models/Weather/cloudbox_core3.xml";}
|
|
else if (rn > 0.2) {path = "Models/Weather/cloudbox_core4.xml";}
|
|
else {path = "Models/Weather/cloudbox_core5.xml";}
|
|
}
|
|
else if (subtype == "bottom") {
|
|
if (rn > 0.66) {path = "Models/Weather/cloudbox_bottom1.xml";}
|
|
else if (rn > 0.33) {path = "Models/Weather/cloudbox_bottom2.xml";}
|
|
else if (rn > 0.0) {path = "Models/Weather/cloudbox_bottom3.xml";}
|
|
}
|
|
}
|
|
else if (type == "Cb_box") {
|
|
|
|
cloudAssembly = local_weather.cloud.new(type, subtype);
|
|
|
|
if (subtype == "standard")
|
|
{
|
|
if (rand() > 0.5) # use a Congestus texture
|
|
{
|
|
|
|
if (rand() > 0.5)
|
|
{
|
|
cloudAssembly.texture_sheet = "/Models/Weather/congestus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 1;
|
|
cloudAssembly.num_tex_y = 3;
|
|
cloudAssembly.min_width = 1300.0;
|
|
cloudAssembly.max_width = 2000.0;
|
|
cloudAssembly.min_height = 600.0;
|
|
cloudAssembly.max_height = 900.0;
|
|
}
|
|
else
|
|
{
|
|
cloudAssembly.texture_sheet = "/Models/Weather/congestus_sheet2.rgb";
|
|
cloudAssembly.num_tex_x = 1;
|
|
cloudAssembly.num_tex_y = 2;
|
|
cloudAssembly.min_width = 1200.0;
|
|
cloudAssembly.max_width = 1800.0;
|
|
cloudAssembly.min_height = 700.0;
|
|
cloudAssembly.max_height = 1000.0;
|
|
}
|
|
|
|
cloudAssembly.n_sprites = 3;
|
|
cloudAssembly.min_cloud_width = 2200.0;
|
|
cloudAssembly.min_cloud_height = 1200.0;
|
|
cloudAssembly.bottom_shade = 0.6;
|
|
cloudAssembly.z_scale = 1.0;
|
|
}
|
|
else
|
|
{
|
|
# characterize the basic texture sheet
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cumulonimbus_sheet2.rgb";
|
|
cloudAssembly.num_tex_x = 2;
|
|
cloudAssembly.num_tex_y = 2;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 0.6;
|
|
cloudAssembly.n_sprites = 6;
|
|
cloudAssembly.min_width = 800.0;
|
|
cloudAssembly.max_width = 1100.0;
|
|
cloudAssembly.min_height = 800.0;
|
|
cloudAssembly.max_height = 1100.0;
|
|
cloudAssembly.min_cloud_width = 3000.0;
|
|
cloudAssembly.min_cloud_height = 1500.0;
|
|
cloudAssembly.z_scale = 1.0;
|
|
|
|
|
|
}
|
|
}
|
|
else if (subtype == "core")
|
|
{
|
|
# characterize the basic texture sheet
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cumulonimbus_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 2;
|
|
cloudAssembly.num_tex_y = 2;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 0.6;
|
|
cloudAssembly.n_sprites = 20;
|
|
cloudAssembly.min_width = 1000.0;
|
|
cloudAssembly.max_width = 1500.0;
|
|
cloudAssembly.min_height = 1000.0;
|
|
cloudAssembly.max_height = 1500.0 ;
|
|
cloudAssembly.min_cloud_width = 3500.0;
|
|
cloudAssembly.min_cloud_height = 2000.0;
|
|
cloudAssembly.z_scale = 1.0;
|
|
}
|
|
else if (subtype == "bottom")
|
|
{
|
|
cloudAssembly.texture_sheet = "/Models/Weather/cumulus_bottom_sheet1.rgb";
|
|
cloudAssembly.num_tex_x = 1;
|
|
cloudAssembly.num_tex_y = 1;
|
|
|
|
#characterize the cloud
|
|
cloudAssembly.bottom_shade = 0.4;
|
|
cloudAssembly.n_sprites = 4;
|
|
cloudAssembly.min_width = 1100.0;
|
|
cloudAssembly.max_width = 1400.0;
|
|
cloudAssembly.min_height = 1100.0;
|
|
cloudAssembly.max_height = 1400.0;
|
|
cloudAssembly.min_cloud_width = 1600;
|
|
cloudAssembly.min_cloud_height = 1200;
|
|
cloudAssembly.z_scale = 0.4;
|
|
|
|
}
|
|
|
|
#signal that new routines are used
|
|
path = "new";
|
|
|
|
|
|
}
|
|
|
|
|
|
else {print("Cloud type ", type, " subtype ",subtype, " not available!");}
|
|
|
|
return path;
|
|
}
|
|
|
|
# hash for assembling hard-coded clouds
|
|
|
|
var cloudAssembly = {};
|
|
|