// If the camera deactivates for any reason, it must have all viewers removed, // and the relevant event broadcast to all systems. private void Deactivate(EntityUid camera, SurveillanceCameraComponent?component = null) { if (!Resolve(camera, ref component)) { return; } var ev = new SurveillanceCameraDeactivateEvent(camera); RemoveActiveViewers(camera, new(component.ActiveViewers), null, component); component.Active = false; // Send a targetted event to all monitors. foreach (var monitor in component.ActiveMonitors) { RaiseLocalEvent(monitor, ev, true); } component.ActiveMonitors.Clear(); // Send a local event that's broadcasted everywhere afterwards. RaiseLocalEvent(ev); UpdateVisuals(camera, component); }
// This is to ensure that there's no delay in ensuring that a camera is deactivated. private void OnSurveillanceCameraDeactivate(EntityUid uid, SurveillanceCameraMonitorComponent monitor, SurveillanceCameraDeactivateEvent args) { DisconnectCamera(uid, false, monitor); }