private void ReadSourceVtxModels(long bodyPartInputFileStreamPosition, SourceVtxBodyPart aBodyPart) { long modelInputFileStreamPosition; long inputFileStreamPosition; stream.Position = bodyPartInputFileStreamPosition + aBodyPart.modelOffset; aBodyPart.theVtxModels = new SourceVtxModel[aBodyPart.modelCount]; for (int i = 0; i < aBodyPart.theVtxModels.Length; i++) { modelInputFileStreamPosition = stream.Position; aBodyPart.theVtxModels[i] = new SourceVtxModel(); aBodyPart.theVtxModels[i].lodCount = FileReader.readInt(stream); aBodyPart.theVtxModels[i].lodOffset = FileReader.readInt(stream); inputFileStreamPosition = stream.Position; if (aBodyPart.theVtxModels[i].lodCount > 0 && aBodyPart.theVtxModels[i].lodOffset != 0) { ReadSourceVtxModelLods(modelInputFileStreamPosition, aBodyPart.theVtxModels[i]); } stream.Position = inputFileStreamPosition; } }
public SourceVtxBodyPart[] ReadSourceVtxBodyParts() { if (header.numBodyParts > 0) { theFirstMeshWithStripGroups = null; theFirstMeshWithStripGroupsInputFileStreamPosition = -1; theSecondMeshWithStripGroups = null; theExpectedStartOfSecondStripGroupList = -1; theStripGroupUsesExtra8Bytes = false; long bodyPartInputFileStreamPosition; long inputFileStreamPosition; stream.Position = header.bodyPartOffset; bodyParts = new SourceVtxBodyPart[header.numBodyParts]; for (int i = 0; i < bodyParts.Length; i++) { bodyPartInputFileStreamPosition = stream.Position; bodyParts[i] = new SourceVtxBodyPart(); bodyParts[i].modelCount = FileReader.readInt(stream); bodyParts[i].modelOffset = FileReader.readInt(stream); inputFileStreamPosition = stream.Position; if (bodyParts[i].modelCount > 0 && bodyParts[i].modelOffset != 0) { ReadSourceVtxModels(bodyPartInputFileStreamPosition, bodyParts[i]); } stream.Position = inputFileStreamPosition; } } return(bodyParts); }