// 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; }