Пример #1
0
 def read(self, stream, resource=None):
     s = StreamReader(stream)
     self.version = s.u32()
     tgi = TGIList(order='igt', count_size=8, package=resource, use_length=False)
     tgi.begin_read(stream)
     self.presets = [self.CasPreset(stream, tgi) for i in range(s.u32())]
     self.part_name = s.s7(16, '>')
     self.display_index = s.f32()
     self.has_unique_texture_space = s.u8()
     self.body_type = s.u32()
     self.part_flags = s.u32()
     self.age_gender_flags = s.u32()
     self.clothing_category = s.u32()
     self.naked_cas_part = tgi.get_resource(s.i8())
     self.base_cas_part = tgi.get_resource(s.i8())
     self.blend_fat = tgi.get_resource(s.i8())
     self.blend_fit = tgi.get_resource(s.i8())
     self.blend_thin = tgi.get_resource(s.i8())
     self.blend_special = tgi.get_resource(s.i8())
     self.draw_layer = s.u32()
     self.sources = [tgi.get_resource(s.i8()) for i in range(s.u8())]
     self.lod_infos = [CASLodInfo(stream) for i in range(s.u8())]
     self.diffuse_refs = [tgi.get_resource(s.i8()) for i in range(s.u8())]
     self.specular_refs = [tgi.get_resource(s.i8()) for i in range(s.u8())]
     self.secondary_diffuse_refs = [tgi.get_resource(s.i8()) for i in range(s.u8())]
     self.secondary_specular_refs = [tgi.get_resource(s.i8()) for i in range(s.u8())]
     self.slot_poses = [tgi.get_resource(s.i8()) for i in range(s.u8())]
     self.shoe_material = s.s7(16, '>')
     tgi.end_read(stream)
Пример #2
0
 def read(self, stream, resource=None):
     s = StreamReader(stream)
     self.version = s.u32()
     names = [s.s7(16, '>') for i in range(s.u32())]
     poses = [[[s.f32() for j in range(3)] for i in range(4)]
              for pose_index in range(s.u32())]
     self.bones = [
         self.Bone(names[i], pose) for i, pose in enumerate(poses)
     ]
Пример #3
0
 def read(self, stream, resource=None):
     s = StreamReader(stream)
     self.version = s.u32()
     tgi = TGIList(use_length=self.version >= 7, add_eight=True)
     tgi.begin_read(stream)
     self.part_name = s.s7(16, '>')
     self.blend_type = s.u32()
     if self.version >= 8:
         key = s.tgi()
         bgeo = ExternalResource(key=key)
         self.blend_geometry = bgeo
     cEntries = s.i32()
     for i in range(cEntries):
         entry = self.RegionEntry()
         entry.region_flags = s.u32()
         entry.geom_entries = [self.GeomEntry(stream, tgi) for i in range(s.i32())]
         entry.bone_entries = [self.BoneEntry(stream, tgi) for i in range(s.i32())]
         self.entries.append(entry)
     tgi.end_read(stream)
Пример #4
0
 def read(self, stream, resources=None):
     s = StreamReader(stream)
     self.version = s.u32()
     self.name_guid = s.u64()
     self.desc_guid = s.u64()
     self.name_key = s.s7(size=16,order='>')
     self.desc_key = s.s7(size=16,order='>')
     self.price = s.f32()
     self.niceness_multiplier = s.f32()
     self.crap_score = s.f32()
     self.status_flags = s.u8()
     self.icon = s.u64()
     assert s.u8() == 0
     self.environment_score = s.f32()
     self.fire_type = s.u32()
     self.is_stealable = bool(s.i8())
     self.is_reposessable = bool(s.i8())
     self.ui_sort_index = s.u32()
     if self.version >= 0x0000000D: self.is_placeable_on_roof = bool(s.u8())
     if self.version >= 0x0000000E: self.is_visible_in_worldbuilder = bool(s.u8())
     if self.version >= 0x0000000F: self.product_name = s.u32()
Пример #5
0
 def read(self, stream, resources=None):
     s = StreamReader(stream)
     self.version = s.u32()
     self.name_guid = s.u64()
     self.desc_guid = s.u64()
     self.name_key = s.s7()
     self.desc_key = s.s7()
     self.price = s.f32()
     self.niceness_multiplier = s.f32()
     self.crap_score = s.f32()
     self.status_flags = s.u8()
     self.icon = s.u64()
     self.environment_score = s.f32()
     self.fire_type = s.u32()
     self.is_stealable = bool(s.i8())
     self.is_reposessable = bool(s.i8())
     self.ui_sort_index = s.u32()
     if self.version >= 0x0000000D: self.is_placeable_on_roof = bool(s.u8())
     if self.version >= 0x0000000E:
         self.is_visible_in_worldbuilder = bool(s.u8())
     if self.version >= 0x0000000F: self.product_name = s.u32()
Пример #6
0
 def read(self, stream, resources=None):
     s = StreamReader(stream)
     self.version = s.u32()
     tgi = TGIList()
     tgi.begin_read(stream)
     self.presets = ProductBase.read_presets(stream,tgi)
     if self.version >= 0x00000016:
         self.instance_name = s.s7(size=16,order='>')
     self.product_info = ProductInfo()
     self.product_info.read(stream,tgi)
     self.object_component = tgi.get_resource(s.i32())
     self.object_type_flags = s.u32()
     if self.version >= 0x00000001A:
         self.object_type_flags_2 = s.u32()
     self.wall_placement_flags = s.u32()
     self.movement_flags = s.u32()
     self.num_wall_cutout_tiles_per_level = s.i32()
     self.num_levels = s.i32()
     self.wall_masks = [self.WallMaskEntry(stream,tgi) for i in range(s.i8())]
     self.script_enabled = s.i8() == 1
     self.diagonal_object = tgi.get_resource(s.i32())
     self.ambiance_type = s.hash()
     self.room_flags = s.u32()
     self.function_category_flags = s.u32()
     self.sub_category_flags = s.u64()
     if self.version >= 0x0000001C:
         self.sub_category_flags_2 = s.u64()
     self.sub_room_flags = s.u64()
     self.build_category_flags = s.u32()
     self.wall_cutout_texture = tgi.get_resource(s.i32())
     if self.version >= 0x00000017:
         self.floor_cutout_texture = tgi.get_resource(s.i32())
         self.floor_cutout_level_offset = s.i32()
         self.floor_cutout_bounds_length = s.f32()
     if self.version >= 0x00000020:
         self.floor_cutout_bounds_width = s.f32()
     if self.version >= 0x0000021:
         self.floor_cutout_offset_x = s.f32()
         self.floor_cutout_offset_z = s.f32()
     if self.version >= 0x00000018:
         self.shell_states = [s.hash() for i in range(s.i32())]
     if self.version >= 0x00000019:
         self.shell_level_below =tgi.get_resource(s.i32())
     if self.version >= 0x0000001B:
         self.shell_proxy =tgi.get_resource(s.i32())
     if self.version >= 0x0000001D:
         self.blueprint_xml =tgi.get_resource(s.i32())
     if self.version >= 0x0000001E:
         self.blueprint_icon =tgi.get_resource(s.i32())
     if self.version >= 0x0000001F:
         self.blueprint_icon_offset_min_x = s.f32()
         self.blueprint_icon_offset_min_z = s.f32()
         self.blueprint_icon_offset_max_x = s.f32()
         self.blueprint_icon_offset_max_z = s.f32()
     self.slot_placement_flags = s.u32()
     self.surface_type = s.s7(size=16,order='>')
     self.source_material = s.s7(size=16,order='>')
     self.moodlet_given = s.u32()
     self.moodlet_score = s.u32()
     assert s.u32() == 5
     self.ratings = [self.ProductRating(stream) for i in range(5)]
     self.fallback = tgi.get_resource(s.i32())
     if self.version >= 0x00000022:
         self.modular_arch_end_east_model = tgi.get_resource(s.i32())
         self.modular_arch_end_west_model = tgi.get_resource(s.i32())
         self.modular_arch_connecting_model = tgi.get_resource(s.i32())
         self.modular_arch_single_model = tgi.get_resource(s.i32())
     tgi.end_read(stream)
Пример #7
0
 def read(self, stream, resource=None):
     s = StreamReader(stream)
     self.version = s.u32()
     names = [s.s7(16, '>') for i in range(s.u32())]
     poses = [[[s.f32() for j in range(3)] for i in range(4)] for pose_index in range(s.u32())]
     self.bones = [self.Bone(names[i], pose) for i, pose in enumerate(poses)]
Пример #8
0
 def read(self, stream, resources=None):
     RCOLChunk.read(self, stream, resources)
     s = StreamReader(stream)
     self.scengraph_name = s.s7()
Пример #9
0
 def read(self, stream, resources=None):
     s = StreamReader(stream)
     assert s.s7() == self.SG
     assert s.u32() == self.ID
     self.version = s.u32()