From bd60471dfacdde88902482395640a5e6654a54df Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 29 Sep 2010 20:09:36 +0000 Subject: [PATCH] fixed VectorNode storing expression nodes as children instead of class members; fixed JitterNode not implementing getInteger() git-svn-id: svn://anubis/fart/branches/scene-file-scripting@321 7f9b0f55-74a9-4bce-be96-3c2cd072584d --- parser/nodes.h | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/parser/nodes.h b/parser/nodes.h index 0abcfce..fe3b634 100644 --- a/parser/nodes.h +++ b/parser/nodes.h @@ -84,35 +84,24 @@ class VectorNode : public Node { public: VectorNode(refptr a, refptr b, refptr c) + : m_a(a), m_b(b), m_c(c), m_direct(true) { - addChild(a); - addChild(b); - addChild(c); } VectorNode(refptr node) + : m_a(node), m_direct(false) { - addChild(node); } refptr getVector() { - if (m_children.size() == 1) - { - return m_children[0]->getVector(); - } - else if (m_children.size() == 3) - { - return new Vector( - m_children[0]->getNumber(), - m_children[1]->getNumber(), - m_children[2]->getNumber()); - } - else - { - std::cerr << "Warning: VectorNode::getVector() returning NULL!" - << std::endl; - return NULL; - } + return m_direct + ? new Vector(m_a->getNumber(), + m_b->getNumber(), + m_c->getNumber()) + : m_a->getVector(); } + protected: + refptr m_a, m_b, m_c; + bool m_direct; }; class AmbientNode : public VectorNode @@ -199,6 +188,7 @@ class JitterNode : public NumberNode { public: JitterNode(refptr e) : NumberNode(e) {} + int getInteger() { return getNumber(); } }; class LightNode : public Node