Class: MD2::Header

Inherits:
Object
  • Object
show all
Defined in:
lib/md2/header.rb

Constant Summary collapse

LENGTH =

The length of an MD2 header is fixed.

68
MD2_IDENT =

The magic number that all MD2 headers start with. This is equal to “IDP2” in bytes.

((?2.ord<<24) + (?P.ord<<16) + (?D.ord<<8) + ?I.ord)
MD2_VERSION =

The MD2 file format version. This is always 8.

8

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file) ⇒ Header

Returns a new instance of Header.



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/md2/header.rb', line 16

def initialize(file)
  header = file.sysread(LENGTH).unpack("i17")
  raise MD2::Errors::InvalidFile, "Header identifier did not match" unless header.shift == MD2_IDENT
  raise MD2::Errors::InvalidVersion, "File format version mismatch" unless header.shift == MD2_VERSION
  
  @skin_width           = header.shift
  @skin_height          = header.shift
  @frame_size           = header.shift
  @skin_count           = header.shift
  @vertex_count         = header.shift
  @texture_coord_count  = header.shift
  @triangle_count       = header.shift
  @gl_command_count     = header.shift
  @frame_count          = header.shift
  @skin_name_offset     = header.shift
  @texture_coord_offset = header.shift
  @triangle_offset      = header.shift
  @frame_data_offset    = header.shift
  @gl_command_offset    = header.shift
  @eof_offset           = header.shift
end

Instance Attribute Details

#eof_offsetObject (readonly)

Returns the value of attribute eof_offset.



11
12
13
# File 'lib/md2/header.rb', line 11

def eof_offset
  @eof_offset
end

#frame_countObject (readonly)

Returns the value of attribute frame_count.



11
12
13
# File 'lib/md2/header.rb', line 11

def frame_count
  @frame_count
end

#frame_data_offsetObject (readonly)

Returns the value of attribute frame_data_offset.



11
12
13
# File 'lib/md2/header.rb', line 11

def frame_data_offset
  @frame_data_offset
end

#frame_sizeObject (readonly)

Returns the value of attribute frame_size.



11
12
13
# File 'lib/md2/header.rb', line 11

def frame_size
  @frame_size
end

#gl_command_countObject (readonly)

Returns the value of attribute gl_command_count.



11
12
13
# File 'lib/md2/header.rb', line 11

def gl_command_count
  @gl_command_count
end

#gl_command_offsetObject (readonly)

Returns the value of attribute gl_command_offset.



11
12
13
# File 'lib/md2/header.rb', line 11

def gl_command_offset
  @gl_command_offset
end

#skin_countObject (readonly)

Returns the value of attribute skin_count.



11
12
13
# File 'lib/md2/header.rb', line 11

def skin_count
  @skin_count
end

#skin_heightObject (readonly)

Returns the value of attribute skin_height.



11
12
13
# File 'lib/md2/header.rb', line 11

def skin_height
  @skin_height
end

#skin_name_offsetObject (readonly)

Returns the value of attribute skin_name_offset.



11
12
13
# File 'lib/md2/header.rb', line 11

def skin_name_offset
  @skin_name_offset
end

#skin_widthObject (readonly)

Returns the value of attribute skin_width.



11
12
13
# File 'lib/md2/header.rb', line 11

def skin_width
  @skin_width
end

#texture_coord_countObject (readonly)

Returns the value of attribute texture_coord_count.



11
12
13
# File 'lib/md2/header.rb', line 11

def texture_coord_count
  @texture_coord_count
end

#texture_coord_offsetObject (readonly)

Returns the value of attribute texture_coord_offset.



11
12
13
# File 'lib/md2/header.rb', line 11

def texture_coord_offset
  @texture_coord_offset
end

#triangle_countObject (readonly)

Returns the value of attribute triangle_count.



11
12
13
# File 'lib/md2/header.rb', line 11

def triangle_count
  @triangle_count
end

#triangle_offsetObject (readonly)

Returns the value of attribute triangle_offset.



11
12
13
# File 'lib/md2/header.rb', line 11

def triangle_offset
  @triangle_offset
end

#vertex_countObject (readonly)

Returns the value of attribute vertex_count.



11
12
13
# File 'lib/md2/header.rb', line 11

def vertex_count
  @vertex_count
end