示例#1
0
 public void RemoveInputProcessor(IProcessInput processInput)
 {
     m_RemoveInputProcessorsCopy.Clear();
     m_RemoveInputProcessorsCopy.AddRange(m_InputProcessors);
     foreach (var processor in m_RemoveInputProcessorsCopy)
     {
         if (processor.processor == processInput)
         {
             m_InputProcessors.Remove(processor);
             var customActionMap = processInput as ICustomActionMap;
             if (customActionMap != null)
             {
                 m_IgnoreLocking.Remove(processor.input);
             }
         }
     }
 }
示例#2
0
        public void AddInputProcessor(IProcessInput processInput, object userData)
        {
            var rayOrigin   = userData as Transform;
            var inputDevice = inputDeviceForRayOrigin(rayOrigin);
            var input       = CreateActionMapInputForObject(processInput, inputDevice);

            var order = 0;
            var processInputAttribute = (ProcessInputAttribute)processInput.GetType().GetCustomAttributes(typeof(ProcessInputAttribute), true).FirstOrDefault();

            if (processInputAttribute != null)
            {
                order = processInputAttribute.order;
            }

            m_InputProcessors.Add(new InputProcessor {
                processor = processInput, input = input, order = order
            });
            m_InputProcessors.Sort((a, b) => b.order.CompareTo(a.order));
        }
示例#3
0
        public void RemoveInputProcessor(IProcessInput processInput)
        {
            m_RemoveInputProcessorsCopy.Clear();
            m_RemoveInputProcessorsCopy.AddRange(m_InputProcessors);
            foreach (var processor in m_RemoveInputProcessorsCopy)
            {
                if (processor.processor == processInput)
                {
                    m_InputProcessors.Remove(processor);
                    var input = processor.input;
                    for (var i = 0; i < input.controlCount; i++)
                    {
                        m_LockedControls.Remove(input[i]);
                    }

                    var customActionMap = processInput as ICustomActionMap;
                    if (customActionMap != null)
                    {
                        m_IgnoreLocking.Remove(processor.input);
                    }
                }
            }
        }