public int Read(ByteBufferReader reader) { BlockHeader header = new BlockHeader(reader); vertexCount = reader.ReadInt(); reader.ReadInt(); //normal count reader.ReadInt(); //offset vertexData = new VertexData[vertexCount]; normalCounts = new int[vertexCount]; normals = new List <Vector3>(); for (int i = 0; i < normalCounts.Length; i++) { normalCounts[i] = reader.ReadByte(); } for (int i = 0; i < vertexCount; i++) { int normalCountForVertex = normalCounts[i]; vertexData[i].vertex = reader.ReadVector3(); vertexData[i].normals = new Vector3[normalCountForVertex]; for (int j = 0; j < normalCountForVertex; j++) { Vector3 normal = reader.ReadVector3(); vertexData[i].normals[j] = normal; normals.Add(normal); } } return(header.size); }
public FlatPolygonBlock(ByteBufferReader reader) { reader.FastForward(sizeof(int)); size = reader.ReadInt(); normal = reader.ReadVector3(); center = reader.ReadVector3(); radius = reader.ReadFloat(); vertexCount = reader.ReadInt(); red = reader.ReadByte(); green = reader.ReadByte(); blue = reader.ReadByte(); pad = reader.ReadByte(); vertexMap = new PolygonVertex[vertexCount]; for (int i = 0; i < vertexCount; i++) { vertexMap[i].vertexIndex = reader.ReadUShort(); vertexMap[i].normalIndex = reader.ReadUShort(); } }
private int readDataByteBuffer(ByteBufferReader reader, List <object> data) { Assert.IsNotNull(reader); Assert.IsNotNull(data); int count = 0; while (reader.Position < reader.Buffer.Count) { int index = (int)reader.ReadVarint32(); object value = null; switch (index) { case 0: value = reader.ReadBool(); break; case 1: value = reader.ReadByte(); break; case 2: value = reader.ReadUint16(); break; case 3: value = reader.ReadUint32(); break; case 4: value = reader.ReadUint64(); break; case 5: value = reader.ReadInt16(); break; case 6: value = reader.ReadInt32(); break; case 7: value = reader.ReadInt64(); break; case 8: value = reader.ReadVarint32(); break; case 9: value = reader.ReadVarint64(); break; case 10: value = reader.ReadSVarint32(); break; case 11: value = reader.ReadSVarint64(); break; case 12: value = reader.ReadFloat(); break; case 13: value = reader.ReadDouble(); break; case 14: value = reader.ReadString(); break; case 15: { int length = (int)reader.ReadVarint32(); value = new byte[length]; reader.ReadBuffer((byte[])value, 0, length); } break; case 16: { int size = (int)reader.ReadVarint32(); reader.Skip(size); value = size; } break; default: Assert.Fail(); break; } Assert.AreEqual(value, data[index], "index: " + index); count++; } return(count); }