From b5f64c5ad3e2debd783b8cb66e784c1b9b88e922 Mon Sep 17 00:00:00 2001 From: devZoGok Date: Mon, 14 Dec 2020 20:11:15 +0200 Subject: [PATCH] improved .vb reader --- vbModelReader.cpp | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/vbModelReader.cpp b/vbModelReader.cpp index eed2c5b..3e0b8cb 100644 --- a/vbModelReader.cpp +++ b/vbModelReader.cpp @@ -21,12 +21,19 @@ namespace vb01{ map meshBracketIds, skeletonBracketIds, lightBracketIds; getObjectBounds(meshBracketIds, skeletonBracketIds, lightBracketIds); - for(int i = 0; i < skeletonBracketIds.size() / 2; i++) - readSkeleton(skeletonBracketIds[i * 2], skeletonBracketIds[i * 2 + 1]); - for(int i = 0; i < meshBracketIds.size() / 2; i++) - readMeshes(meshBracketIds[i * 2], meshBracketIds[i * 2 + 1]); - for(int i = 0; i < lightBracketIds.size() / 2; i++) - readLights(lightBracketIds[i * 2], lightBracketIds[i * 2 + 1]); + map::iterator it; + for(it = skeletonBracketIds.begin(); it != skeletonBracketIds.end(); ++it){ + int key = it->first; + readSkeleton(key, skeletonBracketIds[key]); + } + for(it = meshBracketIds.begin(); it != meshBracketIds.end(); ++it){ + int key = it->first; + readMeshes(key, meshBracketIds[key]); + } + for(it = lightBracketIds.begin(); it != lightBracketIds.end(); ++it){ + int key = it->first; + readLights(key, lightBracketIds[key]); + } connectNodes(); } @@ -37,13 +44,11 @@ namespace vb01{ void VbModelReader::getObjectBounds(map &meshBracketIds, map &skeletonBracketIds, map &lightBracketIds){ const string meshType = "MESH", skeletonType = "ARMATURE", lightType = "LIGHT"; - int lineIndex = 0; + int lineIndex = 0, leftBracket = -1, rightBracket = -1; string line, type; ifstream file(path); while(getline(file, line)){ - int leftBracket, rightBracket; - if(line[0] == '{'){ leftBracket = lineIndex; @@ -56,14 +61,17 @@ namespace vb01{ else if(line[0] == '}') rightBracket = lineIndex; - if(type == meshType) - meshBracketIds.emplace(leftBracket, rightBracket); - else if(type == skeletonType) - skeletonBracketIds.emplace(leftBracket, rightBracket); - else if(type == lightType) - lightBracketIds.emplace(leftBracket, rightBracket); + if(leftBracket != -1 && rightBracket != -1){ + if(type == meshType) + meshBracketIds.emplace(leftBracket, rightBracket); + else if(type == skeletonType) + skeletonBracketIds.emplace(leftBracket, rightBracket); + else if(type == lightType) + lightBracketIds.emplace(leftBracket, rightBracket); + + leftBracket = -1, rightBracket = -1; + } - getline(file, line); lineIndex++; }