bool PlatformPopup(string label, ref tmPlatform currentPlatform)
    {
        int           selectedIndex = -1;
        List <string> entryNames    = new List <string>();

        for (int i = 0; i < settings.texturePlatforms.Length; i++)
        {
            tmPlatform platform = settings.texturePlatforms[i];
            entryNames.Add(platform.name);

            if (currentPlatform != null && !string.IsNullOrEmpty(currentPlatform.name))
            {
                if (currentPlatform.name.Equals(platform.name))
                {
                    selectedIndex = i;
                }
            }
        }

        int lastIndex = selectedIndex;

        selectedIndex = EditorGUILayout.Popup(label, selectedIndex, entryNames.ToArray());

        if (selectedIndex != -1)
        {
            currentPlatform = settings.texturePlatforms[selectedIndex];
        }

        return(lastIndex != selectedIndex);
    }
Beispiel #2
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);
    }
Beispiel #3
0
    static Texture2D PlatformSpecifiedTexture(Texture2D mainTexture, tmPlatform platform, bool force = false)
    {
        string texturePath = AssetDatabase.GetAssetPath(mainTexture);
        string directory   = System.IO.Path.GetDirectoryName(texturePath);

        string textureFileName   = System.IO.Path.GetFileName(texturePath);
        string platformDirectory = directory + "/" + platform.postfix.Replace("@", "");
        string platformPath      = platformDirectory + "/" + textureFileName;

        if (platform.Equals(tmSettings.Instance.DefaultPlatform))
        {
            return(mainTexture);
        }

        if (!System.IO.Directory.Exists(platformDirectory))
        {
            System.IO.Directory.CreateDirectory(platformDirectory);
        }

        Texture2D asset = AssetDatabase.LoadAssetAtPath(platformPath, typeof(Texture2D)) as Texture2D;

        if (asset == null || force)
        {
            AssetDatabase.DeleteAsset(platformPath);
            AssetDatabase.CopyAsset(texturePath, platformPath);
            Debug.Log("Create texture : " + mainTexture.name + platform.postfix);

//			int width = mainTexture.width / 2;
//			int height = mainTexture.height / 2;
//
//			asset = new Texture2D(width, height);
//			for(int i = 0; i < width; i++)
//			{
//				for(int j = 0; j < height; j++)
//				{
//					asset.SetPixel(i,j, mainTexture.GetPixel(i*2,j*2));
//				}
//			}
//			asset.Apply();

            asset = tmEditorUtility.RescaleTexture(mainTexture, platform.scale / tmSettings.Instance.DefaultPlatform.scale);

            var bytes = asset.EncodeToPNG();
            System.IO.File.WriteAllBytes(platformPath, bytes);
            Object.DestroyImmediate(asset);

            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();

            AssetDatabase.ImportAsset(platformPath, ImportAssetOptions.ForceUpdate | ImportAssetOptions.DontDownloadFromCacheServer);

            asset = AssetDatabase.LoadAssetAtPath(platformPath, typeof(Texture2D)) as Texture2D;
        }

        return(asset);
    }
Beispiel #4
0
    public override bool Equals(object obj)
    {
        tmPlatform other = obj as tmPlatform;

        if (other != null)
        {
            return(this.guid.Equals(other.guid));
        }

        return(false);
    }
    public static string PathForPlatform(string path, tmPlatform platform)
    {
        if (!string.IsNullOrEmpty(path))
        {
            string directory = System.IO.Path.GetDirectoryName(path);
            if (!string.IsNullOrEmpty(directory))
            {
                directory += "/";
            }
            string fileName      = System.IO.Path.GetFileNameWithoutExtension(path);
            string fileExtension = System.IO.Path.GetExtension(path);

            fileName = PlatformlessPath(fileName);
            path     = directory + fileName + platform.postfix + fileExtension;
        }
        return(path);
    }
    public static List <tmResourceCollectionLink> GetAllResourceLinksFor(tmPlatform platform, List <tmResourceCollectionLink> _links)
    {
        HashSet <string> allCollectionsGuids = new HashSet <string>();

        for (int i = 0; i < _links.Count; ++i)
        {
            string collectionGuid = PlatformlessPath(_links[i].name).Replace(tmSettings.ResourceLinkPrefix, "");
            allCollectionsGuids.Add(collectionGuid);
        }


        List <tmResourceCollectionLink> platformLinks = new List <tmResourceCollectionLink>();

        foreach (string collectionGuid in allCollectionsGuids)
        {
            platformLinks.Add(ResourceLinkByGUID(collectionGuid + platform.postfix));
        }

        return(platformLinks);
    }
Beispiel #7
0
    public override void OnInspectorGUI()
    {
        //		base.OnInspectorGUI();

        tmPlatform targetPlatform = settings.TargetPlatform;

        if (PlatformPopup("Target platform", ref targetPlatform))
        {
            settings.TargetPlatform = targetPlatform;
            EditorUtility.SetDirty(settings);
            tmCollectionBuilder.ValidateResourceLinks();
        }


        tmPlatform currentPlatform = settings.CurrentPlatform;

        if (PlatformPopup("Current platform", ref currentPlatform))
        {
            settings.CurrentPlatform = currentPlatform;
            EditorUtility.SetDirty(settings);
        }


        tmPlatform defaultPlatform = settings.DefaultPlatform;

        if (PlatformPopup("Default platform", ref defaultPlatform))
        {
            settings.DefaultPlatform = defaultPlatform;
            EditorUtility.SetDirty(settings);
        }

        settings.autoRebuild                   = EditorGUILayout.Toggle("Auto Rebuild", settings.autoRebuild);
        settings.ForceStaticGeometry           = EditorGUILayout.Toggle("Force Static Geometry", settings.ForceStaticGeometry);
        settings.rebuildMesh                   = EditorGUILayout.Toggle("Rebuild mesh uv", settings.rebuildMesh);
        settings.batching                      = EditorGUILayout.Toggle("Batching", settings.batching);
        settings.isImmediateTextureLoadEnabled = EditorGUILayout.Toggle("Synchronous texture load enabled", settings.isImmediateTextureLoadEnabled);
        settings.isAtlasesPreloadEnabled       = EditorGUILayout.Toggle("Atlases preload on tmManager's Awake enabled", settings.isAtlasesPreloadEnabled);
        settings.isAtlasesUnloadEnabled        = EditorGUILayout.Toggle("Atlases unload on ref count = 0 enabled", settings.isAtlasesUnloadEnabled);

        EditorUtility.SetDirty(settings);
    }
    public static List <tmResourceCollectionLink> GetAllResourceLinks(tmPlatform platform)
    {
        tmResourceCollectionLink[] allLinks = Resources.LoadAll <tmResourceCollectionLink>(tmSettings.ResourceFolder);

        HashSet <string> allCollectionsGuids = new HashSet <string>();

        for (int i = 0; i < allLinks.Length; ++i)
        {
            string collectionGuid = PlatformlessPath(allLinks[i].name).Replace(tmSettings.ResourceLinkPrefix, "");
            allCollectionsGuids.Add(collectionGuid);
        }


        List <tmResourceCollectionLink> platformLinks = new List <tmResourceCollectionLink>();

        foreach (string collectionGuid in allCollectionsGuids)
        {
            platformLinks.Add(ResourceLinkByGUID(collectionGuid + platform.postfix));
        }

        return(platformLinks);
    }
    public override void OnInspectorGUI()
    {
        //		base.OnInspectorGUI();

        tmPlatform targetPlatform = settings.TargetPlatform;

        if (PlatformPopup("Target platform", ref targetPlatform))
        {
            settings.TargetPlatform = targetPlatform;
            EditorUtility.SetDirty(settings);
            tmCollectionBuilder.ValidateResourceLinks();
        }


        tmPlatform currentPlatform = settings.CurrentPlatform;

        if (PlatformPopup("Current platform", ref currentPlatform))
        {
            settings.CurrentPlatform = currentPlatform;
            EditorUtility.SetDirty(settings);
        }


        tmPlatform defaultPlatform = settings.DefaultPlatform;

        if (PlatformPopup("Default platform", ref defaultPlatform))
        {
            settings.DefaultPlatform = defaultPlatform;
            EditorUtility.SetDirty(settings);
        }

        settings.autoRebuild         = EditorGUILayout.Toggle("Auto Rebuild", settings.autoRebuild);
        settings.ForceStaticGeometry = EditorGUILayout.Toggle("Force Static Geometry", settings.ForceStaticGeometry);
        settings.rebuildMesh         = EditorGUILayout.Toggle("Rebuild mesh uv", settings.rebuildMesh);
        settings.batching            = EditorGUILayout.Toggle("Batching", settings.batching);

        EditorUtility.SetDirty(settings);
    }
Beispiel #10
0
    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);
    }
Beispiel #11
0
    public tmTextureCollectionPlatform GetPlatformCollectionWithFallback(string collectionGuid, tmPlatform platform)
    {
        tmTextureCollectionPlatform plTexColl = GetPlatformCollection(collectionGuid, platform);

        if (plTexColl == null)
        {
            foreach (var pl in tmSettings.allPlatfrorms)
            {
                plTexColl = GetPlatformCollection(collectionGuid, pl);
                if (plTexColl != null)
                {
                    return(plTexColl);
                }
            }
        }

        return(plTexColl);
    }