Пример #1
0
    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)
Пример #2
0
 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)
Пример #3
0
 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)
Пример #4
0
 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()
Пример #5
0
 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()
Пример #6
0
    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)
Пример #7
0
 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
Пример #8
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)
Пример #9
0
 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