Ejemplo n.º 1
0
    public override void OnImportAsset(AssetImportContext ase)
    {
        switch (Pivot)
        {
        case PivotPositionEnum.TopLeft:
            PivotPosition = new Vector2(0, 1);
            break;

        case PivotPositionEnum.TopCenter:
            PivotPosition = new Vector2(.5f, 1);
            break;

        case PivotPositionEnum.TopRight:
            PivotPosition = new Vector2(1, 1);
            break;

        case PivotPositionEnum.MidleLeft:
            PivotPosition = new Vector2(0, .5f);
            break;

        case PivotPositionEnum.MiddleCenter:
            PivotPosition = new Vector2(.5f, .5f);
            break;

        case PivotPositionEnum.MiddleRight:
            PivotPosition = new Vector2(1, .5f);
            break;

        case PivotPositionEnum.BottomLeft:
            PivotPosition = new Vector2(0, 0);
            break;

        case PivotPositionEnum.BottomCenter:
            PivotPosition = new Vector2(.5f, 0);
            break;

        case PivotPositionEnum.BottomRight:
            PivotPosition = new Vector2(1, 0);
            break;
        }

        Aseprite = new Aseprite(File.ReadAllBytes(ase.assetPath), MergedLayersImportOption,
                                SeparateLayersImportOption, PivotPosition, Path.GetFileNameWithoutExtension(ase.assetPath));

        if ((int)SeparateLayersImportOption > 0)
        {
            for (var l = 0; l < Aseprite.Layers.Length; l++)
            {
                ase.AddObjectToAsset(Aseprite.Layers[l].Texture.name, Aseprite.Layers[l].Texture);
                if ((int)SeparateLayersImportOption > 1)
                {
                    foreach (var sprite in Aseprite.Layers[l].Sprites)
                    {
                        ase.AddObjectToAsset(sprite.name, sprite);
                    }
                    if ((int)SeparateLayersImportOption > 2)
                    {
                        AddAnimation($"Layer_{l}_", Aseprite.Layers[l].Sprites, ase);
                    }
                }
            }
        }

        if (Aseprite.ColorPalette != null)
        {
            ase.AddObjectToAsset("Palette", Aseprite.ColorPalette);
        }

        if ((int)MergedLayersImportOption > 0)
        {
            ase.AddObjectToAsset(Aseprite.MergedLayer.Texture.name, Aseprite.MergedLayer.Texture);
            ase.SetMainObject(Aseprite.MergedLayer.Texture);
            if ((int)MergedLayersImportOption > 1)
            {
                foreach (var sprite in Aseprite.MergedLayer.Sprites)
                {
                    ase.AddObjectToAsset(sprite.name, sprite);
                }
                if ((int)MergedLayersImportOption > 2)
                {
                    AddAnimation("", Aseprite.MergedLayer.Sprites, ase);
                }
            }
        }
        else
        {
            if (Aseprite.ColorPalette != null)
            {
                ase.SetMainObject(Aseprite.ColorPalette);
            }
        }
    }