} // fill vertex shading with 127 public void ReadMCNR(MemoryStream ADTstream, ADTRootData.MeshChunkData chunkData) { StreamTools s = new StreamTools(); chunkData.VertexNormals = new Vector3[145]; for (int n = 0; n < 145; n++) { Vector3 normsRaw = new Vector3(ADTstream.ReadByte(), ADTstream.ReadByte(), ADTstream.ReadByte()); var calcX = s.NormalizeValue(normsRaw.x); if (calcX <= 0) { calcX = 1 + calcX; } else if (calcX > 0) { calcX = (1 - calcX) * (-1); } var calcY = s.NormalizeValue(normsRaw.y); if (calcY <= 0) { calcY = 1 + calcY; } else if (calcY > 0) { calcY = (1 - calcY) * (-1); } var calcZ = s.NormalizeValue(normsRaw.z); if (calcZ <= 0) { calcZ = 1 + calcZ; } else if (calcZ > 0) { calcZ = (1 - calcZ) * (-1); } chunkData.VertexNormals[n] = new Vector3(calcX, calcZ, calcY); } // skip unused 13 byte padding // ADTstream.Seek(13, SeekOrigin.Current); } // normals