示例#1
0
 void WriteTileObject(ContentWriter output, TiledTileObject obj)
 {
     output.Write((byte)TiledObjectType.Tile);
     output.Write(obj.GID);
     output.Write(obj.FlipHor);
     output.Write(obj.FlipVer);
 }
示例#2
0
        TiledObject ReadTileObject(ContentReader input, TiledObject baseObj, TiledMap map)
        {
            var obj = new TiledTileObject(baseObj);

            obj.GID     = input.ReadInt32();
            obj.FlipHor = input.ReadBoolean();
            obj.FlipVer = input.ReadBoolean();

            obj.Tileset = map.GetTileset(obj.GID);

            return(obj);
        }
示例#3
0
        public static void ReadTileObject(TiledObjectGroup layer, XElement root)
        {
            var obj = new TiledTileObject();

            // Read generic object information.
            ReadGenericObjectInformation(obj, root);

            // Read tile specific stuff.
            obj.Tile = root.ReadAttribute("gid", 0);

            layer.Objects.Add(obj);
        }
示例#4
0
        static TiledTileObject ParseTileObject(XmlNode node, TiledObject baseObj)
        {
            var obj = new TiledTileObject(baseObj);

            uint firstGID = 0;


            if (node["tileset"] != null && node["tileset"].Attributes["source"] != null)
            {
                // GetFullPath gets rid of stuff like // and /../
                var src = Path.GetFullPath(TiledMapImporter.CurrentRootDir + '/' + node["tileset"].Attributes["source"].Value);
                TilesetParser.ExternalTilesetsFirstGID.TryGetValue(src, out firstGID);
            }

            // For some reason, gid field is counted from 1, but other tile ids are counted from 0.
            var gid = uint.Parse(node.Attributes["gid"].Value) + firstGID - 1;

            obj.FlipHor = ((gid & (uint)FlipFlags.FlipHor) != 0);
            obj.FlipVer = ((gid & (uint)FlipFlags.FlipVer) != 0);
            obj.GID     = (int)(gid & (~(uint)FlipFlags.All));

            return(obj);
        }