MCPcopy Create free account
hub / github.com/OGSR/OGSR-Engine / UpdateLaser

Method UpdateLaser

ogsr_engine/xrGame/Weapon.cpp:992–1046  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

990}
991
992void CWeapon::UpdateLaser()
993{
994 if (laser_light_render)
995 {
996 auto io = smart_cast<CInventoryOwner*>(H_Parent());
997 if (!laser_light_render->get_active() && IsLaserOn() && (!H_Parent() || (io && this == io->inventory().ActiveItem())))
998 {
999 laser_light_render->set_active(true);
1000 UpdateAddonsVisibility();
1001 }
1002 else if (laser_light_render->get_active() && (!IsLaserOn() || !(!H_Parent() || (io && this == io->inventory().ActiveItem()))))
1003 {
1004 laser_light_render->set_active(false);
1005 UpdateAddonsVisibility();
1006 }
1007
1008 if (laser_light_render->get_active())
1009 {
1010 laser_pos = get_LastFP();
1011 Fvector laser_dir = get_LastFD();
1012
1013 if (GetHUDmode())
1014 {
1015 if (laserdot_attach_bone.size())
1016 {
1017 GetBoneOffsetPosDir(laserdot_attach_bone, laser_pos, laser_dir, laserdot_attach_offset);
1018 CorrectDirFromWorldToHud(laser_dir);
1019 }
1020 }
1021 else
1022 {
1023 XFORM().transform_tiny(laser_pos, laserdot_world_attach_offset);
1024 }
1025
1026 Fmatrix laserXForm;
1027 laserXForm.identity();
1028 laserXForm.k.set(laser_dir);
1029 Fvector::generate_orthonormal_basis_normalized(laserXForm.k, laserXForm.j, laserXForm.i);
1030
1031 laser_light_render->set_position(laser_pos);
1032 laser_light_render->set_rotation(laserXForm.k, laserXForm.i);
1033
1034 // calc color animator
1035 if (laser_lanim)
1036 {
1037 int frame;
1038 const u32 clr = laser_lanim->CalculateBGR(Device.fTimeGlobal, frame);
1039
1040 Fcolor fclr{(float)color_get_B(clr), (float)color_get_G(clr), (float)color_get_R(clr), 1.f};
1041 fclr.mul_rgb(laser_fBrightness / 255.f);
1042 laser_light_render->set_color(fclr);
1043 }
1044 }
1045 }
1046}
1047
1048void CWeapon::UpdateFlashlight()
1049{

Callers

nothing calls this directly

Calls 15

H_ParentFunction · 0.85
XFORMFunction · 0.85
color_get_BFunction · 0.85
color_get_GFunction · 0.85
color_get_RFunction · 0.85
get_activeMethod · 0.80
ActiveItemMethod · 0.80
transform_tinyMethod · 0.80
CalculateBGRMethod · 0.80
set_colorMethod · 0.80
set_activeMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected