本文整理汇总了Golang中github.com/tgascoigne/xdr2obj/resource.Container.Read方法的典型用法代码示例。如果您正苦于以下问题:Golang Container.Read方法的具体用法?Golang Container.Read怎么用?Golang Container.Read使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/tgascoigne/xdr2obj/resource.Container
的用法示例。
在下文中一共展示了Container.Read方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Unpack
func (buf *IndexBuffer) Unpack(res *resource.Container) error {
buf.Stride = 3 * 2 // 3*uint16 /* is this stored anywhere? */
res.Parse(&buf.IndexHeader)
buf.Index = make([]*types.Tri, buf.Count/3)
for i := range buf.Index {
buf.Index[i] = new(types.Tri)
}
if err := res.Detour(buf.Buffer, func() error {
buffer := make([]byte, buf.Stride)
reader := bytes.NewReader(buffer)
for _, idx := range buf.Index {
/* Read the index into our local buffer */
if size, err := res.Read(buffer); size != buf.Stride || err != nil {
return err
}
/* Parse out the info we can */
if err := binary.Read(reader, binary.BigEndian, idx); err != nil {
return err
}
reader.Seek(0, 0)
}
return nil
}); err != nil {
return err
}
return nil
}
示例2: Unpack
func (vert *Vertex) Unpack(res *resource.Container, buf *VertexBuffer) error {
buffer := make([]byte, buf.Stride)
reader := bytes.NewReader(buffer)
/* Read the vertex into our local buffer */
if size, err := res.Read(buffer); uint16(size) != buf.Stride || err != nil {
return err
}
offset := 0
/* Parse out the info we can */
if buf.Format.Has(export.VertXYZ) {
if err := binary.Read(reader, binary.BigEndian, &vert.WorldCoord); err != nil {
return err
}
offset += (4 * 3)
}
if buf.Format.Has(export.VertUnkA) {
junk := make([]byte, 4)
reader.Read(junk)
offset += 4
}
if buf.Format.Has(export.VertUnkB) {
junk := make([]byte, 4)
reader.Read(junk)
offset += 4
}
if buf.Format.Has(export.VertUnkC) {
junk := make([]byte, 4)
reader.Read(junk)
offset += 4
}
if buf.Format.Has(export.VertColour) {
if err := binary.Read(reader, binary.BigEndian, &vert.Colour); err != nil {
return err
}
offset += 4
}
if buf.Format.Has(export.VertUnkD) {
junk := make([]byte, 4)
reader.Read(junk)
offset += 4
}
if buf.Format.Has(export.VertUV0) {
if err := binary.Read(reader, binary.BigEndian, &vert.UV0); err != nil {
return err
}
offset += 4
}
if buf.Format.Has(export.VertUV1) {
if err := binary.Read(reader, binary.BigEndian, &vert.UV1); err != nil {
return err
}
offset += 4
}
if buf.Format.Has(export.VertUnkX) {
junk := make([]byte, 4)
reader.Read(junk)
offset += 4
}
return nil
}