iw6-scripts/maps/_ocean.gsc
6arelyFuture 0d73e78067
All checks were successful
lint / Lint on Linux (push) Successful in 9s
build: test workflow (#1)
2024-09-01 10:19:05 +00:00

123 lines
4.0 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
setup_ocean_params( var_0, var_1, var_2, var_3, var_4 )
{
var_5[0] = 3;
var_6[0] = 3;
var_7[0] = 30;
var_8[0] = 4;
var_9[0] = 0;
var_5[1] = 8;
var_6[1] = 8;
var_7[1] = 10;
var_8[1] = 1.75;
var_9[1] = 45;
var_5[2] = 2;
var_6[2] = 2;
var_7[2] = 0;
var_8[2] = 2;
var_9[2] = 315;
maps\ocean_perlin::setup_ocean_perlin( var_0 );
for ( var_10 = 0; var_10 < 3; var_10++ )
{
var_0.uscale[var_10] = 0.0001 * var_1 * var_5[var_10];
var_0.vscale[var_10] = 0.0001 * var_2 * var_6[var_10];
var_0.amplitude[var_10] = var_3 * var_7[var_10];
var_0.uscrollrate[var_10] = cos( var_9[var_10] ) * var_4 * var_8[var_10];
var_0.vscrollrate[var_10] = sin( var_9[var_10] ) * var_4 * var_8[var_10];
}
var_0.uoff = -0.5;
var_0.voff = -0.5;
var_0.gametimeoffset = 0.0;
var_0.displacement_uvscale = 1.0;
}
setup_ocean()
{
var_0 = 1;
var_1 = 1;
var_2 = 1;
var_3 = 0.025;
level.oceantextures["water_patch"] = spawnstruct();
setup_ocean_params( level.oceantextures["water_patch"], var_0, var_1, var_2, var_3 );
level.oceantextures["water_patch_med"] = spawnstruct();
setup_ocean_params( level.oceantextures["water_patch_med"], var_0, var_1, 0.5 * var_2, var_3 );
level.oceantextures["water_patch_calm"] = spawnstruct();
setup_ocean_params( level.oceantextures["water_patch_calm"], var_0, var_1, 0, var_3 );
}
gettransformeduv( var_0, var_1, var_2, var_3 )
{
var_4 = gettime();
var_4 = var_4 / 43200000.0;
var_4 = var_4 - int( var_4 );
var_4 = var_4 * 43200.0;
var_4 = var_4 + var_0.gametimeoffset;
var_5 = ( var_1[0] * var_0.uscale[var_2] * var_3, var_1[1] * var_0.vscale[var_2] * var_3, 0 );
var_5 = var_5 + ( var_4 * var_0.uscrollrate[var_2] * var_3, var_4 * var_0.vscrollrate[var_2] * var_3, 0 );
return var_5;
}
gettexturesamplefromint( var_0, var_1 )
{
var_2 = animscripts\utility::safemod( var_1[0], var_0.width );
var_3 = animscripts\utility::safemod( var_1[1], var_0.height );
var_4 = var_0.image[var_3][var_2];
var_4 = var_4 / 255.0;
return var_4;
}
getinterpolatedtexturesample( var_0, var_1 )
{
var_2 = var_1[0] - floor( var_1[0] );
var_3 = var_1[1] - floor( var_1[1] );
var_4 = ( var_2 * var_0.width, var_3 * var_0.height, 0 );
var_1 = ( var_4[0] + var_0.uoff, var_4[1] + var_0.voff, 0 );
var_5 = ( floor( var_1[0] ), floor( var_1[1] ), 0 );
var_6 = var_1 - var_5;
var_2 = animscripts\utility::safemod( var_5[0], var_0.width );
var_3 = animscripts\utility::safemod( var_5[1], var_0.height );
var_7 = ( var_2, var_3, 0 );
// FIXME: Decompilation error
/*
var_8[0][0] = gettexturesamplefromint( var_0, var_7 );
var_8[0][1] = gettexturesamplefromint( var_0, var_7 + ( 0, 1, 0 ) );
var_8[1][0] = gettexturesamplefromint( var_0, var_7 + ( 1, 0, 0 ) );
var_8[1][1] = gettexturesamplefromint( var_0, var_7 + ( 1, 1, 0 ) );
var_9 = ( var_8[0][0] * ( 1.0 - var_6[0] ) + var_8[1][0] * var_6[0] ) * ( 1.0 - var_6[1] );
var_9 = var_9 + ( var_8[0][1] * ( 1.0 - var_6[0] ) + var_8[1][1] * var_6[0] ) * var_6[1];
*/
var_9 = 0;
return var_9;
}
getperlintexturesample( var_0, var_1 )
{
var_2 = var_1[0] - floor( var_1[0] );
var_3 = var_1[1] - floor( var_1[1] );
var_4 = ( var_2 * var_0.width, var_3 * var_0.height, 0 );
var_1 = ( var_4[0] + var_0.uoff, var_4[1] + var_0.voff, 0 );
var_5 = maps\_perlin_noise::getperlinnoisesample( var_0, var_1[0], var_1[1] ) / 255.0;
return var_5;
}
getdisplacementforvertex( var_0, var_1 )
{
var_2 = 0;
for ( var_3 = 0; var_3 < 3; var_3++ )
{
if ( var_0.amplitude[var_3] > 0 )
{
var_4 = gettransformeduv( var_0, var_1, var_3, var_0.displacement_uvscale );
var_5 = getperlintexturesample( var_0, var_4 );
var_2 = var_2 + ( var_5 * 2.0 - 1.0 ) * var_0.amplitude[var_3];
}
}
return var_2;
}