private void Update() { createCams.AddRange(MixCast.Settings.cameras); destroyCams.AddRange(CameraInstances); for (int i = 0; i < CameraInstances.Count; i++) { MixCastData.CameraCalibrationData camData = CameraInstances[i].Data; for (int j = createCams.Count - 1; j >= 0; j--) { if (createCams[j] == camData) { createCams.RemoveAt(j); } } } for (int i = 0; i < MixCast.Settings.cameras.Count; i++) { for (int j = destroyCams.Count - 1; j >= 0; j--) { if (destroyCams[j].Data == MixCast.Settings.cameras[i]) { destroyCams.RemoveAt(j); } } } for (int i = 0; i < destroyCams.Count; i++) { CameraInstances.Remove(destroyCams[i]); Destroy(destroyCams[i].gameObject); } for (int i = 0; i < createCams.Count; i++) { bool wasPrefabActive = cameraPrefab.gameObject.activeSelf; cameraPrefab.gameObject.SetActive(false); CameraConfigContext instance = Instantiate(cameraPrefab, transform, false); instance.Data = createCams[i]; CameraInstances.Add(instance); cameraPrefab.gameObject.SetActive(wasPrefabActive); instance.gameObject.SetActive(MixCast.Active); } destroyCams.Clear(); createCams.Clear(); // Process LibAVStuff logs MixCastAV.LogOutput(); }