Example #1
0
 public static void AddChild(this IInputConsumer consumer, ProcessInputDelegate processInput, string name = "")
 {
     consumer.children.Add(new InputEventTree
     {
         name           = name
         , processInput = processInput
     });
 }
Example #2
0
        public void UnregisterConsumer(IInputConsumer consumer)
        {
            lock (featureSyncObject) {
                InputConsumers.Remove(consumer);
            }

            Logger.Debug("{0}: Input consumer has been unregistered", Name);
        }
Example #3
0
        public void RegisterConsumer(IInputConsumer consumer)
        {
            lock (featureSyncObject) {
                InputConsumers.Add(consumer);
            }

            Logger.Debug("{0}: New input consumer registered", Name);
        }
        private void EndFrame(IInputConsumer consumer)
        {
            foreach (var child in consumer.children)
            {
                EndFrame(child);
            }

            var callback = consumer.endFrame;

            if (callback != null)
            {
                callback();
            }
        }
        private void BeginFrame(IInputConsumer consumer)
        {
            var callback = consumer.beginFrame;

            if (callback != null)
            {
                callback();
            }

            foreach (var child in consumer.children)
            {
                BeginFrame(child);
            }
        }
        protected static bool ProcessEventRecursive(IInputConsumer consumer, InputEvent inputEvent)
        {
            var callback = consumer.processInput;

            if (callback != null)
            {
                if (callback(inputEvent))
                {
                    return(true);
                }
            }

            // Iterate in reverse order to get stack behavior.
            if (consumer.isStack)
            {
                for (int i = consumer.children.Count - 1; i >= 0; i--)
                {
                    if (ProcessEventRecursive(consumer.children[i], inputEvent))
                    {
                        return(true);
                    }
                }
            }
            else
            {
                for (int i = 0; i < consumer.children.Count; i++)
                {
                    if (ProcessEventRecursive(consumer.children[i], inputEvent))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }