fart/shapes/Shape.h
Josh Holtrop 0c7f85db96 updating IntersectList to new Shape::IntersectionList format
git-svn-id: svn://anubis/fart/branches/2009-02-23_Shape_IntersectList_Update@144 7f9b0f55-74a9-4bce-be96-3c2cd072584d
2009-02-23 20:24:30 +00:00

53 lines
1.3 KiB
C++

#ifndef SHAPE_H
#define SHAPE_H SHAPE_H
#include "util/Solver.h"
#include "util/Ray.h"
#include "util/Vector.h"
#include "util/Transform.h"
#include "util/Material.h"
#include "util/refptr.h"
#include <vector>
#include <utility>
class Shape
{
public:
typedef std::pair< refptr<Shape> , Vector > Intersection;
typedef std::vector< Intersection > IntersectionList;
Shape();
virtual ~Shape();
virtual IntersectionList intersect(refptr<Shape> _this,
const Ray & ray) = 0;
virtual Vector getNormalAt(const Vector & pt) = 0;
void setTransform(Transform & t)
{
m_transform = t;
m_inverse = t.getInverse();
}
Transform & getTransform() { return m_transform; }
void setTransparency(double t) { m_transparency = t; }
double getTransparency() const { return m_transparency; }
void setMaterial(refptr<Material> material) { m_material = material; }
refptr<Material> getMaterial() const { return m_material; }
protected:
Transform m_transform;
Transform m_inverse;
double m_transparency;
refptr<Material> m_material;
};
#include "Box.h"
#include "Cyl.h"
#include "Plane.h"
#include "Sphere.h"
#endif