fixed NumberNode and VectorNode "direct" bugs

git-svn-id: svn://anubis/fart/branches/scene-file-scripting@341 7f9b0f55-74a9-4bce-be96-3c2cd072584d
This commit is contained in:
Josh Holtrop 2010-10-06 19:27:54 +00:00
parent 4d488b9e55
commit 1dc370c99f

View File

@ -62,24 +62,28 @@ class NumberNode : public Node
{ {
public: public:
NumberNode(double number) NumberNode(double number)
: m_number(number), m_direct(true)
{ {
m_number = number;
} }
NumberNode(NodeRef expr) NumberNode(NodeRef expr)
: m_direct(false)
{ {
m_expr = expr; m_expr = expr;
} }
virtual double getNumber() virtual double getNumber()
{ {
return m_number; return m_direct ? m_number : m_expr->getNumber();
} }
virtual refptr<Node> evaluate() virtual refptr<Node> evaluate()
{ {
return new NumberNode(m_number); return m_direct
? new NumberNode(m_number)
: new NumberNode(m_expr->evaluate());
} }
protected: protected:
double m_number; double m_number;
bool m_direct;
NodeRef m_expr; NodeRef m_expr;
}; };
@ -100,7 +104,7 @@ class VectorNode : public Node
? new Vector(m_a->getNumber(), ? new Vector(m_a->getNumber(),
m_b->getNumber(), m_b->getNumber(),
m_c->getNumber()) m_c->getNumber())
: m_a->getVector(); : m_vector->getVector();
} }
virtual NodeRef evaluate() virtual NodeRef evaluate()
{ {
@ -108,7 +112,7 @@ class VectorNode : public Node
? new VectorNode(m_a->evaluate(), ? new VectorNode(m_a->evaluate(),
m_b->evaluate(), m_b->evaluate(),
m_c->evaluate()) m_c->evaluate())
: m_a->evaluate(); : m_vector->evaluate();
} }
protected: protected:
NodeRef m_a, m_b, m_c, m_vector; NodeRef m_a, m_b, m_c, m_vector;