void IXRLoaderOrderManager.UnassignLoader(XRLoaderInfo unassignedInfo) { m_AssignedLoaderInfos.Remove(unassignedInfo); m_UnassignedLoaderInfos.Add(unassignedInfo); UpdateSerializedProperty(); ShouldReload = true; }
void AddLoaderMenuSelected(object data) { int selected = (int)data; XRLoaderInfo info = m_Manager.UnassignedLoaders[selected]; AddLoaderMenu(info); }
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(); }
// 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); }
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; }
void RemoveInstanceFromList(ReorderableList list) { XRLoaderInfo info = m_Manager.AssignedLoaders[list.index]; m_Manager.UnassignLoader(info); }