public static tmResourceCollectionLink ResourceLinkByGUID(string guid)
    {
        string resourcePath           = tmSettings.ResourceFolder + tmSettings.ResourceLinkPrefix + guid;
        tmResourceCollectionLink link = Resources.Load(resourcePath, typeof(tmResourceCollectionLink)) as tmResourceCollectionLink;

        return(link);
    }
Example #2
0
    public static void CreatePlatformResourceLink(tmTextureCollectionPlatform collectionPlatform)
    {
        if (!System.IO.Directory.Exists(tmSettings.AssetsFolder))
        {
            System.IO.Directory.CreateDirectory(tmSettings.AssetsFolder);
        }

        string assetPath    = tmSettings.AssetsFolder + tmSettings.ResourceLinkPrefix + collectionPlatform.collectionGuid + ".asset";
        string resourcePath = tmSettings.ResourceFolder + tmSettings.ResourceLinkPrefix + collectionPlatform.collectionGuid;

        tmResourceCollectionLink link = Resources.Load(resourcePath, typeof(tmResourceCollectionLink)) as tmResourceCollectionLink;

        if (link == null)
        {
            link = ScriptableObject.CreateInstance(typeof(tmResourceCollectionLink)) as tmResourceCollectionLink;
            AssetDatabase.CreateAsset(link, assetPath);
        }

        link.collectionInEditor = collectionPlatform;
        UpdateResourceLink(link);


        EditorUtility.SetDirty(link);
        AssetDatabase.SaveAssets();
    }
Example #3
0
    public tmTextureCollectionPlatform GetPlatformCollection(string collectionGuid, tmPlatform platform)
    {
        string collectionGuidPath = tmUtility.PathForPlatform(collectionGuid, platform);

        if (collectionMap.ContainsKey(collectionGuidPath))
        {
            return(collectionMap[collectionGuidPath]);
        }
        else
        {
            tmResourceCollectionLink link = tmUtility.ResourceLinkByGUID(collectionGuidPath);

            if (link != null)
            {
                                #if UNITY_EDITOR
                if (!Application.isPlaying)
                {
                    link.collection.LoadTexture();
                }
                                #endif

                collectionMap.Add(collectionGuidPath, link.collection);
                return(link.collection);
            }
        }

        return(null);
    }
Example #4
0
    public static void UpdateResourceLink(tmResourceCollectionLink link)
    {
        link.collection = link.collectionInEditor;
        if (tmSettings.Instance.TargetPlatform.name.Equals("iPhone") && link.collection.platform.name.Equals("iPad Retina"))
        {
            link.collection = null;
        }

        EditorUtility.SetDirty(link);
    }
    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");
    }