void WorldState::loadObjectTransforms(glm::mat4 oM) { loadTransforms(model * oM, view, projection); }
void WorldState::loadTransforms() { loadTransforms(model, view, projection); }
void WorldState::loadTransforms(glm::mat4 M) { loadTransforms(M, view, projection); }
void DSIGReference::load(void) { // Load reference info from XML DOMNamedNodeMap *atts = mp_referenceNode->getAttributes(); DOMNode *tmpElt; const XMLCh * name; safeBuffer sbName; if (atts != 0) { XMLSize_t size = atts->getLength(); for (XMLSize_t i = 0; i < size; ++i) { name = atts->item(i)->getNodeName(); sbName << (*mp_formatter << atts->item(i)->getNodeName()); if (strEquals(name, s_unicodeStrURI)) { mp_URI = atts->item(i)->getNodeValue(); } else if (strEquals(name, "Type")) { // Check if a manifest, otherwise ignore for now if (strEquals(atts->item(i)->getNodeValue(), DSIGConstants::s_unicodeStrURIMANIFEST)) m_isManifest = true; } else if (strEquals(name, "Id")) { // For now ignore } else if (sbName.sbStrncmp("xmlns", 5) == 0) { // Ignore name spaces } else { //safeBuffer tmp, error; //error << (*mp_formatter << name); //tmp.sbStrcpyIn("Unknown attribute in <Reference> Element : "); //tmp.sbStrcatIn(error); throw XSECException(XSECException::UnknownDSIGAttribute, "Unknown attribute in <Reference> Element"); } } } // Now check for Transforms tmpElt = mp_referenceNode->getFirstChild(); while (tmpElt != 0 && (tmpElt->getNodeType() != DOMNode::ELEMENT_NODE)) { if (tmpElt->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE) { throw XSECException(XSECException::ExpectedDSIGChildNotFound, "EntityReference nodes in <Reference> are unsupported."); } // Skip text and comments tmpElt = tmpElt->getNextSibling(); } if (tmpElt == 0) { throw XSECException(XSECException::ExpectedDSIGChildNotFound, "Expected <Transforms> or <DigestMethod> within <Reference>"); } if (strEquals(getDSIGLocalName(tmpElt), "Transforms")) { // Store node for later use mp_transformsNode = tmpElt; // Load the transforms mp_transformList = loadTransforms(tmpElt, mp_formatter, mp_env); // Find next node tmpElt = tmpElt->getNextSibling(); while (tmpElt != 0 && (tmpElt->getNodeType() != DOMNode::ELEMENT_NODE)) { if (tmpElt->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE) { throw XSECException(XSECException::ExpectedDSIGChildNotFound, "EntityReference nodes in <Reference> are unsupported."); } tmpElt = tmpElt->getNextSibling(); } } /* if tmpElt node type = transforms */ else { mp_transformList = NULL; } if (tmpElt == NULL || !strEquals(getDSIGLocalName(tmpElt), "DigestMethod")) { throw XSECException(XSECException::ExpectedDSIGChildNotFound, "Expected <DigestMethod> element"); } // Determine what the digest method actually is atts = tmpElt->getAttributes(); unsigned int i; for (i = 0; i < atts->getLength() && !strEquals(atts->item(i)->getNodeName(), DSIGConstants::s_unicodeStrAlgorithm); ++i); if (i == atts->getLength()) { throw XSECException(XSECException::ExpectedDSIGChildNotFound, "Expected 'Algorithm' attribute in <DigestMethod>"); } mp_algorithmURI = atts->item(i)->getNodeValue(); // Determine hashing algorithm XSECmapURIToHashMethod(mp_algorithmURI, me_hashMethod); // Find the hash value node tmpElt = tmpElt->getNextSibling(); while (tmpElt != 0 && (tmpElt->getNodeType() != DOMNode::ELEMENT_NODE || !strEquals(getDSIGLocalName(tmpElt), "DigestValue"))) { if (tmpElt->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE) { throw XSECException(XSECException::ExpectedDSIGChildNotFound, "EntityReference nodes in <Reference> are unsupported."); } tmpElt = tmpElt->getNextSibling(); } if (tmpElt == 0) { throw XSECException(XSECException::ExpectedDSIGChildNotFound, "Expected <DigestValue> within <Reference>"); } mp_hashValueNode = tmpElt; // If we are a manifest, then we need to load the manifest references if (m_isManifest) { // Find the manifest node - we cheat and use a transform TXFMBase * docObject; DOMNode * manifestNode, * referenceNode; docObject = getURIBaseTXFM(mp_referenceNode->getOwnerDocument(), mp_URI, mp_env); manifestNode = docObject->getFragmentNode(); delete docObject; // Now search downwards to find a <Manifest> if (manifestNode == 0 || manifestNode->getNodeType() != DOMNode::ELEMENT_NODE || (!strEquals(getDSIGLocalName(manifestNode), "Object") && !strEquals(getDSIGLocalName(manifestNode), "Manifest"))) { throw XSECException(XSECException::ExpectedDSIGChildNotFound, "Expected <Manifest> or <Object> URI for Manifest Type <Reference>"); } if (strEquals(getDSIGLocalName(manifestNode), "Object")) { // Find Manifest child manifestNode = manifestNode->getFirstChild(); while (manifestNode != 0 && manifestNode->getNodeType() != DOMNode::ELEMENT_NODE) { if (manifestNode->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE) { throw XSECException(XSECException::ExpectedDSIGChildNotFound, "EntityReference nodes in <Reference> are unsupported."); } manifestNode = manifestNode->getNextSibling(); } if (manifestNode == 0 || !strEquals(getDSIGLocalName(manifestNode), "Manifest")) throw XSECException(XSECException::ExpectedDSIGChildNotFound, "Expected <Manifest> as child of <Object> for Manifest Type <Reference>"); } // Now have the manifest node, find the first reference and load! referenceNode = manifestNode->getFirstChild(); while (referenceNode != 0 && (referenceNode->getNodeType() != DOMNode::ELEMENT_NODE || !strEquals(getDSIGLocalName(referenceNode), "Reference"))) { if (referenceNode->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE) { throw XSECException(XSECException::ExpectedDSIGChildNotFound, "EntityReference nodes in <Reference> are unsupported."); } referenceNode = referenceNode->getNextSibling(); } if (referenceNode == 0) throw XSECException(XSECException::ExpectedDSIGChildNotFound, "Expected <Reference> as child of <Manifest>"); // Have reference node, so lets create a list! mp_manifestList = DSIGReference::loadReferenceListFromXML(mp_env, referenceNode); } /* m_isManifest */ m_loaded = true; }