forked from hunterzonewu/unity-decompiled
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAssetDatabase.cs
More file actions
929 lines (827 loc) · 37.3 KB
/
AssetDatabase.cs
File metadata and controls
929 lines (827 loc) · 37.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
// Decompiled with JetBrains decompiler
// Type: UnityEditor.AssetDatabase
// Assembly: UnityEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
// MVID: 01B28312-B6F5-4E06-90F6-BE297B711E41
// Assembly location: C:\Users\Blake\sandbox\unity\test-project\Library\UnityAssemblies\UnityEditor.dll
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using UnityEngine;
using UnityEngine.Internal;
using UnityEngineInternal;
namespace UnityEditor
{
/// <summary>
/// <para>An Interface for accessing assets and performing operations on assets.</para>
/// </summary>
public sealed class AssetDatabase
{
internal static extern bool isLocked { [WrapperlessIcall, MethodImpl(MethodImplOptions.InternalCall)] get; }
/// <summary>
/// <para>Is object an asset?</para>
/// </summary>
/// <param name="obj"></param>
/// <param name="instanceID"></param>
public static bool Contains(UnityEngine.Object obj)
{
return AssetDatabase.Contains(obj.GetInstanceID());
}
/// <summary>
/// <para>Is object an asset?</para>
/// </summary>
/// <param name="obj"></param>
/// <param name="instanceID"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern bool Contains(int instanceID);
/// <summary>
/// <para>Create a new folder.</para>
/// </summary>
/// <param name="parentFolder">The name of the parent folder.</param>
/// <param name="newFolderName">The name of the new folder.</param>
/// <returns>
/// <para>The GUID of the newly created folder.</para>
/// </returns>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string CreateFolder(string parentFolder, string newFolderName);
/// <summary>
/// <para>Is asset a main asset in the project window?</para>
/// </summary>
/// <param name="obj"></param>
/// <param name="instanceID"></param>
public static bool IsMainAsset(UnityEngine.Object obj)
{
return AssetDatabase.IsMainAsset(obj.GetInstanceID());
}
/// <summary>
/// <para>Is asset a main asset in the project window?</para>
/// </summary>
/// <param name="obj"></param>
/// <param name="instanceID"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern bool IsMainAsset(int instanceID);
/// <summary>
/// <para>Does the asset form part of another asset?</para>
/// </summary>
/// <param name="obj">The asset Object to query.</param>
/// <param name="instanceID">Instance ID of the asset Object to query.</param>
public static bool IsSubAsset(UnityEngine.Object obj)
{
return AssetDatabase.IsSubAsset(obj.GetInstanceID());
}
/// <summary>
/// <para>Does the asset form part of another asset?</para>
/// </summary>
/// <param name="obj">The asset Object to query.</param>
/// <param name="instanceID">Instance ID of the asset Object to query.</param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern bool IsSubAsset(int instanceID);
/// <summary>
/// <para>Is asset a foreign asset?</para>
/// </summary>
/// <param name="obj"></param>
/// <param name="instanceID"></param>
public static bool IsForeignAsset(UnityEngine.Object obj)
{
return AssetDatabase.IsForeignAsset(obj.GetInstanceID());
}
/// <summary>
/// <para>Is asset a foreign asset?</para>
/// </summary>
/// <param name="obj"></param>
/// <param name="instanceID"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern bool IsForeignAsset(int instanceID);
/// <summary>
/// <para>Is asset a native asset?</para>
/// </summary>
/// <param name="obj"></param>
/// <param name="instanceID"></param>
public static bool IsNativeAsset(UnityEngine.Object obj)
{
return AssetDatabase.IsNativeAsset(obj.GetInstanceID());
}
/// <summary>
/// <para>Is asset a native asset?</para>
/// </summary>
/// <param name="obj"></param>
/// <param name="instanceID"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern bool IsNativeAsset(int instanceID);
/// <summary>
/// <para>Creates a new unique path for an asset.</para>
/// </summary>
/// <param name="path"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string GenerateUniqueAssetPath(string path);
/// <summary>
/// <para>Begin Asset importing. This lets you group several asset imports together into one larger import.</para>
/// </summary>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern void StartAssetEditing();
/// <summary>
/// <para>Stop Asset importing. This lets you group several asset imports together into one larger import.</para>
/// </summary>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern void StopAssetEditing();
/// <summary>
/// <para>Checks if an asset file can be moved from one folder to another. (Without actually moving the file).</para>
/// </summary>
/// <param name="oldPath">The path where the asset currently resides.</param>
/// <param name="newPath">The path which the asset should be moved to.</param>
/// <returns>
/// <para>An empty string if the asset can be moved, otherwise an error message.</para>
/// </returns>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string ValidateMoveAsset(string oldPath, string newPath);
/// <summary>
/// <para>Move an asset file from one folder to another.</para>
/// </summary>
/// <param name="oldPath">The path where the asset currently resides.</param>
/// <param name="newPath">The path which the asset should be moved to.</param>
/// <returns>
/// <para>An empty string if the asset has been successfully moved, otherwise an error message.</para>
/// </returns>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string MoveAsset(string oldPath, string newPath);
/// <summary>
/// <para>Rename an asset file.</para>
/// </summary>
/// <param name="pathName">The path where the asset currently resides.</param>
/// <param name="newName">The new name which should be given to the asset.</param>
/// <returns>
/// <para>An empty string, if the asset has been successfully renamed, otherwise an error message.</para>
/// </returns>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string RenameAsset(string pathName, string newName);
/// <summary>
/// <para>Moves the asset at path to the trash.</para>
/// </summary>
/// <param name="path"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern bool MoveAssetToTrash(string path);
/// <summary>
/// <para>Deletes the asset file at path.</para>
/// </summary>
/// <param name="path">Filesystem path of the asset to be deleted.</param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern bool DeleteAsset(string path);
/// <summary>
/// <para>Import asset at path.</para>
/// </summary>
/// <param name="path"></param>
/// <param name="options"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern void ImportAsset(string path, [DefaultValue("ImportAssetOptions.Default")] ImportAssetOptions options);
/// <summary>
/// <para>Import asset at path.</para>
/// </summary>
/// <param name="path"></param>
/// <param name="options"></param>
[ExcludeFromDocs]
public static void ImportAsset(string path)
{
ImportAssetOptions options = ImportAssetOptions.Default;
AssetDatabase.ImportAsset(path, options);
}
/// <summary>
/// <para>Duplicates the asset at path and stores it at newPath.</para>
/// </summary>
/// <param name="path">Filesystem path of the source asset.</param>
/// <param name="newPath">Filesystem path of the new asset to create.</param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern bool CopyAsset(string path, string newPath);
/// <summary>
/// <para>Writes the import settings to disk.</para>
/// </summary>
/// <param name="path"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern bool WriteImportSettingsIfDirty(string path);
/// <summary>
/// <para>Given an absolute path to a directory, this method will return an array of all it's subdirectories.</para>
/// </summary>
/// <param name="path"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string[] GetSubFolders(string path);
/// <summary>
/// <para>Given an absolute path to a folder, returns true if it exists, false otherwise.</para>
/// </summary>
/// <param name="path"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern bool IsValidFolder(string path);
/// <summary>
/// <para>Creates a new asset at path.</para>
/// </summary>
/// <param name="asset">Object to use in creating the asset.</param>
/// <param name="path">Filesystem path for the new asset.</param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern void CreateAsset(UnityEngine.Object asset, string path);
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern void CreateAssetFromObjects(UnityEngine.Object[] assets, string path);
/// <summary>
/// <para>Adds objectToAdd to an existing asset at path.</para>
/// </summary>
/// <param name="objectToAdd">Object to add to the existing asset.</param>
/// <param name="path">Filesystem path to the asset.</param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern void AddObjectToAsset(UnityEngine.Object objectToAdd, string path);
/// <summary>
/// <para>Adds objectToAdd to an existing asset identified by assetObject.</para>
/// </summary>
/// <param name="objectToAdd"></param>
/// <param name="assetObject"></param>
public static void AddObjectToAsset(UnityEngine.Object objectToAdd, UnityEngine.Object assetObject)
{
AssetDatabase.AddObjectToAsset_OBJ_Internal(objectToAdd, assetObject);
}
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern void AddInstanceIDToAssetWithRandomFileId(int instanceIDToAdd, UnityEngine.Object assetObject, bool hide);
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void AddObjectToAsset_OBJ_Internal(UnityEngine.Object newAsset, UnityEngine.Object sameAssetFile);
/// <summary>
/// <para>Returns the path name relative to the project folder where the asset is stored.</para>
/// </summary>
/// <param name="instanceID">The instance ID of the asset.</param>
/// <param name="assetObject">A reference to the asset.</param>
/// <returns>
/// <para>The asset path name, or null, or an empty string if the asset does not exist.</para>
/// </returns>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string GetAssetPath(UnityEngine.Object assetObject);
/// <summary>
/// <para>Returns the path name relative to the project folder where the asset is stored.</para>
/// </summary>
/// <param name="instanceID">The instance ID of the asset.</param>
/// <param name="assetObject">A reference to the asset.</param>
/// <returns>
/// <para>The asset path name, or null, or an empty string if the asset does not exist.</para>
/// </returns>
public static string GetAssetPath(int instanceID)
{
return AssetDatabase.GetAssetPathFromInstanceID(instanceID);
}
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern string GetAssetPathFromInstanceID(int instanceID);
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern int GetMainAssetInstanceID(string assetPath);
/// <summary>
/// <para>Returns the path name relative to the project folder where the asset is stored.</para>
/// </summary>
/// <param name="assetObject"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string GetAssetOrScenePath(UnityEngine.Object assetObject);
/// <summary>
/// <para>Gets the path to the text .meta file associated with an asset.</para>
/// </summary>
/// <param name="path">The path to the asset.</param>
/// <returns>
/// <para>The path to the .meta text file or empty string if the file does not exist.</para>
/// </returns>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string GetTextMetaFilePathFromAssetPath(string path);
/// <summary>
/// <para>Gets the path to the asset file associated with a text .meta file.</para>
/// </summary>
/// <param name="path"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string GetAssetPathFromTextMetaFilePath(string path);
/// <summary>
/// <para>Returns the first asset object of type type at given path assetPath.</para>
/// </summary>
/// <param name="assetPath">Path of the asset to load.</param>
/// <param name="type">Data type of the asset.</param>
/// <returns>
/// <para>The asset matching the parameters</para>
/// </returns>
[WrapperlessIcall]
[TypeInferenceRule(TypeInferenceRules.TypeReferencedBySecondArgument)]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern UnityEngine.Object LoadAssetAtPath(string assetPath, System.Type type);
public static T LoadAssetAtPath<T>(string assetPath) where T : UnityEngine.Object
{
return (T) AssetDatabase.LoadAssetAtPath(assetPath, typeof (T));
}
/// <summary>
/// <para>Returns the main asset object at assetPath.</para>
/// </summary>
/// <param name="assetPath">Filesystem path of the asset to load.</param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern UnityEngine.Object LoadMainAssetAtPath(string assetPath);
/// <summary>
/// <para>Returns all asset representations at assetPath.</para>
/// </summary>
/// <param name="assetPath"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern UnityEngine.Object[] LoadAllAssetRepresentationsAtPath(string assetPath);
/// <summary>
/// <para>Returns an array of all asset objects at assetPath.</para>
/// </summary>
/// <param name="assetPath">Filesystem path to the asset.</param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern UnityEngine.Object[] LoadAllAssetsAtPath(string assetPath);
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string[] GetAllAssetPaths();
[Obsolete("Please use AssetDatabase.Refresh instead", true)]
public static void RefreshDelayed(ImportAssetOptions options)
{
}
[Obsolete("Please use AssetDatabase.Refresh instead", true)]
public static void RefreshDelayed()
{
}
/// <summary>
/// <para>Import any changed assets.</para>
/// </summary>
/// <param name="options"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern void Refresh([DefaultValue("ImportAssetOptions.Default")] ImportAssetOptions options);
[ExcludeFromDocs]
public static void Refresh()
{
AssetDatabase.Refresh(ImportAssetOptions.Default);
}
/// <summary>
/// <para>Opens the asset with associated application.</para>
/// </summary>
/// <param name="instanceID"></param>
/// <param name="lineNumber"></param>
/// <param name="target"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern bool OpenAsset(int instanceID, [DefaultValue("-1")] int lineNumber);
/// <summary>
/// <para>Opens the asset with associated application.</para>
/// </summary>
/// <param name="instanceID"></param>
/// <param name="lineNumber"></param>
/// <param name="target"></param>
[ExcludeFromDocs]
public static bool OpenAsset(int instanceID)
{
int lineNumber = -1;
return AssetDatabase.OpenAsset(instanceID, lineNumber);
}
/// <summary>
/// <para>Opens the asset with associated application.</para>
/// </summary>
/// <param name="instanceID"></param>
/// <param name="lineNumber"></param>
/// <param name="target"></param>
[ExcludeFromDocs]
public static bool OpenAsset(UnityEngine.Object target)
{
int lineNumber = -1;
return AssetDatabase.OpenAsset(target, lineNumber);
}
/// <summary>
/// <para>Opens the asset with associated application.</para>
/// </summary>
/// <param name="instanceID"></param>
/// <param name="lineNumber"></param>
/// <param name="target"></param>
public static bool OpenAsset(UnityEngine.Object target, [DefaultValue("-1")] int lineNumber)
{
if ((bool) target)
return AssetDatabase.OpenAsset(target.GetInstanceID(), lineNumber);
return false;
}
/// <summary>
/// <para>Opens the asset(s) with associated application(s).</para>
/// </summary>
/// <param name="objects"></param>
public static bool OpenAsset(UnityEngine.Object[] objects)
{
bool flag = true;
foreach (UnityEngine.Object target in objects)
{
if (!AssetDatabase.OpenAsset(target))
flag = false;
}
return flag;
}
/// <summary>
/// <para>Get the GUID for the asset at path.</para>
/// </summary>
/// <param name="path">Filesystem path for the asset.</param>
/// <returns>
/// <para>GUID</para>
/// </returns>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string AssetPathToGUID(string path);
/// <summary>
/// <para>Translate a GUID to its current asset path.</para>
/// </summary>
/// <param name="guid"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string GUIDToAssetPath(string guid);
/// <summary>
/// <para>Returns the hash of all the dependencies of an asset.</para>
/// </summary>
/// <param name="path">Path to the asset.</param>
/// <returns>
/// <para>Aggregate hash.</para>
/// </returns>
public static Hash128 GetAssetDependencyHash(string path)
{
Hash128 hash128;
AssetDatabase.INTERNAL_CALL_GetAssetDependencyHash(path, out hash128);
return hash128;
}
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void INTERNAL_CALL_GetAssetDependencyHash(string path, out Hash128 value);
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern int GetInstanceIDFromGUID(string guid);
/// <summary>
/// <para>Writes all unsaved asset changes to disk.</para>
/// </summary>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern void SaveAssets();
/// <summary>
/// <para>Retrieves an icon for the asset at the given asset path.</para>
/// </summary>
/// <param name="path"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern Texture GetCachedIcon(string path);
/// <summary>
/// <para>Replaces that list of labels on an asset.</para>
/// </summary>
/// <param name="obj"></param>
/// <param name="labels"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern void SetLabels(UnityEngine.Object obj, string[] labels);
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void INTERNAL_GetAllLabels(out string[] labels, out float[] scores);
internal static Dictionary<string, float> GetAllLabels()
{
string[] labels;
float[] scores;
AssetDatabase.INTERNAL_GetAllLabels(out labels, out scores);
Dictionary<string, float> dictionary = new Dictionary<string, float>(labels.Length);
for (int index = 0; index < labels.Length; ++index)
dictionary[labels[index]] = scores[index];
return dictionary;
}
/// <summary>
/// <para>Returns all labels attached to a given asset.</para>
/// </summary>
/// <param name="obj"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string[] GetLabels(UnityEngine.Object obj);
/// <summary>
/// <para>Removes all labels attached to an asset.</para>
/// </summary>
/// <param name="obj"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern void ClearLabels(UnityEngine.Object obj);
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern string[] MatchLabelsPartial(UnityEngine.Object obj, string partial);
/// <summary>
/// <para>Return all the AssetBundle names in the asset database.</para>
/// </summary>
/// <returns>
/// <para>Array of asset bundle names.</para>
/// </returns>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string[] GetAllAssetBundleNames();
[Obsolete("Method GetAssetBundleNames has been deprecated. Use GetAllAssetBundleNames instead.")]
public string[] GetAssetBundleNames()
{
return AssetDatabase.GetAllAssetBundleNames();
}
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern string[] GetAllAssetBundleNamesWithoutVariant();
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern string[] GetAllAssetBundleVariants();
/// <summary>
/// <para>Return all the unused assetBundle names in the asset database.</para>
/// </summary>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string[] GetUnusedAssetBundleNames();
/// <summary>
/// <para>Remove the assetBundle name from the asset database. The forceRemove flag is used to indicate if you want to remove it even it's in use.</para>
/// </summary>
/// <param name="assetBundleName">The assetBundle name you want to remove.</param>
/// <param name="forceRemove">Flag to indicate if you want to remove the assetBundle name even it's in use.</param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern bool RemoveAssetBundleName(string assetBundleName, bool forceRemove);
/// <summary>
/// <para>Remove all the unused assetBundle names in the asset database.</para>
/// </summary>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern void RemoveUnusedAssetBundleNames();
/// <summary>
/// <para>Get the paths of the assets which have been marked with the given assetBundle name.</para>
/// </summary>
/// <param name="assetBundleName"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string[] GetAssetPathsFromAssetBundle(string assetBundleName);
/// <summary>
/// <para>Get the asset paths from the given assetBundle name and asset name.</para>
/// </summary>
/// <param name="assetBundleName"></param>
/// <param name="assetName"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string[] GetAssetPathsFromAssetBundleAndAssetName(string assetBundleName, string assetName);
/// <summary>
/// <para>Given a pathName, returns the list of all assets that it depends on.</para>
/// </summary>
/// <param name="pathName">The path to the asset for which dependencies are required.</param>
/// <param name="recursive">If false, return only assets which are direct dependencies of the input; if true, include all indirect dependencies of the input. Defaults to true.</param>
/// <returns>
/// <para>The paths of all assets that the input depends on.</para>
/// </returns>
public static string[] GetDependencies(string pathName)
{
return AssetDatabase.GetDependencies(pathName, true);
}
/// <summary>
/// <para>Given a pathName, returns the list of all assets that it depends on.</para>
/// </summary>
/// <param name="pathName">The path to the asset for which dependencies are required.</param>
/// <param name="recursive">If false, return only assets which are direct dependencies of the input; if true, include all indirect dependencies of the input. Defaults to true.</param>
/// <returns>
/// <para>The paths of all assets that the input depends on.</para>
/// </returns>
public static string[] GetDependencies(string pathName, bool recursive)
{
return AssetDatabase.GetDependencies(new string[1]{ pathName }, recursive);
}
/// <summary>
/// <para>Given an array of pathNames, returns the list of all assets that the input depend on.</para>
/// </summary>
/// <param name="pathNames">The path to the assets for which dependencies are required.</param>
/// <param name="recursive">If false, return only assets which are direct dependencies of the input; if true, include all indirect dependencies of the input. Defaults to true.</param>
/// <returns>
/// <para>The paths of all assets that the input depends on.</para>
/// </returns>
public static string[] GetDependencies(string[] pathNames)
{
return AssetDatabase.GetDependencies(pathNames, true);
}
/// <summary>
/// <para>Given an array of pathNames, returns the list of all assets that the input depend on.</para>
/// </summary>
/// <param name="pathNames">The path to the assets for which dependencies are required.</param>
/// <param name="recursive">If false, return only assets which are direct dependencies of the input; if true, include all indirect dependencies of the input. Defaults to true.</param>
/// <returns>
/// <para>The paths of all assets that the input depends on.</para>
/// </returns>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string[] GetDependencies(string[] pathNames, bool recursive);
/// <summary>
/// <para>Exports the assets identified by assetPathNames to a unitypackage file in fileName.</para>
/// </summary>
/// <param name="assetPathNames"></param>
/// <param name="fileName"></param>
/// <param name="flags"></param>
/// <param name="assetPathName"></param>
public static void ExportPackage(string assetPathName, string fileName)
{
AssetDatabase.ExportPackage(new string[1]{ assetPathName }, fileName, ExportPackageOptions.Default);
}
/// <summary>
/// <para>Exports the assets identified by assetPathNames to a unitypackage file in fileName.</para>
/// </summary>
/// <param name="assetPathNames"></param>
/// <param name="fileName"></param>
/// <param name="flags"></param>
/// <param name="assetPathName"></param>
public static void ExportPackage(string assetPathName, string fileName, ExportPackageOptions flags)
{
AssetDatabase.ExportPackage(new string[1]{ assetPathName }, fileName, flags);
}
/// <summary>
/// <para>Exports the assets identified by assetPathNames to a unitypackage file in fileName.</para>
/// </summary>
/// <param name="assetPathNames"></param>
/// <param name="fileName"></param>
/// <param name="flags"></param>
/// <param name="assetPathName"></param>
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern void ExportPackage(string[] assetPathNames, string fileName, [DefaultValue("ExportPackageOptions.Default")] ExportPackageOptions flags);
/// <summary>
/// <para>Exports the assets identified by assetPathNames to a unitypackage file in fileName.</para>
/// </summary>
/// <param name="assetPathNames"></param>
/// <param name="fileName"></param>
/// <param name="flags"></param>
/// <param name="assetPathName"></param>
[ExcludeFromDocs]
public static void ExportPackage(string[] assetPathNames, string fileName)
{
ExportPackageOptions flags = ExportPackageOptions.Default;
AssetDatabase.ExportPackage(assetPathNames, fileName, flags);
}
/// <summary>
/// <para>Imports package at packagePath into the current project.</para>
/// </summary>
/// <param name="packagePath"></param>
/// <param name="interactive"></param>
public static void ImportPackage(string packagePath, bool interactive)
{
string packageIconPath;
bool canPerformReInstall;
ImportPackageItem[] prepareAssetList = PackageUtility.ExtractAndPrepareAssetList(packagePath, out packageIconPath, out canPerformReInstall);
if (prepareAssetList == null)
return;
if (interactive)
PackageImport.ShowImportPackage(packagePath, prepareAssetList, packageIconPath, canPerformReInstall);
else
PackageUtility.ImportPackageAssets(prepareAssetList, false);
}
[WrapperlessIcall]
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern string GetUniquePathNameAtSelectedPath(string fileName);
/// <summary>
/// <para>Use IsOpenForEdit to determine if the asset is open for edit by the version control.</para>
/// </summary>
/// <param name="assetPath">Is the path to the asset on disk relative to project folder.</param>
/// <param name="message">Used to give reason for not open.</param>
/// <param name="assetObject"></param>
/// <param name="assetOrMetaFilePath"></param>
/// <returns>
/// <para>True is the asset can be edited.</para>
/// </returns>
public static bool IsOpenForEdit(UnityEngine.Object assetObject)
{
return AssetDatabase.IsOpenForEdit(AssetDatabase.GetAssetOrScenePath(assetObject));
}
/// <summary>
/// <para>Use IsOpenForEdit to determine if the asset is open for edit by the version control.</para>
/// </summary>
/// <param name="assetPath">Is the path to the asset on disk relative to project folder.</param>
/// <param name="message">Used to give reason for not open.</param>
/// <param name="assetObject"></param>
/// <param name="assetOrMetaFilePath"></param>
/// <returns>
/// <para>True is the asset can be edited.</para>
/// </returns>
public static bool IsOpenForEdit(string assetOrMetaFilePath)
{
string message;
return AssetDatabase.IsOpenForEdit(assetOrMetaFilePath, out message);
}
public static bool IsOpenForEdit(UnityEngine.Object assetObject, out string message)
{
return AssetDatabase.IsOpenForEdit(AssetDatabase.GetAssetOrScenePath(assetObject), out message);
}
public static bool IsOpenForEdit(string assetOrMetaFilePath, out string message)
{
return AssetModificationProcessorInternal.IsOpenForEdit(assetOrMetaFilePath, out message);
}
public static bool IsMetaFileOpenForEdit(UnityEngine.Object assetObject)
{
string message;
return AssetDatabase.IsMetaFileOpenForEdit(assetObject, out message);
}
public static bool IsMetaFileOpenForEdit(UnityEngine.Object assetObject, out string message)
{
return AssetDatabase.IsOpenForEdit(AssetDatabase.GetTextMetaFilePathFromAssetPath(AssetDatabase.GetAssetOrScenePath(assetObject)), out message);
}
[WrapperlessIcall]
[TypeInferenceRule(TypeInferenceRules.TypeReferencedByFirstArgument)]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern UnityEngine.Object GetBuiltinExtraResource(System.Type type, string path);
public static T GetBuiltinExtraResource<T>(string path) where T : UnityEngine.Object
{
return (T) AssetDatabase.GetBuiltinExtraResource(typeof (T), path);
}
/// <summary>
/// <para>Gets the path to the text .meta file associated with an asset.</para>
/// </summary>
/// <param name="path">The path to the asset.</param>
/// <returns>
/// <para>The path to the .meta text file or empty string if the file does not exist.</para>
/// </returns>
[Obsolete("GetTextMetaDataPathFromAssetPath has been renamed to GetTextMetaFilePathFromAssetPath (UnityUpgradable) -> GetTextMetaFilePathFromAssetPath(*)")]
public static string GetTextMetaDataPathFromAssetPath(string path)
{
return (string) null;
}
[Obsolete("GetAssetDependencyHashFromPath has been renamed to GetAssetDependencyHash (UnityUpgradable) -> GetAssetDependencyHash(*)")]
public static Hash128 GetAssetDependencyHashFromPath(string path)
{
return new Hash128();
}
/// <summary>
/// <para>Search the asset database using a search filter string.</para>
/// </summary>
/// <param name="filter">The filter string can contain search data for: names, asset labels and types (class names).</param>
/// <param name="searchInFolders">Specifying one or more folders will limit the searching to these folders and their child folders (and is faster than searching all assets).</param>
/// <returns>
/// <para>Array of matching asset GUIDs.</para>
/// </returns>
public static string[] FindAssets(string filter)
{
return AssetDatabase.FindAssets(filter, (string[]) null);
}
/// <summary>
/// <para>Search the asset database using a search filter string.</para>
/// </summary>
/// <param name="filter">The filter string can contain search data for: names, asset labels and types (class names).</param>
/// <param name="searchInFolders">Specifying one or more folders will limit the searching to these folders and their child folders (and is faster than searching all assets).</param>
/// <returns>
/// <para>Array of matching asset GUIDs.</para>
/// </returns>
public static string[] FindAssets(string filter, string[] searchInFolders)
{
SearchFilter searchFilter = new SearchFilter();
SearchUtility.ParseSearchString(filter, searchFilter);
if (searchInFolders != null)
searchFilter.folders = searchInFolders;
return AssetDatabase.FindAssets(searchFilter);
}
private static string[] FindAssets(SearchFilter searchFilter)
{
if (searchFilter.folders != null && searchFilter.folders.Length > 0)
return AssetDatabase.SearchInFolders(searchFilter);
return AssetDatabase.SearchAllAssets(searchFilter);
}
private static string[] SearchAllAssets(SearchFilter searchFilter)
{
HierarchyProperty hierarchyProperty = new HierarchyProperty(HierarchyType.Assets);
hierarchyProperty.SetSearchFilter(searchFilter);
hierarchyProperty.Reset();
List<string> stringList = new List<string>();
while (hierarchyProperty.Next((int[]) null))
stringList.Add(hierarchyProperty.guid);
return stringList.ToArray();
}
private static string[] SearchInFolders(SearchFilter searchFilter)
{
HierarchyProperty hierarchyProperty = new HierarchyProperty(HierarchyType.Assets);
List<string> stringList = new List<string>();
foreach (string folder in searchFilter.folders)
{
hierarchyProperty.SetSearchFilter(new SearchFilter());
int mainAssetInstanceId = AssetDatabase.GetMainAssetInstanceID(folder);
if (hierarchyProperty.Find(mainAssetInstanceId, (int[]) null))
{
hierarchyProperty.SetSearchFilter(searchFilter);
int depth = hierarchyProperty.depth;
int[] expanded = (int[]) null;
while (hierarchyProperty.NextWithDepthCheck(expanded, depth + 1))
stringList.Add(hierarchyProperty.guid);
}
else
Debug.LogWarning((object) ("AssetDatabase.FindAssets: Folder not found: '" + folder + "'"));
}
return stringList.ToArray();
}
}
}