Esempio n. 1
0
Model::Ptr Model::clone(const std::string& newname) const
{
	NodeMap map;

	Model::Ptr result(new Model());
	if (newname.empty()) {
		result->id = id;
	}
	else {
		result->id = newname;
	}

	result->root = root->clone(map); //this populates map with Old Node -> New Node entries

	for (Controller *obj: controllers) {
		result->addController(obj->clone(map));
	}
	for (Renderable *obj: renderables) {
		result->addRenderable(obj->clone(map));
	}
	for (const auto& entry: nodes) {
		result->addNamedNode(entry.first, map.get(entry.second));
	}

	result->shape = shape;
	
	return result;
}
Esempio n. 2
0
DOMNode* ScriptInterpreter::getDOMNodeForDocument(Document* document, Node* node)
{
    if (!document)
        return static_cast<DOMNode*>(domObjects().get(node));
    NodeMap* documentDict = domNodesPerDocument().get(document);
    if (documentDict)
        return documentDict->get(node);
    return NULL;
}