def read_rcol(self, stream, rcol): s = StreamReader(stream) self.read_tag(stream) self.version = s.u32() self.clip = ExternalResource(s.tgi('ITG')) self.track_mask = ExternalResource(s.tgi('ITG')) cActorSlots = s.i32() assert s.u32() == 0 assert s.u32() == 0 assert s.u32() == 0 self.actor_slots = [ self.SlotAssignment(stream) for i in range(cActorSlots) ] self.actor_iks = [ self.NamespaceSlotSuffix(stream) for i in range(s.i32()) ] assert s.u32() == DEADBEEF self.additive_clip = ExternalResource(s.tgi('ITG')) self.clip_pattern = s.p32(size=16) s.align() self.additive_clip_pattern = s.p32(size=16) s.align() assert s.u32() == DEADBEEF AnimationNode.read_rcol(self, stream, rcol)
def read_rcol(self, stream, rcol): s = StreamReader(stream) self.read_tag(stream) self.version = s.u32() self.actor = rcol.get_block(s.u32(), ActorDefinition) self.parameter = s.u32() self.prop = s.tgi('ITG') for i in range(4): assert s.u32() == 0 MulticastDecisionGraphNode.read(self, stream, rcol)
def read_rcol(self, stream, rcol): self.read_tag(stream) s = StreamReader(stream) self.version = s.u32() self.rig.key = s.tgi('ITG') self.unknown = s.f32() for i in range(self.RESERVED_COUNT): self.reserved[i] = s.u8() cValues = s.u32() self.bone_weights = [0.0] * cValues for i in range(cValues): self.bone_weights[i] = s.f32()
def read_rcol(self, stream, rcol): s = StreamReader(stream) self.read_tag(stream) self.version = s.u32() self.clip = ExternalResource(s.tgi('ITG')) self.track_mask = ExternalResource(s.tgi('ITG')) cActorSlots = s.i32() assert s.u32() == 0 assert s.u32() == 0 assert s.u32() == 0 self.actor_slots = [self.SlotAssignment(stream) for i in range(cActorSlots)] self.actor_iks = [self.NamespaceSlotSuffix(stream) for i in range(s.i32())] assert s.u32() == DEADBEEF self.additive_clip = ExternalResource(s.tgi('ITG')) self.clip_pattern = s.p32(size=16) s.align() self.additive_clip_pattern = s.p32(size=16) s.align() assert s.u32() == DEADBEEF AnimationNode.read_rcol(self, stream, rcol)
def read_data(self, stream, keys=None): s = StreamReader(stream) if self.type_code == self.TYPE.FLOAT: return s.f32() if self.size32 == 1 else [s.f32() for i in range(self.size32)] if self.type_code == self.TYPE.INT: return s.i32() if self.size32 == 1 else[s.i32() for i in range(self.size32)] if self.type_code == self.TYPE.TEXTURE: if self.size32 == 4: val = keys.get_resource(s.u32()) stream.seek(12, SEEK_CUR) return val elif self.size32 == 5: key = s.tgi('ITG') stream.seek(4, SEEK_CUR) return key
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)
def read_data(self, stream, keys=None): s = StreamReader(stream) if self.type_code == self.TYPE.FLOAT: return s.f32() if self.size32 == 1 else [ s.f32() for i in range(self.size32) ] if self.type_code == self.TYPE.INT: return s.i32() if self.size32 == 1 else [ s.i32() for i in range(self.size32) ] if self.type_code == self.TYPE.TEXTURE: if self.size32 == 4: val = keys.get_resource(s.u32()) stream.seek(12, SEEK_CUR) return val elif self.size32 == 5: key = s.tgi('ITG') stream.seek(4, SEEK_CUR) return key