Example #1
0
        private void GenerateTexture(string assetPath)
        {
            SourceTextureInformation textureInformation = new SourceTextureInformation()
            {
                containsAlpha = true,
                hdr           = false,
                height        = textureHeight,
                width         = textureWidth
            };

            TextureImporterPlatformSettings platformSettings = new TextureImporterPlatformSettings()
            {
                overridden = false
            };

            TextureGenerationSettings settings = new TextureGenerationSettings()
            {
                assetPath                = assetPath,
                spriteImportData         = ConvertAseFileSpriteImportDataToUnity(SpriteImportData),
                textureImporterSettings  = TextureImportSettings.ToImporterSettings(),
                enablePostProcessor      = false,
                sourceTextureInformation = textureInformation,
                qualifyForSpritePacking  = true,
                platformSettings         = platformSettings,
                spritePackingTag         = "aseprite",
                secondarySpriteTextures  = new SecondarySpriteTexture[0]
            };


            TextureGenerationOutput output = TextureGenerator.GenerateTexture(settings, new Unity.Collections.NativeArray <Color32>(atlas.GetPixels32(), Unity.Collections.Allocator.Temp));

            Texture   = output.texture;
            thumbnail = output.thumbNail;
            sprites   = output.sprites;
        }
Example #2
0
    private static UnityTexture2D GetTextureToSlice(string path)
    {
        TextureImporter          ti     = AssetImporter.GetAtPath(path) as TextureImporter;
        MethodInfo               method = ti.GetType().GetMethod("GetSourceTextureInformation", BindingFlags.Instance | BindingFlags.NonPublic);
        var                      val    = method.Invoke(ti, null);
        SourceTextureInformation info   = val as SourceTextureInformation;
        int                      width  = info.width;
        int                      height = info.height;

        UnityTexture2D tex = AssetDatabase.LoadAssetAtPath <UnityTexture2D>(path);
        // we want to slice based on the original texture slice. Upscale the imported texture
        var texture = CreateTemporaryDuplicate(tex, width, height);

        if (texture != null)
        {
            texture.filterMode = tex.filterMode;
        }
        return(texture);
    }
        protected override YAMLMappingNode ExportYAMLRoot(IExportContainer container)
        {
            YAMLMappingNode node = base.ExportYAMLRoot(container);

            node.AddSerializedVersion(ToSerializedVersion(container.ExportVersion));

            YAMLMappingNode mipmap = new YAMLMappingNode();

            mipmap.Add(MipMapModeName, (int)MipMapMode);
            mipmap.Add(EnableMipMapName, EnableMipMap);
            if (HasSRGBTexture(container.ExportVersion))
            {
                mipmap.Add(SRGBTextureName, SRGBTexture);
            }
            if (HasLinearTexture(container.ExportVersion))
            {
                mipmap.Add(LinearTextureName, LinearTexture);
            }
            if (HasCorrectGamma(container.ExportVersion))
            {
                mipmap.Add(CorrectGammaName, CorrectGamma);
            }
            mipmap.Add(FadeOutName, FadeOut);
            mipmap.Add(BorderMipMapName, BorderMipMap);
            if (HasMipMapsPreserveCoverage(container.ExportVersion))
            {
                mipmap.Add(MipMapsPreserveCoverageName, MipMapsPreserveCoverage);
                mipmap.Add(AlphaTestReferenceValueName, AlphaTestReferenceValue);
            }
            mipmap.Add(MipMapFadeDistanceStartName, MipMapFadeDistanceStart);
            mipmap.Add(MipMapFadeDistanceEndName, MipMapFadeDistanceEnd);
            node.Add(MipmapsName, mipmap);

            YAMLMappingNode bumpmap = new YAMLMappingNode();

            bumpmap.Add(ConvertToNormalMapName, ConvertToNormalMap);
            if (HasExternalNormalMap(container.ExportVersion))
            {
                bumpmap.Add(ExternalNormalMapName, ExternalNormalMap);
            }
            bumpmap.Add(HeightScaleName, HeightScale);
            bumpmap.Add(NormalMapFilterName, (int)NormalMapFilter);
            node.Add(BumpmapName, bumpmap);

            if (HasIsReadable(container.ExportVersion))
            {
                node.Add(IsReadableName, IsReadable);
            }
            if (HasStreamingMipmaps(container.ExportVersion))
            {
                node.Add(StreamingMipmapsName, StreamingMipmaps);
                node.Add(StreamingMipmapsPriorityName, StreamingMipmapsPriority);
            }

            node.Add(GrayScaleToAlphaName, GrayScaleToAlpha);
            node.Add(GenerateCubemapName, (int)GenerateCubemap);
            if (HasCubemapConvolution(container.ExportVersion))
            {
                node.Add(CubemapConvolutionName, CubemapConvolution);
            }
            if (HasCubemapConvolutionSteps(container.ExportVersion))
            {
                node.Add(CubemapConvolutionStepsName, CubemapConvolutionSteps);
                node.Add(CubemapConvolutionExponentName, CubemapConvolutionExponent);
            }
            if (HasSeamlessCubemap(container.ExportVersion))
            {
                node.Add(SeamlessCubemapName, SeamlessCubemap);
            }

            node.Add(TextureFormatName, (int)TextureFormat);
            if (HasRecommendedTextureFormat(container.ExportVersion) && RecommendedTextureFormatFirst(container.ExportVersion))
            {
                node.Add(RecommendedTextureFormatName, RecommendedTextureFormat);
            }

            node.Add(MaxTextureSizeName, MaxTextureSize);
            node.Add(TextureSettingsName, TextureSettings.ExportYAML(container));
            node.Add(NPOTScaleName, (int)NPOTScale);
            if (HasLightmap(container.ExportVersion))
            {
                node.Add(LightmapName, Lightmap);
            }
            if (HasRGBM(container.ExportVersion))
            {
                node.Add(RGBMName, RGBM);
            }
            if (HasCompressionQuality(container.ExportVersion))
            {
                node.Add(CompressionQualityName, CompressionQuality);
            }
            if (HasAllowsAlphaSplitting(container.ExportVersion))
            {
                node.Add(AllowsAlphaSplittingName, AllowsAlphaSplitting);
            }
            if (HasSprite(container.ExportVersion))
            {
                node.Add(SpriteModeName, (int)SpriteMode);
                node.Add(SpriteExtrudeName, SpriteExtrude);
                node.Add(SpriteMeshTypeName, (int)SpriteMeshType);
                node.Add(AlignmentName, (int)Alignment);
                node.Add(SpritePivotName, SpritePivot.ExportYAML(container));
            }
            if (HasSprite(container.ExportVersion) && SpritePixelsToUnitsFirst(container.ExportVersion))
            {
                node.Add(SpritePixelsToUnitsName, SpritePixelsToUnits);
            }
            if (HasSpriteBorder(container.ExportVersion))
            {
                node.Add(SpriteBorderName, SpriteBorder.ExportYAML(container));
            }
            if (HasSprite(container.ExportVersion) && !SpritePixelsToUnitsFirst(container.ExportVersion))
            {
                node.Add(SpritePixelsToUnitsName, SpritePixelsToUnits);
            }
            if (HasSpriteGenerateFallbackPhysicsShape(container.ExportVersion))
            {
                node.Add(SpriteGenerateFallbackPhysicsShapeName, SpriteGenerateFallbackPhysicsShape);
            }
            if (HasAlphaUsage(container.ExportVersion))
            {
                node.Add(AlphaUsageName, (int)AlphaUsage);
            }
            if (HasAlphaIsTransparency(container.ExportVersion))
            {
                node.Add(AlphaIsTransparencyName, AlphaIsTransparency);
            }
            if (HasSpriteTessellationDetail(container.ExportVersion))
            {
                node.Add(SpriteTessellationDetailName, SpriteTessellationDetail);
            }
            if (HasTextureType(container.ExportVersion))
            {
                node.Add(TextureTypeName, (int)TextureType);
            }
            if (HasRecommendedTextureFormat(container.ExportVersion) && !RecommendedTextureFormatFirst(container.ExportVersion))
            {
                node.Add(RecommendedTextureFormatName, RecommendedTextureFormat);
            }
            if (HasSourceTextureInformation(container.ExportVersion))
            {
                node.Add(SourceTextureInformationName, SourceTextureInformation.ExportYAML(container));
            }
            if (HasTextureShape(container.ExportVersion))
            {
                node.Add(TextureShapeName, (int)TextureShape);
            }
            if (HasSingleChannelComponent(container.ExportVersion))
            {
                node.Add(SingleChannelComponentName, SingleChannelComponent);
            }
            if (HasMaxTextureSizeSet(container.ExportVersion))
            {
                node.Add(MaxTextureSizeSetName, MaxTextureSizeSet);
                node.Add(CompressionQualitySetName, CompressionQualitySet);
                node.Add(TextureFormatSetName, TextureFormatSet);
            }
            if (HasPlatformSettings(container.ExportVersion))
            {
                node.Add(GetPlatformSettingsName(container.ExportVersion), PlatformSettings.ExportYAML(container));
            }
            if (HasSprite(container.ExportVersion))
            {
                node.Add(SpriteSheetName, SpriteSheet.ExportYAML(container));
                node.Add(SpritePackingTagName, SpritePackingTag);
            }

            /*if (HasOutput(container.ExportVersion))
             * {
             *      node.Add(OutputName, Output.ExportYAML(container));
             * }*/
            if (HasPSDRemoveMatte(container.ExportVersion))
            {
                node.Add(PSDRemoveMatteName, PSDRemoveMatte);
                node.Add(PSDShowRemoveMatteOptionName, PSDShowRemoveMatteOption);
            }
            PostExportYAML(container, node);
            return(node);
        }
        public override void Write(AssetWriter writer)
        {
            base.Write(writer);

            bool isBoolFlags = IsBoolFlags(writer.Version);

            writer.Write((int)MipMapMode);
            if (isBoolFlags)
            {
                writer.Write(EnableMipMapBool);
                writer.Write(CorrectGammaBool);
                writer.Write(FadeOutBool);
                writer.Write(BorderMipMapBool);
            }
            else
            {
                writer.Write(EnableMipMap);
                if (HasSRGBTexture(writer.Version))
                {
                    writer.Write(SRGBTexture);
                }
                if (HasLinearTexture(writer.Version))
                {
                    writer.Write(LinearTexture);
                }
                if (HasCorrectGamma(writer.Version))
                {
                    writer.Write(CorrectGamma);
                }
                writer.Write(FadeOut);
                writer.Write(BorderMipMap);
            }

            if (HasMipMapsPreserveCoverage(writer.Version))
            {
                writer.Write(MipMapsPreserveCoverage);
                writer.Write(AlphaTestReferenceValue);
            }

            writer.Write(MipMapFadeDistanceStart);
            writer.Write(MipMapFadeDistanceEnd);
            if (isBoolFlags)
            {
                writer.Write(ConvertToNormalMapBool);
                if (HasIsReadable(writer.Version))
                {
                    writer.Write(IsReadableBool);
                }
            }
            else
            {
                writer.Write(ConvertToNormalMap);
                writer.Write(ExternalNormalMap);
                if (IsReadableFirst(writer.Version))
                {
                    writer.Write(IsReadable);
                    writer.AlignStream();
                }
            }

            writer.Write(HeightScale);
            writer.Write((int)NormalMapFilter);
            if (!IsReadableFirst(writer.Version))
            {
                writer.Write(IsReadable);
            }
            if (HasStreamingMipmaps(writer.Version))
            {
                writer.Write(StreamingMipmaps);
                writer.Write(StreamingMipmapsPriority);
            }
            if (isBoolFlags)
            {
                writer.Write(GrayScaleToAlphaBool);
            }
            else
            {
                writer.Write(GrayScaleToAlpha);
            }
            if (IsAlignGrayScaleToAlpha(writer.Version))
            {
                writer.AlignStream();
            }

            writer.Write((int)GenerateCubemap);
            if (HasCubemapConvolution(writer.Version))
            {
                writer.Write(CubemapConvolution);
            }
            if (HasCubemapConvolutionSteps(writer.Version))
            {
                writer.Write(CubemapConvolutionSteps);
                writer.Write(CubemapConvolutionExponent);
            }
            if (HasSeamlessCubemap(writer.Version))
            {
                writer.Write(SeamlessCubemap);
            }

            writer.Write((int)TextureFormat);
            if (IsAlignTextureFormat(writer.Version))
            {
                writer.AlignStream();
            }

            if (HasRecommendedTextureFormat(writer.Version) && RecommendedTextureFormatFirst(writer.Version))
            {
                writer.Write(RecommendedTextureFormat);
                writer.AlignStream();
            }

            writer.Write(MaxTextureSize);
            TextureSettings.Write(writer);
            writer.Write((int)NPOTScale);
            if (HasLightmap(writer.Version))
            {
                writer.Write(Lightmap);
            }
            if (HasRGBM(writer.Version))
            {
                writer.Write(RGBM);
            }
            if (HasCompressionQuality(writer.Version))
            {
                writer.Write(CompressionQuality);
            }
            if (HasAllowsAlphaSplitting(writer.Version))
            {
                writer.Write(AllowsAlphaSplitting);
                writer.AlignStream();
            }
            if (HasSprite(writer.Version))
            {
                writer.Write((int)SpriteMode);
                writer.Write(SpriteExtrude);
                writer.Write((int)SpriteMeshType);
                writer.Write((int)Alignment);
                SpritePivot.Write(writer);
            }
            if (HasSprite(writer.Version) && SpritePixelsToUnitsFirst(writer.Version))
            {
                writer.Write(SpritePixelsToUnits);
            }
            if (HasSpriteBorder(writer.Version))
            {
                SpriteBorder.Write(writer);
            }
            if (HasSprite(writer.Version) && !SpritePixelsToUnitsFirst(writer.Version))
            {
                writer.Write(SpritePixelsToUnits);
            }
            if (HasSpriteGenerateFallbackPhysicsShape(writer.Version))
            {
                writer.Write(SpriteGenerateFallbackPhysicsShape);
            }
            if (HasAlphaUsage(writer.Version))
            {
                writer.Write((int)AlphaUsage);
            }
            if (HasAlphaIsTransparency(writer.Version))
            {
                writer.Write(AlphaIsTransparency);
            }
            if (HasSpriteTessellationDetail(writer.Version))
            {
                writer.Write(SpriteTessellationDetail);
            }
            if (HasTextureType(writer.Version))
            {
                writer.Write((int)TextureType);
            }
            if (HasRecommendedTextureFormat(writer.Version) && !RecommendedTextureFormatFirst(writer.Version))
            {
                writer.Write(RecommendedTextureFormat);
            }
            if (HasSourceTextureInformation(writer.Version))
            {
                SourceTextureInformation.Write(writer);
                writer.AlignStream();
            }
            if (HasTextureShape(writer.Version))
            {
                writer.Write((int)TextureShape);
            }
            if (HasSingleChannelComponent(writer.Version))
            {
                writer.Write(SingleChannelComponent);
            }
            if (HasMaxTextureSizeSet(writer.Version))
            {
                writer.Write(MaxTextureSizeSet);
                writer.Write(CompressionQualitySet);
                writer.Write(TextureFormatSet);
            }
            writer.AlignStream();

            if (HasPlatformSettings(writer.Version))
            {
                PlatformSettings.Write(writer);
            }
            if (HasSprite(writer.Version))
            {
                SpriteSheet.Write(writer);
                writer.Write(SpritePackingTag);
            }
            if (HasOutput(writer.Version))
            {
                Output.Write(writer);
            }
            if (HasPSDRemoveMatte(writer.Version))
            {
                writer.Write(PSDRemoveMatte);
                writer.Write(PSDShowRemoveMatteOption);
            }
            writer.AlignStream();

            PostWrite(writer);
        }