class VersionInfo(BasicBitfield): """ Determines the format of the OVL file. n.b. pos counts from the end! # compression __ _ # pc/pz uncompressed 8212 00100000 00010100 # pc/pz zlib 8340 00100000 10010100 # pc/pz oodle 8724 00100010 00010100 # JWE (uncomp) 24596 01100000 00010100 # JWE zlib 24724 01100000 10010100 # JWE oodle (switch) 25108 01100010 00010100 """ unk_1 = BitfieldMember(pos=2, mask=0x4, return_type=bool) unk_2 = BitfieldMember(pos=4, mask=0x10, return_type=bool) compression = BitfieldMember(pos=7, mask=0x380, return_type=Compression) unk_3 = BitfieldMember(pos=13, mask=0x2000, return_type=bool) is_jwe = BitfieldMember(pos=14, mask=0x4000, return_type=bool) def set_defaults(self): pass def read(self, stream): self._value = stream.read_uint() def write(self, stream): stream.write_uint(self._value)
class ModelFlagZT(BasicBitfield): """ Determines the data held by a mesh. """ stripify = BitfieldMember(pos=6, mask=0x40, return_type=bool) repeat_tris = BitfieldMember(pos=9, mask=0x200, return_type=bool) def set_defaults(self): pass def read(self, stream): self._value = stream.read_uint() def write(self, stream): stream.write_uint(self._value)
class ModelFlag(BasicBitfield): """ Determines the data held by a mesh. Count from the end!!! """ basic_info = BitfieldMember(pos=9, mask=0x200, return_type=bool) weights = BitfieldMember(pos=4, mask=0x10, return_type=bool) def set_defaults(self): pass def read(self, stream): self._value = stream.read_uint() def write(self, stream): stream.write_uint(self._value)
class RenderFlag(BasicBitfield): """ Determines how the model is rendered. """ a = BitfieldMember(pos=0, mask=0x1, return_type=bool) b = BitfieldMember(pos=1, mask=0x2, return_type=bool) c = BitfieldMember(pos=2, mask=0x4, return_type=bool) d = BitfieldMember(pos=3, mask=0x8, return_type=bool) e = BitfieldMember(pos=4, mask=0x10, return_type=bool) def set_defaults(self): pass def read(self, stream): self._value = stream.read_ushort() def write(self, stream): stream.write_ushort(self._value)
class ModelFlag(BasicBitfield): """ Determines the data held by a mesh. """ stripify = BitfieldMember(pos=3, mask=0x8, return_type=bool) weights = BitfieldMember(pos=4, mask=0x10, return_type=bool) repeat_tris = BitfieldMember(pos=5, mask=0x20, return_type=bool) fur_shells = BitfieldMember(pos=8, mask=0x100, return_type=bool) basic_info = BitfieldMember(pos=9, mask=0x200, return_type=bool) def set_defaults(self): pass def read(self, stream): self._value = stream.read_uint() def write(self, stream): stream.write_uint(self._value)
class Caps2(BasicBitfield): reserved_1 = BitfieldMember(pos=0, mask=0x1ff, return_type=int) cubemap = BitfieldMember(pos=9, mask=0x200, return_type=int) cubemap_pos_x = BitfieldMember(pos=10, mask=0x400, return_type=int) cubemap_neg_x = BitfieldMember(pos=11, mask=0x800, return_type=int) cubemap_pos_y = BitfieldMember(pos=12, mask=0x1000, return_type=int) cubemap_neg_y = BitfieldMember(pos=13, mask=0x2000, return_type=int) cubemap_pos_z = BitfieldMember(pos=14, mask=0x4000, return_type=int) cubemap_neg_z = BitfieldMember(pos=15, mask=0x8000, return_type=int) reserved_2 = BitfieldMember(pos=16, mask=0x1f0000, return_type=int) volume = BitfieldMember(pos=21, mask=0x200000, return_type=int) def set_defaults(self): pass def read(self, stream): self._value = stream.read_uint() def write(self, stream): stream.write_uint(self._value)
class ModelFlag(BasicBitfield): """ Determines the data held by a mesh. """ active = BitfieldMember(pos=3, mask=0x8, return_type=bool) basic_info = BitfieldMember(pos=4, mask=0x10, return_type=bool) manager_controlled = BitfieldMember(pos=5, mask=0x20, return_type=bool) compute_scaled_time = BitfieldMember(pos=6, mask=0x40, return_type=bool) weights = BitfieldMember(pos=7, mask=0x80, return_type=bool) def set_defaults(self): self.active = 1 self.compute_scaled_time = 1 def read(self, stream): self._value = stream.read_uint() def write(self, stream): stream.write_uint(self._value)
class VersionInfo(BasicBitfield): """ Determines the format of the OVL file held by a mesh. n.b. pos counts from the end! """ unk_1 = BitfieldMember(pos=2, mask=0x4, return_type=bool) unk_2 = BitfieldMember(pos=4, mask=0x10, return_type=bool) use_zlib = BitfieldMember(pos=7, mask=0x80, return_type=bool) use_oodle = BitfieldMember(pos=9, mask=0x200, return_type=bool) unk_3 = BitfieldMember(pos=13, mask=0x2000, return_type=bool) is_jwe = BitfieldMember(pos=14, mask=0x4000, return_type=bool) def set_defaults(self): pass def read(self, stream): self._value = stream.read_uint() def write(self, stream): stream.write_uint(self._value)
class HeaderFlags(BasicBitfield): caps = BitfieldMember(pos=0, mask=0x1, return_type=int) height = BitfieldMember(pos=1, mask=0x2, return_type=int) width = BitfieldMember(pos=2, mask=0x4, return_type=int) pitch = BitfieldMember(pos=3, mask=0x8, return_type=int) reserved_1 = BitfieldMember(pos=4, mask=0xff0, return_type=int) pixel_format = BitfieldMember(pos=12, mask=0x1000, return_type=int) reserved_2 = BitfieldMember(pos=13, mask=0x1e000, return_type=int) mipmap_count = BitfieldMember(pos=17, mask=0x20000, return_type=int) reserved_3 = BitfieldMember(pos=18, mask=0x40000, return_type=int) linear_size = BitfieldMember(pos=19, mask=0x80000, return_type=int) reserved_4 = BitfieldMember(pos=20, mask=0x700000, return_type=int) depth = BitfieldMember(pos=23, mask=0x800000, return_type=int) def set_defaults(self): self.caps = 1 self.pixel_format = 1 def read(self, stream): self._value = stream.read_uint() def write(self, stream): stream.write_uint(self._value)
class PixelFormatFlags(BasicBitfield): alpha_pixels = BitfieldMember(pos=0, mask=0x1, return_type=int) alpha = BitfieldMember(pos=1, mask=0x2, return_type=int) four_c_c = BitfieldMember(pos=2, mask=0x4, return_type=int) palette_indexed_4 = BitfieldMember(pos=3, mask=0x8, return_type=int) reserved_1 = BitfieldMember(pos=4, mask=0x10, return_type=int) palette_indexed_8 = BitfieldMember(pos=5, mask=0x20, return_type=int) rgb = BitfieldMember(pos=6, mask=0x40, return_type=int) reserved_2 = BitfieldMember(pos=7, mask=0x780, return_type=int) palette_indexed_1 = BitfieldMember(pos=11, mask=0x800, return_type=int) palette_indexed_2 = BitfieldMember(pos=12, mask=0x1000, return_type=int) reserved_3 = BitfieldMember(pos=13, mask=0x6000, return_type=int) alpha_premult = BitfieldMember(pos=15, mask=0x8000, return_type=int) reserved_4 = BitfieldMember(pos=16, mask=0x10000, return_type=int) luminance = BitfieldMember(pos=17, mask=0x20000, return_type=int) reserved_5 = BitfieldMember(pos=18, mask=0x7ffc0000, return_type=int) normal = BitfieldMember(pos=31, mask=0x80000000, return_type=int) def set_defaults(self): pass def read(self, stream): self._value = stream.read_uint() def write(self, stream): stream.write_uint(self._value)