X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fgenerate.cpp;h=4230a402a0dc413b23e331a5248f3671dc412ff4;hb=d1da983b2ddfd221ef4348d2c40736264670c2b5;hp=9adfb93d5cbfab11984c6bcf5f5a6a8315f6d494;hpb=11ce239520e60df331ef635b9e210204d80de746;p=libs%2Fgl.git diff --git a/source/glsl/generate.cpp b/source/glsl/generate.cpp index 9adfb93d..4230a402 100644 --- a/source/glsl/generate.cpp +++ b/source/glsl/generate.cpp @@ -228,6 +228,13 @@ void VariableResolver::visit(MemberAccess &memacc) } } +void VariableResolver::visit(UnaryExpression &unary) +{ + TraversingVisitor::visit(unary); + r_members = 0; + r_iface_ref = 0; +} + void VariableResolver::visit(BinaryExpression &binary) { if(binary.oper->token[0]=='[') @@ -241,13 +248,14 @@ void VariableResolver::visit(BinaryExpression &binary) binary.left->visit(*this); if(r_iface_ref) binary.left = r_iface_ref; - r_iface_ref = 0; } else { TraversingVisitor::visit(binary); r_members = 0; } + + r_iface_ref = 0; } void VariableResolver::visit(Assignment &assign) @@ -263,6 +271,15 @@ void VariableResolver::visit(Assignment &assign) assign.self_referencing = (r_self_referencing || assign.oper->token[0]!='='); assign.target_declaration = r_assignment_target; + r_members = 0; + r_iface_ref = 0; +} + +void VariableResolver::visit(FunctionCall &call) +{ + TraversingVisitor::visit(call); + r_members = 0; + r_iface_ref = 0; } void VariableResolver::visit(StructDeclaration &strct) @@ -398,7 +415,6 @@ bool InterfaceGenerator::generate_interface(VariableDeclaration &var, const stri iface_var->sampling = var.sampling; iface_var->interface = iface; iface_var->type = var.type; - iface_var->type_declaration = var.type_declaration; iface_var->name = name; if(stage->type==Stage::GEOMETRY && !copy_block) iface_var->array = ((var.array && var.interface!="in") || iface=="in");