internal override ModelBase Serialize() { int outColumns = 1; int tileCount = 0; if (Sprite != null) { outColumns = Sprite.Width / (OutTileBorderHorizontal * 2 + TileWidth); tileCount = TileCount; } return(new GMTileSetModel { id = Id, name = Name, out_columns = outColumns, spriteId = Sprite?.Id ?? Guid.Empty, tilewidth = TileWidth, tileheight = TileHeight, tilexoff = TileOffsetX, tileyoff = TileOffsetY, tilehsep = TileSeparationHorizontal, tilevsep = TileSeparationVertical, sprite_no_export = Export, textureGroupId = TextureGroup?.Id ?? Guid.Empty, out_tilehborder = OutTileBorderHorizontal, out_tilevborder = OutTileBorderVertical, tile_count = tileCount, auto_tile_sets = AutoTileSets.Serialize(), tile_animation_frames = Animations.SerializeFrames(), tile_animation_speed = Animations.Speed, tile_animation = (GMTileAnimationModel)Animations.Serialize(), macroPageTiles = Brushes.Serialize() }); }