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 SortNormalBlock(ByteBufferReader reader) { reader.FastForward(sizeof(int)); size = reader.ReadInt(); planeNormal = reader.ReadVector3(); planePoint = reader.ReadVector3(); reserved = reader.ReadInt(); frontOffset = reader.ReadInt(); backOffset = reader.ReadInt(); preListOffset = reader.ReadInt(); postListOffset = reader.ReadInt(); onlineOffset = reader.ReadInt(); boundingBoxMin = reader.ReadVector3(); boundingBoxMax = reader.ReadVector3(); }
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 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(); } }