protected virtual void AwakeOverride() { m_activeScene = ProjectItem.CreateScene("New Scene"); }
public void LoadProject(string name, ProjectEventHandler <ProjectRoot> callback, bool metaOnly = true, params int[] exceptTypes) { HashSet <int> exceptTypesHs = null; if (exceptTypes != null && exceptTypes.Length > 0) { exceptTypesHs = new HashSet <int>(); for (int i = 0; i < exceptTypes.Length; ++i) { if (!exceptTypesHs.Contains(exceptTypes[i])) { exceptTypesHs.Add(exceptTypes[i]); } } } m_storage.CheckFolderExists(name, checkFolderResult => { bool exists = checkFolderResult.Data; if (exists) { ProjectRoot root = new ProjectRoot(); m_storage.LoadFile(name + "." + ProjectMetaExt, loadMetaCallback => { if (loadMetaCallback.Data != null) { root.Meta = m_serializer.Deserialize <ProjectMeta>(loadMetaCallback.Data); } else { root.Meta = new ProjectMeta(); } m_storage.LoadFile(name + "." + ProjectDataExt, loadDataCallback => { if (loadDataCallback.Data != null) { root.Data = m_serializer.Deserialize <ProjectData>(loadDataCallback.Data); } else { root.Data = new ProjectData(); } root.Item = ProjectItem.CreateFolder(name); LoadFolders(root.Item, loadFoldersCallback => { LoadFiles(root.Item, loadFilesCallback => { if (callback != null) { callback(new ProjectPayload <ProjectRoot>(root)); } }, metaOnly, exceptTypesHs); }); }); }); } else { if (callback != null) { callback(new ProjectPayload <ProjectRoot>(null)); } } }); }
public void Save(ProjectItem item, bool metaOnly, ProjectEventHandler callback) { Save(item, item.ToString(), metaOnly, callback); }
private void LoadFiles(ProjectItem item, ProjectEventHandler callback, bool metaOnly = true, HashSet <int> exceptTypesHS = null) { ProjectItem[] folders = item.Children != null?item.Children.Where(c => c.IsFolder).ToArray() : new ProjectItem[0]; Action <ProjectEventHandler>[] loadFilesActions = new Action <ProjectEventHandler> [folders.Length]; for (int i = 0; i < folders.Length; ++i) { ProjectItem childItem = folders[i]; loadFilesActions[i] = cb => LoadFiles(childItem, cb, metaOnly, exceptTypesHS); } m_storage.GetFiles(item.ToString(), getFilesCompleted => { string[] path = getFilesCompleted.Data; if (path == null && path.Length > 0) { Parallel(loadFilesActions, parallelCallback => { if (callback != null) { callback(new ProjectPayload()); } }); } else { int metaLength; if (metaOnly) { path = path.Where(n => n.EndsWith("." + FileMetaExt)).ToArray(); metaLength = path.Length; } else { path = path.Where(n => n.EndsWith("." + FileMetaExt)).ToArray(); metaLength = path.Length; Array.Resize(ref path, metaLength + metaLength); for (int i = 0; i < metaLength; ++i) { path[metaLength + i] = path[i].Remove(path[i].LastIndexOf("." + FileMetaExt)); } } if (metaLength > 0) { m_storage.LoadFiles(path, loadFilesCompleted => { if (item.Children == null) { item.Children = new List <ProjectItem>(); } for (int i = 0; i < metaLength; ++i) { ProjectItemMeta meta = null; ProjectItemData data = null; byte[] metaRaw = loadFilesCompleted.Data[i]; if (metaRaw != null) { meta = m_serializer.Deserialize <ProjectItemMeta>(metaRaw); } if (!metaOnly) { bool loadData = meta != null && (exceptTypesHS == null || !exceptTypesHS.Contains(meta.TypeCode)); if (loadData) { byte[] dataRaw = loadFilesCompleted.Data[metaLength + i]; if (dataRaw != null) { data = m_serializer.Deserialize <ProjectItemData>(dataRaw); } } } if (meta.TypeCode == ProjectItemTypes.Folder) { ProjectItem folder = item.Children.Where(c => c.IsFolder && c.NameExt == meta.Name).FirstOrDefault(); if (folder != null) { folder.Internal_Meta = meta; } } else { ProjectItem childItem = new ProjectItem(meta, data); item.AddChild(childItem); } } Parallel(loadFilesActions, parallelCallback => { if (callback != null) { callback(new ProjectPayload()); } }); }); } else { Parallel(loadFilesActions, parallelCallback => { if (callback != null) { callback(new ProjectPayload()); } }); } } }); }
private void Update() { if (InputController.GetKeyDown(AddAssetBundleKey2)) { ProjectItem rootFolder = m_projectManager.Project; m_projectManager.AddBundledResources(rootFolder, "bundledemo", (obj, assetName) => { return(true); }, addedItems => { for (int i = 0; i < addedItems.Length; ++i) { Debug.Log(addedItems[i].ToString() + " added"); } }); } if (InputController.GetKeyDown(AddAssetBundleKey)) { ProjectItem rootFolder = m_projectManager.Project; m_projectManager.AddBundledResource(rootFolder, "bundledemo", "monkey", addedItems => { for (int i = 0; i < addedItems.Length; ++i) { Debug.Log(addedItems[i].ToString() + " added"); } }); } if (InputController.GetKeyDown(AddWithDependenciesKey)) { ProjectItem rootFolder = m_projectManager.Project; List <UnityObject> objects = new List <UnityObject>(); Material material = new Material(Shader.Find("Standard")); material.color = Color.yellow; Mesh mesh = RuntimeGraphics.CreateCubeMesh(Color.white, Vector3.zero, 1); mesh.name = "TestMesh"; GameObject go = new GameObject(); MeshRenderer renderer = go.AddComponent <MeshRenderer>(); MeshFilter meshFilter = go.AddComponent <MeshFilter>(); go.name = "TestGO"; renderer.sharedMaterial = material; meshFilter.sharedMesh = mesh; //objects.Add(material); //objects.Add(mesh); objects.Add(go); bool includingDependencies = true; Func <UnityObject, bool> filter = o => { if (o is Shader) { return(false); } return(true); }; m_projectManager.AddDynamicResources(rootFolder, objects.ToArray(), includingDependencies, filter, addedItems => { for (int i = 0; i < addedItems.Length; ++i) { Debug.Log(addedItems[i].ToString() + " added"); } for (int i = 0; i < objects.Count; ++i) { Destroy(objects[i]); } }); } if (InputController.GetKeyDown(AddInstantiatedObjectKey)) { ProjectItem rootFolder = m_projectManager.Project; List <UnityObject> objects = new List <UnityObject>(); Material material = new Material(Shader.Find("Standard")); material.color = Color.yellow; Mesh mesh = RuntimeGraphics.CreateCubeMesh(Color.white, Vector3.zero, 1); mesh.name = "TestMesh"; GameObject go = new GameObject(); MeshRenderer renderer = go.AddComponent <MeshRenderer>(); MeshFilter filter = go.AddComponent <MeshFilter>(); go.name = "TestGO"; renderer.sharedMaterial = material; filter.sharedMesh = mesh; objects.Add(material); objects.Add(mesh); objects.Add(go); m_projectManager.AddDynamicResources(rootFolder, objects.ToArray(), addedItems => { for (int i = 0; i < addedItems.Length; ++i) { Debug.Log(addedItems[i].ToString() + " added"); } for (int i = 0; i < objects.Count; ++i) { Destroy(objects[i]); } }); } if (InputController.GetKeyDown(AddPrefabKey)) { ProjectItem rootFolder = m_projectManager.Project; List <UnityObject> objects = new List <UnityObject>(); if (Prefab != null) { objects.Add(Prefab); } bool includingDependencies = true; Func <UnityObject, bool> filter = o => { if (o is Shader) { return(false); } return(true); }; m_projectManager.AddDynamicResources(rootFolder, objects.ToArray(), includingDependencies, filter, addedItems => { for (int i = 0; i < addedItems.Length; ++i) { Debug.Log(addedItems[i].ToString() + " added"); } }); } if (InputController.GetKeyDown(AddTextureKey)) { ProjectItem rootFolder = m_projectManager.Project; List <UnityObject> objects = new List <UnityObject>(); string path = Application.streamingAssetsPath + "/" + ImagePath; Texture2D texture2D = LoadPNG(path); if (texture2D == null) { Debug.LogErrorFormat("File {0} not found", path); return; } texture2D.name = "TestTexture"; objects.Add(texture2D); m_projectManager.AddDynamicResources(rootFolder, objects.ToArray(), addedItems => { for (int i = 0; i < addedItems.Length; ++i) { Debug.Log(addedItems[i].ToString() + " added"); } }); } }
public ProjectManagerEventArgs(ProjectItem item) { ProjectItems = new[] { item }; }