| if Platform.cmdline then return end | |
| MapVar("s_DbgDrawWeaponNoise", false) | |
| function DbgShowWeaponNoise(show, units) | |
| if show then | |
| local color = const.clrRed | |
| local prev_meshes = s_DbgDrawWeaponNoise or empty_table | |
| s_DbgDrawWeaponNoise = {} | |
| for i, unit in ipairs(units) do | |
| local weapon = unit:GetActiveWeapons("Firearm") | |
| local radius = weapon and weapon.Noise * const.SlabSizeX or 0 | |
| local mesh = prev_meshes[unit] | |
| if mesh then | |
| prev_meshes[unit] = nil | |
| end | |
| if radius > 0 then | |
| if not mesh then | |
| mesh = CreateCircleMesh(radius, color, point30) | |
| mesh:SetHierarchyGameFlags(const.gofLockedOrientation) | |
| unit:Attach(mesh) | |
| end | |
| s_DbgDrawWeaponNoise[unit] = mesh | |
| elseif mesh then | |
| DoneObjet(mesh) | |
| end | |
| end | |
| for i, mesh in pairs(prev_meshes) do | |
| DoneObject(mesh) | |
| end | |
| else | |
| for k, mesh in pairs(s_DbgDrawWeaponNoise) do | |
| DoneObject(mesh) | |
| end | |
| s_DbgDrawWeaponNoise = false | |
| end | |
| end | |
| function DbgToggleWeaponNoise() | |
| DbgShowWeaponNoise(not s_DbgDrawWeaponNoise, SelectedObj and { SelectedObj }) | |
| end | |
| OnMsg.SelectionChange = function() DbgShowWeaponNoise(s_DbgDrawWeaponNoise, SelectedObj and { SelectedObj }) end | |