void IXRLoaderOrderManager.UnassignLoader(XRLoaderInfo unassignedInfo)
 {
     m_AssignedLoaderInfos.Remove(unassignedInfo);
     m_UnassignedLoaderInfos.Add(unassignedInfo);
     UpdateSerializedProperty();
     ShouldReload = true;
 }
Example #2
0
        void AddLoaderMenuSelected(object data)
        {
            int          selected = (int)data;
            XRLoaderInfo info     = m_Manager.UnassignedLoaders[selected];

            AddLoaderMenu(info);
        }
Example #3
0
        void DrawElementCallback(Rect rect, int index, bool isActive, bool isFocused)
        {
            XRLoaderInfo info  = index < m_Manager.AssignedLoaders.Count ? m_Manager.AssignedLoaders[index] : null;
            var          label = (info == null || info.instance == null) ? EditorGUIUtility.TrTextContent("Missing (XRLoader)") : EditorGUIUtility.TrTextContent(info.assetName);

            EditorGUI.LabelField(rect, label);
        }
        void PopulateAssignedLoaderInfos()
        {
            m_AssignedLoaderInfos.Clear();
            for (int i = 0; i < m_LoaderList.arraySize; i++)
            {
                var prop = m_LoaderList.GetArrayElementAtIndex(i);

                XRLoaderInfo info = new XRLoaderInfo();
                info.loaderType = (prop.objectReferenceValue == null) ? null : prop.objectReferenceValue.GetType();
                info.assetName  = AssetNameFromInstance(prop.objectReferenceValue);
                info.instance   = prop.objectReferenceValue as XRLoader;

                m_AssignedLoaderInfos.Add(info);
            }
            CleanupLostAssignedLoaders();
        }
Example #5
0
        // TODO: Move out to manager
        void AddLoaderMenu(XRLoaderInfo info)
        {
            if (info.instance == null)
            {
                string   newAssetName = String.Format("{0}.asset", EditorUtilities.TypeNameToString(info.loaderType));
                XRLoader loader       = ScriptableObject.CreateInstance(info.loaderType) as XRLoader;
                string   assetPath    = EditorUtilities.GetAssetPathForComponents(EditorUtilities.s_DefaultLoaderPath);
                if (string.IsNullOrEmpty(assetPath))
                {
                    return;
                }

                assetPath      = Path.Combine(assetPath, newAssetName);
                info.instance  = loader;
                info.assetName = Path.GetFileNameWithoutExtension(assetPath);
                AssetDatabase.CreateAsset(loader, assetPath);
            }

            m_Manager.AssignLoader(info);
        }
 void PopulateAllLoaderInfos()
 {
     m_AllLoaderInfos.Clear();
     XRLoaderInfo.GetAllKnownLoaderInfos(m_AllLoaderInfos);
 }
Example #7
0
        void UpdatePackageManagerQuery()
        {
            Repaint();
            EditorApplication.update -= UpdatePackageManagerQuery;

            if (m_PackageRepositoryListRequest == null)
            {
                return;
            }

            if (!m_PackageRepositoryListRequest.IsCompleted || !m_LocalPackageListRequest.IsCompleted)
            {
                EditorApplication.update += UpdatePackageManagerQuery;
                return;
            }

            m_HasCompletedRequest   = true;
            m_HasInstalledProviders = false;

            if (m_PackageRepositoryListRequest.Status != StatusCode.Success)
            {
                m_HasProviders = false;
                m_PackageRepositoryListRequest = null;
                return;
            }

            foreach (var pinfo in m_LocalPackageListRequest.Result)
            {
                var xrp = from keyword in pinfo.keywords
                          where String.Compare("xreditorsubsystem", keyword, true) == 0
                          select keyword;

                if (xrp.Any())
                {
                    XRPackageInformation xrpinfo = new XRPackageInformation();
                    xrpinfo.uninstalledPackageInfo = pinfo;
                    xrpinfo.isInstalled            = true;
                    xrpinfo.isLocalOnly            = true;
                    m_HasInstalledProviders        = true;
                    m_XRPackages.Add(pinfo.name, xrpinfo);
                }
            }

            foreach (var pinfo in m_PackageRepositoryListRequest.Result)
            {
                if (m_XRPackages.ContainsKey(pinfo.name))
                {
                    XRPackageInformation xrpinfo;
                    if (m_XRPackages.TryGetValue(pinfo.name, out xrpinfo))
                    {
                        xrpinfo.isLocalOnly      = false;
                        m_XRPackages[pinfo.name] = xrpinfo;
                    }
                    continue;
                }

                var xrp = from keyword in pinfo.keywords
                          where String.Compare("xreditorsubsystem", keyword, true) == 0
                          select keyword;

                if (xrp.Any())
                {
                    XRPackageInformation xrpinfo = new XRPackageInformation();
                    xrpinfo.uninstalledPackageInfo = pinfo;
                    xrpinfo.isInstalled            = false;
                    m_XRPackages.Add(pinfo.name, xrpinfo);
                }
            }

            List <XRLoaderInfo> onDiskLoaderInfos = new List <XRLoaderInfo>();

            XRLoaderInfo.GetAllKnownLoaderInfos(onDiskLoaderInfos);
            m_HasKNownLocalLoaders = onDiskLoaderInfos.Any();

            m_HasProviders = m_XRPackages.Any();
            m_PackageRepositoryListRequest = null;
        }
Example #8
0
        void RemoveInstanceFromList(ReorderableList list)
        {
            XRLoaderInfo info = m_Manager.AssignedLoaders[list.index];

            m_Manager.UnassignLoader(info);
        }