protected T FromID <T>(long id, T fallback = null) where T : UnityObject
        {
            if (m_assetDB.IsNullID(id))
            {
                return(default(T));
            }

            T value = m_assetDB.FromID <T>(id);

            if (value == default(T))
            {
                return(fallback);
            }

            return(value);
        }
Beispiel #2
0
        private IEnumerator CreatePreviewForLoadedResources(ProjectItem[] items)
        {
            if (m_resourcePreview == null)
            {
                yield break;
            }

            for (int i = 0; i < items.Length; ++i)
            {
                ProjectItem projectItem = items[i];
                if (projectItem is AssetItem)
                {
                    AssetItem   assetItem = (AssetItem)projectItem;
                    UnityObject obj;
                    if (m_project.IsStatic(projectItem))
                    {
                        if (!m_staticReferencesMapping.PersistentIDtoObj.TryGetValue(unchecked ((int)assetItem.ItemID), out obj))
                        {
                            obj = null;
                        }
                    }
                    else
                    {
                        if (assetItem.Preview == null && m_assetDB != null)
                        {
                            obj = m_assetDB.FromID <UnityObject>(assetItem.ItemID);
                        }
                        else
                        {
                            obj = null;
                        }
                    }


                    if (obj != null)
                    {
                        assetItem.Preview = new Preview
                        {
                            ItemID      = assetItem.ItemID,
                            PreviewData = m_resourcePreview.CreatePreviewData(obj)
                        };
                    }

                    yield return(new WaitForSeconds(0.01f));
                }
            }
        }
 protected T FromID <T>(long id) where T : UnityObject
 {
     return(m_assetDB.FromID <T>(id));
 }
Beispiel #4
0
        private void OnLoadCompleted(AssetItem rootItem, AssetItem[] assetItems, PersistentObject[] persistentObjects, ProjectEventHandler <UnityObject> callback)
        {
            for (int i = 0; i < assetItems.Length; ++i)
            {
                AssetItem assetItem = assetItems[i];
                if (!m_assetDB.IsMapped(assetItem.ItemID))
                {
                    if (m_assetDB.IsStaticResourceID(assetItem.ItemID))
                    {
                        int ordinal = m_assetDB.ToOrdinal(assetItem.ItemID);
                        if (m_assetDB.IsLibraryRefLoaded(ordinal))
                        {
                            m_assetDB.RemoveLibrary(ordinal);
                        }

                        if (!m_assetDB.IsLibraryLoaded(ordinal))
                        {
                            AssetLibraryReferenceInfo reference = m_projectInfo.References.FirstOrDefault(r => r.Ordinal == ordinal);
                            if (reference != null)
                            {
                                m_assetDB.LoadLibrary(reference.AssetLibrary, reference.Ordinal);
                            }
                        }
                    }
                    else if (m_assetDB.IsDynamicResourceID(assetItem.ItemID))
                    {
                        PersistentObject persistentObject = persistentObjects[i];
                        if (persistentObject != null)
                        {
                            if (persistentObject is PersistentPrefab)
                            {
                                PersistentPrefab persistentPrefab                = (PersistentPrefab)persistentObject;
                                Dictionary <int, UnityObject> idToObj            = new Dictionary <int, UnityObject>();
                                List <GameObject>             createdGameObjects = new List <GameObject>();
                                persistentPrefab.CreateGameObjectWithComponents(m_typeMap, persistentPrefab.Descriptors[0], idToObj, createdGameObjects);
                                m_assetDB.RegisterDynamicResources(idToObj);
                                for (int j = 0; j < createdGameObjects.Count; ++j)
                                {
                                    GameObject createdGO = createdGameObjects[i];
                                    createdGO.transform.SetParent(createdGO.transform, false);
                                    m_dynamicResources.Add(unchecked ((int)m_assetDB.ToID(createdGO)), createdGO);
                                }
                            }
                            else
                            {
                                Type        type     = m_typeMap.ToType(assetItem.TypeGuid);
                                UnityObject instance = m_factory.CreateInstance(type);
                                m_assetDB.RegisterDynamicResource(unchecked ((int)assetItem.ItemID), instance);
                                m_dynamicResources.Add(unchecked ((int)assetItem.ItemID), instance);
                            }
                        }
                    }
                }
            }

            for (int i = 0; i < persistentObjects.Length; ++i)
            {
                PersistentObject persistentObject = persistentObjects[i];
                if (persistentObject != null)
                {
                    if (m_assetDB.IsSceneID(assetItems[i].ItemID))
                    {
                        persistentObject.WriteTo(SceneManager.GetActiveScene());
                    }
                    else
                    {
                        UnityObject obj = m_assetDB.FromID <UnityObject>(assetItems[i].ItemID);
                        Debug.Assert(obj != null);
                        if (obj != null)
                        {
                            persistentObject.WriteTo(obj);
                        }
                    }
                }
            }

            UnityObject result = m_assetDB.FromID <UnityObject>(rootItem.ItemID);

            callback(new Error(Error.OK), result);
        }