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); } } } }
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)); }
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); } } } }