Ejemplo n.º 1
0
    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;
        }
    }
Ejemplo n.º 2
0
    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);
    }