public static tk2dSpriteCollectionData CreateFromTexture(Texture texture, SpriteCollectionSize size, string[] names, Rect[] regions, Vector2[] anchors)
        {
            GameObject go = new GameObject("SpriteCollection");
            tk2dSpriteCollectionData sc = go.AddComponent<tk2dSpriteCollectionData>();
            sc.Transient = true;
            sc.version = tk2dSpriteCollectionData.CURRENT_VERSION;

            sc.invOrthoSize = 1.0f / size.orthoSize;
            sc.halfTargetHeight = size.targetHeight * 0.5f;
            sc.premultipliedAlpha = false;

            sc.material = new Material(Shader.Find("tk2d/BlendVertexColor"));
            sc.material.mainTexture = texture;
            sc.materials = new Material[1] { sc.material };
            sc.textures = new Texture[1] { texture };

            float scale = 2.0f * size.orthoSize / size.targetHeight;

            // Generate geometry
            sc.spriteDefinitions = new tk2dSpriteDefinition[regions.Length];
            for (int i = 0; i < regions.Length; ++i)
            {
                sc.spriteDefinitions[i] = CreateDefinitionForRegionInTexture(texture, scale, regions[i], anchors[i]);
                sc.spriteDefinitions[i].name = names[i];
            }

            foreach (var def in sc.spriteDefinitions)
                def.material = sc.material;

            return sc;
        }
Пример #2
0
        public static tk2dSpriteCollectionData CreateFromTexture(Texture2D texture, SpriteCollectionSize size, string[] names, Rect[] regions, Vector2[] anchors)
        {
            GameObject go = new GameObject("SpriteCollection");
            tk2dSpriteCollectionData sc = go.AddComponent <tk2dSpriteCollectionData>();

            sc.Transient = true;
            sc.version   = tk2dSpriteCollectionData.CURRENT_VERSION;

            sc.invOrthoSize       = 1.0f / size.orthoSize;
            sc.halfTargetHeight   = size.targetHeight * 0.5f;
            sc.premultipliedAlpha = false;

            string shaderName = "tk2d/BlendVertexColor";

#if UNITY_EDITOR
            {
                Shader ts        = Shader.Find(shaderName);
                string assetPath = UnityEditor.AssetDatabase.GetAssetPath(ts);
                if (assetPath.ToLower().IndexOf("/resources/") == -1)
                {
                    Debug.LogError("tk2dRuntimeSpriteCollection.CreateFromTexture - the tk2d/BlendVertexColor shader needs to be in a resources folder for this to work.\n" +
                                   "Please create a subdirectory named 'resources' where the shaders are, and move the BlendVertexColor shader into this directory.\n\n" +
                                   "eg. TK2DROOT/tk2d/Shaders/Resources/BlendVertexColor" +
                                   "\n\n\n\n\n");
                    return(null);
                }
            }
#endif

            sc.material             = new Material(Shader.Find(shaderName));
            sc.material.mainTexture = texture;
            sc.materials            = new Material[1] {
                sc.material
            };
            sc.textures = new Texture[1] {
                texture
            };

            float scale = 2.0f * size.orthoSize / size.targetHeight;

            // Generate geometry
            sc.spriteDefinitions = new tk2dSpriteDefinition[regions.Length];
            for (int i = 0; i < regions.Length; ++i)
            {
                sc.spriteDefinitions[i]      = CreateDefinitionForRegionInTexture(texture, scale, regions[i], anchors[i]);
                sc.spriteDefinitions[i].name = names[i];
            }

            foreach (var def in sc.spriteDefinitions)
            {
                def.material = sc.material;
            }

            return(sc);
        }
Пример #3
0
    /// <summary>
    /// Create a sprite (and gameObject) displaying the region of the texture specified.
    /// Use <see cref="tk2dSpriteCollectionData.CreateFromTexture"/> if you need to create a sprite collection
    /// with multiple sprites.
    /// </summary>
    public static GameObject CreateFromTexture <T>(Texture2D texture, tk2dRuntime.SpriteCollectionSize size, Rect region, Vector2 anchor) where T : tk2dBaseSprite
    {
        tk2dSpriteCollectionData data = tk2dRuntime.SpriteCollectionGenerator.CreateFromTexture(texture, size, region, anchor);

        if (data == null)
        {
            return(null);
        }
        GameObject spriteGo = new GameObject();

        tk2dBaseSprite.AddComponent <T>(spriteGo, data, 0);
        return(spriteGo);
    }
        public static tk2dSpriteCollectionData CreateFromTexture(Texture2D texture, SpriteCollectionSize size, string[] names, Rect[] regions, Vector2[] anchors)
        {
            GameObject go = new GameObject("SpriteCollection");
            tk2dSpriteCollectionData sc = go.AddComponent<tk2dSpriteCollectionData>();
            sc.Transient = true;
            sc.version = tk2dSpriteCollectionData.CURRENT_VERSION;

            sc.invOrthoSize = 1.0f / size.orthoSize;
            sc.halfTargetHeight = size.targetHeight * 0.5f;
            sc.premultipliedAlpha = false;

            string shaderName = "tk2d/BlendVertexColor";

            #if UNITY_EDITOR
            {
                Shader ts = Shader.Find(shaderName);
                string assetPath = UnityEditor.AssetDatabase.GetAssetPath(ts);
                if (assetPath.ToLower().IndexOf("/resources/") == -1)
                {
                    Debug.LogError("tk2dRuntimeSpriteCollection.CreateFromTexture - the tk2d/BlendVertexColor shader needs to be in a resources folder for this to work.\n" +
                        "Please create a subdirectory named 'resources' where the shaders are, and move the BlendVertexColor shader into this directory.\n\n"+
                        "eg. TK2DROOT/tk2d/Shaders/Resources/BlendVertexColor"+
                        "\n\n\n\n\n");
                    return null;
                }
            }
            #endif

            sc.material = new Material(Shader.Find(shaderName));
            sc.material.mainTexture = texture;
            sc.materials = new Material[1] { sc.material };
            sc.textures = new Texture[1] { texture };

            float scale = 2.0f * size.orthoSize / size.targetHeight;

            // Generate geometry
            sc.spriteDefinitions = new tk2dSpriteDefinition[regions.Length];
            for (int i = 0; i < regions.Length; ++i)
            {
                sc.spriteDefinitions[i] = CreateDefinitionForRegionInTexture(texture, scale, regions[i], anchors[i]);
                sc.spriteDefinitions[i].name = names[i];
            }

            foreach (var def in sc.spriteDefinitions)
                def.material = sc.material;

            return sc;
        }
        public static tk2dSpriteCollectionData CreateFromTexture(Texture2D texture, SpriteCollectionSize size, string[] names, Rect[] regions, Vector2[] anchors)
        {
            GameObject go = new GameObject("SpriteCollection");
            tk2dSpriteCollectionData sc = go.AddComponent <tk2dSpriteCollectionData>();

            sc.Transient = true;
            sc.version   = tk2dSpriteCollectionData.CURRENT_VERSION;

            sc.invOrthoSize       = 1.0f / size.orthoSize;
            sc.halfTargetHeight   = size.targetHeight * 0.5f;
            sc.premultipliedAlpha = false;

            sc.material             = new Material(Shader.Find("tk2d/BlendVertexColor"));
            sc.material.mainTexture = texture;
            sc.materials            = new Material[1] {
                sc.material
            };
            sc.textures = new Texture[1] {
                texture
            };

            float scale = 2.0f * size.orthoSize / size.targetHeight;

            // Generate geometry
            sc.spriteDefinitions = new tk2dSpriteDefinition[regions.Length];
            for (int i = 0; i < regions.Length; ++i)
            {
                sc.spriteDefinitions[i]      = CreateDefinitionForRegionInTexture(texture, scale, regions[i], anchors[i]);
                sc.spriteDefinitions[i].name = names[i];
            }

            foreach (var def in sc.spriteDefinitions)
            {
                def.material = sc.material;
            }

            return(sc);
        }
 public static tk2dSpriteCollectionData CreateFromTexture(Texture texture, SpriteCollectionSize size, string[] names, Rect[] regions, Vector2[] anchors)
 {
     Vector2 textureDimensions = new Vector2( texture.width, texture.height );
     return CreateFromTexture( texture, size, textureDimensions, names, regions, null, anchors, null );
 }
 public static tk2dSpriteCollectionData CreateFromTexture(Texture texture, SpriteCollectionSize size, Rect region, Vector2 anchor)
 {
     return CreateFromTexture(texture, size, new string[] { "Unnamed" }, new Rect[] { region },  new Vector2[] { anchor } );
 }
        public static tk2dSpriteCollectionData CreateFromTexture(
			Texture texture,
			SpriteCollectionSize size,
			Vector2 textureDimensions,
			string[] names,
			Rect[] regions,
			Rect[] trimRects, Vector2[] anchors,
			bool[] rotated)
        {
            GameObject go = new GameObject("SpriteCollection");
            tk2dSpriteCollectionData sc = go.AddComponent<tk2dSpriteCollectionData>();
            sc.Transient = true;
            sc.version = tk2dSpriteCollectionData.CURRENT_VERSION;

            sc.invOrthoSize = 1.0f / size.orthoSize;
            sc.halfTargetHeight = size.targetHeight * 0.5f;
            sc.premultipliedAlpha = false;

            string shaderName = "tk2d/BlendVertexColor";

            #if UNITY_EDITOR
            {
                Shader ts = Shader.Find(shaderName);
                string assetPath = UnityEditor.AssetDatabase.GetAssetPath(ts);
                if (assetPath.ToLower().IndexOf("/resources/") == -1) {
                    UnityEditor.EditorUtility.DisplayDialog("tk2dRuntimeSpriteCollection Error",
                        "The tk2d/BlendVertexColor shader needs to be in a resources folder for this to work.\n\n" +
                        "Create a subdirectory named 'resources' where the shaders are, and move the BlendVertexColor shader into this directory.\n\n"+
                        "eg. TK2DROOT/tk2d/Shaders/Resources/BlendVertexColor\n\n" +
                        "Be sure to do this from within Unity and not from Explorer/Finder.",
                        "Ok");
                    return null;
                }
            }
            #endif

            sc.material = new Material(Shader.Find(shaderName));
            sc.material.mainTexture = texture;
            sc.materials = new Material[1] { sc.material };
            sc.textures = new Texture[1] { texture };
            sc.buildKey = UnityEngine.Random.Range(0, Int32.MaxValue);

            float scale = 2.0f * size.orthoSize / size.targetHeight;
            Rect trimRect = new Rect(0, 0, 0, 0);

            // Generate geometry
            sc.spriteDefinitions = new tk2dSpriteDefinition[regions.Length];
            for (int i = 0; i < regions.Length; ++i) {
                bool defRotated = (rotated != null) ? rotated[i] : false;
                if (trimRects != null) {
                    trimRect = trimRects[i];
                }
                else {
                    if (defRotated) trimRect.Set( 0, 0, regions[i].height, regions[i].width );
                    else trimRect.Set( 0, 0, regions[i].width, regions[i].height );
                }
                sc.spriteDefinitions[i] = CreateDefinitionForRegionInTexture(names[i], textureDimensions, scale, regions[i], trimRect, anchors[i], defRotated);
            }

            foreach (var def in sc.spriteDefinitions) {
                def.material = sc.material;
            }

            return sc;
        }
 /// <summary>
 /// Create a sprite collection at runtime from a texture and user specified regions.
 /// Please ensure that names, regions & anchor arrays have same dimension.
 /// Use <see cref="tk2dBaseSprite.CreateFromTexture"/> if you need to create only one sprite from a texture.
 /// </summary>
 public static tk2dSpriteCollectionData CreateFromTexture(Texture2D texture, tk2dRuntime.SpriteCollectionSize size, string[] names, Rect[] regions, Vector2[] anchors)
 {
     return(tk2dRuntime.SpriteCollectionGenerator.CreateFromTexture(texture, size, names, regions, anchors));
 }
Пример #10
0
 public static tk2dSpriteCollectionData CreateFromTexture(Texture2D texture, SpriteCollectionSize size, Rect region, Vector2 anchor)
 {
     return(CreateFromTexture(texture, size, new string[] { "Unnamed" }, new Rect[] { region }, new Vector2[] { anchor }));
 }
Пример #11
0
 /// <summary>
 /// Create a sprite (and gameObject) displaying the region of the texture specified.
 /// Use <see cref="tk2dSpriteCollectionData.CreateFromTexture"/> if you need to create a sprite collection
 /// with multiple sprites.
 /// Convenience alias of tk2dBaseSprite.CreateFromTexture<tk2dSprite>(...)
 /// </summary>
 public static GameObject CreateFromTexture(Texture2D texture, tk2dRuntime.SpriteCollectionSize size, Rect region, Vector2 anchor)
 {
     return(tk2dBaseSprite.CreateFromTexture <tk2dSprite>(texture, size, region, anchor));
 }
Пример #12
0
 /// <summary>
 /// Create a sprite collection at runtime from a texturepacker exported file.
 /// Ensure this is exported using the "2D Toolkit" export mode in TexturePacker.
 /// You can find this exporter in Assets/TK2DROOT/tk2d/Goodies/TexturePacker/Exporter
 /// You can use also use this to load sprite collections at runtime.
 /// </summary>
 public static tk2dSpriteCollectionData CreateFromTexturePacker(tk2dRuntime.SpriteCollectionSize size, string texturePackerData, Texture texture)
 {
     return(tk2dRuntime.SpriteCollectionGenerator.CreateFromTexturePacker(size, texturePackerData, texture));
 }
Пример #13
0
        public static tk2dSpriteCollectionData CreateFromTexture(
            Texture texture,
            SpriteCollectionSize size,
            Vector2 textureDimensions,
            string[] names,
            Rect[] regions,
            Rect[] trimRects, Vector2[] anchors,
            bool[] rotated)
        {
            GameObject go = new GameObject("SpriteCollection");
            tk2dSpriteCollectionData sc = go.AddComponent <tk2dSpriteCollectionData>();

            sc.Transient = true;
            sc.version   = tk2dSpriteCollectionData.CURRENT_VERSION;

            sc.invOrthoSize       = 1.0f / size.orthoSize;
            sc.halfTargetHeight   = size.targetHeight * 0.5f;
            sc.premultipliedAlpha = false;

            string shaderName = "tk2d/BlendVertexColor";

#if UNITY_EDITOR
            {
                Shader ts        = Shader.Find(shaderName);
                string assetPath = UnityEditor.AssetDatabase.GetAssetPath(ts);
                if (assetPath.ToLower().IndexOf("/resources/") == -1)
                {
                    UnityEditor.EditorUtility.DisplayDialog("tk2dRuntimeSpriteCollection Error",
                                                            "The tk2d/BlendVertexColor shader needs to be in a resources folder for this to work.\n\n" +
                                                            "Create a subdirectory named 'resources' where the shaders are, and move the BlendVertexColor shader into this directory.\n\n" +
                                                            "eg. TK2DROOT/tk2d/Shaders/Resources/BlendVertexColor\n\n" +
                                                            "Be sure to do this from within Unity and not from Explorer/Finder.",
                                                            "Ok");
                    return(null);
                }
            }
#endif

            sc.material             = new Material(Shader.Find(shaderName));
            sc.material.mainTexture = texture;
            sc.materials            = new Material[1] {
                sc.material
            };
            sc.textures = new Texture[1] {
                texture
            };
            sc.buildKey = UnityEngine.Random.Range(0, Int32.MaxValue);

            float scale    = 2.0f * size.orthoSize / size.targetHeight;
            Rect  trimRect = new Rect(0, 0, 0, 0);

            // Generate geometry
            sc.spriteDefinitions = new tk2dSpriteDefinition[regions.Length];
            for (int i = 0; i < regions.Length; ++i)
            {
                bool defRotated = (rotated != null) ? rotated[i] : false;
                if (trimRects != null)
                {
                    trimRect = trimRects[i];
                }
                else
                {
                    if (defRotated)
                    {
                        trimRect.Set(0, 0, regions[i].height, regions[i].width);
                    }
                    else
                    {
                        trimRect.Set(0, 0, regions[i].width, regions[i].height);
                    }
                }
                sc.spriteDefinitions[i] = CreateDefinitionForRegionInTexture(names[i], textureDimensions, scale, regions[i], trimRect, anchors[i], defRotated);
            }

            foreach (var def in sc.spriteDefinitions)
            {
                def.material = sc.material;
            }

            return(sc);
        }
Пример #14
0
        public static tk2dSpriteCollectionData CreateFromTexture(Texture texture, SpriteCollectionSize size, string[] names, Rect[] regions, Vector2[] anchors)
        {
            Vector2 textureDimensions = new Vector2(texture.width, texture.height);

            return(CreateFromTexture(texture, size, textureDimensions, names, regions, null, anchors, null));
        }