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
This commit is contained in:
Josh Holtrop 2010-09-29 20:09:36 +00:00
parent 83fd083af8
commit bd60471dfa

View File

@ -84,35 +84,24 @@ class VectorNode : public Node
{
public:
VectorNode(refptr<Node> a, refptr<Node> b, refptr<Node> c)
: m_a(a), m_b(b), m_c(c), m_direct(true)
{
addChild(a);
addChild(b);
addChild(c);
}
VectorNode(refptr<Node> node)
: m_a(node), m_direct(false)
{
addChild(node);
}
refptr<Vector> 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<Node> m_a, m_b, m_c;
bool m_direct;
};
class AmbientNode : public VectorNode
@ -199,6 +188,7 @@ class JitterNode : public NumberNode
{
public:
JitterNode(refptr<Node> e) : NumberNode(e) {}
int getInteger() { return getNumber(); }
};
class LightNode : public Node