void PathGraph::readObject(IffStream* iffStream) { iffStream->openForm('PGRF'); iffStream->openForm('0001'); iffStream->openChunk('META'); type = static_cast<PathGraphType>(iffStream->getInt()); iffStream->closeChunk('META'); iffStream->openChunk('PNOD'); int nodesSize = iffStream->getInt(); for (int i = 0; i < nodesSize; ++i) { PathNode* pathNode = new PathNode(this); pathNode->readObject(iffStream); pathNodes.add(pathNode); } iffStream->closeChunk('PNOD'); iffStream->openChunk('PEDG'); Vector<PathEdge> pathEdges; int pathEdgeSize = iffStream->getInt(); for (int i = 0; i < pathEdgeSize; ++i) { PathEdge pathEdge; pathEdge.readObject(iffStream); pathEdges.add(pathEdge); } iffStream->closeChunk('PEDG'); iffStream->openChunk('ECNT'); int ecntSize = iffStream->getInt(); for (int i = 0; i < ecntSize; ++i) { edgeCounts.add(iffStream->getInt()); } iffStream->closeChunk('ECNT'); iffStream->openChunk('ESTR'); int estrSize = iffStream->getInt(); for (int i = 0; i < estrSize; ++i) { edgeStarts.add(iffStream->getInt()); } iffStream->closeChunk('ESTR'); iffStream->closeForm('0001'); iffStream->closeForm('PGRF'); connectNodes(pathEdges); }
void PathGraph::readObject(IffStream* iffStream) { iffStream->openForm('PGRF'); iffStream->openForm('0001'); iffStream->openChunk('META'); unkownMetaInt = iffStream->getInt(); iffStream->closeChunk('META'); iffStream->openChunk('PNOD'); int nodesSize = iffStream->getInt(); for (int i = 0; i < nodesSize; ++i) { PathNode* pathNode = new PathNode(this); pathNode->readObject(iffStream); pathNodes.add(pathNode); } iffStream->closeChunk('PNOD'); iffStream->openChunk('PEDG'); //Vector<PathEdge> pathEdges; int pathEdgeSize = iffStream->getInt(); for (int i = 0; i < pathEdgeSize; ++i) { PathEdge* pathEdge = new PathEdge(); pathEdge->readObject(iffStream); pathEdges.add(pathEdge); } iffStream->closeChunk('PEDG'); iffStream->openChunk('ECNT'); int ecntSize = iffStream->getInt(); for (int i = 0; i < ecntSize; ++i) { ecnt.add(iffStream->getInt()); } iffStream->closeChunk('ECNT'); iffStream->openChunk('ESTR'); int estrSize = iffStream->getInt(); for (int i = 0; i < estrSize; ++i) { estr.add(iffStream->getInt()); } iffStream->closeChunk('ESTR'); iffStream->closeForm('0001'); iffStream->closeForm('PGRF'); connectNodes(); }