163 lines
2.5 KiB
C++
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
|
|
|