Esempio n. 1
0
 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);
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 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);
 }