private void CheckShieldLineOfSight() { if (!_compact && SubpartRotor.Closed) { BlockReset(false); } TookControl = false; ShieldComp.DefenseShields.ResetShape(false); if (EmitterMode == EmitterType.Station || ShieldComp.SkipLos) { EmiState.State.Los = true; ShieldComp.CheckEmitters = false; } else { UpdateLosState(); EmiState.State.Los = _blocksLos.Count <= 1700; if (!EmiState.State.Los) { ShieldComp.EmitterEvent = true; } else { LosScaledCloud.Clear(); } ShieldComp.CheckEmitters = false; } if (Session.Enforced.Debug >= 3 && !EmiState.State.Los) { Log.Line($"LOS: Mode: {EmitterMode} - blocked verts {_blocksLos.Count.ToString()} - visable verts: {_vertsSighted.Count.ToString()} - LoS: {EmiState.State.Los.ToString()} - EmitterId [{Emitter.EntityId}]"); } }
private void UpdateUnitSphere() { var losPointSphere = Session.Instance.LosPointSphere; LosScaledCloud.Clear(); UtilsStatic.UnitSphereTranslateScaleList(_unitSpherePoints, ref losPointSphere, ref LosScaledCloud, ShieldComp.DefenseShields.ShieldEnt, false, MyGrid); }
private bool ClientEmitterReady() { if (ShieldComp?.DefenseShields == null) { return(false); } if (!_compact) { if (!MyCube.IsWorking) { Entity.TryGetSubpart("Rotor", out SubpartRotor); } if (SubpartRotor == null) { return(false); } } if (!EmiState.State.Los) { LosLogic(); } if (EmiState.State.Los && !_wasLosState) { _wasLosState = EmiState.State.Los; _updateLosState = false; LosScaledCloud.Clear(); } return(EmiState.State.Link); }
private void UpdateUnitSphere() { var losPointSphere = Session.Instance.LosPointSphere; LosScaledCloud.Clear(); var checkSphere = new BoundingSphereD(ShieldComp.DefenseShields.MyGridCenter, ShieldComp.DefenseShields.DsState.State.GridHalfExtents.Length() + 20); UtilsStatic.UnitSphereTranslateScaleList(_unitSpherePoints, ref losPointSphere, ref LosScaledCloud, ref checkSphere, ShieldComp.DefenseShields.ShieldEnt, false, MyGrid); }