1 #using scripts\core\_multi_extracam;
2 #using scripts\shared\util_shared;
3 #using scripts\codescripts\struct;
4 #using scripts\shared\animation_shared;
5 #using scripts\shared\filter_shared;
6 #using scripts\shared\scene_shared;
7 #using scripts\shared\system_shared;
9 #insert scripts\shared\shared.gsh;
11 #namespace weapon_customization_icon;
20 level.extra_cam_wc_paintjob_icon = [];
21 level.extra_cam_wc_variant_icon = [];
30 level.extra_cam_wc_paintjob_icon[ localClientNum ] = SpawnStruct();
31 level.extra_cam_wc_variant_icon[ localClientNum ] = SpawnStruct();
37 level endon(
"disconnect" );
41 level waittill(
"process_wc_icon_extracam_" + localClientNum, extracam_data_struct );
49 level waittill(
"render_complete_" + localClientNum +
"_" + extracam_data_struct.extraCamIndex );
51 if( IsDefined( extracam_data_struct.weapon_script_model ) )
53 extracam_data_struct.weapon_script_model
delete();
59 xcam = GetWeaponXCam( weapon_name, camera );
61 if( !IsDefined( xcam ) )
63 xcam = GetWeaponXCam( GetWeapon(
"ar_damage" ), camera );
71 assert( isdefined( extracam_data_struct.jobIndex ) );
75 initializedExtracam =
false;
76 camera_ent = (isDefined(level.camera_ents[localClientNum]) ? level.camera_ents[localClientNum][extracam_data_struct.extraCamIndex] : undefined);
77 if( !isdefined( camera_ent ) )
79 initializedExtracam =
true;
80 if ( isdefined(
struct::get(
"weapon_icon_staging_camera" ) ) )
90 assert( isdefined( camera_ent ) );
92 if ( extracam_data_struct.loadoutSlot ==
"default_camo_render" )
94 extracam_data_struct.xcam =
"ui_cam_icon_camo_export";
96 extracam_data_struct.subXCam =
"cam_icon";
100 extracam_data_struct.xcam =
GetXcam( extracam_data_struct.current_weapon,
"cam_icon_weapon" );
101 extracam_data_struct.subXCam =
"cam_icon";
104 position = extracam_data_struct.weapon_position;
105 camera_ent PlayExtraCamXCam( extracam_data_struct.xcam, 0, extracam_data_struct.subXCam, extracam_data_struct.notetrack, position.origin, position.angles, extracam_data_struct.weapon_script_model, position.origin, position.angles );
107 while( !( extracam_data_struct.weapon_script_model isStreamed() ) )
112 if ( extracam_data_struct.loadoutSlot ==
"default_camo_render" )
121 setExtraCamRenderReady( extracam_data_struct.jobIndex );
123 extracam_data_struct.jobIndex = undefined;
125 if( initializedExtracam )
133 weapon_options = strtok( weapon_options_param,
"," );
135 if( IsDefined( weapon_options ) && IsDefined( extracam_data_struct.weapon_script_model ) )
137 extracam_data_struct.weapon_script_model SetWeaponRenderOptions(
int( weapon_options[0] ),
int( weapon_options[1] ),
false,
false,
int( weapon_options[2] ), extracam_data_struct.paintjobSlot, extracam_data_struct.paintjobIndex,
true, extracam_data_struct.isFilesharePreview );
143 weapon_model =
Spawn( localClientNum, origin,
"script_model" );
145 if( IsDefined( angles ) )
147 weapon_model.angles = angles;
150 weapon_model SetHighDetail();
157 acv_indexes = strtok( acv_param,
"," );
159 for( i = 0; i + 1 < acv_indexes.size; i += 2 )
161 extracam_data_struct.weapon_script_model SetAttachmentCosmeticVariantIndex( weapon_full_name, acv_indexes[i],
int( acv_indexes[i+1] ) );
168 position = SpawnStruct();
169 position.angles = ( 0, 0, 0 );
171 switch ( ToLower( GetDvarString(
"mapname" ) ) )
174 position.origin = ( -527, 1569, -25 );
177 case "cp_sh_singapore":
178 position.origin = ( -1215, 2464, 190 );
183 position.origin = ( 191, 113, -2550 );
192 base_weapon_slot = extracam_data_struct.loadoutSlot;
193 weapon_full_name = extracam_data_struct.weaponPlusAttachments;
194 weapon_options_param = extracam_data_struct.weaponOptions;
195 acv_param = extracam_data_struct.attachmentVariantString;
197 if( IsDefined( weapon_full_name ) )
200 if ( !IsDefined( position ) )
205 if( !IsDefined( extracam_data_struct.weapon_script_model ) )
207 extracam_data_struct.weapon_script_model =
spawn_weapon_model( localClientNum, position.origin, position.angles );
210 extracam_data_struct.current_weapon = GetWeaponWithAttachments( weapon_full_name );
211 if( isDefined( extracam_data_struct.current_weapon.frontendmodel ) )
213 extracam_data_struct.weapon_script_model UseWeaponModel( extracam_data_struct.current_weapon, extracam_data_struct.current_weapon.frontendmodel );
217 extracam_data_struct.weapon_script_model UseWeaponModel( extracam_data_struct.current_weapon );
219 extracam_data_struct.weapon_position = position;
221 if( IsDefined( acv_param ) && acv_param !=
"none" )
226 if( IsDefined( weapon_options_param ) && weapon_options_param !=
"none" )
233 function process_wc_paintjobicon_extracam_request( localClientNum, extraCamIndex, jobIndex, attachmentVariantString, weaponOptions, weaponPlusAttachments, loadoutSlot, paintjobIndex, paintjobSlot, isFilesharePreview )
235 level.extra_cam_wc_paintjob_icon[ localClientNum ].jobIndex = jobIndex;
236 level.extra_cam_wc_paintjob_icon[ localClientNum ].extraCamIndex = extraCamIndex;
237 level.extra_cam_wc_paintjob_icon[ localClientNum ].attachmentVariantString = attachmentVariantString;
238 level.extra_cam_wc_paintjob_icon[ localClientNum ].weaponOptions = weaponOptions;
239 level.extra_cam_wc_paintjob_icon[ localClientNum ].weaponPlusAttachments = weaponPlusAttachments;
240 level.extra_cam_wc_paintjob_icon[ localClientNum ].loadoutSlot = loadoutSlot;
241 level.extra_cam_wc_paintjob_icon[ localClientNum ].paintjobIndex = paintjobIndex;
242 level.extra_cam_wc_paintjob_icon[ localClientNum ].paintjobSlot = paintjobSlot;
243 level.extra_cam_wc_paintjob_icon[ localClientNum ].notetrack =
"paintjobpreview";
244 level.extra_cam_wc_paintjob_icon[ localClientNum ].isFilesharePreview = isFilesharePreview;
246 level notify(
"process_wc_icon_extracam_" + localClientNum, level.extra_cam_wc_paintjob_icon[ localClientNum ] );
249 function process_wc_varianticon_extracam_request( localClientNum, extraCamIndex, jobIndex, attachmentVariantString, weaponOptions, weaponPlusAttachments, loadoutSlot, paintjobIndex, paintjobSlot, isFilesharePreview )
251 level.extra_cam_wc_variant_icon[ localClientNum ].jobIndex = jobIndex;
252 level.extra_cam_wc_variant_icon[ localClientNum ].extraCamIndex = extraCamIndex;
253 level.extra_cam_wc_variant_icon[ localClientNum ].attachmentVariantString = attachmentVariantString;
254 level.extra_cam_wc_variant_icon[ localClientNum ].weaponOptions = weaponOptions;
255 level.extra_cam_wc_variant_icon[ localClientNum ].weaponPlusAttachments = weaponPlusAttachments;
256 level.extra_cam_wc_variant_icon[ localClientNum ].loadoutSlot = loadoutSlot;
257 level.extra_cam_wc_variant_icon[ localClientNum ].paintjobIndex = paintjobIndex;
258 level.extra_cam_wc_variant_icon[ localClientNum ].paintjobSlot = paintjobSlot;
259 level.extra_cam_wc_variant_icon[ localClientNum ].notetrack =
"variantpreview";
260 level.extra_cam_wc_variant_icon[ localClientNum ].isFilesharePreview = isFilesharePreview;
262 level notify(
"process_wc_icon_extracam_" + localClientNum, level.extra_cam_wc_variant_icon[ localClientNum ] );