示例#1
0
        /// <summary>
        /// Create Folder Template
        /// </summary>
        /// <example>
        /// {
        /// "Name": "Client Folder",
        /// "Description": "For all client folders created in 2014 or after",
        /// "Items": [
        /// {
        /// "Name": "Folder 1",
        /// "Items": [
        /// {
        /// "Name": "Subfolder1"
        /// }
        /// ]
        /// },
        /// {
        /// "Name": "Folder 2"
        /// }
        /// ]
        /// }
        /// </example>
        /// <remarks>
        /// Creates a new folder template.
        /// </remarks>
        /// <returns>
        /// The created folder template
        /// </returns>
        public IQuery <FolderTemplate> Create(FolderTemplate template)
        {
            var sfApiQuery = new ShareFile.Api.Client.Requests.Query <FolderTemplate>(Client);

            sfApiQuery.From("FolderTemplates");
            sfApiQuery.Body       = template;
            sfApiQuery.HttpMethod = "POST";
            return(sfApiQuery);
        }
示例#2
0
        /// <summary>
        /// Update Folder Template
        /// </summary>
        /// <example>
        /// {
        /// "Name": "Client Folder",
        /// "Description": "For all client folders created in 2014 or after",
        /// "Items": [
        /// {
        /// "Name": "A new folder",
        /// "Items": [
        /// {
        /// "TemplateId": "ft-12345-abdef-abdef-12345-abdef",
        /// "Name": "A new subfolder"
        /// }
        /// ]
        /// },
        /// {
        /// "Id": "fti-xxxxx-xxxxx-xxxxx-xxxxx",
        /// "Name": "An existing folder with a different name"
        /// }
        /// ]
        /// }
        /// </example>
        /// <remarks>
        /// Updates an existing folder template
        /// </remarks>
        /// <param name="template"></param>
        /// <param name="overwrite"></param>
        /// <returns>
        /// The updated folder template
        /// </returns>
        public IQuery <FolderTemplate> Update(FolderTemplate template, bool overwrite = false)
        {
            var sfApiQuery = new ShareFile.Api.Client.Requests.Query <FolderTemplate>(Client);

            sfApiQuery.From("FolderTemplates");
            sfApiQuery.QueryString("overwrite", overwrite);
            sfApiQuery.Body       = template;
            sfApiQuery.HttpMethod = "PATCH";
            return(sfApiQuery);
        }
示例#3
0
        private void OnGUI()
        {
            if (m_closed)
            {
                return;
            }

            KeyValuePair <UnityObject, FolderTemplate[]> kvp = ObjectsWithMultipleFolders.First();
            UnityObject obj = kvp.Key;

            FolderTemplate[] folders = kvp.Value;
            GUILayout.Label("Select folder for " + obj.name + " " + obj.GetType().Name);

            m_index = EditorGUILayout.Popup(m_index, folders.Select(f => f.name).ToArray());
            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Select"))
            {
                FolderTemplate folder = folders[m_index];

                if (!folder.Objects.Contains(obj))
                {
                    Undo.RecordObject(folder, "BH.RTE.ExposeToEdiro");

                    System.Array.Resize(ref folder.Objects, folder.Objects.Length + 1);
                    folder.Objects[folder.Objects.Length - 1] = obj;

                    EditorUtility.SetDirty(folder);
                }

                ObjectsWithMultipleFolders.Remove(obj);
                if (ObjectsWithMultipleFolders == null || ObjectsWithMultipleFolders.Count == 0)
                {
                    Close();
                    if (ResourceMapUpdateRequired)
                    {
                        if (EditorUtility.DisplayDialog("Resouce Map Update required", "Some assets is not included to resource map. Update resource map?", "Yes", "No"))
                        {
                            RuntimeSaveLoadMenu.CreateResourceMap();
                        }
                    }
                    m_closed = true;
                }
            }
            if (GUILayout.Button("Cancel"))
            {
                ObjectsWithMultipleFolders.Remove(obj);
                if (ObjectsWithMultipleFolders == null || ObjectsWithMultipleFolders.Count == 0)
                {
                    Close();
                }
                m_closed = true;
            }
            GUILayout.EndHorizontal();
        }
        private static void HideFromEditor()
        {
            FolderTemplate[] templates = Resources.FindObjectsOfTypeAll <FolderTemplate>().Where(template => !template.gameObject.IsPrefab()).ToArray();

            List <UnityObject> objectsList = new List <UnityObject>();

            foreach (GameObject go in Selection.gameObjects)
            {
                if (go.IsPrefab())
                {
                    objectsList.Add(go);
                }
                else
                {
                    ExposeToEditor exposeToEditor = go.GetComponent <ExposeToEditor>();
                    if (exposeToEditor != null)
                    {
                        Undo.DestroyObjectImmediate(exposeToEditor);
                    }
                }
            }

            foreach (UnityObject obj in Selection.objects)
            {
                if (obj is GameObject)
                {
                    continue;
                }
                objectsList.Add(obj);
            }

            foreach (UnityObject obj in objectsList)
            {
                FolderTemplate template = templates.Where(t => t.Objects != null && t.Objects.Contains(obj)).FirstOrDefault();
                if (template != null)
                {
                    Undo.RecordObject(template, "BH.RTE.HideFromEditor");
                    List <UnityObject> templateObjects = template.Objects.ToList();
                    templateObjects.Remove(obj);
                    template.Objects = templateObjects.ToArray();
                    EditorUtility.SetDirty(template.gameObject);
                }
            }
        }
        private static bool IsSuitableForObject(FolderTemplate template, UnityObject obj)
        {
            if (template.TypeHint != AssetTypeHint.All)
            {
                #if PROC_MATERIAL
                if ((template.TypeHint & AssetTypeHint.ProceduralMaterial) != 0 && obj.GetType() == typeof(ProcMaterial))
                {
                    return(true);
                }
                #endif

                if ((template.TypeHint & AssetTypeHint.Material) != 0 && obj.GetType() == typeof(Material))
                {
                    return(true);
                }

                if ((template.TypeHint & AssetTypeHint.Mesh) != 0 && obj.GetType() == typeof(Mesh))
                {
                    return(true);
                }

                if ((template.TypeHint & AssetTypeHint.Prefab) != 0 && obj.GetType() == typeof(GameObject))
                {
                    return(true);
                }

                if ((template.TypeHint & AssetTypeHint.Texture) != 0 && obj is Texture)
                {
                    return(true);
                }

                return(false);
            }

            return(true);
        }