예제 #1
0
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);
}
예제 #2
0
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;
}
예제 #3
0
IIwGameModifier* CIwGameModifierManager::findModifier(const char* name)
{
	return findModifier(CIwGameString::CalculateHash(name));
}