示例#1
0
        public static FontContent Load(BinaryReader reader)
        {
            var name = reader.ReadString();
            var inverseSizeInTexels = reader.ReadSingle();
            var glyphCount          = reader.ReadInt32();
            var characterData       = new Dictionary <char, CharacterData>();

            for (int i = 0; i < glyphCount; ++i)
            {
                var           character = reader.ReadChar();
                CharacterData data;
                data.SourceMinimum.X = reader.ReadInt32();
                data.SourceMinimum.Y = reader.ReadInt32();
                data.SourceSpan.X    = reader.ReadInt32();
                data.SourceSpan.Y    = reader.ReadInt32();
                data.Bearing.X       = reader.ReadInt32();
                data.Bearing.Y       = reader.ReadInt32();
                data.Advance         = reader.ReadInt32();
                data.DistanceScale   = reader.ReadSingle();
                characterData.Add(character, data);
            }
            var kerningRelationshipCount = reader.ReadInt32();
            var kerningTable             = new Dictionary <CharacterPair, int>();

            for (int i = 0; i < kerningRelationshipCount; ++i)
            {
                var a      = reader.ReadChar();
                var b      = reader.ReadChar();
                var amount = reader.ReadInt32();
                kerningTable.Add(new CharacterPair(a, b), amount);
            }
            var atlas = Texture2DIO.Load(reader);

            return(new FontContent(atlas, name, inverseSizeInTexels, characterData, kerningTable));
        }
示例#2
0
        //We have a very limited set of content types. This isn't a general purpose engine. Rather than having a dictionary of type->loader or something, we can do a quick hack.
        public static IContent Load(ContentType type, BinaryReader reader)
        {
            switch (type)
            {
            case ContentType.Font:
                return(FontIO.Load(reader));

            case ContentType.Mesh:
                return(MeshIO.Load(reader));

            case ContentType.Image:
                return(Texture2DIO.Load(reader));
            }
            throw new ArgumentException($"Given content type {type} cannot be loaded; no loader is specified. Is the archive corrupted?");
        }