Class: Bayonetta::WMB3File::VertexGroup

Inherits:
LibBin::Structure
  • Object
show all
Defined in:
lib/bayonetta/wmb3.rb

Defined Under Namespace

Classes: Header

Instance Method Summary collapse

Instance Method Details

#get_vertex_field(field, vi) ⇒ Object



174
175
176
177
178
179
180
181
182
# File 'lib/bayonetta/wmb3.rb', line 174

def get_vertex_field(field, vi)
  if @vertexes[vi].respond_to?(field)
    return @vertexes[vi].send(field)
  elsif @vertexes_ex_data && @vertexes_ex_data[vi].respond_to?(field)
    return @vertexes_ex_data[vi].send(field)
  else
    return nil
  end
end

#get_vertex_fieldsObject



127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# File 'lib/bayonetta/wmb3.rb', line 127

def get_vertex_fields
  if @vertex_fields
    return @vertex_fields
  else
    types = VERTEX_TYPES[ @header.vertex_flags ]
    @vertex_fields = []
    if types[0]
      types[0].each { |name, type|
        @vertex_fields.push(name)
      }
    end
    if types[1]
      types[1].each { |name, type|
        @vertex_fields.push(name)
      }
    end
    return @vertex_fields
  end
end

#get_vertex_typesObject



147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# File 'lib/bayonetta/wmb3.rb', line 147

def get_vertex_types
  if @vertex_type
    return [@vertex_type, @vertex_ex_type]
  else
    types = VERTEX_TYPES[ @header.vertex_flags ]
    @vertex_type = Class::new(LibBin::Structure)
    @vertex_size = 0
    if types[0]
      types[0].each { |name, type|
        @vertex_type.register_field(name, VERTEX_FIELDS[type][0])
        @vertex_size += VERTEX_FIELDS[type][1]
      }
    end
    raise "Invalid size for vertex data #{@vertex_size} != #{@header.vertex_size}!" if @vertex_size != @header.vertex_size
    @vertex_ex_type = Class::new(LibBin::Structure)
    @vertex_ex_size = 0
    if types[1]
      types[1].each { |name, type|
        @vertex_ex_type.register_field(name, VERTEX_FIELDS[type][0])
        @vertex_ex_size += VERTEX_FIELDS[type][1]
      }
    end
    raise "Invalid size for ex data #{@vertex_ex_size} != #{@header.vertex_ex_data_size}!" if @vertex_ex_size != @header.vertex_ex_data_size
    return [@vertex_type, @vertex_ex_type]
  end
end

#is_bayo2?Boolean

UByteList are arrays of char really

Returns:

  • (Boolean)


123
124
125
# File 'lib/bayonetta/wmb3.rb', line 123

def is_bayo2? #UByteList are arrays of char really
  true
end

#set_vertex_field(field, vi, val) ⇒ Object



184
185
186
187
188
189
190
191
192
# File 'lib/bayonetta/wmb3.rb', line 184

def set_vertex_field(field, vi, val)
  if @vertexes[vi].respond_to?(field)
    return @vertexes[vi].send(:"#{field}=", val)
  elsif @vertexes_ex_data && @vertexes_ex_data[vi].respond_to?(field)
    return @vertexes_ex_data[vi].send(:"#{field}=", val)
  else
    raise "Couldn't find field: #{field}!"
  end
end