2233 lines
54 KiB
Plaintext
2233 lines
54 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
createeffect( var_0, var_1 )
|
|
{
|
|
var_2 = spawnstruct();
|
|
|
|
if ( !isdefined( level.createfxent ) )
|
|
level.createfxent = [];
|
|
|
|
level.createfxent[level.createfxent.size] = var_2;
|
|
var_2.v = [];
|
|
var_2.v["type"] = var_0;
|
|
var_2.v["fxid"] = var_1;
|
|
var_2.v["angles"] = ( 0, 0, 0 );
|
|
var_2.v["origin"] = ( 0, 0, 0 );
|
|
var_2.drawn = 1;
|
|
|
|
if ( isdefined( var_1 ) && isdefined( level.createfxbyfxid ) )
|
|
{
|
|
var_3 = level.createfxbyfxid[var_1];
|
|
|
|
if ( !isdefined( var_3 ) )
|
|
var_3 = [];
|
|
|
|
var_3[var_3.size] = var_2;
|
|
level.createfxbyfxid[var_1] = var_3;
|
|
}
|
|
|
|
return var_2;
|
|
}
|
|
|
|
getloopeffectdelaydefault()
|
|
{
|
|
return 0.5;
|
|
}
|
|
|
|
getoneshoteffectdelaydefault()
|
|
{
|
|
return -15;
|
|
}
|
|
|
|
getexploderdelaydefault()
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
getintervalsounddelaymindefault()
|
|
{
|
|
return 0.75;
|
|
}
|
|
|
|
getintervalsounddelaymaxdefault()
|
|
{
|
|
return 2;
|
|
}
|
|
|
|
createloopsound()
|
|
{
|
|
var_0 = spawnstruct();
|
|
|
|
if ( !isdefined( level.createfxent ) )
|
|
level.createfxent = [];
|
|
|
|
level.createfxent[level.createfxent.size] = var_0;
|
|
var_0.v = [];
|
|
var_0.v["type"] = "soundfx";
|
|
var_0.v["fxid"] = "No FX";
|
|
var_0.v["soundalias"] = "nil";
|
|
var_0.v["angles"] = ( 0, 0, 0 );
|
|
var_0.v["origin"] = ( 0, 0, 0 );
|
|
var_0.v["server_culled"] = 1;
|
|
|
|
if ( getdvar( "serverCulledSounds" ) != "1" )
|
|
var_0.v["server_culled"] = 0;
|
|
|
|
var_0.drawn = 1;
|
|
return var_0;
|
|
}
|
|
|
|
createintervalsound()
|
|
{
|
|
var_0 = createloopsound();
|
|
var_0.v["type"] = "soundfx_interval";
|
|
var_0.v["delay_min"] = getintervalsounddelaymindefault();
|
|
var_0.v["delay_max"] = getintervalsounddelaymaxdefault();
|
|
return var_0;
|
|
}
|
|
|
|
createnewexploder()
|
|
{
|
|
var_0 = spawnstruct();
|
|
|
|
if ( !isdefined( level.createfxent ) )
|
|
level.createfxent = [];
|
|
|
|
level.createfxent[level.createfxent.size] = var_0;
|
|
var_0.v = [];
|
|
var_0.v["type"] = "exploder";
|
|
var_0.v["fxid"] = "No FX";
|
|
var_0.v["soundalias"] = "nil";
|
|
var_0.v["loopsound"] = "nil";
|
|
var_0.v["angles"] = ( 0, 0, 0 );
|
|
var_0.v["origin"] = ( 0, 0, 0 );
|
|
var_0.v["exploder"] = 1;
|
|
var_0.v["flag"] = "nil";
|
|
var_0.v["exploder_type"] = "normal";
|
|
var_0.drawn = 1;
|
|
return var_0;
|
|
}
|
|
|
|
createexploderex( var_0, var_1 )
|
|
{
|
|
var_2 = common_scripts\utility::createexploder( var_0 );
|
|
var_2.v["exploder"] = var_1;
|
|
return var_2;
|
|
}
|
|
|
|
createreactiveent()
|
|
{
|
|
var_0 = spawnstruct();
|
|
level.createfxent[level.createfxent.size] = var_0;
|
|
var_0.v = [];
|
|
var_0.v["origin"] = ( 0, 0, 0 );
|
|
var_0.v["reactive_radius"] = 200;
|
|
var_0.v["fxid"] = "No FX";
|
|
var_0.v["type"] = "reactive_fx";
|
|
var_0.v["soundalias"] = "nil";
|
|
return var_0;
|
|
}
|
|
|
|
set_origin_and_angles( var_0, var_1 )
|
|
{
|
|
if ( isdefined( level.createfx_offset ) )
|
|
var_0 = var_0 + level.createfx_offset;
|
|
|
|
self.v["origin"] = var_0;
|
|
self.v["angles"] = var_1;
|
|
}
|
|
|
|
set_forward_and_up_vectors()
|
|
{
|
|
self.v["up"] = anglestoup( self.v["angles"] );
|
|
self.v["forward"] = anglestoforward( self.v["angles"] );
|
|
}
|
|
|
|
createfx_common()
|
|
{
|
|
precacheshader( "black" );
|
|
level._createfx = spawnstruct();
|
|
level._createfx.grenade = spawn( "script_origin", ( 0, 0, 0 ) );
|
|
level._createfx.grenade.fx = loadfx( "fx/explosions/grenadeexp_default" );
|
|
level._createfx.grenade.sound = "grenade_explode_default";
|
|
level._createfx.grenade.radius = 256;
|
|
|
|
if ( level.mp_createfx )
|
|
hack_start( "painter_mp" );
|
|
else
|
|
hack_start( "painter" );
|
|
|
|
common_scripts\utility::flag_init( "createfx_saving" );
|
|
common_scripts\utility::flag_init( "createfx_started" );
|
|
|
|
if ( !isdefined( level.createfx ) )
|
|
level.createfx = [];
|
|
|
|
level.createfx_loopcounter = 0;
|
|
level notify( "createfx_common_done" );
|
|
}
|
|
|
|
init_level_variables()
|
|
{
|
|
level._createfx.selectedmove_up = 0;
|
|
level._createfx.selectedmove_forward = 0;
|
|
level._createfx.selectedmove_right = 0;
|
|
level._createfx.selectedrotate_pitch = 0;
|
|
level._createfx.selectedrotate_roll = 0;
|
|
level._createfx.selectedrotate_yaw = 0;
|
|
level._createfx.selected_fx = [];
|
|
level._createfx.selected_fx_ents = [];
|
|
level._createfx.rate = 1;
|
|
level._createfx.snap2normal = 0;
|
|
level._createfx.axismode = 0;
|
|
level._createfx.select_by_name = 0;
|
|
level._createfx.player_speed = getdvarfloat( "g_speed" );
|
|
set_player_speed_hud();
|
|
}
|
|
|
|
init_locked_list()
|
|
{
|
|
level._createfx.lockedlist = [];
|
|
level._createfx.lockedlist["escape"] = 1;
|
|
level._createfx.lockedlist["BUTTON_LSHLDR"] = 1;
|
|
level._createfx.lockedlist["BUTTON_RSHLDR"] = 1;
|
|
level._createfx.lockedlist["mouse1"] = 1;
|
|
level._createfx.lockedlist["ctrl"] = 1;
|
|
}
|
|
|
|
init_colors()
|
|
{
|
|
var_0 = [];
|
|
var_0["loopfx"]["selected"] = ( 1, 1, 0.2 );
|
|
var_0["loopfx"]["highlighted"] = ( 0.4, 0.95, 1 );
|
|
var_0["loopfx"]["default"] = ( 0.3, 0.8, 1 );
|
|
var_0["oneshotfx"]["selected"] = ( 1, 1, 0.2 );
|
|
var_0["oneshotfx"]["highlighted"] = ( 0.4, 0.95, 1 );
|
|
var_0["oneshotfx"]["default"] = ( 0.3, 0.8, 1 );
|
|
var_0["exploder"]["selected"] = ( 1, 1, 0.2 );
|
|
var_0["exploder"]["highlighted"] = ( 1, 0.2, 0.2 );
|
|
var_0["exploder"]["default"] = ( 1, 0.1, 0.1 );
|
|
var_0["rainfx"]["selected"] = ( 1, 1, 0.2 );
|
|
var_0["rainfx"]["highlighted"] = ( 0.95, 0.4, 0.95 );
|
|
var_0["rainfx"]["default"] = ( 0.78, 0, 0.73 );
|
|
var_0["soundfx"]["selected"] = ( 1, 1, 0.2 );
|
|
var_0["soundfx"]["highlighted"] = ( 0.5, 1, 0.75 );
|
|
var_0["soundfx"]["default"] = ( 0.2, 0.9, 0.2 );
|
|
var_0["soundfx_interval"]["selected"] = ( 1, 1, 0.2 );
|
|
var_0["soundfx_interval"]["highlighted"] = ( 0.5, 1, 0.75 );
|
|
var_0["soundfx_interval"]["default"] = ( 0.2, 0.9, 0.2 );
|
|
var_0["reactive_fx"]["selected"] = ( 1, 1, 0.2 );
|
|
var_0["reactive_fx"]["highlighted"] = ( 0.5, 1, 0.75 );
|
|
var_0["reactive_fx"]["default"] = ( 0.2, 0.9, 0.2 );
|
|
level._createfx.colors = var_0;
|
|
}
|
|
|
|
createfxlogic()
|
|
{
|
|
waittillframeend;
|
|
wait 0.05;
|
|
|
|
if ( !isdefined( level._effect ) )
|
|
level._effect = [];
|
|
|
|
if ( getdvar( "createfx_map" ) == "" )
|
|
{
|
|
|
|
}
|
|
else if ( getdvar( "createfx_map" ) == common_scripts\utility::get_template_level() )
|
|
[[ level.func_position_player ]]();
|
|
|
|
init_crosshair();
|
|
common_scripts\_createfxmenu::init_menu();
|
|
init_huds();
|
|
init_tool_hud();
|
|
init_crosshair();
|
|
init_level_variables();
|
|
init_locked_list();
|
|
init_colors();
|
|
|
|
if ( getdvar( "createfx_use_f4" ) == "" )
|
|
{
|
|
|
|
}
|
|
|
|
if ( getdvar( "createfx_no_autosave" ) == "" )
|
|
{
|
|
|
|
}
|
|
|
|
level.createfx_draw_enabled = 1;
|
|
level.last_displayed_ent = undefined;
|
|
level.buttonisheld = [];
|
|
var_0 = ( 0, 0, 0 );
|
|
common_scripts\utility::flag_set( "createfx_started" );
|
|
|
|
if ( !level.mp_createfx )
|
|
var_0 = level.player.origin;
|
|
|
|
var_1 = undefined;
|
|
level.fx_rotating = 0;
|
|
common_scripts\_createfxmenu::setmenu( "none" );
|
|
level.createfx_selecting = 0;
|
|
var_2 = newhudelem();
|
|
var_2.x = -120;
|
|
var_2.y = 200;
|
|
var_2.foreground = 0;
|
|
var_2 setshader( "black", 250, 160 );
|
|
var_2.alpha = 0;
|
|
level.createfx_inputlocked = 0;
|
|
|
|
foreach ( var_4 in level.createfxent )
|
|
var_4 post_entity_creation_function();
|
|
|
|
thread draw_distance();
|
|
var_6 = undefined;
|
|
thread createfx_autosave();
|
|
|
|
for (;;)
|
|
{
|
|
var_7 = 0;
|
|
var_8 = anglestoright( level.player getplayerangles() );
|
|
var_9 = anglestoforward( level.player getplayerangles() );
|
|
var_10 = anglestoup( level.player getplayerangles() );
|
|
var_11 = 0.85;
|
|
var_12 = var_9 * 750;
|
|
level.createfxcursor = bullettrace( level.player geteye(), level.player geteye() + var_12, 0, undefined );
|
|
var_13 = undefined;
|
|
level.buttonclick = [];
|
|
level.button_is_kb = [];
|
|
process_button_held_and_clicked();
|
|
var_14 = button_is_held( "ctrl", "BUTTON_LSHLDR" );
|
|
var_15 = button_is_clicked( "mouse1", "BUTTON_A" );
|
|
var_16 = button_is_held( "mouse1", "BUTTON_A" );
|
|
common_scripts\_createfxmenu::create_fx_menu();
|
|
var_17 = "F5";
|
|
|
|
if ( getdvarint( "createfx_use_f4" ) )
|
|
var_17 = "F4";
|
|
|
|
if ( button_is_clicked( var_17 ) )
|
|
{
|
|
|
|
}
|
|
|
|
if ( getdvarint( "scr_createfx_dump" ) )
|
|
generate_fx_log();
|
|
|
|
if ( button_is_clicked( "F2" ) )
|
|
toggle_createfx_drawing();
|
|
|
|
if ( button_is_clicked( "ins" ) )
|
|
insert_effect();
|
|
|
|
if ( button_is_clicked( "del" ) )
|
|
delete_pressed();
|
|
|
|
if ( button_is_clicked( "escape" ) )
|
|
clear_settable_fx();
|
|
|
|
if ( button_is_clicked( "space" ) )
|
|
set_off_exploders();
|
|
|
|
if ( button_is_clicked( "u" ) )
|
|
select_by_name_list();
|
|
|
|
modify_player_speed();
|
|
|
|
if ( !var_14 && button_is_clicked( "g" ) )
|
|
{
|
|
select_all_exploders_of_currently_selected( "exploder" );
|
|
select_all_exploders_of_currently_selected( "flag" );
|
|
}
|
|
|
|
if ( button_is_held( "h", "F1" ) )
|
|
{
|
|
show_help();
|
|
wait 0.05;
|
|
continue;
|
|
}
|
|
|
|
if ( button_is_clicked( "BUTTON_LSTICK" ) )
|
|
copy_ents();
|
|
|
|
if ( button_is_clicked( "BUTTON_RSTICK" ) )
|
|
paste_ents();
|
|
|
|
if ( var_14 )
|
|
{
|
|
if ( button_is_clicked( "c" ) )
|
|
copy_ents();
|
|
|
|
if ( button_is_clicked( "v" ) )
|
|
paste_ents();
|
|
|
|
if ( button_is_clicked( "g" ) )
|
|
spawn_grenade();
|
|
}
|
|
|
|
if ( isdefined( level._createfx.selected_fx_option_index ) )
|
|
common_scripts\_createfxmenu::menu_fx_option_set();
|
|
|
|
for ( var_18 = 0; var_18 < level.createfxent.size; var_18++ )
|
|
{
|
|
var_4 = level.createfxent[var_18];
|
|
var_19 = vectornormalize( var_4.v["origin"] - ( level.player.origin + ( 0, 0, 55 ) ) );
|
|
var_20 = vectordot( var_9, var_19 );
|
|
|
|
if ( var_20 < var_11 )
|
|
continue;
|
|
|
|
var_11 = var_20;
|
|
var_13 = var_4;
|
|
}
|
|
|
|
level.fx_highlightedent = var_13;
|
|
|
|
if ( isdefined( var_13 ) )
|
|
{
|
|
if ( isdefined( var_1 ) )
|
|
{
|
|
if ( var_1 != var_13 )
|
|
{
|
|
if ( !ent_is_selected( var_1 ) )
|
|
var_1 thread entity_highlight_disable();
|
|
|
|
if ( !ent_is_selected( var_13 ) )
|
|
var_13 thread entity_highlight_enable();
|
|
}
|
|
}
|
|
else if ( !ent_is_selected( var_13 ) )
|
|
var_13 thread entity_highlight_enable();
|
|
}
|
|
|
|
manipulate_createfx_ents( var_13, var_15, var_16, var_14, var_8 );
|
|
var_7 = handle_selected_ents( var_7 );
|
|
wait 0.05;
|
|
|
|
if ( var_7 )
|
|
update_selected_entities();
|
|
|
|
if ( !level.mp_createfx )
|
|
var_0 = [[ level.func_position_player_get ]]( var_0 );
|
|
|
|
var_1 = var_13;
|
|
|
|
if ( last_selected_entity_has_changed( var_6 ) )
|
|
{
|
|
level.effect_list_offset = 0;
|
|
clear_settable_fx();
|
|
common_scripts\_createfxmenu::setmenu( "none" );
|
|
}
|
|
|
|
if ( level._createfx.selected_fx_ents.size )
|
|
{
|
|
var_6 = level._createfx.selected_fx_ents[level._createfx.selected_fx_ents.size - 1];
|
|
continue;
|
|
}
|
|
|
|
var_6 = undefined;
|
|
}
|
|
}
|
|
|
|
modify_player_speed()
|
|
{
|
|
var_0 = 0;
|
|
var_1 = button_is_held( "ctrl" );
|
|
|
|
if ( button_is_held( "." ) )
|
|
{
|
|
if ( var_1 )
|
|
{
|
|
if ( level._createfx.player_speed < 190 )
|
|
level._createfx.player_speed = 190;
|
|
else
|
|
level._createfx.player_speed = level._createfx.player_speed + 10;
|
|
}
|
|
else
|
|
level._createfx.player_speed = level._createfx.player_speed + 5;
|
|
|
|
var_0 = 1;
|
|
}
|
|
else if ( button_is_held( "," ) )
|
|
{
|
|
if ( var_1 )
|
|
{
|
|
if ( level._createfx.player_speed > 190 )
|
|
level._createfx.player_speed = 190;
|
|
else
|
|
level._createfx.player_speed = level._createfx.player_speed - 10;
|
|
}
|
|
else
|
|
level._createfx.player_speed = level._createfx.player_speed - 5;
|
|
|
|
var_0 = 1;
|
|
}
|
|
|
|
if ( var_0 )
|
|
{
|
|
level._createfx.player_speed = clamp( level._createfx.player_speed, 5, 500 );
|
|
[[ level.func_player_speed ]]();
|
|
set_player_speed_hud();
|
|
}
|
|
}
|
|
|
|
set_player_speed_hud()
|
|
{
|
|
if ( !isdefined( level._createfx.player_speed_hud ) )
|
|
{
|
|
var_0 = newhudelem();
|
|
var_0.alignx = "right";
|
|
var_0.foreground = 1;
|
|
var_0.fontscale = 1.2;
|
|
var_0.alpha = 0.2;
|
|
var_0.x = 320;
|
|
var_0.y = 420;
|
|
var_1 = newhudelem();
|
|
var_1.alignx = "left";
|
|
var_1.foreground = 1;
|
|
var_1.fontscale = 1.2;
|
|
var_1.alpha = 0.2;
|
|
var_1.x = 320;
|
|
var_1.y = 420;
|
|
var_0.hud_value = var_1;
|
|
level._createfx.player_speed_hud = var_0;
|
|
}
|
|
|
|
level._createfx.player_speed_hud.hud_value setvalue( level._createfx.player_speed );
|
|
}
|
|
|
|
toggle_createfx_drawing()
|
|
{
|
|
level.createfx_draw_enabled = !level.createfx_draw_enabled;
|
|
}
|
|
|
|
insert_effect()
|
|
{
|
|
common_scripts\_createfxmenu::setmenu( "creation" );
|
|
level.effect_list_offset = 0;
|
|
clear_fx_hudelements();
|
|
set_fx_hudelement( "Pick effect type to create:" );
|
|
set_fx_hudelement( "1. One Shot FX" );
|
|
set_fx_hudelement( "2. Looping sound" );
|
|
set_fx_hudelement( "3. Exploder" );
|
|
set_fx_hudelement( "4. One Shot Sound" );
|
|
set_fx_hudelement( "5. Reactive Sound" );
|
|
set_fx_hudelement( "(c) Cancel >" );
|
|
set_fx_hudelement( "(x) Exit >" );
|
|
}
|
|
|
|
manipulate_createfx_ents( var_0, var_1, var_2, var_3, var_4 )
|
|
{
|
|
if ( !level.createfx_draw_enabled )
|
|
return;
|
|
|
|
if ( level._createfx.select_by_name )
|
|
{
|
|
level._createfx.select_by_name = 0;
|
|
var_0 = undefined;
|
|
}
|
|
else if ( select_by_substring() )
|
|
var_0 = undefined;
|
|
|
|
for ( var_5 = 0; var_5 < level.createfxent.size; var_5++ )
|
|
{
|
|
var_6 = level.createfxent[var_5];
|
|
|
|
if ( !var_6.drawn )
|
|
continue;
|
|
|
|
var_7 = getdvarfloat( "createfx_scaleid" );
|
|
|
|
if ( isdefined( var_0 ) && var_6 == var_0 )
|
|
{
|
|
if ( !common_scripts\_createfxmenu::entities_are_selected() )
|
|
common_scripts\_createfxmenu::display_fx_info( var_6 );
|
|
|
|
if ( var_1 )
|
|
{
|
|
var_8 = index_is_selected( var_5 );
|
|
level.createfx_selecting = !var_8;
|
|
|
|
if ( !var_3 )
|
|
{
|
|
var_9 = level._createfx.selected_fx_ents.size;
|
|
clear_entity_selection();
|
|
|
|
if ( var_8 && var_9 == 1 )
|
|
select_entity( var_5, var_6 );
|
|
}
|
|
|
|
toggle_entity_selection( var_5, var_6 );
|
|
}
|
|
else if ( var_2 )
|
|
{
|
|
if ( var_3 )
|
|
{
|
|
if ( level.createfx_selecting )
|
|
select_entity( var_5, var_6 );
|
|
|
|
if ( !level.createfx_selecting )
|
|
deselect_entity( var_5, var_6 );
|
|
}
|
|
}
|
|
|
|
var_10 = "highlighted";
|
|
}
|
|
else
|
|
var_10 = "default";
|
|
|
|
if ( index_is_selected( var_5 ) )
|
|
var_10 = "selected";
|
|
|
|
var_6 createfx_print3d( var_10, var_7, var_4 );
|
|
}
|
|
}
|
|
|
|
createfx_print3d( var_0, var_1, var_2 )
|
|
{
|
|
if ( self.textalpha > 0 )
|
|
{
|
|
var_3 = get_print3d_text();
|
|
var_4 = var_2 * ( var_3.size * -2.93 );
|
|
var_5 = level._createfx.colors[self.v["type"]][var_0];
|
|
|
|
if ( isdefined( self.is_playing ) )
|
|
var_5 = ( 1, 0.5, 0 );
|
|
|
|
if ( isdefined( self.v["reactive_radius"] ) )
|
|
return;
|
|
}
|
|
}
|
|
|
|
get_print3d_text()
|
|
{
|
|
switch ( self.v["type"] )
|
|
{
|
|
case "reactive_fx":
|
|
return "reactive: " + self.v["soundalias"];
|
|
default:
|
|
return self.v["fxid"];
|
|
}
|
|
}
|
|
|
|
select_by_name_list()
|
|
{
|
|
level.effect_list_offset = 0;
|
|
clear_fx_hudelements();
|
|
common_scripts\_createfxmenu::setmenu( "select_by_name" );
|
|
common_scripts\_createfxmenu::draw_effects_list();
|
|
}
|
|
|
|
handle_selected_ents( var_0 )
|
|
{
|
|
if ( level._createfx.selected_fx_ents.size > 0 )
|
|
{
|
|
var_0 = selected_ent_buttons( var_0 );
|
|
|
|
if ( !current_mode_hud( "selected_ents" ) )
|
|
{
|
|
new_tool_hud( "selected_ents" );
|
|
set_tool_hudelem( "Selected Ent Mode" );
|
|
set_tool_hudelem( "Mode:", "move" );
|
|
set_tool_hudelem( "Rate:", level._createfx.rate );
|
|
set_tool_hudelem( "Snap2Normal:", level._createfx.snap2normal );
|
|
}
|
|
|
|
if ( level._createfx.axismode && level._createfx.selected_fx_ents.size > 0 )
|
|
{
|
|
set_tool_hudelem( "Mode:", "rotate" );
|
|
thread [[ level.func_process_fx_rotater ]]();
|
|
|
|
if ( button_is_clicked( "enter", "p" ) )
|
|
reset_axis_of_selected_ents();
|
|
|
|
if ( button_is_clicked( "v" ) )
|
|
copy_angles_of_selected_ents();
|
|
|
|
for ( var_1 = 0; var_1 < level._createfx.selected_fx_ents.size; var_1++ )
|
|
level._createfx.selected_fx_ents[var_1] draw_axis();
|
|
|
|
if ( level.selectedrotate_pitch != 0 || level.selectedrotate_yaw != 0 || level.selectedrotate_roll != 0 )
|
|
var_0 = 1;
|
|
}
|
|
else
|
|
{
|
|
set_tool_hudelem( "Mode:", "move" );
|
|
var_2 = get_selected_move_vector();
|
|
|
|
for ( var_1 = 0; var_1 < level._createfx.selected_fx_ents.size; var_1++ )
|
|
{
|
|
var_3 = level._createfx.selected_fx_ents[var_1];
|
|
|
|
if ( isdefined( var_3.model ) )
|
|
continue;
|
|
|
|
var_3 draw_cross();
|
|
var_3.v["origin"] = var_3.v["origin"] + var_2;
|
|
}
|
|
|
|
if ( distance( ( 0, 0, 0 ), var_2 ) > 0 )
|
|
var_0 = 1;
|
|
}
|
|
}
|
|
else
|
|
clear_tool_hud();
|
|
|
|
return var_0;
|
|
}
|
|
|
|
selected_ent_buttons( var_0 )
|
|
{
|
|
if ( button_is_clicked( "shift", "BUTTON_X" ) )
|
|
toggle_axismode();
|
|
|
|
modify_rate();
|
|
|
|
if ( button_is_clicked( "s" ) )
|
|
toggle_snap2normal();
|
|
|
|
if ( button_is_clicked( "end", "l" ) )
|
|
{
|
|
drop_selection_to_ground();
|
|
var_0 = 1;
|
|
}
|
|
|
|
if ( button_is_clicked( "tab", "BUTTON_RSHLDR" ) )
|
|
{
|
|
move_selection_to_cursor();
|
|
var_0 = 1;
|
|
}
|
|
|
|
return var_0;
|
|
}
|
|
|
|
modify_rate()
|
|
{
|
|
var_0 = button_is_held( "shift" );
|
|
var_1 = button_is_held( "ctrl" );
|
|
|
|
if ( button_is_clicked( "=" ) )
|
|
{
|
|
if ( var_0 )
|
|
level._createfx.rate = level._createfx.rate + 1;
|
|
else if ( var_1 )
|
|
{
|
|
if ( level._createfx.rate < 1 )
|
|
level._createfx.rate = 1;
|
|
else
|
|
level._createfx.rate = level._createfx.rate + 10;
|
|
}
|
|
else
|
|
level._createfx.rate = level._createfx.rate + 0.1;
|
|
}
|
|
else if ( button_is_clicked( "-" ) )
|
|
{
|
|
if ( var_0 )
|
|
level._createfx.rate = level._createfx.rate - 1;
|
|
else if ( var_1 )
|
|
{
|
|
if ( level._createfx.rate > 1 )
|
|
level._createfx.rate = 1;
|
|
else
|
|
level._createfx.rate = 0.1;
|
|
}
|
|
else
|
|
level._createfx.rate = level._createfx.rate - 0.1;
|
|
}
|
|
|
|
level._createfx.rate = clamp( level._createfx.rate, 0.1, 100 );
|
|
set_tool_hudelem( "Rate:", level._createfx.rate );
|
|
}
|
|
|
|
toggle_axismode()
|
|
{
|
|
level._createfx.axismode = !level._createfx.axismode;
|
|
}
|
|
|
|
toggle_snap2normal()
|
|
{
|
|
level._createfx.snap2normal = !level._createfx.snap2normal;
|
|
set_tool_hudelem( "Snap2Normal:", level._createfx.snap2normal );
|
|
}
|
|
|
|
copy_angles_of_selected_ents()
|
|
{
|
|
level notify( "new_ent_selection" );
|
|
|
|
for ( var_0 = 0; var_0 < level._createfx.selected_fx_ents.size; var_0++ )
|
|
{
|
|
var_1 = level._createfx.selected_fx_ents[var_0];
|
|
var_1.v["angles"] = level._createfx.selected_fx_ents[level._createfx.selected_fx_ents.size - 1].v["angles"];
|
|
var_1 set_forward_and_up_vectors();
|
|
}
|
|
|
|
update_selected_entities();
|
|
}
|
|
|
|
reset_axis_of_selected_ents()
|
|
{
|
|
level notify( "new_ent_selection" );
|
|
|
|
for ( var_0 = 0; var_0 < level._createfx.selected_fx_ents.size; var_0++ )
|
|
{
|
|
var_1 = level._createfx.selected_fx_ents[var_0];
|
|
var_1.v["angles"] = ( 0, 0, 0 );
|
|
var_1 set_forward_and_up_vectors();
|
|
}
|
|
|
|
update_selected_entities();
|
|
}
|
|
|
|
last_selected_entity_has_changed( var_0 )
|
|
{
|
|
if ( isdefined( var_0 ) )
|
|
{
|
|
if ( !common_scripts\_createfxmenu::entities_are_selected() )
|
|
return 1;
|
|
}
|
|
else
|
|
return common_scripts\_createfxmenu::entities_are_selected();
|
|
|
|
return var_0 != level._createfx.selected_fx_ents[level._createfx.selected_fx_ents.size - 1];
|
|
}
|
|
|
|
drop_selection_to_ground()
|
|
{
|
|
for ( var_0 = 0; var_0 < level._createfx.selected_fx_ents.size; var_0++ )
|
|
{
|
|
var_1 = level._createfx.selected_fx_ents[var_0];
|
|
var_2 = bullettrace( var_1.v["origin"], var_1.v["origin"] + ( 0, 0, -2048 ), 0, undefined );
|
|
var_1.v["origin"] = var_2["position"];
|
|
}
|
|
}
|
|
|
|
set_off_exploders()
|
|
{
|
|
level notify( "createfx_exploder_reset" );
|
|
var_0 = [];
|
|
|
|
for ( var_1 = 0; var_1 < level._createfx.selected_fx_ents.size; var_1++ )
|
|
{
|
|
var_2 = level._createfx.selected_fx_ents[var_1];
|
|
|
|
if ( isdefined( var_2.v["exploder"] ) )
|
|
var_0[var_2.v["exploder"]] = 1;
|
|
}
|
|
|
|
var_3 = getarraykeys( var_0 );
|
|
|
|
for ( var_1 = 0; var_1 < var_3.size; var_1++ )
|
|
common_scripts\utility::exploder( var_3[var_1] );
|
|
}
|
|
|
|
draw_distance()
|
|
{
|
|
var_0 = 0;
|
|
|
|
if ( getdvarint( "createfx_drawdist" ) == 0 )
|
|
{
|
|
|
|
}
|
|
|
|
for (;;)
|
|
{
|
|
var_1 = getdvarint( "createfx_drawdist" );
|
|
var_1 = var_1 * var_1;
|
|
|
|
for ( var_2 = 0; var_2 < level.createfxent.size; var_2++ )
|
|
{
|
|
var_3 = level.createfxent[var_2];
|
|
var_3.drawn = distancesquared( level.player.origin, var_3.v["origin"] ) <= var_1;
|
|
var_0++;
|
|
|
|
if ( var_0 > 100 )
|
|
{
|
|
var_0 = 0;
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
if ( level.createfxent.size == 0 )
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
createfx_autosave()
|
|
{
|
|
setdvarifuninitialized( "createfx_autosave_time", "300" );
|
|
|
|
for (;;)
|
|
{
|
|
wait( getdvarint( "createfx_autosave_time" ) );
|
|
common_scripts\utility::flag_waitopen( "createfx_saving" );
|
|
|
|
if ( getdvarint( "createfx_no_autosave" ) )
|
|
continue;
|
|
|
|
generate_fx_log( 1 );
|
|
}
|
|
}
|
|
|
|
rotate_over_time( var_0, var_1 )
|
|
{
|
|
level endon( "new_ent_selection" );
|
|
var_2 = 0.1;
|
|
|
|
for ( var_3 = 0; var_3 < var_2 * 20; var_3++ )
|
|
{
|
|
if ( level.selectedrotate_pitch != 0 )
|
|
var_0 addpitch( level.selectedrotate_pitch );
|
|
else if ( level.selectedrotate_yaw != 0 )
|
|
var_0 addyaw( level.selectedrotate_yaw );
|
|
else
|
|
var_0 addroll( level.selectedrotate_roll );
|
|
|
|
wait 0.05;
|
|
var_0 draw_axis();
|
|
|
|
for ( var_4 = 0; var_4 < level._createfx.selected_fx_ents.size; var_4++ )
|
|
{
|
|
var_5 = level._createfx.selected_fx_ents[var_4];
|
|
|
|
if ( isdefined( var_5.model ) )
|
|
continue;
|
|
|
|
var_5.v["origin"] = var_1[var_4].origin;
|
|
var_5.v["angles"] = var_1[var_4].angles;
|
|
}
|
|
}
|
|
}
|
|
|
|
delete_pressed()
|
|
{
|
|
if ( level.createfx_inputlocked )
|
|
{
|
|
remove_selected_option();
|
|
return;
|
|
}
|
|
|
|
delete_selection();
|
|
}
|
|
|
|
remove_selected_option()
|
|
{
|
|
if ( !isdefined( level._createfx.selected_fx_option_index ) )
|
|
return;
|
|
|
|
var_0 = level._createfx.options[level._createfx.selected_fx_option_index]["name"];
|
|
|
|
for ( var_1 = 0; var_1 < level.createfxent.size; var_1++ )
|
|
{
|
|
var_2 = level.createfxent[var_1];
|
|
|
|
if ( !ent_is_selected( var_2 ) )
|
|
continue;
|
|
|
|
var_2 remove_option( var_0 );
|
|
}
|
|
|
|
update_selected_entities();
|
|
clear_settable_fx();
|
|
}
|
|
|
|
remove_option( var_0 )
|
|
{
|
|
self.v[var_0] = undefined;
|
|
}
|
|
|
|
delete_selection()
|
|
{
|
|
var_0 = [];
|
|
|
|
for ( var_1 = 0; var_1 < level.createfxent.size; var_1++ )
|
|
{
|
|
var_2 = level.createfxent[var_1];
|
|
|
|
if ( ent_is_selected( var_2 ) )
|
|
{
|
|
if ( isdefined( var_2.looper ) )
|
|
var_2.looper delete();
|
|
|
|
var_2 notify( "stop_loop" );
|
|
continue;
|
|
}
|
|
|
|
var_0[var_0.size] = var_2;
|
|
}
|
|
|
|
level.createfxent = var_0;
|
|
level._createfx.selected_fx = [];
|
|
level._createfx.selected_fx_ents = [];
|
|
clear_fx_hudelements();
|
|
}
|
|
|
|
move_selection_to_cursor()
|
|
{
|
|
var_0 = level.createfxcursor["position"];
|
|
|
|
if ( level._createfx.selected_fx_ents.size <= 0 )
|
|
return;
|
|
|
|
var_1 = get_center_of_array( level._createfx.selected_fx_ents );
|
|
var_2 = var_1 - var_0;
|
|
|
|
for ( var_3 = 0; var_3 < level._createfx.selected_fx_ents.size; var_3++ )
|
|
{
|
|
var_4 = level._createfx.selected_fx_ents[var_3];
|
|
|
|
if ( isdefined( var_4.model ) )
|
|
continue;
|
|
|
|
var_4.v["origin"] = var_4.v["origin"] - var_2;
|
|
|
|
if ( level._createfx.snap2normal )
|
|
{
|
|
if ( isdefined( level.createfxcursor["normal"] ) )
|
|
var_4.v["angles"] = vectortoangles( level.createfxcursor["normal"] );
|
|
}
|
|
}
|
|
}
|
|
|
|
select_last_entity()
|
|
{
|
|
select_entity( level.createfxent.size - 1, level.createfxent[level.createfxent.size - 1] );
|
|
}
|
|
|
|
select_all_exploders_of_currently_selected( var_0 )
|
|
{
|
|
var_1 = [];
|
|
|
|
foreach ( var_3 in level._createfx.selected_fx_ents )
|
|
{
|
|
if ( !isdefined( var_3.v[var_0] ) )
|
|
continue;
|
|
|
|
var_4 = var_3.v[var_0];
|
|
var_1[var_4] = 1;
|
|
}
|
|
|
|
foreach ( var_4, var_7 in var_1 )
|
|
{
|
|
foreach ( var_9, var_3 in level.createfxent )
|
|
{
|
|
if ( index_is_selected( var_9 ) )
|
|
continue;
|
|
|
|
if ( !isdefined( var_3.v[var_0] ) )
|
|
continue;
|
|
|
|
if ( var_3.v[var_0] != var_4 )
|
|
continue;
|
|
|
|
select_entity( var_9, var_3 );
|
|
}
|
|
}
|
|
|
|
update_selected_entities();
|
|
}
|
|
|
|
copy_ents()
|
|
{
|
|
if ( level._createfx.selected_fx_ents.size <= 0 )
|
|
return;
|
|
|
|
var_0 = [];
|
|
|
|
for ( var_1 = 0; var_1 < level._createfx.selected_fx_ents.size; var_1++ )
|
|
{
|
|
var_2 = level._createfx.selected_fx_ents[var_1];
|
|
var_3 = spawnstruct();
|
|
var_3.v = var_2.v;
|
|
var_3 post_entity_creation_function();
|
|
var_0[var_0.size] = var_3;
|
|
}
|
|
|
|
level.stored_ents = var_0;
|
|
}
|
|
|
|
post_entity_creation_function()
|
|
{
|
|
self.textalpha = 0;
|
|
self.drawn = 1;
|
|
}
|
|
|
|
paste_ents()
|
|
{
|
|
if ( !isdefined( level.stored_ents ) )
|
|
return;
|
|
|
|
clear_entity_selection();
|
|
|
|
for ( var_0 = 0; var_0 < level.stored_ents.size; var_0++ )
|
|
add_and_select_entity( level.stored_ents[var_0] );
|
|
|
|
move_selection_to_cursor();
|
|
update_selected_entities();
|
|
level.stored_ents = [];
|
|
copy_ents();
|
|
}
|
|
|
|
add_and_select_entity( var_0 )
|
|
{
|
|
level.createfxent[level.createfxent.size] = var_0;
|
|
select_last_entity();
|
|
}
|
|
|
|
get_center_of_array( var_0 )
|
|
{
|
|
var_1 = ( 0, 0, 0 );
|
|
|
|
for ( var_2 = 0; var_2 < var_0.size; var_2++ )
|
|
var_1 = ( var_1[0] + var_0[var_2].v["origin"][0], var_1[1] + var_0[var_2].v["origin"][1], var_1[2] + var_0[var_2].v["origin"][2] );
|
|
|
|
return ( var_1[0] / var_0.size, var_1[1] / var_0.size, var_1[2] / var_0.size );
|
|
}
|
|
|
|
ent_draw_axis()
|
|
{
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
draw_axis();
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
rotation_is_occuring()
|
|
{
|
|
if ( level.selectedrotate_roll != 0 )
|
|
return 1;
|
|
|
|
if ( level.selectedrotate_pitch != 0 )
|
|
return 1;
|
|
|
|
return level.selectedrotate_yaw != 0;
|
|
}
|
|
|
|
print_fx_options( var_0, var_1, var_2 )
|
|
{
|
|
for ( var_3 = 0; var_3 < level._createfx.options.size; var_3++ )
|
|
{
|
|
var_4 = level._createfx.options[var_3];
|
|
var_5 = var_4["name"];
|
|
|
|
if ( !isdefined( var_0.v[var_5] ) )
|
|
continue;
|
|
|
|
if ( !common_scripts\_createfxmenu::mask( var_4["mask"], var_0.v["type"] ) )
|
|
continue;
|
|
|
|
if ( !level.mp_createfx )
|
|
{
|
|
if ( common_scripts\_createfxmenu::mask( "fx", var_0.v["type"] ) && var_5 == "fxid" )
|
|
continue;
|
|
|
|
if ( var_0.v["type"] == "exploder" && var_5 == "exploder" )
|
|
continue;
|
|
|
|
var_6 = var_0.v["type"] + "/" + var_5;
|
|
|
|
if ( isdefined( level._createfx.defaults[var_6] ) && level._createfx.defaults[var_6] == var_0.v[var_5] )
|
|
continue;
|
|
}
|
|
|
|
if ( var_4["type"] == "string" )
|
|
{
|
|
var_7 = var_0.v[var_5] + "";
|
|
|
|
if ( var_7 == "nil" )
|
|
continue;
|
|
|
|
cfxprintln( var_1 + "ent.v[ \"" + var_5 + "\" ] = \"" + var_0.v[var_5] + "\";" );
|
|
continue;
|
|
}
|
|
|
|
cfxprintln( var_1 + "ent.v[ \"" + var_5 + "\" ] = " + var_0.v[var_5] + ";" );
|
|
}
|
|
}
|
|
|
|
entity_highlight_disable()
|
|
{
|
|
self notify( "highlight change" );
|
|
self endon( "highlight change" );
|
|
|
|
for (;;)
|
|
{
|
|
self.textalpha = self.textalpha * 0.85;
|
|
self.textalpha = self.textalpha - 0.05;
|
|
|
|
if ( self.textalpha < 0 )
|
|
break;
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
self.textalpha = 0;
|
|
}
|
|
|
|
entity_highlight_enable()
|
|
{
|
|
self notify( "highlight change" );
|
|
self endon( "highlight change" );
|
|
|
|
for (;;)
|
|
{
|
|
self.textalpha = self.textalpha + 0.05;
|
|
self.textalpha = self.textalpha * 1.25;
|
|
|
|
if ( self.textalpha > 1 )
|
|
break;
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
self.textalpha = 1;
|
|
}
|
|
|
|
clear_settable_fx()
|
|
{
|
|
level.createfx_inputlocked = 0;
|
|
level._createfx.selected_fx_option_index = undefined;
|
|
reset_fx_hud_colors();
|
|
}
|
|
|
|
reset_fx_hud_colors()
|
|
{
|
|
for ( var_0 = 0; var_0 < level._createfx.hudelem_count; var_0++ )
|
|
level._createfx.hudelems[var_0][0].color = ( 1, 1, 1 );
|
|
}
|
|
|
|
toggle_entity_selection( var_0, var_1 )
|
|
{
|
|
if ( isdefined( level._createfx.selected_fx[var_0] ) )
|
|
deselect_entity( var_0, var_1 );
|
|
else
|
|
select_entity( var_0, var_1 );
|
|
}
|
|
|
|
select_entity( var_0, var_1 )
|
|
{
|
|
if ( isdefined( level._createfx.selected_fx[var_0] ) )
|
|
return;
|
|
|
|
clear_settable_fx();
|
|
level notify( "new_ent_selection" );
|
|
var_1 thread entity_highlight_enable();
|
|
level._createfx.selected_fx[var_0] = 1;
|
|
level._createfx.selected_fx_ents[level._createfx.selected_fx_ents.size] = var_1;
|
|
}
|
|
|
|
ent_is_highlighted( var_0 )
|
|
{
|
|
if ( !isdefined( level.fx_highlightedent ) )
|
|
return 0;
|
|
|
|
return var_0 == level.fx_highlightedent;
|
|
}
|
|
|
|
deselect_entity( var_0, var_1 )
|
|
{
|
|
if ( !isdefined( level._createfx.selected_fx[var_0] ) )
|
|
return;
|
|
|
|
clear_settable_fx();
|
|
level notify( "new_ent_selection" );
|
|
level._createfx.selected_fx[var_0] = undefined;
|
|
|
|
if ( !ent_is_highlighted( var_1 ) )
|
|
var_1 thread entity_highlight_disable();
|
|
|
|
var_2 = [];
|
|
|
|
for ( var_3 = 0; var_3 < level._createfx.selected_fx_ents.size; var_3++ )
|
|
{
|
|
if ( level._createfx.selected_fx_ents[var_3] != var_1 )
|
|
var_2[var_2.size] = level._createfx.selected_fx_ents[var_3];
|
|
}
|
|
|
|
level._createfx.selected_fx_ents = var_2;
|
|
}
|
|
|
|
index_is_selected( var_0 )
|
|
{
|
|
return isdefined( level._createfx.selected_fx[var_0] );
|
|
}
|
|
|
|
ent_is_selected( var_0 )
|
|
{
|
|
for ( var_1 = 0; var_1 < level._createfx.selected_fx_ents.size; var_1++ )
|
|
{
|
|
if ( level._createfx.selected_fx_ents[var_1] == var_0 )
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
clear_entity_selection()
|
|
{
|
|
for ( var_0 = 0; var_0 < level._createfx.selected_fx_ents.size; var_0++ )
|
|
{
|
|
if ( !ent_is_highlighted( level._createfx.selected_fx_ents[var_0] ) )
|
|
level._createfx.selected_fx_ents[var_0] thread entity_highlight_disable();
|
|
}
|
|
|
|
level._createfx.selected_fx = [];
|
|
level._createfx.selected_fx_ents = [];
|
|
}
|
|
|
|
draw_axis()
|
|
{
|
|
|
|
}
|
|
|
|
draw_cross()
|
|
{
|
|
|
|
}
|
|
|
|
createfx_centerprint( var_0 )
|
|
{
|
|
thread createfx_centerprint_thread( var_0 );
|
|
}
|
|
|
|
createfx_centerprint_thread( var_0 )
|
|
{
|
|
level notify( "new_createfx_centerprint" );
|
|
level endon( "new_createfx_centerprint" );
|
|
|
|
for ( var_1 = 0; var_1 < 5; var_1++ )
|
|
{
|
|
|
|
}
|
|
|
|
wait 4.5;
|
|
|
|
for ( var_1 = 0; var_1 < 5; var_1++ )
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
get_selected_move_vector()
|
|
{
|
|
var_0 = level.player getplayerangles()[1];
|
|
var_1 = ( 0, var_0, 0 );
|
|
var_2 = anglestoright( var_1 );
|
|
var_3 = anglestoforward( var_1 );
|
|
var_4 = anglestoup( var_1 );
|
|
var_5 = 0;
|
|
var_6 = level._createfx.rate;
|
|
|
|
if ( buttondown( "kp_uparrow", "DPAD_UP" ) )
|
|
{
|
|
if ( level.selectedmove_forward < 0 )
|
|
level.selectedmove_forward = 0;
|
|
|
|
level.selectedmove_forward = level.selectedmove_forward + var_6;
|
|
}
|
|
else if ( buttondown( "kp_downarrow", "DPAD_DOWN" ) )
|
|
{
|
|
if ( level.selectedmove_forward > 0 )
|
|
level.selectedmove_forward = 0;
|
|
|
|
level.selectedmove_forward = level.selectedmove_forward - var_6;
|
|
}
|
|
else
|
|
level.selectedmove_forward = 0;
|
|
|
|
if ( buttondown( "kp_rightarrow", "DPAD_RIGHT" ) )
|
|
{
|
|
if ( level.selectedmove_right < 0 )
|
|
level.selectedmove_right = 0;
|
|
|
|
level.selectedmove_right = level.selectedmove_right + var_6;
|
|
}
|
|
else if ( buttondown( "kp_leftarrow", "DPAD_LEFT" ) )
|
|
{
|
|
if ( level.selectedmove_right > 0 )
|
|
level.selectedmove_right = 0;
|
|
|
|
level.selectedmove_right = level.selectedmove_right - var_6;
|
|
}
|
|
else
|
|
level.selectedmove_right = 0;
|
|
|
|
if ( buttondown( "BUTTON_Y" ) )
|
|
{
|
|
if ( level.selectedmove_up < 0 )
|
|
level.selectedmove_up = 0;
|
|
|
|
level.selectedmove_up = level.selectedmove_up + var_6;
|
|
}
|
|
else if ( buttondown( "BUTTON_B" ) )
|
|
{
|
|
if ( level.selectedmove_up > 0 )
|
|
level.selectedmove_up = 0;
|
|
|
|
level.selectedmove_up = level.selectedmove_up - var_6;
|
|
}
|
|
else
|
|
level.selectedmove_up = 0;
|
|
|
|
var_7 = ( 0, 0, 0 );
|
|
var_7 = var_7 + var_3 * level.selectedmove_forward;
|
|
var_7 = var_7 + var_2 * level.selectedmove_right;
|
|
var_7 = var_7 + var_4 * level.selectedmove_up;
|
|
return var_7;
|
|
}
|
|
|
|
set_anglemod_move_vector()
|
|
{
|
|
var_0 = level._createfx.rate;
|
|
|
|
if ( buttondown( "kp_uparrow", "DPAD_UP" ) )
|
|
{
|
|
if ( level.selectedrotate_pitch < 0 )
|
|
level.selectedrotate_pitch = 0;
|
|
|
|
level.selectedrotate_pitch = level.selectedrotate_pitch + var_0;
|
|
}
|
|
else if ( buttondown( "kp_downarrow", "DPAD_DOWN" ) )
|
|
{
|
|
if ( level.selectedrotate_pitch > 0 )
|
|
level.selectedrotate_pitch = 0;
|
|
|
|
level.selectedrotate_pitch = level.selectedrotate_pitch - var_0;
|
|
}
|
|
else
|
|
level.selectedrotate_pitch = 0;
|
|
|
|
if ( buttondown( "kp_leftarrow", "DPAD_LEFT" ) )
|
|
{
|
|
if ( level.selectedrotate_yaw < 0 )
|
|
level.selectedrotate_yaw = 0;
|
|
|
|
level.selectedrotate_yaw = level.selectedrotate_yaw + var_0;
|
|
}
|
|
else if ( buttondown( "kp_rightarrow", "DPAD_RIGHT" ) )
|
|
{
|
|
if ( level.selectedrotate_yaw > 0 )
|
|
level.selectedrotate_yaw = 0;
|
|
|
|
level.selectedrotate_yaw = level.selectedrotate_yaw - var_0;
|
|
}
|
|
else
|
|
level.selectedrotate_yaw = 0;
|
|
|
|
if ( buttondown( "BUTTON_Y" ) )
|
|
{
|
|
if ( level.selectedrotate_roll < 0 )
|
|
level.selectedrotate_roll = 0;
|
|
|
|
level.selectedrotate_roll = level.selectedrotate_roll + var_0;
|
|
}
|
|
else if ( buttondown( "BUTTON_B" ) )
|
|
{
|
|
if ( level.selectedrotate_roll > 0 )
|
|
level.selectedrotate_roll = 0;
|
|
|
|
level.selectedrotate_roll = level.selectedrotate_roll - var_0;
|
|
}
|
|
else
|
|
level.selectedrotate_roll = 0;
|
|
}
|
|
|
|
update_selected_entities()
|
|
{
|
|
var_0 = 0;
|
|
|
|
foreach ( var_2 in level._createfx.selected_fx_ents )
|
|
{
|
|
if ( var_2.v["type"] == "reactive_fx" )
|
|
var_0 = 1;
|
|
|
|
var_2 [[ level.func_updatefx ]]();
|
|
}
|
|
|
|
if ( var_0 )
|
|
refresh_reactive_fx_ents();
|
|
}
|
|
|
|
hack_start( var_0 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
var_0 = "painter_mp";
|
|
|
|
precachemenu( var_0 );
|
|
wait 0.05;
|
|
|
|
if ( var_0 == "painter_mp" )
|
|
return;
|
|
|
|
level.player openpopupmenu( var_0 );
|
|
level.player closepopupmenu( var_0 );
|
|
}
|
|
|
|
stop_fx_looper()
|
|
{
|
|
if ( isdefined( self.looper ) )
|
|
self.looper delete();
|
|
|
|
stop_loopsound();
|
|
}
|
|
|
|
stop_loopsound()
|
|
{
|
|
self notify( "stop_loop" );
|
|
}
|
|
|
|
func_get_level_fx()
|
|
{
|
|
if ( !isdefined( level._effect_keys ) )
|
|
var_0 = getarraykeys( level._effect );
|
|
else
|
|
{
|
|
var_0 = getarraykeys( level._effect );
|
|
|
|
if ( var_0.size == level._effect_keys.size )
|
|
return level._effect_keys;
|
|
}
|
|
|
|
var_0 = common_scripts\utility::alphabetize( var_0 );
|
|
level._effect_keys = var_0;
|
|
return var_0;
|
|
}
|
|
|
|
restart_fx_looper()
|
|
{
|
|
stop_fx_looper();
|
|
set_forward_and_up_vectors();
|
|
|
|
switch ( self.v["type"] )
|
|
{
|
|
case "oneshotfx":
|
|
common_scripts\_fx::create_triggerfx();
|
|
break;
|
|
case "soundfx":
|
|
common_scripts\_fx::create_loopsound();
|
|
break;
|
|
case "soundfx_interval":
|
|
common_scripts\_fx::create_interval_sound();
|
|
break;
|
|
}
|
|
}
|
|
|
|
refresh_reactive_fx_ents()
|
|
{
|
|
level._fx.reactive_fx_ents = undefined;
|
|
|
|
foreach ( var_1 in level.createfxent )
|
|
{
|
|
if ( var_1.v["type"] == "reactive_fx" )
|
|
{
|
|
var_1 set_forward_and_up_vectors();
|
|
var_1 common_scripts\_fx::add_reactive_fx();
|
|
}
|
|
}
|
|
}
|
|
|
|
process_fx_rotater()
|
|
{
|
|
if ( level.fx_rotating )
|
|
return;
|
|
|
|
set_anglemod_move_vector();
|
|
|
|
if ( !rotation_is_occuring() )
|
|
return;
|
|
|
|
level.fx_rotating = 1;
|
|
|
|
if ( level._createfx.selected_fx_ents.size > 1 )
|
|
{
|
|
var_0 = get_center_of_array( level._createfx.selected_fx_ents );
|
|
var_1 = spawn( "script_origin", var_0 );
|
|
var_1.v["angles"] = level._createfx.selected_fx_ents[0].v["angles"];
|
|
var_1.v["origin"] = var_0;
|
|
var_2 = [];
|
|
|
|
for ( var_3 = 0; var_3 < level._createfx.selected_fx_ents.size; var_3++ )
|
|
{
|
|
var_2[var_3] = spawn( "script_origin", level._createfx.selected_fx_ents[var_3].v["origin"] );
|
|
var_2[var_3].angles = level._createfx.selected_fx_ents[var_3].v["angles"];
|
|
var_2[var_3] linkto( var_1 );
|
|
}
|
|
|
|
rotate_over_time( var_1, var_2 );
|
|
var_1 delete();
|
|
|
|
for ( var_3 = 0; var_3 < var_2.size; var_3++ )
|
|
var_2[var_3] delete();
|
|
}
|
|
else if ( level._createfx.selected_fx_ents.size == 1 )
|
|
{
|
|
var_4 = level._createfx.selected_fx_ents[0];
|
|
var_2 = spawn( "script_origin", ( 0, 0, 0 ) );
|
|
var_2.angles = var_4.v["angles"];
|
|
|
|
if ( level.selectedrotate_pitch != 0 )
|
|
var_2 addpitch( level.selectedrotate_pitch );
|
|
else if ( level.selectedrotate_yaw != 0 )
|
|
var_2 addyaw( level.selectedrotate_yaw );
|
|
else
|
|
var_2 addroll( level.selectedrotate_roll );
|
|
|
|
var_4.v["angles"] = var_2.angles;
|
|
var_2 delete();
|
|
wait 0.05;
|
|
}
|
|
|
|
level.fx_rotating = 0;
|
|
}
|
|
|
|
spawn_grenade()
|
|
{
|
|
playfx( level._createfx.grenade.fx, level.createfxcursor["position"] );
|
|
level._createfx.grenade playsound( level._createfx.grenade.sound );
|
|
radiusdamage( level.createfxcursor["position"], level._createfx.grenade.radius, 50, 5, undefined, "MOD_EXPLOSIVE" );
|
|
level notify( "code_damageradius", undefined, level._createfx.grenade.radius, level.createfxcursor["position"] );
|
|
}
|
|
|
|
show_help()
|
|
{
|
|
clear_fx_hudelements();
|
|
set_fx_hudelement( "Help:" );
|
|
set_fx_hudelement( "Insert Insert entity" );
|
|
set_fx_hudelement( "L Drop selected entities to the ground" );
|
|
set_fx_hudelement( "A Add option to the selected entities" );
|
|
set_fx_hudelement( "P Reset the rotation of the selected entities" );
|
|
set_fx_hudelement( "V Copy the angles from the most recently selected fx onto all selected fx." );
|
|
set_fx_hudelement( "Delete Kill the selected entities" );
|
|
set_fx_hudelement( "ESCAPE Cancel out of option-modify-mode, must have console open" );
|
|
set_fx_hudelement( "Ctrl-C Copy" );
|
|
set_fx_hudelement( "Ctrl-V Paste" );
|
|
set_fx_hudelement( "F2 Toggle createfx dot and text drawing" );
|
|
set_fx_hudelement( "F5 SAVES your work" );
|
|
set_fx_hudelement( "Dpad Move selected entitise on X/Y or rotate pitch/yaw" );
|
|
set_fx_hudelement( "A button Toggle the selection of the current entity" );
|
|
set_fx_hudelement( "X button Toggle entity rotation mode" );
|
|
set_fx_hudelement( "Y button Move selected entites up or rotate roll" );
|
|
set_fx_hudelement( "B button Move selected entites down or rotate roll" );
|
|
set_fx_hudelement( "R Shoulder Move selected entities to the cursor" );
|
|
set_fx_hudelement( "L Shoulder Hold to select multiple entites" );
|
|
set_fx_hudelement( "L JoyClick Copy" );
|
|
set_fx_hudelement( "R JoyClick Paste" );
|
|
set_fx_hudelement( "N UFO" );
|
|
set_fx_hudelement( "T Toggle Timescale FAST" );
|
|
set_fx_hudelement( "Y Toggle Timescale SLOW" );
|
|
set_fx_hudelement( "[ Toggle FX Visibility" );
|
|
set_fx_hudelement( "] Toggle ShowTris" );
|
|
set_fx_hudelement( "F11 Toggle FX Profile" );
|
|
}
|
|
|
|
generate_fx_log( var_0 )
|
|
{
|
|
|
|
}
|
|
|
|
write_log( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_4 = "\\t";
|
|
cfxprintlnstart();
|
|
cfxprintln( "//_createfx generated. Do not touch!!" );
|
|
cfxprintln( "#include common_scripts\\utility;" );
|
|
cfxprintln( "#include common_scripts\\_createfx;\\n" );
|
|
cfxprintln( "" );
|
|
cfxprintln( "main()" );
|
|
cfxprintln( "{" );
|
|
cfxprintln( var_4 + "// CreateFX " + var_1 + " entities placed: " + var_0.size );
|
|
|
|
foreach ( var_6 in var_0 )
|
|
{
|
|
if ( level.createfx_loopcounter > 16 )
|
|
{
|
|
level.createfx_loopcounter = 0;
|
|
wait 0.1;
|
|
}
|
|
|
|
level.createfx_loopcounter++;
|
|
|
|
if ( getdvarint( "scr_map_exploder_dump" ) )
|
|
{
|
|
if ( !isdefined( var_6.model ) )
|
|
continue;
|
|
}
|
|
else if ( isdefined( var_6.model ) )
|
|
continue;
|
|
|
|
if ( var_6.v["type"] == "oneshotfx" )
|
|
cfxprintln( var_4 + "ent = createOneshotEffect( \"" + var_6.v["fxid"] + "\" );" );
|
|
|
|
if ( var_6.v["type"] == "exploder" )
|
|
{
|
|
if ( isdefined( var_6.v["exploder"] ) && !level.mp_createfx )
|
|
cfxprintln( var_4 + "ent = createExploderEx( \"" + var_6.v["fxid"] + "\", \"" + var_6.v["exploder"] + "\" );" );
|
|
else
|
|
cfxprintln( var_4 + "ent = createExploder( \"" + var_6.v["fxid"] + "\" );" );
|
|
}
|
|
|
|
if ( var_6.v["type"] == "soundfx" )
|
|
cfxprintln( var_4 + "ent = createLoopSound();" );
|
|
|
|
if ( var_6.v["type"] == "soundfx_interval" )
|
|
cfxprintln( var_4 + "ent = createIntervalSound();" );
|
|
|
|
if ( var_6.v["type"] == "reactive_fx" )
|
|
cfxprintln( var_4 + "ent = createReactiveEnt();" );
|
|
|
|
cfxprintln( var_4 + "ent set_origin_and_angles( " + var_6.v["origin"] + ", " + var_6.v["angles"] + " );" );
|
|
print_fx_options( var_6, var_4, var_2 );
|
|
cfxprintln( "" );
|
|
}
|
|
|
|
cfxprintln( "}" );
|
|
cfxprintln( " " );
|
|
cfxprintlnend( var_2, var_3, var_1 );
|
|
}
|
|
|
|
createfx_adjust_array()
|
|
{
|
|
var_0 = 0.1;
|
|
|
|
foreach ( var_2 in level.createfxent )
|
|
{
|
|
var_3 = [];
|
|
var_4 = [];
|
|
|
|
for ( var_5 = 0; var_5 < 3; var_5++ )
|
|
{
|
|
var_3[var_5] = var_2.v["origin"][var_5];
|
|
var_4[var_5] = var_2.v["angles"][var_5];
|
|
|
|
if ( var_3[var_5] < var_0 && var_3[var_5] > var_0 * -1 )
|
|
var_3[var_5] = 0;
|
|
|
|
if ( var_4[var_5] < var_0 && var_4[var_5] > var_0 * -1 )
|
|
var_4[var_5] = 0;
|
|
}
|
|
|
|
var_2.v["origin"] = ( var_3[0], var_3[1], var_3[2] );
|
|
var_2.v["angles"] = ( var_4[0], var_4[1], var_4[2] );
|
|
}
|
|
}
|
|
|
|
get_createfx_array( var_0 )
|
|
{
|
|
var_1 = get_createfx_types( var_0 );
|
|
var_2 = [];
|
|
|
|
foreach ( var_5, var_4 in var_1 )
|
|
var_2[var_5] = [];
|
|
|
|
foreach ( var_7 in level.createfxent )
|
|
{
|
|
var_8 = 0;
|
|
|
|
foreach ( var_5, var_0 in var_1 )
|
|
{
|
|
if ( var_7.v["type"] != var_0 )
|
|
continue;
|
|
|
|
var_8 = 1;
|
|
var_2[var_5][var_2[var_5].size] = var_7;
|
|
break;
|
|
}
|
|
}
|
|
|
|
var_11 = [];
|
|
|
|
for ( var_12 = 0; var_12 < var_1.size; var_12++ )
|
|
{
|
|
foreach ( var_7 in var_2[var_12] )
|
|
var_11[var_11.size] = var_7;
|
|
}
|
|
|
|
return var_11;
|
|
}
|
|
|
|
get_createfx_types( var_0 )
|
|
{
|
|
var_1 = [];
|
|
|
|
if ( var_0 == "fx" )
|
|
{
|
|
var_1[0] = "oneshotfx";
|
|
var_1[1] = "exploder";
|
|
}
|
|
else
|
|
{
|
|
var_1[0] = "soundfx";
|
|
var_1[1] = "soundfx_interval";
|
|
var_1[2] = "reactive_fx";
|
|
}
|
|
|
|
return var_1;
|
|
}
|
|
|
|
is_createfx_type( var_0, var_1 )
|
|
{
|
|
var_2 = get_createfx_types( var_1 );
|
|
|
|
foreach ( var_4 in var_2 )
|
|
{
|
|
if ( var_0.v["type"] == var_4 )
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
createfx_filter_types()
|
|
{
|
|
var_0 = [];
|
|
var_0[0] = "soundfx";
|
|
var_0[1] = "oneshotfx";
|
|
var_0[2] = "exploder";
|
|
var_0[3] = "soundfx_interval";
|
|
var_0[4] = "reactive_fx";
|
|
var_1 = [];
|
|
|
|
foreach ( var_4, var_3 in var_0 )
|
|
var_1[var_4] = [];
|
|
|
|
foreach ( var_6 in level.createfxent )
|
|
{
|
|
var_7 = 0;
|
|
|
|
foreach ( var_4, var_9 in var_0 )
|
|
{
|
|
if ( var_6.v["type"] != var_9 )
|
|
continue;
|
|
|
|
var_7 = 1;
|
|
var_1[var_4][var_1[var_4].size] = var_6;
|
|
break;
|
|
}
|
|
}
|
|
|
|
var_11 = [];
|
|
|
|
for ( var_12 = 0; var_12 < var_0.size; var_12++ )
|
|
{
|
|
foreach ( var_6 in var_1[var_12] )
|
|
var_11[var_11.size] = var_6;
|
|
}
|
|
|
|
level.createfxent = var_11;
|
|
}
|
|
|
|
cfxprintlnstart()
|
|
{
|
|
common_scripts\utility::fileprint_launcher_start_file();
|
|
}
|
|
|
|
cfxprintln( var_0 )
|
|
{
|
|
common_scripts\utility::fileprint_launcher( var_0 );
|
|
}
|
|
|
|
cfxprintlnend( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = 1;
|
|
|
|
if ( var_1 != "" || var_0 )
|
|
var_3 = 0;
|
|
|
|
if ( common_scripts\utility::issp() )
|
|
{
|
|
var_4 = common_scripts\utility::get_template_level() + var_1 + "_" + var_2 + ".gsc";
|
|
|
|
if ( var_0 )
|
|
var_4 = "backup_" + var_2 + ".gsc";
|
|
}
|
|
else
|
|
{
|
|
var_4 = common_scripts\utility::get_template_level() + var_1 + "_" + var_2 + ".gsc";
|
|
|
|
if ( var_0 )
|
|
var_4 = "backup.gsc";
|
|
}
|
|
|
|
common_scripts\utility::fileprint_launcher_end_file( "/share/raw/maps/createfx/" + var_4, var_3 );
|
|
}
|
|
|
|
process_button_held_and_clicked()
|
|
{
|
|
add_button( "mouse1" );
|
|
add_button( "BUTTON_RSHLDR" );
|
|
add_button( "BUTTON_LSHLDR" );
|
|
add_button( "BUTTON_RSTICK" );
|
|
add_button( "BUTTON_LSTICK" );
|
|
add_button( "BUTTON_A" );
|
|
add_button( "BUTTON_B" );
|
|
add_button( "BUTTON_X" );
|
|
add_button( "BUTTON_Y" );
|
|
add_button( "DPAD_UP" );
|
|
add_button( "DPAD_LEFT" );
|
|
add_button( "DPAD_RIGHT" );
|
|
add_button( "DPAD_DOWN" );
|
|
add_kb_button( "shift" );
|
|
add_kb_button( "ctrl" );
|
|
add_kb_button( "escape" );
|
|
add_kb_button( "F1" );
|
|
add_kb_button( "F5" );
|
|
add_kb_button( "F4" );
|
|
add_kb_button( "F2" );
|
|
add_kb_button( "a" );
|
|
add_kb_button( "g" );
|
|
add_kb_button( "c" );
|
|
add_kb_button( "h" );
|
|
add_kb_button( "i" );
|
|
add_kb_button( "k" );
|
|
add_kb_button( "l" );
|
|
add_kb_button( "m" );
|
|
add_kb_button( "p" );
|
|
add_kb_button( "s" );
|
|
add_kb_button( "u" );
|
|
add_kb_button( "v" );
|
|
add_kb_button( "x" );
|
|
add_kb_button( "del" );
|
|
add_kb_button( "end" );
|
|
add_kb_button( "tab" );
|
|
add_kb_button( "ins" );
|
|
add_kb_button( "add" );
|
|
add_kb_button( "space" );
|
|
add_kb_button( "enter" );
|
|
add_kb_button( "1" );
|
|
add_kb_button( "2" );
|
|
add_kb_button( "3" );
|
|
add_kb_button( "4" );
|
|
add_kb_button( "5" );
|
|
add_kb_button( "6" );
|
|
add_kb_button( "7" );
|
|
add_kb_button( "8" );
|
|
add_kb_button( "9" );
|
|
add_kb_button( "0" );
|
|
add_kb_button( "-" );
|
|
add_kb_button( "=" );
|
|
add_kb_button( "," );
|
|
add_kb_button( "." );
|
|
add_kb_button( "[" );
|
|
add_kb_button( "]" );
|
|
add_kb_button( "leftarrow" );
|
|
add_kb_button( "rightarrow" );
|
|
add_kb_button( "uparrow" );
|
|
add_kb_button( "downarrow" );
|
|
}
|
|
|
|
locked( var_0 )
|
|
{
|
|
if ( isdefined( level._createfx.lockedlist[var_0] ) )
|
|
return 0;
|
|
|
|
return kb_locked( var_0 );
|
|
}
|
|
|
|
kb_locked( var_0 )
|
|
{
|
|
return level.createfx_inputlocked && isdefined( level.button_is_kb[var_0] );
|
|
}
|
|
|
|
add_button( var_0 )
|
|
{
|
|
if ( locked( var_0 ) )
|
|
return;
|
|
|
|
if ( !isdefined( level.buttonisheld[var_0] ) )
|
|
{
|
|
if ( level.player buttonpressed( var_0 ) )
|
|
{
|
|
level.buttonisheld[var_0] = 1;
|
|
level.buttonclick[var_0] = 1;
|
|
}
|
|
}
|
|
else if ( !level.player buttonpressed( var_0 ) )
|
|
level.buttonisheld[var_0] = undefined;
|
|
}
|
|
|
|
add_kb_button( var_0 )
|
|
{
|
|
level.button_is_kb[var_0] = 1;
|
|
add_button( var_0 );
|
|
}
|
|
|
|
buttondown( var_0, var_1 )
|
|
{
|
|
return buttonpressed_internal( var_0 ) || buttonpressed_internal( var_1 );
|
|
}
|
|
|
|
buttonpressed_internal( var_0 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
return 0;
|
|
|
|
if ( kb_locked( var_0 ) )
|
|
return 0;
|
|
|
|
return level.player buttonpressed( var_0 );
|
|
}
|
|
|
|
button_is_held( var_0, var_1 )
|
|
{
|
|
if ( isdefined( var_1 ) )
|
|
{
|
|
if ( isdefined( level.buttonisheld[var_1] ) )
|
|
return 1;
|
|
}
|
|
|
|
return isdefined( level.buttonisheld[var_0] );
|
|
}
|
|
|
|
button_is_clicked( var_0, var_1 )
|
|
{
|
|
if ( isdefined( var_1 ) )
|
|
{
|
|
if ( isdefined( level.buttonclick[var_1] ) )
|
|
return 1;
|
|
}
|
|
|
|
return isdefined( level.buttonclick[var_0] );
|
|
}
|
|
|
|
init_huds()
|
|
{
|
|
level._createfx.hudelems = [];
|
|
level._createfx.hudelem_count = 30;
|
|
var_0 = [];
|
|
var_1 = [];
|
|
var_0[0] = 0;
|
|
var_1[0] = 0;
|
|
var_0[1] = 1;
|
|
var_1[1] = 1;
|
|
var_0[2] = -2;
|
|
var_1[2] = 1;
|
|
var_0[3] = 1;
|
|
var_1[3] = -1;
|
|
var_0[4] = -2;
|
|
var_1[4] = -1;
|
|
level.cleartextmarker = newhudelem();
|
|
level.cleartextmarker.alpha = 0;
|
|
|
|
for ( var_2 = 0; var_2 < level._createfx.hudelem_count; var_2++ )
|
|
{
|
|
var_3 = [];
|
|
|
|
for ( var_4 = 0; var_4 < 1; var_4++ )
|
|
{
|
|
var_5 = newhudelem();
|
|
var_5.alignx = "left";
|
|
var_5.location = 0;
|
|
var_5.foreground = 1;
|
|
var_5.fontscale = 1.4;
|
|
var_5.sort = 20 - var_4;
|
|
var_5.alpha = 1;
|
|
var_5.x = 0 + var_0[var_4];
|
|
var_5.y = 60 + var_1[var_4] + var_2 * 15;
|
|
|
|
if ( var_4 > 0 )
|
|
var_5.color = ( 0, 0, 0 );
|
|
|
|
var_3[var_3.size] = var_5;
|
|
}
|
|
|
|
level._createfx.hudelems[var_2] = var_3;
|
|
}
|
|
|
|
var_3 = [];
|
|
|
|
for ( var_4 = 0; var_4 < 5; var_4++ )
|
|
{
|
|
var_5 = newhudelem();
|
|
var_5.alignx = "center";
|
|
var_5.location = 0;
|
|
var_5.foreground = 1;
|
|
var_5.fontscale = 1.4;
|
|
var_5.sort = 20 - var_4;
|
|
var_5.alpha = 1;
|
|
var_5.x = 320 + var_0[var_4];
|
|
var_5.y = 80 + var_1[var_4];
|
|
|
|
if ( var_4 > 0 )
|
|
var_5.color = ( 0, 0, 0 );
|
|
|
|
var_3[var_3.size] = var_5;
|
|
}
|
|
|
|
level.createfx_centerprint = var_3;
|
|
}
|
|
|
|
init_crosshair()
|
|
{
|
|
var_0 = newhudelem();
|
|
var_0.location = 0;
|
|
var_0.alignx = "center";
|
|
var_0.aligny = "middle";
|
|
var_0.foreground = 1;
|
|
var_0.fontscale = 2;
|
|
var_0.sort = 20;
|
|
var_0.alpha = 1;
|
|
var_0.x = 320;
|
|
var_0.y = 233;
|
|
}
|
|
|
|
clear_fx_hudelements()
|
|
{
|
|
level.cleartextmarker clearalltextafterhudelem();
|
|
|
|
for ( var_0 = 0; var_0 < level._createfx.hudelem_count; var_0++ )
|
|
{
|
|
for ( var_1 = 0; var_1 < 1; var_1++ )
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
level.fxhudelements = 0;
|
|
}
|
|
|
|
set_fx_hudelement( var_0 )
|
|
{
|
|
for ( var_1 = 0; var_1 < 1; var_1++ )
|
|
{
|
|
|
|
}
|
|
|
|
level.fxhudelements++;
|
|
}
|
|
|
|
init_tool_hud()
|
|
{
|
|
if ( !isdefined( level._createfx.tool_hudelems ) )
|
|
level._createfx.tool_hudelems = [];
|
|
|
|
if ( !isdefined( level._createfx.tool_hud_visible ) )
|
|
level._createfx.tool_hud_visible = 1;
|
|
|
|
if ( !isdefined( level._createfx.tool_hud ) )
|
|
level._createfx.tool_hud = "";
|
|
}
|
|
|
|
new_tool_hud( var_0 )
|
|
{
|
|
foreach ( var_3, var_2 in level._createfx.tool_hudelems )
|
|
{
|
|
if ( isdefined( var_2.value_hudelem ) )
|
|
var_2.value_hudelem destroy();
|
|
|
|
var_2 destroy();
|
|
level._createfx.tool_hudelems[var_3] = undefined;
|
|
}
|
|
|
|
level._createfx.tool_hud = var_0;
|
|
}
|
|
|
|
current_mode_hud( var_0 )
|
|
{
|
|
return level._createfx.tool_hud == var_0;
|
|
}
|
|
|
|
clear_tool_hud()
|
|
{
|
|
new_tool_hud( "" );
|
|
}
|
|
|
|
new_tool_hudelem( var_0 )
|
|
{
|
|
var_1 = newhudelem();
|
|
var_1.alignx = "left";
|
|
var_1.location = 0;
|
|
var_1.foreground = 1;
|
|
var_1.fontscale = 1.2;
|
|
var_1.alpha = 1;
|
|
var_1.x = 0;
|
|
var_1.y = 320 + var_0 * 15;
|
|
return var_1;
|
|
}
|
|
|
|
get_tool_hudelem( var_0 )
|
|
{
|
|
if ( isdefined( level._createfx.tool_hudelems[var_0] ) )
|
|
return level._createfx.tool_hudelems[var_0];
|
|
|
|
return undefined;
|
|
}
|
|
|
|
set_tool_hudelem( var_0, var_1 )
|
|
{
|
|
var_2 = get_tool_hudelem( var_0 );
|
|
|
|
if ( !isdefined( var_2 ) )
|
|
{
|
|
var_2 = new_tool_hudelem( level._createfx.tool_hudelems.size );
|
|
level._createfx.tool_hudelems[var_0] = var_2;
|
|
var_2.text = var_0;
|
|
}
|
|
|
|
if ( isdefined( var_1 ) )
|
|
{
|
|
if ( isdefined( var_2.value_hudelem ) )
|
|
var_3 = var_2.value_hudelem;
|
|
else
|
|
{
|
|
var_3 = new_tool_hudelem( level._createfx.tool_hudelems.size );
|
|
var_3.x = var_3.x + 80;
|
|
var_3.y = var_2.y;
|
|
var_2.value_hudelem = var_3;
|
|
}
|
|
|
|
if ( isdefined( var_3.text ) && var_3.text == var_1 )
|
|
return;
|
|
|
|
var_3.text = var_1;
|
|
}
|
|
}
|
|
|
|
select_by_substring()
|
|
{
|
|
var_0 = getdvar( "select_by_substring" );
|
|
|
|
if ( var_0 == "" )
|
|
return 0;
|
|
|
|
setdvar( "select_by_substring", "" );
|
|
var_1 = [];
|
|
|
|
foreach ( var_4, var_3 in level.createfxent )
|
|
{
|
|
if ( issubstr( var_3.v["fxid"], var_0 ) )
|
|
var_1[var_1.size] = var_4;
|
|
}
|
|
|
|
if ( var_1.size == 0 )
|
|
return 0;
|
|
|
|
deselect_all_ents();
|
|
select_index_array( var_1 );
|
|
|
|
foreach ( var_6 in var_1 )
|
|
{
|
|
var_3 = level.createfxent[var_6];
|
|
select_entity( var_6, var_3 );
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
select_index_array( var_0 )
|
|
{
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
var_3 = level.createfxent[var_2];
|
|
select_entity( var_2, var_3 );
|
|
}
|
|
}
|
|
|
|
deselect_all_ents()
|
|
{
|
|
foreach ( var_2, var_1 in level._createfx.selected_fx_ents )
|
|
deselect_entity( var_2, var_1 );
|
|
}
|