Example #1
0
 def write(self, stream, resource=None):
     s = StreamWriter(stream)
     keys = self.names.keys()
     s.u32(len(keys))
     for key in keys:
         s.u64(key)
         s.p32(self.names[key])
Example #2
0
    def write_rcol(self, stream, rcol):
        s = StreamWriter(stream)
        self.write_tag(stream)
        s.u32(self.version)
        s.tgi(self.clip, 'ITG')
        s.tgi(self.track_mask, 'ITG')

        s.i32(len(self.actor_slots))
        s.u32(0)
        s.u32(0)
        s.u32(0)
        for actor_slot in self.actor_slots:
            actor_slot.write(stream)
        s.i32(len(self.actor_iks))
        for actor_ik in self.actor_iks:
            actor_ik.write(stream)

        s.u32(DEADBEEF)
        s.tgi(self.additive_clip)
        s.p32(self.clip_pattern, size=16)
        s.align()
        s.p32(self.additive_clip_pattern, size=16)
        s.align()
        s.u32(DEADBEEF)
        AnimationNode.write_rcol(self, stream, rcol)
Example #3
0
    def write(self, stream, resources=None):
        s = StreamWriter(stream)
        s.u32(self.version)
        tgi = TGIList(package=resources)
        tgi.begin_write(stream)
        s.i8(len(self.components))
        for component in self.components:
            s.hash(component)

        def write_component_data(data):
            s.i8(data[0])
            val = data[1]
            if isinstance(val, str):
                s.p32(val)
            elif isinstance(val, Resource):
                s.i32(tgi.get_resource_index(val))
            elif isinstance(val, int):
                s.u32(val)
            else:
                raise Exception("Unable to handle data type %" % type(val))

        k = self.component_data.keys()
        s.i8(len(k))
        for key in k:
            s.p32(key)
            write_component_data(self.component_data[key])
        s.i8(self.visible)
        tgi.end_write(stream)
Example #4
0
 def write(self, stream, resource=None):
     s = StreamWriter(stream)
     keys = self.names.keys()
     s.u32(len(keys))
     for key in keys:
         s.u64(key)
         s.p32(self.names[key])
Example #5
0
 def write(self, stream, resource=None):
     s = StreamWriter(stream)
     s.u32(self.version_major)
     s.u32(self.version_minor)
     s.i32(len(self.bones))
     for bone in self.bones:
         for i in range(3): s.f32(bone.position[i])
         for i in range(4): s.f32(bone.orientation[i])
         for i in range(3): s.f32(bone.scale[i])
         assert bone.name != None, "Bone %s must have a name"
         s.p32(bone.name)
         s.i32(-1 if not bone.opposite in self.bones else self.bones.index(bone.opposite))
         s.i32(-1 if not bone.parent in self.bones else self.bones.index(bone.parent))
         s.u32(FNV32.hash(bone.name))
         s.u32(bone.flags)
     if self.version_major >= 4: s.p32(self.name)
     s.i32(len(self.ik_chains))
     for chain in self.ik_chains:
         chain.write(stream)
Example #6
0
    def write_rcol(self, stream, rcol):
        s = StreamWriter(stream)
        self.write_tag(stream)
        s.u32(self.version)
        s.tgi(self.clip, 'ITG')
        s.tgi(self.track_mask, 'ITG')

        s.i32(len(self.actor_slots))
        s.u32(0)
        s.u32(0)
        s.u32(0)
        for actor_slot in self.actor_slots: actor_slot.write(stream)
        s.i32(len(self.actor_iks))
        for actor_ik in self.actor_iks: actor_ik.write(stream)

        s.u32(DEADBEEF)
        s.tgi(self.additive_clip)
        s.p32(self.clip_pattern, size=16)
        s.align()
        s.p32(self.additive_clip_pattern, size=16)
        s.align()
        s.u32(DEADBEEF)
        AnimationNode.write_rcol(self, stream, rcol)
Example #7
0
File: rig.py Project: garthand/s3py
 def write(self, stream, resource=None):
     s = StreamWriter(stream)
     s.u32(self.version_major)
     s.u32(self.version_minor)
     s.i32(len(self.bones))
     for bone in self.bones:
         for i in range(3):
             s.f32(bone.position[i])
         for i in range(4):
             s.f32(bone.orientation[i])
         for i in range(3):
             s.f32(bone.scale[i])
         assert bone.name != None, "Bone %s must have a name"
         s.p32(bone.name)
         s.i32(-1 if not bone.opposite in self.bones else self.bones.
               index(bone.opposite))
         s.i32(-1 if not bone.parent in self.bones else self.bones.
               index(bone.parent))
         s.u32(FNV32.hash(bone.name))
         s.u32(bone.flags)
     if self.version_major >= 4: s.p32(self.name)
     s.i32(len(self.ik_chains))
     for chain in self.ik_chains:
         chain.write(stream)