def toBinaryArray(self): res = List[Byte]() res.AddRange(BitConverter.GetBytes(self.position.X)) res.AddRange(BitConverter.GetBytes(self.position.Y)) res.AddRange(BitConverter.GetBytes(self.normal.X)) res.AddRange(BitConverter.GetBytes(self.normal.Y)) res.AddRange(BitConverter.GetBytes(self.normal.Z)) res.AddRange(BitConverter.GetBytes(self.position.Z)) res.AddRange(BitConverter.GetBytes(self.texCoord.X)) res.AddRange(BitConverter.GetBytes(self.texCoord.Y)) res.AddRange(BitConverter.GetBytes(clr.Convert(self.boneIDs[0], Int32))) res.AddRange(BitConverter.GetBytes(clr.Convert(self.boneIDs[1], Int32))) res.AddRange(BitConverter.GetBytes(clr.Convert(self.boneIDs[2], Int32))) res.AddRange(BitConverter.GetBytes(clr.Convert(self.boneIDs[3], Int32))) res.AddRange(BitConverter.GetBytes(self.boneWeights.X)) res.AddRange(BitConverter.GetBytes(self.boneWeights.Y)) res.AddRange(BitConverter.GetBytes(self.boneWeights.Z)) res.AddRange(BitConverter.GetBytes(self.boneWeights.W)) return Enumerable.ToArray(res)
def toarray(col): return Enumerable.ToArray(col)
def toBinaryArray(self, mesh, i): res = List[Byte]() for e in self.elements: res.AddRange(e.toBinaryArray(mesh, i)) return Enumerable.ToArray(res)
# # bone weights # writer.WriteSByte(4) # writer.WriteSByte(6) # writer.WriteUInt32(7) # vertex declaration writer.WriteUInt32(vertexDeclaration.stride) writer.WriteUInt32(vertexDeclaration.elementCount) for e in vertexDeclaration.elements: writer.WriteSByte(e.dimension) writer.WriteSByte(e.type) writer.WriteUInt32(e.usage) writer.WriteUInt32(vertices.Count / vertexDeclaration.stride) # data = List[Byte]() # for v in vertices: # data.AddRange(vertexDeclaration.toBinaryArray(v)) # assert(data.Count == len(vertices) * vertexDeclaration.stride) writer.WriteByteArray(Enumerable.ToArray(vertices)) # index buffer writer.WriteInt(3) data = List[Byte]() for i in indices: data.AddRange(BitConverter.GetBytes(i)) writer.WriteUInt32(data.Count) writer.WriteByteArray(Enumerable.ToArray(data)) writer.Flush() f.Close()