public static void BuildCollection(tmTextureCollection collection) { if (collection != null) { collection.textureDefenitions.RemoveAll(f => !collection.Textures.Contains(f.texture)); foreach (Texture2D texture in collection.Textures) { if (texture != null) { tmTextureDefenition textureRef = collection.textureDefenitions.Find(f => f.texture == texture); if (textureRef == null) { textureRef = new tmTextureDefenition(); textureRef.texture = texture; textureRef.textureName = tmUtility.PlatformlessPath(texture.name); // should attach to name ? or guid better textureRef.textureGuid = tmEditorUtility.AssetToGUID(texture); textureRef.assetGuid = tmEditorUtility.AssetToGUID(texture); collection.textureDefenitions.Add(textureRef); } } } EditorUtility.SetDirty(collection); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); BuildPlatformCollections(collection); collection = tmEditorUtility.GUIDToAsset(collection.assetGuid, typeof(tmTextureCollection)) as tmTextureCollection; tmIndex.Instance.RegisterCollection(collection); } }
public static void BuildCollectionsForModifiedAssets(string[] importedAssets) { AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); List <tmTextureCollection> modifiedCollections = new List <tmTextureCollection>(); foreach (string path in importedAssets) { tmTextureCollectionIndex index = tmIndex.Instance.CollectionIndexForTexturePath(path); if (index != null) { tmTextureCollection coll = tmEditorUtility.GUIDToAsset(index.assetGUID, typeof(tmTextureCollection)) as tmTextureCollection; if (coll != null && !modifiedCollections.Contains(coll)) { modifiedCollections.Add(coll); } } } foreach (tmTextureCollection collection in modifiedCollections) { BuildCollection(collection); } }
public static void RebuildIndex() { EditorUtility.DisplayProgressBar("Texture Manager", "scanning for collections...", 0); collections = AssetUtility.GetAssetsAtPath <tmTextureCollection>("TextureManagmentCollections"); EditorUtility.DisplayProgressBar("Texture Manager", "collections founded : " + collections.Count, 1); System.Threading.Thread.Sleep(500); tmIndex.Instance.TextureCollections.Clear(); tmIndex.Instance.TexturePlatformCollections.Clear(); int current = 0; for (int i = 0; i < collections.Count; i++) { tmTextureCollection collection = collections[i]; if (!collection.IsNull()) { CustomDebug.Log("Rebuild collection : " + collection.name); try { EditorUtility.DisplayProgressBar("Texture Manager", "building : " + collection.name, current++ *1f / collections.Count); tmCollectionBuilder.BuildCollection(collection); Resources.UnloadUnusedAssets(); System.GC.Collect(); } catch (System.Exception ex) { CustomDebug.Log(ex); } } } EditorUtility.SetDirty(tmIndex.Instance); // tmCollectionBuilder.ValidateResourceLinks(); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); collections.Clear(); EditorUtility.ClearProgressBar(); Resources.UnloadUnusedAssets(); System.GC.Collect(); }
public static void BuildPlatformCollections(tmTextureCollection collection) { if (collection != null) { List <tmTextureCollectionPlatform> modifiedCollections = new List <tmTextureCollectionPlatform>(); foreach (tmPlatform platform in tmSettings.allPlatfrorms) { if (collection.forcedScale > 0 && Mathf.Abs(platform.scale - collection.forcedScale) > float.Epsilon) { continue; } tmTextureCollectionPlatformRef collectionPlatformRef = collection.platforms.Find(f => (f != null) && f.platform.Equals(platform)); if (collectionPlatformRef == null) { collectionPlatformRef = new tmTextureCollectionPlatformRef(); collectionPlatformRef.platform = platform; collection.platforms.Add(collectionPlatformRef); } tmTextureCollectionPlatform collectionPlatform = collectionPlatformRef.collectionPlatform; if (collectionPlatform == null) { collectionPlatform = tmCollectionBuilder.CreatePlatformCollectionFromMainCollection(collection, platform); } collectionPlatform.platform = platform; // just update platform info collectionPlatform.importSettings = collection.importSettings; collectionPlatform.useStreamingAssets = collection.useStreamingAssets; collectionPlatformRef.platform = platform; collectionPlatformRef.collectionName = collectionPlatform.name; collectionPlatformRef.collectionGuid = collectionPlatform.collectionGuid; collectionPlatformRef.assetnGuid = collectionPlatform.assetGuid; collectionPlatformRef.collectionPlatform = collectionPlatform; tmCollectionBuilder.UpdatePlatformCollection(collectionPlatform, collection.Textures); modifiedCollections.Add(collectionPlatform); } UpdateRendersInScene(modifiedCollections); EditorUtility.SetDirty(collection); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } }
public override void OnInspectorGUI() { // EyeDropper.GetPickedColor(); // System.Type eyeDropperType = GetType("EyeDropper"); // MethodInfo mi = eyeDropperType.GetMethod("GetPickedColor", BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly); // FieldInfo fi = eyeDropperType.GetField("s_PickCoordinates", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.DeclaredOnly); // Vector2 a = GUIUtility.GUIToScreenPoint(Event.current.mousePosition); // fi.SetValue(null, a); // Debug.Log(fi); // Debug.Log(mi); // Color c = (Color)mi.Invoke(null, null); // // // EditorGUILayout.ColorField(Color.white); // Debug.Log( // "r:" + ((int)(c.r * 256)) + // " g:" + ((int)(c.g * 256)) + // " b:" + ((int)(c.b * 256)) + // " a:" + ((int)(c.a * 256)) // ); baseEditor.OnInspectorGUI(); GUILayout.Space(20); TextureImporter textureImporter = (TextureImporter)target; tmTextureCollectionIndex currentCollectionIndex = tmIndex.Instance.CollectionIndexForTexturePath(textureImporter.assetPath); string[] names = new string[tmIndex.Instance.TextureCollections.Count]; int index = -1; for (int i = 0; i < tmIndex.Instance.TextureCollections.Count; i++) { tmTextureCollectionIndex collectionIndex = tmIndex.Instance.TextureCollections[i]; names[i] = collectionIndex.name; if (collectionIndex.Equals(currentCollectionIndex)) { index = i; } } if (newIndex < -1) { newIndex = index; } newIndex = EditorGUILayout.Popup("Texture Atlas", newIndex, names); if (newIndex > 0) { tmTextureCollectionIndex collectionIndex = tmIndex.Instance.TextureCollections[newIndex]; string collectionGUID = collectionIndex.textureCollectionGUID; string collectionGuidPath = tmUtility.PathForPlatform(collectionGUID, tmSettings.Instance.CurrentPlatform); tmResourceCollectionLink link = tmUtility.ResourceLinkByGUID(collectionGuidPath); tmTextureCollectionPlatform collection = link.collectionInEditor; collection.LoadTexture(); Texture2D atlas = collection.Atlas; EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(" "); Rect rect = EditorGUILayout.GetControlRect(GUILayout.Width(150f * atlas.width / atlas.height), GUILayout.Height(150f)); EditorGUI.DrawRect(rect, Color.black); EditorGUI.DrawTextureTransparent(rect, atlas, ScaleMode.ScaleToFit); EditorGUILayout.EndHorizontal(); Object asset = tmEditorUtility.GUIDToAsset(collection.AtlasAssetGUID, typeof(Object)); if (rect.Contains(Event.current.mousePosition)) { if (Event.current.clickCount == 1) { if (asset) { EditorGUIUtility.PingObject(asset); } Event.current.Use(); } } } GUILayout.BeginHorizontal(); { if (currentCollectionIndex != null) { EditorGUILayout.PrefixLabel(" "); if (GUILayout.Button("Remove from atlas")) { newIndex = -1; } } GUILayout.FlexibleSpace(); bool enabled = GUI.enabled; GUI.enabled = index != newIndex; if (GUILayout.Button("Revert")) { newIndex = -2; } if (GUILayout.Button("Apply")) { if (currentCollectionIndex != null) { tmTextureCollection collection = tmEditorUtility.GUIDToAsset(currentCollectionIndex.assetGUID, typeof(tmTextureCollection)) as tmTextureCollection; Debug.Log(collection); if (collection) { tmTextureDefenition def = collection.GetTextureDefenitionByID(AssetDatabase.AssetPathToGUID(textureImporter.assetPath)); if (def != null) { Debug.Log(def.texture); collection.textureDefenitions.Remove(def); collection.Textures.Remove(def.texture); EditorUtility.SetDirty(collection); tmCollectionBuilder.BuildCollection(collection); } } } if (newIndex > 0) { tmTextureCollectionIndex newCollectionIndex = tmIndex.Instance.TextureCollections[newIndex]; tmTextureCollection collection = tmEditorUtility.GUIDToAsset(newCollectionIndex.assetGUID, typeof(tmTextureCollection)) as tmTextureCollection; collection.Textures.Add(AssetDatabase.LoadAssetAtPath(textureImporter.assetPath, typeof(Texture2D)) as Texture2D); EditorUtility.SetDirty(collection); tmCollectionBuilder.BuildCollection(collection); } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } GUI.enabled = enabled; } GUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); GUILayout.Label("Description"); GUILayout.BeginHorizontal("Box"); { textureImporter.userData = GUILayout.TextField(textureImporter.userData, GUI.skin.label); } GUILayout.EndHorizontal(); // EditorGUILayout.LabelField("test label"); }
public static tmTextureCollectionPlatform CreatePlatformCollectionFromMainCollection(tmTextureCollection collection, tmPlatform platform) { string mainCollectionPath = AssetDatabase.GetAssetPath(collection); string directory = System.IO.Path.GetDirectoryName(mainCollectionPath); string platformDirectory = directory + "/" + collection.name + platform.postfix; string platformPath = platformDirectory + "/" + collection.name + platform.postfix + ".prefab"; if (!System.IO.Directory.Exists(platformDirectory)) { System.IO.Directory.CreateDirectory(platformDirectory); } tmTextureCollectionPlatform collectionPlatform = AssetDatabase.LoadAssetAtPath(platformPath, typeof(tmTextureCollectionPlatform)) as tmTextureCollectionPlatform; if (collectionPlatform == null) { GameObject g = new GameObject(); g.AddComponent <tmTextureCollectionPlatform>(); GameObject prefab = PrefabUtility.CreatePrefab(platformPath, g); Object.DestroyImmediate(g); collectionPlatform = prefab.GetComponent <tmTextureCollectionPlatform>(); collectionPlatform.assetGuid = tmEditorUtility.AssetToGUID(prefab); collectionPlatform.collectionGuid = collection.collectionGuid + platform.postfix; } return(collectionPlatform); }