333 lines
15 KiB
Plaintext
333 lines
15 KiB
Plaintext
#using scripts\shared\system_shared;
|
|
#using scripts\shared\util_shared;
|
|
|
|
|
|
|
|
#namespace art;
|
|
|
|
function autoexec __init__sytem__() { system::register("art",&__init__,undefined,undefined); }
|
|
|
|
// This function should take care of grain and glow settings for each map, plus anything else that artists
|
|
// need to be able to tweak without bothering level designers.
|
|
|
|
function __init__()
|
|
{
|
|
/#
|
|
if( GetDvarString( "scr_art_tweak" ) == "" || GetDvarString( "scr_art_tweak" ) == "0" )
|
|
{
|
|
SetDvar( "scr_art_tweak", 0 );
|
|
}
|
|
|
|
if( GetDvarString( "scr_dof_enable" ) == "" )
|
|
{
|
|
SetDvar( "scr_dof_enable", "1" );
|
|
}
|
|
|
|
if( GetDvarString( "scr_cinematic_autofocus" ) == "" )
|
|
{
|
|
SetDvar( "scr_cinematic_autofocus", "1" );
|
|
}
|
|
|
|
if( GetDvarString( "scr_art_visionfile" ) == "" && isdefined(level.script) )
|
|
{
|
|
SetDvar( "scr_art_visionfile", level.script );
|
|
}
|
|
#/
|
|
|
|
if( !isdefined( level.dofDefault ) )
|
|
{
|
|
level.dofDefault["nearStart"] = 0;
|
|
level.dofDefault["nearEnd"] = 1;
|
|
level.dofDefault["farStart"] = 8000;
|
|
level.dofDefault["farEnd"] = 10000;
|
|
level.dofDefault["nearBlur"] = 6;
|
|
level.dofDefault["farBlur"] = 0;
|
|
}
|
|
|
|
level.curDoF = ( level.dofDefault["farStart"] - level.dofDefault["nearEnd"] ) / 2;
|
|
|
|
/#
|
|
thread tweakart();
|
|
#/
|
|
}
|
|
|
|
function artfxprintln( file, string )
|
|
{
|
|
/#
|
|
// printing to file is optional now
|
|
if( file == -1 )
|
|
{
|
|
return;
|
|
}
|
|
fprintln( file, string );
|
|
#/
|
|
}
|
|
|
|
|
|
// Nate - hack Fixmed and replace with proper script command call once it's fixed.
|
|
// assumes " " as the deliiter. I'm not getting fancy.
|
|
// I would really like to go work on jeepride so here's a
|
|
// quick function that works for now untill engineering fixes strtok.
|
|
|
|
function strtok_loc( string, par1 )
|
|
{
|
|
stringlist = [];
|
|
indexstring = "";
|
|
for( i = 0 ; i < string.size ; i ++ )
|
|
{
|
|
if( string[i] == " " )
|
|
{
|
|
stringlist[stringlist.size] = indexstring;
|
|
indexstring = "";
|
|
}
|
|
else
|
|
{
|
|
indexstring = indexstring+string[i];
|
|
}
|
|
}
|
|
if( indexstring.size )
|
|
{
|
|
stringlist[stringlist.size] = indexstring;
|
|
}
|
|
return stringlist;
|
|
}
|
|
|
|
|
|
function setfogsliders()
|
|
{
|
|
//fixme. replace strtok_loc with strtok if it ever works properly.
|
|
fogall = strtok_loc( GetDvarString( "g_fogColorReadOnly" ), " " ) ;
|
|
red = fogall[ 0 ];
|
|
green = fogall[ 1 ];
|
|
blue = fogall[ 2 ];
|
|
halfplane = GetDvarString( "g_fogHalfDistReadOnly" );
|
|
nearplane = GetDvarString( "g_fogStartDistReadOnly" );
|
|
|
|
if ( !isdefined( red )
|
|
|| !isdefined( green )
|
|
|| !isdefined( blue )
|
|
|| !isdefined( halfplane )
|
|
)
|
|
{
|
|
red = 1;
|
|
green = 1;
|
|
blue = 1;
|
|
halfplane = 10000001;
|
|
nearplane = 10000000;
|
|
}
|
|
SetDvar("scr_fog_exp_halfplane",halfplane);
|
|
SetDvar("scr_fog_nearplane",nearplane);
|
|
SetDvar("scr_fog_color",red+" "+green+" "+blue);
|
|
}
|
|
|
|
function tweakart()
|
|
{
|
|
/#
|
|
if( !isdefined( level.tweakfile ) )
|
|
{
|
|
level.tweakfile = false;
|
|
}
|
|
|
|
|
|
// Default values
|
|
|
|
if(GetDvarString( "scr_fog_baseheight") == "")
|
|
{
|
|
SetDvar( "scr_fog_exp_halfplane", "500" );
|
|
SetDvar( "scr_fog_exp_halfheight", "500" );
|
|
SetDvar( "scr_fog_nearplane", "0" );
|
|
SetDvar( "scr_fog_baseheight", "0" );
|
|
}
|
|
|
|
// not in DEVGUI
|
|
SetDvar( "scr_fog_fraction", "1.0" );
|
|
SetDvar( "scr_art_dump", "0" );
|
|
SetDvar("scr_art_sun_fog_dir_set", "0");
|
|
|
|
// update the devgui variables to current settings
|
|
SetDvar( "scr_dof_nearStart", level.dofDefault["nearStart"] );
|
|
SetDvar( "scr_dof_nearEnd", level.dofDefault["nearEnd"] );
|
|
SetDvar( "scr_dof_farStart", level.dofDefault["farStart"] );
|
|
SetDvar( "scr_dof_farEnd", level.dofDefault["farEnd"] );
|
|
SetDvar( "scr_dof_nearBlur", level.dofDefault["nearBlur"] );
|
|
SetDvar( "scr_dof_farBlur", level.dofDefault["farBlur"] );
|
|
|
|
|
|
file = undefined;
|
|
filename = undefined;
|
|
|
|
// set dofvars from < levelname > _art.gsc
|
|
|
|
|
|
tweak_toggle = 1;
|
|
for( ;; )
|
|
{
|
|
while(GetDvarint( "scr_art_tweak" ) == 0 )
|
|
{
|
|
tweak_toggle = 1;
|
|
wait .05;
|
|
}
|
|
|
|
if(tweak_toggle)
|
|
{
|
|
tweak_toggle = 0;
|
|
fogsettings = getfogsettings();
|
|
|
|
SetDvar( "scr_fog_nearplane", fogsettings[0] );
|
|
SetDvar( "scr_fog_exp_halfplane", fogsettings[1] );
|
|
SetDvar( "scr_fog_exp_halfheight", fogsettings[3] );
|
|
SetDvar( "scr_fog_baseheight", fogsettings[2] );
|
|
|
|
SetDvar("scr_fog_color", fogsettings[4]+" "+fogsettings[5]+" "+fogsettings[6]);
|
|
SetDvar("scr_fog_color_scale", fogsettings[7]);
|
|
SetDvar("scr_sun_fog_color", fogsettings[8]+" "+fogsettings[9]+" "+fogsettings[10]);
|
|
|
|
level.fogsundir = [];
|
|
level.fogsundir[0] = fogsettings[11];
|
|
level.fogsundir[1] = fogsettings[12];
|
|
level.fogsundir[2] = fogsettings[13];
|
|
|
|
SetDvar("scr_sun_fog_start_angle",fogsettings[14] );
|
|
SetDvar("scr_sun_fog_end_angle",fogsettings[15] );
|
|
|
|
SetDvar("scr_fog_max_opacity", fogsettings[16]);
|
|
|
|
|
|
}
|
|
|
|
//translate the slider values to script variables
|
|
|
|
level.fogexphalfplane = GetDvarfloat( "scr_fog_exp_halfplane");
|
|
level.fogexphalfheight = GetDvarfloat( "scr_fog_exp_halfheight");
|
|
level.fognearplane = GetDvarfloat( "scr_fog_nearplane");
|
|
level.fogbaseheight = GetDvarfloat( "scr_fog_baseheight");
|
|
|
|
colors = StrTok(GetDvarString("scr_fog_color")," ");
|
|
level.fogcolorred = int(colors[0]);
|
|
level.fogcolorgreen = int(colors[1]);
|
|
level.fogcolorblue = int(colors[2]);
|
|
level.fogcolorscale = GetDvarfloat( "scr_fog_color_scale");
|
|
|
|
colors = StrTok(GetDvarString("scr_sun_fog_color")," ");
|
|
level.sunfogcolorred = int(colors[0]);
|
|
level.sunfogcolorgreen = int(colors[1]);
|
|
level.sunfogcolorblue = int(colors[2]);
|
|
|
|
level.sunstartangle = GetDvarfloat( "scr_sun_fog_start_angle");
|
|
level.sunendangle = GetDvarfloat( "scr_sun_fog_end_angle");
|
|
level.fogmaxopacity = GetDvarfloat( "scr_fog_max_opacity");
|
|
|
|
if( GetDvarint( "scr_art_sun_fog_dir_set") )
|
|
{
|
|
SetDvar( "scr_art_sun_fog_dir_set", "0" );
|
|
|
|
println("Setting sun fog direction to facing of player");
|
|
|
|
players = GetPlayers();
|
|
|
|
dir = VectorNormalize( AnglesToForward( players[0] GetPlayerAngles() ) );
|
|
|
|
level.fogsundir = [];
|
|
level.fogsundir[0] = dir[0];
|
|
level.fogsundir[1] = dir[1];
|
|
level.fogsundir[2] = dir[2];
|
|
}
|
|
|
|
|
|
// catch all those cases where a slider can be pushed to a place of conflict
|
|
fovslidercheck();
|
|
|
|
dumpsettings(); // dumps and returns true if the dump dvar is set
|
|
|
|
// updates fog to the variables
|
|
|
|
if ( ! GetDvarint( "scr_fog_disable" ) )
|
|
{
|
|
if(!isdefined(level.fogsundir)) {
|
|
level.fogsundir = [];
|
|
level.fogsundir[0] = 1;
|
|
level.fogsundir[1] = 0;
|
|
level.fogsundir[2] = 0;
|
|
}
|
|
|
|
setVolFog( level.fognearplane, level.fogexphalfplane, level.fogexphalfheight, level.fogbaseheight, level.fogcolorred, level.fogcolorgreen, level.fogcolorblue,
|
|
level.fogcolorscale, level.sunfogcolorred, level.sunfogcolorgreen, level.sunfogcolorblue, level.fogsundir[0], level.fogsundir[1], level.fogsundir[2], level.sunstartangle, level.sunendangle, 0, level.fogmaxopacity );
|
|
}
|
|
else
|
|
{
|
|
setExpFog( 100000000, 100000001, 0, 0, 0, 0 ); // couldn't find discreet fog disabling other than to never set it in the first place
|
|
}
|
|
|
|
wait .1;
|
|
}
|
|
#/
|
|
}
|
|
|
|
function fovslidercheck()
|
|
{
|
|
// catch all those cases where a slider can be pushed to a place of conflict
|
|
if( level.dofDefault["nearStart"] >= level.dofDefault["nearEnd"] )
|
|
{
|
|
level.dofDefault["nearStart"] = level.dofDefault["nearEnd"] - 1;
|
|
SetDvar( "scr_dof_nearStart", level.dofDefault["nearStart"] );
|
|
}
|
|
if( level.dofDefault["nearEnd"] <= level.dofDefault["nearStart"] )
|
|
{
|
|
level.dofDefault["nearEnd"] = level.dofDefault["nearStart"] + 1;
|
|
SetDvar( "scr_dof_nearEnd", level.dofDefault["nearEnd"] );
|
|
}
|
|
if( level.dofDefault["farStart"] >= level.dofDefault["farEnd"] )
|
|
{
|
|
level.dofDefault["farStart"] = level.dofDefault["farEnd"] - 1;
|
|
SetDvar( "scr_dof_farStart", level.dofDefault["farStart"] );
|
|
}
|
|
if( level.dofDefault["farEnd"] <= level.dofDefault["farStart"] )
|
|
{
|
|
level.dofDefault["farEnd"] = level.dofDefault["farStart"] + 1;
|
|
SetDvar( "scr_dof_farEnd", level.dofDefault["farEnd"] );
|
|
}
|
|
if( level.dofDefault["farBlur"] >= level.dofDefault["nearBlur"] )
|
|
{
|
|
level.dofDefault["farBlur"] = level.dofDefault["nearBlur"] - .1;
|
|
SetDvar( "scr_dof_farBlur", level.dofDefault["farBlur"] );
|
|
}
|
|
if( level.dofDefault["farStart"] <= level.dofDefault["nearEnd"] )
|
|
{
|
|
level.dofDefault["farStart"] = level.dofDefault["nearEnd"] + 1;
|
|
SetDvar( "scr_dof_farStart", level.dofDefault["farStart"] );
|
|
}
|
|
}
|
|
|
|
function dumpsettings()
|
|
{
|
|
/#
|
|
if ( GetDvarString( "scr_art_dump" ) != "0" )
|
|
{
|
|
PrintLn("\tstart_dist = " + level.fognearplane + ";");
|
|
PrintLn("\thalf_dist = " + level.fogexphalfplane + ";");
|
|
PrintLn("\thalf_height = " + level.fogexphalfheight + ";");
|
|
PrintLn("\tbase_height = " + level.fogbaseheight + ";");
|
|
PrintLn("\tfog_r = " + level.fogcolorred + ";");
|
|
PrintLn("\tfog_g = " + level.fogcolorgreen + ";");
|
|
PrintLn("\tfog_b = " + level.fogcolorblue + ";");
|
|
PrintLn("\tfog_scale = " + level.fogcolorscale + ";");
|
|
PrintLn("\tsun_col_r = " + level.sunfogcolorred + ";");
|
|
PrintLn("\tsun_col_g = " + level.sunfogcolorgreen + ";");
|
|
PrintLn("\tsun_col_b = " + level.sunfogcolorblue + ";");
|
|
PrintLn("\tsun_dir_x = " + level.fogsundir[0] + ";");
|
|
PrintLn("\tsun_dir_y = " + level.fogsundir[1] + ";");
|
|
PrintLn("\tsun_dir_z = " + level.fogsundir[2] + ";");
|
|
PrintLn("\tsun_start_ang = " + level.sunstartangle + ";");
|
|
PrintLn("\tsun_stop_ang = " + level.sunendangle + ";");
|
|
PrintLn("\ttime = 0;");
|
|
PrintLn("\tmax_fog_opacity = " + level.fogmaxopacity +";");
|
|
PrintLn("");
|
|
PrintLn("\tsetVolFog(start_dist, half_dist, half_height, base_height, fog_r, fog_g, fog_b, fog_scale,");
|
|
PrintLn("\t\tsun_col_r, sun_col_g, sun_col_b, sun_dir_x, sun_dir_y, sun_dir_z, sun_start_ang, ");
|
|
PrintLn("\t\tsun_stop_ang, time, max_fog_opacity);");
|
|
|
|
SetDvar( "scr_art_dump", "0" );
|
|
}
|
|
#/
|
|
}
|