boiii-scripts/shared/abilities/gadgets/_gadget_camo_render.csc
2023-04-13 17:30:38 +02:00

132 lines
10 KiB
Plaintext

#using scripts\codescripts\struct;
#using scripts\shared\duplicaterender_mgr;
#using scripts\shared\system_shared;
function autoexec __init__sytem__() { system::register("gadget_camo_render",&__init__,undefined,undefined); }
function __init__()
{
duplicate_render::set_dr_filter_framebuffer_duplicate( "camo_rev_dr", 90,
"gadget_camo_reveal,", "gadget_camo_flicker,gadget_camo_break,hide_model",
1, "mc/hud_outline_predator", 0 );
duplicate_render::set_dr_filter_framebuffer( "camo_rev", 90,
"gadget_camo_reveal,hide_model", "gadget_camo_flicker,gadget_camo_break",
0, "mc/hud_outline_predator", 0 );
duplicate_render::set_dr_filter_framebuffer( "camo_fr", 90,
"gadget_camo_on,gadget_camo_friend,hide_model", "gadget_camo_flicker,gadget_camo_break",
0, "mc/hud_outline_predator_camo_active_ally", 0 );
duplicate_render::set_dr_filter_framebuffer( "camo_en", 90,
"gadget_camo_on,hide_model", "gadget_camo_flicker,gadget_camo_break,gadget_camo_friend",
0, "mc/hud_outline_predator_camo_active_enemy", 0 );
duplicate_render::set_dr_filter_framebuffer( "camo_fr_fl", 80,
"gadget_camo_on,gadget_camo_flicker,gadget_camo_friend", "gadget_camo_break",
0, "mc/hud_outline_predator_camo_disruption_ally", 0 );
duplicate_render::set_dr_filter_framebuffer( "camo_en_fl", 80,
"gadget_camo_on,gadget_camo_flicker", "gadget_camo_break,gadget_camo_friend",
0, "mc/hud_outline_predator_camo_disruption_enemy", 0 );
duplicate_render::set_dr_filter_framebuffer( "camo_brk", 70,
"gadget_camo_on,gadget_camo_break", undefined,
0, "mc/hud_outline_predator_break", 0 );
}
#namespace gadget_camo_render;
function forceOn( local_client_num )
{
self notify( "kill_gadget_camo_render_doreveal" );
self duplicate_render::update_dr_flag( local_client_num, "hide_model", true );
self MapShaderConstant( local_client_num, 0, "scriptVector0", 1, 0, 0, 0 );
self duplicate_render::set_dr_flag( "gadget_camo_reveal", false );
self duplicate_render::set_dr_flag( "gadget_camo_on", 1 );
self duplicate_render::update_dr_filters(local_client_num);
}
function doReveal( local_client_num, direction )
{
self notify( "kill_gadget_camo_render_doreveal" );
self endon( "kill_gadget_camo_render_doreveal" );
self endon( "entityshutdown" );
if ( !isdefined( self ) )
return;
delta = .016 / 0.35;
if( direction )
{
// start
self duplicate_render::update_dr_flag( local_client_num, "hide_model", false );
self MapShaderConstant( local_client_num, 0, "scriptVector0", 0, 0, 0, 0 );
// loop
model_hidden = 0;
for( currentValue = 0; currentValue < 1; currentValue += delta )
{
self MapShaderConstant( local_client_num, 0, "scriptVector0", currentValue, 0, 0, 0 );
if( currentValue >= .5 && model_hidden == 0 )
{
model_hidden = 1;
self duplicate_render::update_dr_flag( local_client_num, "hide_model", true );
}
wait( .016 );
}
// end
self MapShaderConstant( local_client_num, 0, "scriptVector0", 1, 0, 0, 0 );
self duplicate_render::set_dr_flag( "gadget_camo_reveal", false );
self duplicate_render::set_dr_flag( "gadget_camo_on", 1 );
self duplicate_render::update_dr_filters(local_client_num);
}
else
{
// start
self duplicate_render::update_dr_flag( local_client_num, "hide_model", true );
self MapShaderConstant( local_client_num, 0, "scriptVector0", 1, 0, 0, 0 );
// loop
model_hidden = 1;
for( currentValue = 1; currentValue > 0; currentValue -= delta )
{
self MapShaderConstant( local_client_num, 0, "scriptVector0", currentValue, 0, 0, 0 );
if ( currentValue < .5 && model_hidden )
{
self duplicate_render::update_dr_flag( local_client_num, "hide_model", false );
model_hidden = 0;
}
wait( .016 );
}
// end
self MapShaderConstant( local_client_num, 0, "scriptVector0", 0, 0, 0, 0 );
self duplicate_render::set_dr_flag( "gadget_camo_reveal", false );
self duplicate_render::set_dr_flag( "gadget_camo_on", 0 );
self duplicate_render::update_dr_filters(local_client_num);
}
}