Node::NodeSP SceneLoader::_LoadElement(const QDomElement& og_element, Node::NodeSP dt_node) { QString name = og_element.nodeName(); Node::NodeSP node = nullptr; if(name == SL_LIGHT) { node = _LoadLight(og_element, dt_node); //Light } else if(name == SL_CAMERA) { node = _LoadCamera(og_element, dt_node); //Camera } else if(name == SL_SOUND) { node = _LoadSound(og_element, dt_node); //Sound } else if(name == SL_NODE) { if(og_element.firstChildElement(SL_ENTITY).isNull() && og_element.firstChildElement(SL_PLANE).isNull()) { node = _LoadNode(og_element, dt_node); //Node } else { node = _LoadMesh(og_element, dt_node); //Mesh } } return node; }
void ModelImporter_Impl::_LoadChildNodes(ModelNode* parentNode, aiNode** children) { parentNode->Nodes = new ModelNode[parentNode->numChildren]; for (unsigned int i = 0; i < parentNode->numChildren; ++i) { auto myChildNode = &parentNode->Nodes[i]; myChildNode->ParentNode = parentNode; auto childNode = children[i]; _LoadNode(myChildNode, childNode); } }
void ModelImporter_Impl::_LoadRootNode(ModelScene* scene, const aiScene* aiscene) { if (scene == NULL || aiscene == NULL) return; ModelNode* myRootNode = NULL; aiNode* rootNode = aiscene->mRootNode; if (rootNode) { scene->RootNode = new ModelNode(); auto myRootNode = scene->RootNode; myRootNode->ParentNode = NULL; _LoadNode(myRootNode, rootNode); } }