Esempio n. 1
0
bool TextureSet::Parse(ESMStream& stream) {
    
    while(stream.IsValid() == true) {
        FieldHeader fieldHeader;
        
        stream.ReadFieldHeader(fieldHeader);
        
        switch(fieldHeader.Tag) {
            case ESMTag::EDID:
                FieldParser::ParseEDIDField(stream, fieldHeader.Size, mEditorId);
                break;
                
            case ESMTag::OBND:
                FieldParser::ParseOBDNField(stream, fieldHeader.Size, mBounds);
                break;
                
            case ESMTag::TX00:
            case ESMTag::TX01:
            case ESMTag::TX02:
            case ESMTag::TX03:
            case ESMTag::TX04:
            case ESMTag::TX05:
            case ESMTag::TX06:
            case ESMTag::TX07:
            {
                std::string textureName;
                FieldParser::ParseTXNNField(stream, fieldHeader.Size, textureName);
                
                mTextureNames.push_back(std::move(textureName));
                break;
            }
                
            case ESMTag::DODT:
                FieldParser::ParseDODTField(stream, fieldHeader.Size, mDecalData);
                break;
                
            case ESMTag::DNAM:
                stream.Read16((uint16_t&)mFlags);
                break;
                
            default:
                return false;
        }
    }
    
    return true;
}
Esempio n. 2
0
bool FalloutScript::Parse(ESMStream& stream) {
    while(stream.IsValid() == true) {
        FieldHeader header;
        
        stream.ReadFieldHeader(header);
        
        switch(header.Tag) {
            case ESMTag::EDID:
                FieldParser::ParseEDIDField(stream, header.Size, mEditorID);
                break;
                
            case ESMTag::SCHR:
                FieldParser::ParseSCHRField(stream, header.Size, mScriptHeader);
                break;
                
            case ESMTag::SCDA:
                FieldParser::ParseBinaryField(stream, header.Size, mScriptBytecode);
                break;
                
            case ESMTag::SCTX:
                FieldParser::ParseEDIDField(stream, header.Size, mScriptSource);
                break;
                
            case ESMTag::SCRO:
            {
                FormIdentifier id = 0;
                
                FieldParser::ParseFormID(stream, header.Size, id);
                mReferences.push_back(id);
                break;
            }   
            
            case ESMTag::SCVR:
            case ESMTag::SCRV: //TODO: This is undocumented, fixed uint32_t field
            case ESMTag::SLSD:
                //TODO: Handle these
                stream.Skip(header.Size);
                break;
                
            default:
                return false;
        }
    }
    
    return true;
}
Esempio n. 3
0
bool LandscapeTextureSet::Parse(ESMStream& stream) {
    while(stream.IsValid() == true) {
        FieldHeader header;
        
        stream.ReadFieldHeader(header);
        
        switch(header.Tag) {
            case ESMTag::EDID:
                FieldParser::ParseEDIDField(stream, header.Size, mEditorId);
                break;
                
            case ESMTag::ICON:
                FieldParser::ParseEDIDField(stream, header.Size, mLargeIconFilename);
                break;
                
            case ESMTag::MICO:
                FieldParser::ParseEDIDField(stream, header.Size, mSmallIconFilename);
                break;
                
            case ESMTag::TNAM:
                FieldParser::ParseFormID(stream, header.Size, mTextureIdentifier);
                break;
                
            case ESMTag::HNAM:
                FieldParser::ParseHavokData(stream, header.Size, mHavokData);
                break;
                
            case ESMTag::SNAM:
                FieldParser::ParseByteValue(stream, header.Size, mSpecularExponent);
                break;
                
            case ESMTag::GNAM:
                FieldParser::ParseFormID(stream, header.Size, mGrassIdentifier);
                break;
                
            default:
                return false;
        }
    }
    
    return true;
}