public List <GameObject> UpdateOutlines() { List <List <Vector3> > linesPoints = SpriteBorder.Generate(gameObject, lineOffset); List <GameObject> createdLines = new List <GameObject>(); int lineIdx = 0; int linesBeforeCreating = linesToUpdate.Count; foreach (var linePoints in linesPoints) { foreach (var part in lineParts) { LineRenderer line; if (lineIdx < linesBeforeCreating) { line = linesToUpdate[lineIdx]; lineIdx++; } else { if (part.overrideGameObject != null) { line = Instantiate(prefabWithLineRenderer, transform.position, transform.rotation, transform).GetComponent <LineRenderer>(); } else { line = Instantiate(prefabWithLineRenderer, transform.position, transform.rotation, transform).GetComponent <LineRenderer>(); } linesToUpdate.Add(line); } createdLines.Add(line.gameObject); int startToRemove = (int)(linePoints.Count * part.LineStartNormalized); int endtoRemoveStartId = (int)(linePoints.Count * (part.LineEndNormalized)); int endToRemove = linePoints.Count - endtoRemoveStartId; List <Vector3> lineCut = new List <Vector3>(linePoints); if (part.LineStartNormalized != 0) { lineCut.RemoveRange(0, startToRemove); } if (part.LineEndNormalized != 1) { lineCut.RemoveRange(endtoRemoveStartId - startToRemove, endToRemove); } line.positionCount = lineCut.Count; line.SetPositions(lineCut.ToArray()); } } return(createdLines); }
void GenerateShapesBasedOnMesh() { var selected = Selection.gameObjects; foreach (var gameObject in selected) { string path = AssetDatabase.GetAssetPath(gameObject); SVGImporter importer = AssetImporter.GetAtPath(path) as SVGImporter; if (importer != null) { var sprite = (Sprite)importer.targetObject; var outlines = SpriteBorder.Generate(gameObject, Vector3.zero); Rect rect = sprite.rect; Bounds bounds = sprite.bounds; List <Vector2[]> newOutlines = new List <Vector2[]>(outlines.Count); foreach (var outline in outlines) { List <Vector2> converterOutline = new List <Vector2>(outline.Count); foreach (var v in outline) { converterOutline.Add(new Vector2(v.x * (rect.width / bounds.size.x), v.y * (rect.height / bounds.size.y))); } newOutlines.Add(converterOutline.ToArray()); } OverwriteOutline(sprite, 0, newOutlines); Debug.Log(outlines.Count + " -> outlines.Count"); //Vector2 outlines //Selection.activeObject = sprite; //spriteWindow = Type.GetType("UnityEditor.SpriteEditorWindow, UnityEditor", true); //var getWindowMethod = spriteWindow.GetMethod("GetWindow", BindingFlags.Public | BindingFlags.Static); //getWindowMethod.Invoke(null, null); ////if (spriteWindowInstance == null) //spriteWindowInstance = spriteWindow.GetField("s_Instance").GetValue(null); //SpriteWindowMethod("OnSelectionChange"); ////string selecionPath = SpriteWindowMethod("GetSelectionAssetPath") as string; ////Choose custom outline mode //SpriteWindowMethod("SetupModule", (object)1); //Type spritePhysicsShapeModule = Type.GetType("UnityEditor.U2D.SpritePhysicsShapeModule, UnityEditor", true); //object outlineWindowInstance = SpriteWindowField("m_CurrentModule"); //Type spriteOutlineModule = spritePhysicsShapeModule.BaseType; ////Method(Type.GetType("UnityEditor.Experimental.U2D.SpriteEditorModuleBase, UnityEditor", true), outlineWindowInstance, "OnModuleActivate", null); //object m_Outline = Field(spriteOutlineModule, outlineWindowInstance, "m_Outline"); //Type spriteOutlineModel = Type.GetType("UnityEditor.U2D.SpriteOutlineModel, UnityEditor", true); //object m_SpriteOutlineList = spriteOutlineModel.InvokeMember("", BindingFlags.GetProperty, null, m_Outline, new object[] { 0 }); //Type SpriteOutlineList = Type.GetType("UnityEditor.U2D.SpriteOutlineList, UnityEditor", true); //SpriteOutlineList.GetField("m_TessellationDetail", bf).SetValue(m_SpriteOutlineList, 0.3f); ////3. this.SetupShapeEditorOutline(this.m_Selected); //SpriteRect m_Selected = spriteOutlineModule.GetField("m_Selected", bf).GetValue(outlineWindowInstance) as SpriteRect; //Method(spriteOutlineModule, outlineWindowInstance, "SetupShapeEditorOutline", m_Selected); //List<Vector2[]> outlines = new List<Vector2[]>((List<Vector2[]>)Method(SpriteOutlineList, m_SpriteOutlineList, "ToListVector")); //float tessellation = (float)SpriteOutlineList.GetField("m_TessellationDetail", bf).GetValue(m_SpriteOutlineList); //Method(Type.GetType("UnityEditor.Experimental.U2D.SpriteEditorModuleBase, UnityEditor", true), outlineWindowInstance, "ApplyRevert", true); ////Method(Type.GetType("UnityEditor.Experimental.U2D.SpriteEditorModuleBase, UnityEditor", true), outlineWindowInstance, "OnModuleDeactivate", null); //object ISpriteEditor = spritePhysicsShapeModule.GetProperty("spriteEditorWindow", bf).GetValue(outlineWindowInstance); //Method(Type.GetType("UnityEditor.Experimental.U2D.ISpriteEditor, UnityEditor", true), ISpriteEditor, "ApplyOrRevertModification", true); ////Method(Type.GetType("UnityEditor.Experimental.U2D.ISpriteEditor, UnityEditor", true), ISpriteEditor, "SetDataModified"); ////spriteOutlineModule.GetField("shapeEditorDirty").SetValue(outlineWindowInstance, true); //Debug.Log(outlines[0].Length + " count"); //AssetDatabase.Refresh(); //EditorUtility.SetDirty(sprite); //AssetDatabase.SaveAssets(); //OverwriteOutline(sprite, tessellation, outlines); } } }
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); }
public override void Read(AssetReader reader) { base.Read(reader); bool isBoolFlags = IsBoolFlags(reader.Version); MipMapMode = (TextureImporterMipFilter)reader.ReadInt32(); if (isBoolFlags) { EnableMipMapBool = reader.ReadBoolean(); CorrectGammaBool = reader.ReadBoolean(); FadeOutBool = reader.ReadBoolean(); BorderMipMapBool = reader.ReadBoolean(); } else { EnableMipMap = reader.ReadInt32(); if (HasSRGBTexture(reader.Version)) { SRGBTexture = reader.ReadInt32(); } if (HasLinearTexture(reader.Version)) { LinearTexture = reader.ReadInt32(); } if (HasCorrectGamma(reader.Version)) { CorrectGamma = reader.ReadInt32(); } FadeOut = reader.ReadInt32(); BorderMipMap = reader.ReadInt32(); } if (HasMipMapsPreserveCoverage(reader.Version)) { MipMapsPreserveCoverage = reader.ReadInt32(); AlphaTestReferenceValue = reader.ReadSingle(); } MipMapFadeDistanceStart = reader.ReadInt32(); MipMapFadeDistanceEnd = reader.ReadInt32(); if (isBoolFlags) { ConvertToNormalMapBool = reader.ReadBoolean(); if (HasIsReadable(reader.Version)) { IsReadableBool = reader.ReadBoolean(); } } else { ConvertToNormalMap = reader.ReadInt32(); ExternalNormalMap = reader.ReadInt32(); if (IsReadableFirst(reader.Version)) { IsReadable = reader.ReadInt32(); reader.AlignStream(); } } HeightScale = reader.ReadSingle(); NormalMapFilter = (TextureImporterNormalFilter)reader.ReadInt32(); if (!IsReadableFirst(reader.Version)) { IsReadable = reader.ReadInt32(); } if (HasStreamingMipmaps(reader.Version)) { StreamingMipmaps = reader.ReadInt32(); StreamingMipmapsPriority = reader.ReadInt32(); } if (isBoolFlags) { GrayScaleToAlphaBool = reader.ReadBoolean(); } else { GrayScaleToAlpha = reader.ReadInt32(); } if (IsAlignGrayScaleToAlpha(reader.Version)) { reader.AlignStream(); } GenerateCubemap = (TextureImporterGenerateCubemap)reader.ReadInt32(); if (HasCubemapConvolution(reader.Version)) { CubemapConvolution = reader.ReadInt32(); } if (HasCubemapConvolutionSteps(reader.Version)) { CubemapConvolutionSteps = reader.ReadInt32(); CubemapConvolutionExponent = reader.ReadSingle(); } if (HasSeamlessCubemap(reader.Version)) { SeamlessCubemap = reader.ReadInt32(); } TextureFormat = (TextureFormat)reader.ReadInt32(); if (IsAlignTextureFormat(reader.Version)) { reader.AlignStream(); } if (HasRecommendedTextureFormat(reader.Version) && RecommendedTextureFormatFirst(reader.Version)) { RecommendedTextureFormat = reader.ReadInt32(); reader.AlignStream(); } MaxTextureSize = reader.ReadInt32(); TextureSettings.Read(reader); NPOTScale = (TextureImporterNPOTScale)reader.ReadInt32(); if (HasLightmap(reader.Version)) { Lightmap = reader.ReadInt32(); } if (HasRGBM(reader.Version)) { RGBM = reader.ReadInt32(); } if (HasCompressionQuality(reader.Version)) { CompressionQuality = reader.ReadInt32(); } if (HasAllowsAlphaSplitting(reader.Version)) { AllowsAlphaSplitting = reader.ReadInt32(); reader.AlignStream(); } if (HasSprite(reader.Version)) { SpriteMode = (SpriteImportMode)reader.ReadInt32(); SpriteExtrude = reader.ReadUInt32(); SpriteMeshType = (SpriteMeshType)reader.ReadInt32(); Alignment = (SpriteAlignment)reader.ReadInt32(); SpritePivot.Read(reader); } if (HasSprite(reader.Version) && SpritePixelsToUnitsFirst(reader.Version)) { SpritePixelsToUnits = reader.ReadSingle(); } if (HasSpriteBorder(reader.Version)) { SpriteBorder.Read(reader); } if (HasSprite(reader.Version) && !SpritePixelsToUnitsFirst(reader.Version)) { SpritePixelsToUnits = reader.ReadSingle(); } if (HasSpriteGenerateFallbackPhysicsShape(reader.Version)) { SpriteGenerateFallbackPhysicsShape = reader.ReadInt32(); } if (HasAlphaUsage(reader.Version)) { AlphaUsage = (TextureImporterAlphaSource)reader.ReadInt32(); } if (HasAlphaIsTransparency(reader.Version)) { AlphaIsTransparency = reader.ReadInt32(); } if (HasSpriteTessellationDetail(reader.Version)) { SpriteTessellationDetail = reader.ReadSingle(); } if (HasTextureType(reader.Version)) { TextureType = (TextureImporterType)reader.ReadInt32(); } if (HasRecommendedTextureFormat(reader.Version) && !RecommendedTextureFormatFirst(reader.Version)) { RecommendedTextureFormat = reader.ReadInt32(); } if (HasSourceTextureInformation(reader.Version)) { SourceTextureInformation = reader.ReadAsset <SourceTextureInformation>(); reader.AlignStream(); } if (HasTextureShape(reader.Version)) { TextureShape = (TextureImporterShape)reader.ReadInt32(); } if (HasSingleChannelComponent(reader.Version)) { SingleChannelComponent = reader.ReadInt32(); } if (HasMaxTextureSizeSet(reader.Version)) { MaxTextureSizeSet = reader.ReadInt32(); CompressionQualitySet = reader.ReadInt32(); TextureFormatSet = reader.ReadInt32(); } reader.AlignStream(); if (HasPlatformSettings(reader.Version)) { PlatformSettings = reader.ReadAssetArray <TextureImporterPlatformSettings>(); } if (HasSprite(reader.Version)) { SpriteSheet.Read(reader); SpritePackingTag = reader.ReadString(); } if (HasOutput(reader.Version)) { Output.Read(reader); } if (HasPSDRemoveMatte(reader.Version)) { PSDRemoveMatte = reader.ReadBoolean(); PSDShowRemoveMatteOption = reader.ReadBoolean(); } reader.AlignStream(); PostRead(reader); }