private void DrawHelper() { if (_age < 1800) { return; } if (Vector3D.DistanceSquared(MyAPIGateway.Session.Player.Character.PositionComp.WorldAABB.Center, Emitter.PositionComp.WorldAABB.Center) < 2250000) { var controller = ShieldComp.DefenseShields; var needsUpdate = controller.GridIsMobile && (ShieldComp.GridIsMoving || _updateLosState); var blockCam = controller.ShieldEnt.PositionComp.WorldVolume; if (MyAPIGateway.Session.Camera.IsInFrustum(ref blockCam)) { if (_lCount % 2 == 1) { if (_count == 59 && needsUpdate) { UpdateLosState(_updateLosState); _updateLosState = false; } else if (needsUpdate) { UpdateUnitSphere(); } } else { if (needsUpdate) { UpdateUnitSphere(); } foreach (var blocking in _blocksLos.Keys) { var blockedPos = LosScaledCloud[blocking]; DsDebugDraw.DrawLosBlocked(blockedPos, MyGrid.PositionComp.LocalMatrix, blockCam.Radius / 25); } } foreach (var clear in _vertsSighted) { var blockedPos = LosScaledCloud[clear]; DsDebugDraw.DrawLosClear(blockedPos, MyGrid.PositionComp.LocalMatrix, blockCam.Radius / 25); } var blocked = _blocksLos.Count; var needed = -300 + _vertsSighted.Count; if (_count == 0) { BroadCastLosMessage(blocked, needed, controller); } } } }