public Sprite[] GetSprites(Texture2D texture, Vector2 spriteSize, PiskelSpriteSettings spriteSettings) { Vector2 pivot; if (spriteSettings.pivot == PiskelSpriteSettings.PivotType.Custom) { pivot = spriteSettings.customPivotValue; } else { pivot = PivotTypeToValue(spriteSettings.pivot); } var size = layout.Select(a => a.array.Length).Sum(); var sprites = new Sprite[size]; for (int a = 0; a < layout.Length; a++) { for (int b = 0; b < layout[a].array.Length; b++) { var index = layout[a].array[b]; sprites[index] = Sprite.Create(texture, new Rect( new Vector2(a * spriteSize.x, b * spriteSize.y), spriteSize), pivot, spriteSettings.pixelsPerUnits); } } return(sprites); }
public static GameObject CreateFromPiskelFile(string piskelJson, PiskelSpriteSettings spriteSettings) { var piskel = PiskelDocument.FromPiskelJson(piskelJson); var root = new GameObject(piskel.name); for (int i = 0; i < piskel.layers.Length; i++) { var piskelLayer = piskel.layers[i]; var layer = new GameObject(piskelLayer.name); layer.transform.parent = root.transform; var player = layer.AddComponent <PiskelRuntimePlayer>(); player.frameRate = piskel.fps; piskel.GenerateTexturesAndSpritesForLayer(i, out player.textures, out player.sprites, spriteSettings); } return(root); }
public void GenerateTexturesAndSpritesForLayer(int layer, out Texture2D[] textures, out Sprite[] sprites, PiskelSpriteSettings spriteSettings) { layers[layer].GenerateTexturesAndSprites(new Vector2(width, height), out textures, out sprites, spriteSettings); }
public void GenerateTexturesAndSprites(Vector2 spriteSize, out Texture2D[] textures, out Sprite[] sprites, PiskelSpriteSettings spriteSettings) { textures = new Texture2D[chunks.Length]; sprites = new Sprite[frameCount]; int spriteId = 0; for (var i = 0; i < chunks.Length; i++) { var chunk = chunks[i]; textures[i] = chunk.GetTexture(); textures[i].name = $"{name}_Tex{i}"; foreach (var sprite in chunk.GetSprites(textures[i], spriteSize, spriteSettings)) { sprite.name = $"{name}_{spriteId}"; sprites[spriteId++] = sprite; } } }