Example #1
0
 internal protected virtual void TriggerOnChildRemoved(Component sender, Component component)
 {
     if (OnChildRemoved != null)
     {
         OnChildRemoved.Invoke(new ComponentEventArgs(sender, component));
     }
 }
Example #2
0
 public void RemoveChild(Hierarchy child)
 {
     if (Children.Contains(child))
     {
         Children.Remove(child);
         OnChildrenUpdated();
         if (OnChildRemoved != null)
         {
             OnChildRemoved.Invoke(child);
         }
     }
 }
Example #3
0
        //Thread issue with the queues. something else is dequeuing them some how.
        public void Update(float deltaTime)
        {
            if (Parent == null && UID != 0)
            {
                return;
            }
            OnUpdate(deltaTime);

            if (childrenChanged)
            {
                lock (childModification) {
                    while (toBeRemoved.Count > 0)
                    {
                        GameObject obj = toBeRemoved.Dequeue();
                        children.Remove(obj);
                        invokationQueue.Enqueue(obj.Destroyed);
                        invokationQueue.Enqueue(() => { OnChildRemoved?.Invoke(this, obj); });
                    }
                    while (toBeAdded.Count > 0)
                    {
                        GameObject obj = toBeAdded.Dequeue();
                        children.Add(obj);
                        invokationQueue.Enqueue(obj.Added);
                        invokationQueue.Enqueue(() => { OnChildAdded?.Invoke(this, obj); });
                    }
                    childrenChanged = false;
                }
            }

            lock (childModification)
                while (invokationQueue.Count > 0)
                {
                    invokationQueue.Dequeue()();
                }

            //This lock was (possibily) causing deadlocks so i removed it, ill keep it commented for now though.
            //lock (childModification) {
            foreach (var child in children)
            {
                child.Update(deltaTime);
            }
            OnUpdateEvent?.Invoke(this);
            //}
        }
Example #4
0
 async Task RemoveChild(CategoryDescriptorModel child) => await OnChildRemoved.InvokeAsync(child);
Example #5
0
 protected virtual void InvokeChildRemoved(AbstractFieldNode removedchild)
 {
     OnChildRemoved?.Invoke(this, removedchild);
 }
Example #6
0
 public void RemoveChild(CogaNode child)
 {
     Children.Remove(child);
     OnChildRemoved?.Invoke(this, child);
 }