Beispiel #1
0
        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;
        }