Beispiel #1
0
        void ProcessInput(HashSet <IProcessInput> processedInputs, ConsumeControlDelegate consumeControl)
        {
            m_MiniWorlds.UpdateMiniWorlds(consumeControl);

            m_InputModule.ProcessInput(null, consumeControl);

            foreach (var deviceData in m_DeviceData)
            {
                if (!deviceData.proxy.active)
                {
                    continue;
                }

                var mainMenu  = deviceData.mainMenu;
                var menuInput = mainMenu as IProcessInput;
                if (menuInput != null && mainMenu.visible)
                {
                    menuInput.ProcessInput(deviceData.mainMenuInput, consumeControl);
                }

                var altMenu      = deviceData.alternateMenu;
                var altMenuInput = altMenu as IProcessInput;
                if (altMenuInput != null && altMenu.visible)
                {
                    altMenuInput.ProcessInput(deviceData.alternateMenuInput, consumeControl);
                }

                foreach (var toolData in deviceData.toolData)
                {
                    var process = toolData.tool as IProcessInput;
                    if (process != null && ((MonoBehaviour)toolData.tool).enabled &&
                        processedInputs.Add(process))                            // Only process inputs for an instance of a tool once (e.g. two-handed tools)
                    {
                        process.ProcessInput(toolData.input, consumeControl);
                    }
                }
            }
        }