private SyncProxy GetOrDispose(SyncProxy proxy) { if (proxy == null) { return(null); } if (proxy.storable == null) { var link = _links.FirstOrDefault(l => l == proxy); if (link != null) { _links.Remove(link); } proxy.Dispose(); if (_selectedLink == proxy) { _selectedLink = null; if (_links.Count > 0) { var replacement = GetOrDispose(_links[0]); if (replacement != null && _selectedLink == null) { _selectedLink = replacement; } return(replacement); } } return(null); } return(proxy); }
private SyncProxy TryConnectAtom(JSONStorable storable) { foreach (var l in _links.ToArray()) { GetOrDispose(l); } var existing = _links.FirstOrDefault(a => a.storable == storable); if (existing != null) { return(existing); } var proxy = new SyncProxy() { storable = storable }; storable.SendMessage(nameof(IRemoteAtomPlugin.VamTimelineConnectController), proxy.dict, SendMessageOptions.RequireReceiver); if (!proxy.connected) { proxy.Dispose(); return(null); } _links.Add(proxy); _links.Sort((SyncProxy s1, SyncProxy s2) => string.Compare(s1.storable.containingAtom.name, s2.storable.containingAtom.name)); var list = new List <string>(_atomsJSON.choices) { proxy.storable.containingAtom.uid }; list.Sort(); _atomsJSON.choices = list; OnTimelineAnimationParametersChanged(storable); if (_selectedLink == null) { _selectedLink = proxy; _atomsJSON.val = proxy.storable.containingAtom.uid; } return(proxy); }
private SyncProxy TryConnectAtom(MVRScript storable) { if (storable == null) { return(null); } foreach (var l in _links.ToArray()) { GetOrDispose(l); } var existing = _links.FirstOrDefault(a => a.storable == storable); if (existing != null) { return(existing); } var proxy = new SyncProxy { storable = storable }; storable.SendMessage(nameof(IRemoteAtomPlugin.VamTimelineConnectController), proxy.dict, SendMessageOptions.RequireReceiver); if (!proxy.connected) { proxy.Dispose(); return(null); } _links.Add(proxy); _links.Sort((s1, s2) => string.CompareOrdinal(s1.label, s2.label)); _atomsJSON.displayChoices = _links.Select(l => l.label).ToList(); _atomsJSON.choices = _links.Select(l => l.storable.containingAtom.uid + "|" + l.storable.name).ToList(); OnTimelineAnimationParametersChanged(storable); if (_selectedLink == null) { _selectedLink = proxy; _atomsJSON.val = proxy.storable.containingAtom.uid + "|" + proxy.storable.name; } return(proxy); }
private SyncProxy GetOrDispose(SyncProxy proxy) { if (proxy == null) { return(null); } if (proxy.storable == null) { var link = _links.FirstOrDefault(l => l == proxy); if (link != null) { _links.Remove(link); } proxy.Dispose(); if (_selectedLink == proxy) { _selectedLink = null; } return(null); } return(proxy); }