Class: Bayonetta::WMB3File::VertexGroup
- Inherits:
-
LibBin::Structure
- Object
- LibBin::Structure
- Bayonetta::WMB3File::VertexGroup
- Defined in:
- lib/bayonetta/wmb3.rb
Defined Under Namespace
Classes: Header
Instance Method Summary collapse
- #get_vertex_field(field, vi) ⇒ Object
- #get_vertex_fields ⇒ Object
- #get_vertex_types ⇒ Object
-
#is_bayo2? ⇒ Boolean
UByteList are arrays of char really.
- #set_vertex_field(field, vi, val) ⇒ Object
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_fields ⇒ Object
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_types ⇒ Object
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
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 |