fart/parser/nodes.h
Josh Holtrop 69c5fdd1e6 updated parser to compile again, still have non-virtual destructor compiler warnings
git-svn-id: svn://anubis/fart/trunk@109 7f9b0f55-74a9-4bce-be96-3c2cd072584d
2009-02-16 20:51:59 +00:00

163 lines
2.5 KiB
C++

#ifndef NODES_H
#define NODES_H NODES_H
#include "util/refptr.h"
#include "util/Vector.h"
#include "main/Material.h"
#include "main/Scene.h"
#include <vector>
class Node
{
public:
void addChild(refptr<Node> child) { m_children.push_back(child); }
void addChildren(refptr<Node> other);
virtual void process(refptr<Scene> scene) {}
virtual int getInteger() { return 0; }
virtual refptr<Material> getMaterial()
{
return refptr<Material>(NULL);
}
virtual double getNumber() { return 0.0; }
virtual refptr<Vector> getVector()
{
return refptr<Vector>(NULL);
}
protected:
std::vector< refptr<Node> > m_children;
};
class IntegerNode : public Node
{
public:
IntegerNode(int number) { m_number = number; }
int getInteger() { return m_number; }
protected:
int m_number;
};
class NumberNode : public Node
{
public:
NumberNode(double number) { m_number = number; }
double getNumber() { return m_number; }
protected:
double m_number;
};
class AmbientNode : public Node
{
};
class BoxNode : public Node
{
};
class CameraNode : public Node
{
};
class DiffuseNode : public Node
{
};
class HeightNode : public IntegerNode
{
public:
HeightNode(int i) : IntegerNode(i) {}
};
class ItemsNode : public Node
{
};
class LightNode : public Node
{
};
class LookAtNode : public Node
{
};
class MaterialNode : public Node
{
};
class MultisampleNode : public IntegerNode
{
public:
MultisampleNode(int i) : IntegerNode(i) {}
};
class PlaneNode : public Node
{
};
class PositionNode : public Node
{
};
class RadiusNode : public NumberNode
{
public:
RadiusNode(double d) : NumberNode(d) {}
};
class ReflectanceNode : public NumberNode
{
public:
ReflectanceNode(double d) : NumberNode(d) {}
};
class ShapeNode : public Node
{
};
class ShininessNode : public NumberNode
{
public:
ShininessNode(double d) : NumberNode(d) {}
};
class SpecularNode : public Node
{
};
class SphereNode : public Node
{
};
class UpNode : public Node
{
};
class VectorNode : public Node
{
public:
VectorNode(refptr<Vector> vector) { m_vector = vector; }
refptr<Vector> getVector() { return m_vector; }
protected:
refptr<Vector> m_vector;
};
class VFOVNode : public Node
{
};
class WidthNode : public IntegerNode
{
public:
WidthNode(int i) : IntegerNode(i) {}
};
#endif