public TexturedPolygonBlock(ByteBufferReader reader) { reader.FastForward(sizeof(int)); size = reader.ReadInt(); normal = reader.ReadVector3(); center = reader.ReadVector3(); radius = reader.ReadFloat(); vertexCount = reader.ReadInt(); textureIndex = reader.ReadInt(); vertexMap = new PolygonVertex[vertexCount]; for (int i = 0; i < vertexCount; i++) { vertexMap[i].vertexIndex = reader.ReadUShort(); vertexMap[i].normalIndex = reader.ReadUShort(); vertexMap[i].u = reader.ReadFloat(); vertexMap[i].v = reader.ReadFloat(); } }
ClipMeshData GetMeshData(ByteBufferReader bbuffer) { ClipMeshData meshData = new ClipMeshData(); meshData.timeLenth = bbuffer.ReadFloat(); meshData.Frame2TimePoint = bbuffer.ReadFloat(); meshData.Frame3TimePoint = bbuffer.ReadFloat(); // meshData.Frame4TimePoint = bbuffer.ReadFloat(); meshData.subMeshCount = bbuffer.ReadInt(); meshData.subMeshTriangleLens = new int[meshData.subMeshCount]; for (int m = 0; m < meshData.subMeshCount; m++) { meshData.subMeshTriangleLens[m] = bbuffer.ReadInt(); } int triangleBufferCount = bbuffer.ReadInt(); meshData.triangleBuffer = new int[triangleBufferCount]; for (int m = 0; m < triangleBufferCount; m++) { meshData.triangleBuffer[m] = bbuffer.ReadInt(); } int vertexBufferCount = bbuffer.ReadInt(); meshData.vertexBuffer = new float[vertexBufferCount]; for (int m = 0; m < vertexBufferCount; m++) { meshData.vertexBuffer[m] = bbuffer.ReadFloat(); } int normalBufferCount = bbuffer.ReadInt(); meshData.normalBuffer = new float[normalBufferCount]; for (int m = 0; m < normalBufferCount; m++) { meshData.normalBuffer[m] = bbuffer.ReadFloat(); } int tangentBufferCount = bbuffer.ReadInt(); meshData.tangentBuffer = new float[tangentBufferCount]; for (int m = 0; m < tangentBufferCount; m++) { meshData.tangentBuffer[m] = bbuffer.ReadFloat(); } int uvBufferCount = bbuffer.ReadInt(); meshData.uvBuffer = new float[uvBufferCount]; for (int m = 0; m < uvBufferCount; m++) { meshData.uvBuffer[m] = bbuffer.ReadFloat(); } int uv2BufferCount = bbuffer.ReadInt(); meshData.uv2Buffer = new float[uv2BufferCount]; for (int m = 0; m < uv2BufferCount; m++) { meshData.uv2Buffer[m] = bbuffer.ReadFloat(); } //int colorBufferCount = bbuffer.ReadInt(); //meshData.colorBuffer = new float[colorBufferCount]; //for (int m = 0; m < colorBufferCount; m++) //{ // meshData.colorBuffer[m] = bbuffer.ReadFloat(); //} return(meshData); }
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); }
private void ParseHeaderSection() { Header header = model.header; header.maxRadius = reader.ReadFloat(); header.objectFlags = reader.ReadInt(); header.subObjectCount = reader.ReadInt(); header.minBounding = reader.ReadVector3(); header.maxBounding = reader.ReadVector3(); int detailLevels = reader.ReadInt(); header.detailLevelIndices = new int[detailLevels]; for (int i = 0; i < detailLevels; i++) { header.detailLevelIndices[i] = reader.ReadInt(); } int debrisCount = reader.ReadInt(); header.debrisCountIndices = new int[debrisCount]; for (int i = 0; i < debrisCount; i++) { header.debrisCountIndices[i] = reader.ReadInt(); } header.mass = reader.ReadFloat(); header.centerOfMass = reader.ReadVector3(); header.momentOfInertia = reader.ReadFloatArray(9); int crossSectionCount = reader.ReadInt(); if (crossSectionCount < 0) { crossSectionCount = 0; } header.crossSections = new CrossSection[crossSectionCount]; for (int i = 0; i < header.crossSections.Length; i++) { header.crossSections[i].depth = reader.ReadFloat(); header.crossSections[i].radius = reader.ReadFloat(); } header.muzzleLights = new MuzzleLight[reader.ReadInt()]; for (int i = 0; i < header.muzzleLights.Length; i++) { header.muzzleLights[i].location = reader.ReadVector3(); header.muzzleLights[i].lightType = reader.ReadInt(); } }