Beispiel #1
0
void AstModifiers::Unparse(Ostream& os, LexStream* lex_stream)
{
    if (debug_unparse)
        os << "/*AstModifiers:#" << id << "*/";
    for (unsigned i = 0; i < NumModifiers(); i++)
    {
        Modifier(i) -> Unparse(os, lex_stream);
        if (Modifier(i) -> ModifierKeywordCast())
            os << ' ';
    }
    if (debug_unparse)
       os << "/*:AstModifiers#" << id << "*/";
}
Modifier* SkeletalExporterBase::findModifier(INode* node, const Class_ID& classID)
{
    auto object = node->GetObjectRef();

    while (object && object->SuperClassID() == GEN_DERIVOB_CLASS_ID)
    {
        auto derivedObject = static_cast<IDerivedObject*>(object);

        // Iterate over all entries of the modifier stack.
        for (auto i = 0; i < derivedObject->NumModifiers(); i++)
        {
            // If this modifier is a physique then return it
            auto modifier = derivedObject->GetModifier(i);
            if (modifier->ClassID() == classID)
                return modifier;
        }

        object = derivedObject->GetObjRef();
    }

    return nullptr;
}