Class: Quake::Mdl::Reader
- Inherits:
-
Object
- Object
- Quake::Mdl::Reader
- Defined in:
- lib/quake/mdl/reader.rb
Overview
Parses Quake MDL (alias model) files. Binary format: 76-byte header, skins, texcoords, triangles, frames. Vertices are stored as 3 compressed bytes decompressed via scale/origin.
Constant Summary collapse
- IDPOLYHEADER =
“IDPO” in little-endian
0x4F504449- MDL_VERSION =
6
Instance Method Summary collapse
-
#initialize(data) ⇒ Reader
constructor
A new instance of Reader.
- #parse ⇒ Object
Constructor Details
#initialize(data) ⇒ Reader
Returns a new instance of Reader.
12 13 14 15 |
# File 'lib/quake/mdl/reader.rb', line 12 def initialize(data) @data = data @pos = 0 end |
Instance Method Details
#parse ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/quake/mdl/reader.rb', line 17 def parse header = read_header skins = read_skins(header) stverts = read_stverts(header[:numverts]) triangles = read_triangles(header[:numtris]) frames = read_frames(header[:numframes], header[:numverts]) Model.new( scale: header[:scale], scale_origin: header[:scale_origin], bounding_radius: header[:boundingradius], eye_position: header[:eyeposition], skin_width: header[:skinwidth], skin_height: header[:skinheight], skins: skins, stverts: stverts, triangles: triangles, frames: frames, flags: header[:flags], sync_type: header[:synctype] ) end |