public void Initialize() { var eventSystem = FindObjectOfType <EventSystem>(); if (eventSystem) { m_InputModule = eventSystem.GetComponent <MultipleRayInputModule>(); if (!m_InputModule) { m_NewInputModule = eventSystem.gameObject.AddComponent <MultipleRayInputModule>(); m_InputModule = m_NewInputModule; } } else { m_NewEventSystem = new GameObject("EventSystem"); m_InputModule = m_NewEventSystem.AddComponent <MultipleRayInputModule>(); } #if UNITY_EDITOR m_InputModule.StartRunInEditMode(); #endif var moduleLoaderCore = ModuleLoaderCore.instance; var activeIsland = m_FIModule.activeIsland; activeIsland.AddProviders(new List <IFunctionalityProvider> { m_InputModule }); moduleLoaderCore.InjectFunctionalityInModules(activeIsland); this.InjectFunctionalitySingle(m_InputModule); this.ConnectInterfaces(m_InputModule); var customPreviewCamera = m_ViewerModule.customPreviewCamera; if (customPreviewCamera != null) { m_InputModule.layerMask |= customPreviewCamera.hmdOnlyLayerMask; } var rayModule = moduleLoaderCore.GetModule <EditorXRRayModule>(); if (rayModule != null) { m_InputModule.preProcessRaycastSource = rayModule.PreProcessRaycastSource; } m_EventCamera = EditorXRUtils.Instantiate(m_EventCameraPrefab.gameObject, m_ModuleParent).GetComponent <Camera>(); m_EventCamera.enabled = false; m_InputModule.eventCamera = m_EventCamera; }