/// <summary> /// Tries the get table from the folder. /// If table doesn't exist, return null. /// </summary> /// <param name="_table">Table.</param> public void TryGetTable(out GS.Resource.ResourceTable _table) { if (tables.Length > 0) { _table = tables[0]; return; } _table = null; }
/// <summary> /// Gets the table with the name. /// </summary> /// <param name="_name">Name.</param> /// <param name="_table">Table.</param> public void GetTableWithName(string _name, out GS.Resource.ResourceTable _table) { GS.Resource.ResourceTable table = null; for (int i = 0; i < tables.Length; i++) { if (tables[i].name.Equals(_name)) { table = tables[i]; } } _table = table; }
private void CopyAssets() { // TODO ResourceFolderEditor Copy assets! var _class = target as GS.Resource.ResourceFolder; // Create new resource type using same ResourceFolder in same resource path. GS.Resource.ResourceFolder folder = (GS.Resource.ResourceFolder)ScriptableObject.CreateInstance(typeof(GS.Resource.ResourceFolder)); folder.path = _class.path; folder.resourceKey = _class.resourceKey; folder.resource = _resource; // Create possibly missing directory. CreateDirectory(_resource); List <GS.Resource.ResourceTable> _tables = new List <GS.Resource.ResourceTable>(); foreach (GS.Resource.ResourceTable _table in _class.tables) { // Create asset and set values GS.Resource.ResourceTable asset = (GS.Resource.ResourceTable)ScriptableObject.CreateInstance(_table.GetType()); asset.name = _table.name; asset.updateEvents = _table.updateEvents; _tables.Add(asset); // Create ResourceTable asset AssetDatabase.CreateAsset(asset, string.Format( "Assets/Resources/{0}/{1}/{2}.asset", folder.path, folder.resource, // Get old ResourceTable location, split path and cut extension off it. AssetDatabase.GetAssetPath(_table).Split('/').Last().Split('.')[0] )); } folder.tables = _tables.ToArray(); // Get old ResourceFolder location and cut extension from it. string folderLocation = AssetDatabase.GetAssetPath(_class).Split('.')[0]; int folderCount = AssetDatabase.FindAssets( string.Format("{0} t:GS.Resource.ResourceFolder", folderLocation.Split('/').Last()), new[] { folderLocation.Remove(folderLocation.LastIndexOfAny("/".ToCharArray())) }).Length; // Create ResourceFolder asset AssetDatabase.CreateAsset(folder, string.Format( "{0}{1}.asset", folderLocation, folderCount - 1)); // Finalize all created assets AssetDatabase.SaveAssets(); _tables.Clear(); }
private void AddAsset(string assetName) { var _class = target as GS.Resource.ResourceFolder; // If directory is missing, create it. CreateDirectory(_class.resource); FindAssetTypes(); // Create asset and set values GS.Resource.ResourceTable asset = (GS.Resource.ResourceTable) ScriptableObject.CreateInstance(assetTypes[selectedAssetType]); string filePath = string.Format( "Assets/Resources/{0}/{1}/{2}.asset", serializedObject.FindProperty("path").stringValue, serializedObject.FindProperty("resource").stringValue, assetName ); AssetDatabase.CreateAsset(asset, filePath); asset.name = "New ResourceTable"; asset.updateEvents = new string[] { _class.resourceKey }; AssetDatabase.SaveAssets(); // Find the edited property SerializedProperty prop = serializedObject.FindProperty("tables"); // Add new item to array. int x = prop.arraySize; prop.InsertArrayElementAtIndex(x); prop.GetArrayElementAtIndex(x).objectReferenceValue = asset; serializedObject.ApplyModifiedProperties(); EditorUtility.FocusProjectWindow(); Selection.activeObject = asset; }