From 1dc370c99fe78d3876f52eae3643c343a88057b2 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 6 Oct 2010 19:27:54 +0000 Subject: [PATCH] fixed NumberNode and VectorNode "direct" bugs git-svn-id: svn://anubis/fart/branches/scene-file-scripting@341 7f9b0f55-74a9-4bce-be96-3c2cd072584d --- parser/nodes.h | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/parser/nodes.h b/parser/nodes.h index aed4e41..2171053 100644 --- a/parser/nodes.h +++ b/parser/nodes.h @@ -62,24 +62,28 @@ class NumberNode : public Node { public: NumberNode(double number) + : m_number(number), m_direct(true) { - m_number = number; } NumberNode(NodeRef expr) + : m_direct(false) { m_expr = expr; } virtual double getNumber() { - return m_number; + return m_direct ? m_number : m_expr->getNumber(); } virtual refptr evaluate() { - return new NumberNode(m_number); + return m_direct + ? new NumberNode(m_number) + : new NumberNode(m_expr->evaluate()); } protected: double m_number; + bool m_direct; NodeRef m_expr; }; @@ -100,7 +104,7 @@ class VectorNode : public Node ? new Vector(m_a->getNumber(), m_b->getNumber(), m_c->getNumber()) - : m_a->getVector(); + : m_vector->getVector(); } virtual NodeRef evaluate() { @@ -108,7 +112,7 @@ class VectorNode : public Node ? new VectorNode(m_a->evaluate(), m_b->evaluate(), m_c->evaluate()) - : m_a->evaluate(); + : m_vector->evaluate(); } protected: NodeRef m_a, m_b, m_c, m_vector;