// Copyright (C) 2015 Jérôme Leclercq // This file is part of the "Nazara Engine - Renderer module" // For conditions of distribution and use, see copyright notice in Config.hpp #include #include namespace Nz { void ShaderAstRecursiveVisitor::Visit(ShaderNodes::AccessMember& node) { Visit(node.structExpr); } void ShaderAstRecursiveVisitor::Visit(ShaderNodes::AssignOp& node) { Visit(node.left); Visit(node.right); } void ShaderAstRecursiveVisitor::Visit(ShaderNodes::BinaryOp& node) { Visit(node.left); Visit(node.right); } void ShaderAstRecursiveVisitor::Visit(ShaderNodes::Branch& node) { for (auto& cond : node.condStatements) { Visit(cond.condition); Visit(cond.statement); } if (node.elseStatement) Visit(node.elseStatement); } void ShaderAstRecursiveVisitor::Visit(ShaderNodes::Cast& node) { for (auto& expr : node.expressions) { if (!expr) break; Visit(expr); } } void ShaderAstRecursiveVisitor::Visit(ShaderNodes::Constant& /*node*/) { /* Nothing to do */ } void ShaderAstRecursiveVisitor::Visit(ShaderNodes::DeclareVariable& node) { if (node.expression) Visit(node.expression); } void ShaderAstRecursiveVisitor::Visit(ShaderNodes::ExpressionStatement& node) { Visit(node.expression); } void ShaderAstRecursiveVisitor::Visit(ShaderNodes::Identifier& /*node*/) { /* Nothing to do */ } void ShaderAstRecursiveVisitor::Visit(ShaderNodes::IntrinsicCall& node) { for (auto& param : node.parameters) Visit(param); } void ShaderAstRecursiveVisitor::Visit(ShaderNodes::Sample2D& node) { Visit(node.sampler); Visit(node.coordinates); } void ShaderAstRecursiveVisitor::Visit(ShaderNodes::StatementBlock& node) { for (auto& statement : node.statements) Visit(statement); } void ShaderAstRecursiveVisitor::Visit(ShaderNodes::SwizzleOp& node) { Visit(node.expression); } }