void SkeletalExporterBase::gather(INode* node, Vector<ExportNode>& physiqueNodes, Vector<ExportNode>& skinNodes) { if (!node) return; auto doExport = !onlyExportSelected || (onlyExportSelected && node->Selected()); // Look for a physique modifier on this node auto modifier = findModifier(node, Class_ID(PHYSIQUE_CLASS_ID_A, PHYSIQUE_CLASS_ID_B)); if (modifier) physiqueNodes.emplace(node, modifier, doExport); // Look for a skin modifier on this node modifier = findModifier(node, SKIN_CLASSID); if (modifier) skinNodes.emplace(node, modifier, doExport); // Go through child nodes for (auto i = 0; i < node->NumberOfChildren(); i++) gather(node->GetChildNode(i), physiqueNodes, skinNodes); }
bool CIwGameModifierManager::addModifier(IIwGameModifier* modifier) { #if defined(_DEBUG) if (findModifier(modifier->getNameHash())) { CIwGameError::LogError("Warning: Modifier already exists in modifier list - ", modifier->getName().c_str()); return false; } #endif //(_DEBUG) Modifiers.push_back(modifier); modifier->setParent(this); return true; }
IIwGameModifier* CIwGameModifierManager::findModifier(const char* name) { return findModifier(CIwGameString::CalculateHash(name)); }