added NodeRef typedef
git-svn-id: svn://anubis/fart/branches/scene-file-scripting@336 7f9b0f55-74a9-4bce-be96-3c2cd072584d
This commit is contained in:
parent
b851c3be98
commit
04022756e5
@ -8,12 +8,12 @@
|
|||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
void Node::addChildren(refptr<Node> other)
|
void Node::addChildren(NodeRef other)
|
||||||
{
|
{
|
||||||
if (other.isNull())
|
if (other.isNull())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (vector< refptr<Node> >::const_iterator it = other->m_children.begin();
|
for (vector<NodeRef>::const_iterator it = other->m_children.begin();
|
||||||
it != other->m_children.end();
|
it != other->m_children.end();
|
||||||
it++)
|
it++)
|
||||||
{
|
{
|
||||||
|
102
parser/nodes.h
102
parser/nodes.h
@ -70,6 +70,8 @@ class Node
|
|||||||
std::vector< refptr<Node> > m_children;
|
std::vector< refptr<Node> > m_children;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef refptr<Node> NodeRef;
|
||||||
|
|
||||||
|
|
||||||
class IntegerNode : public Node
|
class IntegerNode : public Node
|
||||||
{
|
{
|
||||||
@ -90,7 +92,7 @@ class NumberNode : public Node
|
|||||||
m_number = number;
|
m_number = number;
|
||||||
m_direct = true;
|
m_direct = true;
|
||||||
}
|
}
|
||||||
NumberNode(refptr<Node> expr)
|
NumberNode(NodeRef expr)
|
||||||
{
|
{
|
||||||
m_expr = expr;
|
m_expr = expr;
|
||||||
m_direct = false;
|
m_direct = false;
|
||||||
@ -102,18 +104,18 @@ class NumberNode : public Node
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
double m_number;
|
double m_number;
|
||||||
refptr<Node> m_expr;
|
NodeRef m_expr;
|
||||||
bool m_direct;
|
bool m_direct;
|
||||||
};
|
};
|
||||||
|
|
||||||
class VectorNode : public Node
|
class VectorNode : public Node
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VectorNode(refptr<Node> a, refptr<Node> b, refptr<Node> c)
|
VectorNode(NodeRef a, NodeRef b, NodeRef c)
|
||||||
: m_a(a), m_b(b), m_c(c), m_direct(true)
|
: m_a(a), m_b(b), m_c(c), m_direct(true)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
VectorNode(refptr<Node> node)
|
VectorNode(NodeRef node)
|
||||||
: m_a(node), m_direct(false)
|
: m_a(node), m_direct(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -126,7 +128,7 @@ class VectorNode : public Node
|
|||||||
: m_a->getVector();
|
: m_a->getVector();
|
||||||
}
|
}
|
||||||
protected:
|
protected:
|
||||||
refptr<Node> m_a, m_b, m_c;
|
NodeRef m_a, m_b, m_c;
|
||||||
bool m_direct;
|
bool m_direct;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -134,7 +136,7 @@ class VectorNode : public Node
|
|||||||
class AmbientNode : public VectorNode
|
class AmbientNode : public VectorNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AmbientNode(refptr<Node> vector) : VectorNode(vector) {}
|
AmbientNode(NodeRef vector) : VectorNode(vector) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class AmbientOcclusionNode : public IntegerNode
|
class AmbientOcclusionNode : public IntegerNode
|
||||||
@ -156,7 +158,7 @@ class CameraNode : public Node
|
|||||||
class ColorNode : public VectorNode
|
class ColorNode : public VectorNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ColorNode(refptr<Node> vector) : VectorNode(vector) {}
|
ColorNode(NodeRef vector) : VectorNode(vector) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class CylNode : public Node
|
class CylNode : public Node
|
||||||
@ -168,13 +170,13 @@ class CylNode : public Node
|
|||||||
class DiffuseNode : public VectorNode
|
class DiffuseNode : public VectorNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DiffuseNode(refptr<Node> vector) : VectorNode(vector) {}
|
DiffuseNode(NodeRef vector) : VectorNode(vector) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class ExposureNode : public NumberNode
|
class ExposureNode : public NumberNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ExposureNode(refptr<Node> e) : NumberNode(e) {}
|
ExposureNode(NodeRef e) : NumberNode(e) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class ExtrudeNode : public Node
|
class ExtrudeNode : public Node
|
||||||
@ -211,7 +213,7 @@ class ItemsNode : public Node
|
|||||||
class JitterNode : public NumberNode
|
class JitterNode : public NumberNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
JitterNode(refptr<Node> e) : NumberNode(e) {}
|
JitterNode(NodeRef e) : NumberNode(e) {}
|
||||||
int getInteger() { return getNumber(); }
|
int getInteger() { return getNumber(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -222,7 +224,7 @@ class LightNode : public Node
|
|||||||
class LookAtNode : public VectorNode
|
class LookAtNode : public VectorNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LookAtNode(refptr<Node> vector) : VectorNode(vector) {}
|
LookAtNode(NodeRef vector) : VectorNode(vector) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class MaterialNode : public Node
|
class MaterialNode : public Node
|
||||||
@ -259,14 +261,14 @@ class MultisampleNode : public IntegerNode
|
|||||||
class NGonNode : public NumberNode
|
class NGonNode : public NumberNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NGonNode(refptr<Node> e) : NumberNode(e) {}
|
NGonNode(NodeRef e) : NumberNode(e) {}
|
||||||
int getInteger() { return getNumber(); }
|
int getInteger() { return getNumber(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
class OffsetNode : public NumberNode
|
class OffsetNode : public NumberNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
OffsetNode(refptr<Node> e) : NumberNode(e) {}
|
OffsetNode(NodeRef e) : NumberNode(e) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class OptionsNode : public Node
|
class OptionsNode : public Node
|
||||||
@ -282,7 +284,7 @@ class PlaneNode : public Node
|
|||||||
class PlanePositionNode : public VectorNode
|
class PlanePositionNode : public VectorNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PlanePositionNode(refptr<Node> vec_node, refptr<Node> dist)
|
PlanePositionNode(NodeRef vec_node, NodeRef dist)
|
||||||
: VectorNode(vec_node)
|
: VectorNode(vec_node)
|
||||||
{
|
{
|
||||||
m_dist = dist;
|
m_dist = dist;
|
||||||
@ -290,7 +292,7 @@ class PlanePositionNode : public VectorNode
|
|||||||
double getNumber() { return m_dist->getNumber(); }
|
double getNumber() { return m_dist->getNumber(); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
refptr<Node> m_dist;
|
NodeRef m_dist;
|
||||||
};
|
};
|
||||||
|
|
||||||
class PolygonNode : public Node
|
class PolygonNode : public Node
|
||||||
@ -300,25 +302,25 @@ class PolygonNode : public Node
|
|||||||
class PositionNode : public VectorNode
|
class PositionNode : public VectorNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PositionNode(refptr<Node> vector) : VectorNode(vector) {}
|
PositionNode(NodeRef vector) : VectorNode(vector) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class RadiusNode : public NumberNode
|
class RadiusNode : public NumberNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RadiusNode(refptr<Node> e) : NumberNode(e) {}
|
RadiusNode(NodeRef e) : NumberNode(e) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class ReflectanceNode : public NumberNode
|
class ReflectanceNode : public NumberNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ReflectanceNode(refptr<Node> e) : NumberNode(e) {}
|
ReflectanceNode(NodeRef e) : NumberNode(e) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class RotateNode : public VectorNode
|
class RotateNode : public VectorNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RotateNode(refptr<Node> angle, refptr<Node> vec_node)
|
RotateNode(NodeRef angle, NodeRef vec_node)
|
||||||
: VectorNode(vec_node)
|
: VectorNode(vec_node)
|
||||||
{
|
{
|
||||||
m_angle = angle;
|
m_angle = angle;
|
||||||
@ -326,13 +328,13 @@ class RotateNode : public VectorNode
|
|||||||
double getNumber() { return m_angle->getNumber(); }
|
double getNumber() { return m_angle->getNumber(); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
refptr<Node> m_angle;
|
NodeRef m_angle;
|
||||||
};
|
};
|
||||||
|
|
||||||
class RotateBlockNode : public RotateNode
|
class RotateBlockNode : public RotateNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RotateBlockNode(refptr<Node> angle, refptr<Node> vec_node)
|
RotateBlockNode(NodeRef angle, NodeRef vec_node)
|
||||||
: RotateNode(angle, vec_node) {}
|
: RotateNode(angle, vec_node) {}
|
||||||
bool isTransformBlock() { return true; }
|
bool isTransformBlock() { return true; }
|
||||||
};
|
};
|
||||||
@ -340,20 +342,20 @@ class RotateBlockNode : public RotateNode
|
|||||||
class ScaleNode : public VectorNode
|
class ScaleNode : public VectorNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ScaleNode(refptr<Node> vector) : VectorNode(vector) {}
|
ScaleNode(NodeRef vector) : VectorNode(vector) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class ScaleBlockNode : public ScaleNode
|
class ScaleBlockNode : public ScaleNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ScaleBlockNode(refptr<Node> vector) : ScaleNode(vector) {}
|
ScaleBlockNode(NodeRef vector) : ScaleNode(vector) {}
|
||||||
bool isTransformBlock() { return true; }
|
bool isTransformBlock() { return true; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class ScaleScalarNode : public Node
|
class ScaleScalarNode : public Node
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ScaleScalarNode(refptr<Node> expr)
|
ScaleScalarNode(NodeRef expr)
|
||||||
: m_expr(expr)
|
: m_expr(expr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -363,7 +365,7 @@ class ScaleScalarNode : public Node
|
|||||||
return new Vector(x, x, x);
|
return new Vector(x, x, x);
|
||||||
}
|
}
|
||||||
protected:
|
protected:
|
||||||
refptr<Node> m_expr;
|
NodeRef m_expr;
|
||||||
};
|
};
|
||||||
|
|
||||||
class SceneNode : public Node
|
class SceneNode : public Node
|
||||||
@ -386,19 +388,19 @@ class ShapeRefNode : public IdentifierNode
|
|||||||
class ShininessNode : public NumberNode
|
class ShininessNode : public NumberNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ShininessNode(refptr<Node> e) : NumberNode(e) {}
|
ShininessNode(NodeRef e) : NumberNode(e) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class SizeNode : public VectorNode
|
class SizeNode : public VectorNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SizeNode(refptr<Node> vector) : VectorNode(vector) {}
|
SizeNode(NodeRef vector) : VectorNode(vector) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class SpecularNode : public VectorNode
|
class SpecularNode : public VectorNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SpecularNode(refptr<Node> vector) : VectorNode(vector) {}
|
SpecularNode(NodeRef vector) : VectorNode(vector) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class SphereNode : public Node
|
class SphereNode : public Node
|
||||||
@ -416,20 +418,20 @@ class SubtractNode : public Node
|
|||||||
class TranslateNode : public VectorNode
|
class TranslateNode : public VectorNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TranslateNode(refptr<Node> vector) : VectorNode(vector) {}
|
TranslateNode(NodeRef vector) : VectorNode(vector) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class TranslateBlockNode : public TranslateNode
|
class TranslateBlockNode : public TranslateNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TranslateBlockNode(refptr<Node> vector) : TranslateNode(vector) {}
|
TranslateBlockNode(NodeRef vector) : TranslateNode(vector) {}
|
||||||
bool isTransformBlock() { return true; }
|
bool isTransformBlock() { return true; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class TransparencyNode : public NumberNode
|
class TransparencyNode : public NumberNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TransparencyNode(refptr<Node> e) : NumberNode(e) {}
|
TransparencyNode(NodeRef e) : NumberNode(e) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class UnionNode : public Node
|
class UnionNode : public Node
|
||||||
@ -441,13 +443,13 @@ class UnionNode : public Node
|
|||||||
class UpNode : public VectorNode
|
class UpNode : public VectorNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
UpNode(refptr<Node> vector) : VectorNode(vector) {}
|
UpNode(NodeRef vector) : VectorNode(vector) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class VFOVNode : public NumberNode
|
class VFOVNode : public NumberNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VFOVNode(refptr<Node> e) : NumberNode(e) {}
|
VFOVNode(NodeRef e) : NumberNode(e) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class WidthNode : public IntegerNode
|
class WidthNode : public IntegerNode
|
||||||
@ -469,7 +471,7 @@ class ExpressionNode : public Node
|
|||||||
class AssignmentNode : public ExpressionNode
|
class AssignmentNode : public ExpressionNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AssignmentNode(refptr<Node> varref, refptr<Node> expr)
|
AssignmentNode(NodeRef varref, NodeRef expr)
|
||||||
: m_varref(varref), m_expr(expr)
|
: m_varref(varref), m_expr(expr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -481,14 +483,14 @@ class AssignmentNode : public ExpressionNode
|
|||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
protected:
|
protected:
|
||||||
refptr<Node> m_varref;
|
NodeRef m_varref;
|
||||||
refptr<Node> m_expr;
|
NodeRef m_expr;
|
||||||
};
|
};
|
||||||
|
|
||||||
class LocalAssignmentNode : public ExpressionNode
|
class LocalAssignmentNode : public ExpressionNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LocalAssignmentNode(refptr<Node> varref, refptr<Node> expr)
|
LocalAssignmentNode(NodeRef varref, NodeRef expr)
|
||||||
: m_varref(varref), m_expr(expr)
|
: m_varref(varref), m_expr(expr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -500,49 +502,49 @@ class LocalAssignmentNode : public ExpressionNode
|
|||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
protected:
|
protected:
|
||||||
refptr<Node> m_varref;
|
NodeRef m_varref;
|
||||||
refptr<Node> m_expr;
|
NodeRef m_expr;
|
||||||
};
|
};
|
||||||
|
|
||||||
class LocalDeclNode : public ExpressionNode
|
class LocalDeclNode : public ExpressionNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LocalDeclNode(refptr<Node> varref) : m_varref(varref) { }
|
LocalDeclNode(NodeRef varref) : m_varref(varref) { }
|
||||||
double getNumber()
|
double getNumber()
|
||||||
{
|
{
|
||||||
parser_scope->putLocal(m_varref->getString(), 0.0);
|
parser_scope->putLocal(m_varref->getString(), 0.0);
|
||||||
return 0.0;
|
return 0.0;
|
||||||
}
|
}
|
||||||
protected:
|
protected:
|
||||||
refptr<Node> m_varref;
|
NodeRef m_varref;
|
||||||
};
|
};
|
||||||
|
|
||||||
class BinOpNode : public ExpressionNode
|
class BinOpNode : public ExpressionNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BinOpNode(char op, refptr<Node> one, refptr<Node> two)
|
BinOpNode(char op, NodeRef one, NodeRef two)
|
||||||
: m_op(op), one(one), two(two)
|
: m_op(op), one(one), two(two)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
virtual double getNumber();
|
virtual double getNumber();
|
||||||
protected:
|
protected:
|
||||||
char m_op;
|
char m_op;
|
||||||
refptr<Node> one;
|
NodeRef one;
|
||||||
refptr<Node> two;
|
NodeRef two;
|
||||||
};
|
};
|
||||||
|
|
||||||
class BoolExpressionNode : public Node
|
class BoolExpressionNode : public Node
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BoolExpressionNode(char op, refptr<Node> one, refptr<Node> two)
|
BoolExpressionNode(char op, NodeRef one, NodeRef two)
|
||||||
: m_op(op), one(one), two(two)
|
: m_op(op), one(one), two(two)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
int getInteger();
|
int getInteger();
|
||||||
protected:
|
protected:
|
||||||
char m_op;
|
char m_op;
|
||||||
refptr<Node> one;
|
NodeRef one;
|
||||||
refptr<Node> two;
|
NodeRef two;
|
||||||
};
|
};
|
||||||
|
|
||||||
class VarRefNode : public Node
|
class VarRefNode : public Node
|
||||||
@ -567,13 +569,13 @@ class VarRefNode : public Node
|
|||||||
class ForNode : public Node
|
class ForNode : public Node
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ForNode(refptr<Node> e1, refptr<Node> e2, refptr<Node> e3)
|
ForNode(NodeRef e1, NodeRef e2, NodeRef e3)
|
||||||
{
|
{
|
||||||
m_nodes[0] = e1;
|
m_nodes[0] = e1;
|
||||||
m_nodes[1] = e2;
|
m_nodes[1] = e2;
|
||||||
m_nodes[2] = e3;
|
m_nodes[2] = e3;
|
||||||
}
|
}
|
||||||
refptr<Node> getNode(int idx)
|
NodeRef getNode(int idx)
|
||||||
{
|
{
|
||||||
if (0 <= idx && idx <= 2)
|
if (0 <= idx && idx <= 2)
|
||||||
{
|
{
|
||||||
@ -582,7 +584,7 @@ class ForNode : public Node
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
protected:
|
protected:
|
||||||
refptr<Node> m_nodes[3];
|
NodeRef m_nodes[3];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user