Browse Source

Move ShapeType into the Shape object.

Godzil 4 years ago
parent
commit
8437ab8753

+ 1 - 1
source/include/cone.h

@@ -29,7 +29,7 @@ public:
     double minCap;
     double maxCap;
 
-    Cone() : minCap(-INFINITY), maxCap(INFINITY), isClosed(false), Shape(SHAPE_CONE) { stats.addCone(); };
+    Cone() : minCap(-INFINITY), maxCap(INFINITY), isClosed(false), Shape(Shape::CONE) { stats.addCone(); };
     BoundingBox getLocalBounds();
     bool haveFiniteBounds() { return !(isinf(this->minCap) || isinf(this->maxCap)); };
 

+ 1 - 1
source/include/cube.h

@@ -24,7 +24,7 @@ protected:
     Tuple localNormalAt(Tuple point, Intersection *hit = nullptr);
 
 public:
-    Cube() : Shape(SHAPE_CUBE) { stats.addCube(); };
+    Cube() : Shape(Shape::CUBE) { stats.addCube(); };
 
     void dumpMe(FILE *fp);
 };

+ 1 - 1
source/include/cylinder.h

@@ -30,7 +30,7 @@ public:
     double minCap;
     double maxCap;
 
-    Cylinder() : minCap(-INFINITY), maxCap(INFINITY), isClosed(false), Shape(SHAPE_CYLINDER) { stats.addCylinder(); };
+    Cylinder() : minCap(-INFINITY), maxCap(INFINITY), isClosed(false), Shape(Shape::CYLINDER) { stats.addCylinder(); };
 
     BoundingBox getLocalBounds();
     bool haveFiniteBounds() { return !(isinf(this->minCap) || isinf(this->maxCap)); };

+ 1 - 1
source/include/plane.h

@@ -18,7 +18,7 @@ protected:
     Tuple localNormalAt(Tuple point, Intersection *hit = nullptr);
 
 public:
-    Plane() : Shape(SHAPE_PLANE) { stats.addPlane(); };
+    Plane() : Shape(Shape::PLANE) { stats.addPlane(); };
     BoundingBox getLocalBounds();
     bool haveFiniteBounds() { return false; };
 };

+ 19 - 16
source/include/shape.h

@@ -19,24 +19,25 @@ class Shape;
 #include <material.h>
 #include <boundingbox.h>
 
-enum ShapeType
-{
-    SHAPE_NONE,
-    SHAPE_SPHERE,
-    SHAPE_PLANE,
-    SHAPE_CUBE,
-    SHAPE_CYLINDER,
-    SHAPE_CONE,
-    SHAPE_GROUP,
-    SHAPE_TRIANGLE,
-    SHAPE_OBJFILE,
-    SHAPE_SMOOTHTRIANGLE,
-    SHAPE_CSG,
-};
-
 /* Base class for all object that can be presented in the world */
 class Shape
 {
+public:
+    enum ShapeType
+    {
+        NONE,
+        SPHERE,
+        PLANE,
+        CUBE,
+        CYLINDER,
+        CONE,
+        GROUP,
+        TRIANGLE,
+        OBJFILE,
+        SMOOTHTRIANGLE,
+        CSG,
+    };
+
 protected:
     ShapeType type;
     Matrix localTransformMatrix;
@@ -56,7 +57,9 @@ public:
     bool materialSet;
 
 public:
-    Shape(ShapeType = SHAPE_NONE);
+    Shape(ShapeType = Shape::NONE);
+
+    ShapeType getType() { return this->type; };
 
     virtual Intersect intersect(Ray r);
     Tuple normalAt(Tuple point, Intersection *hit = nullptr);

+ 1 - 1
source/include/sphere.h

@@ -22,7 +22,7 @@ protected:
     Tuple localNormalAt(Tuple point, Intersection *hit = nullptr);
 
 public:
-    Sphere() : Shape(SHAPE_SPHERE) { stats.addSphere(); };
+    Sphere() : Shape(Shape::SPHERE) { stats.addSphere(); };
     /* All sphere are at (0, 0, 0) and radius 1 in the object space */
 
 

+ 1 - 1
source/shapes/csg.cpp

@@ -13,7 +13,7 @@
 #include <math_helper.h>
 
 
-CSG::CSG(OperationType operation, Shape *left, Shape *right) : Shape(SHAPE_CSG), operation(operation), left(left), right(right)
+CSG::CSG(OperationType operation, Shape *left, Shape *right) : Shape(Shape::CSG), operation(operation), left(left), right(right)
 {
     stats.addCsg();
 

+ 1 - 1
source/shapes/group.cpp

@@ -14,7 +14,7 @@
 
 #define MIN_ALLOC (2)
 
-Group::Group() : Shape(SHAPE_GROUP)
+Group::Group(const char *name) : Shape(Shape::GROUP)
 {
     stats.addGroup();
     this->allocatedObjectCount = MIN_ALLOC;

+ 1 - 1
source/shapes/objfile.cpp

@@ -22,7 +22,7 @@
 #define MIN_ALLOC (2)
 #define DEFAULT_GROUP (0)
 
-OBJFile::OBJFile() : Shape(SHAPE_OBJFILE), ignoredLines(0)
+OBJFile::OBJFile() : Shape(Shape::OBJFILE), ignoredLines(0)
 {
     stats.addOBJFile();
 

+ 1 - 1
source/shapes/smoothtriangle.cpp

@@ -16,7 +16,7 @@
 SmoothTriangle::SmoothTriangle(Point p1, Point p2, Point p3, Vector n1, Vector n2, Vector n3) : Triangle(p1, p2, p3),
                                                                                                 n1(n1), n2(n2), n3(n3)
 {
-    this->type = SHAPE_SMOOTHTRIANGLE;
+    this->type = Shape::SMOOTHTRIANGLE;
     stats.addSmoothTriangle();
 }
 

+ 1 - 1
source/shapes/triangle.cpp

@@ -12,7 +12,7 @@
 #include <math_helper.h>
 #include <renderstat.h>
 
-Triangle::Triangle(Point p1, Point p2, Point p3) : Shape(SHAPE_TRIANGLE), p1(p1), p2(p2), p3(p3)
+Triangle::Triangle(Point p1, Point p2, Point p3) : Shape(Shape::TRIANGLE), p1(p1), p2(p2), p3(p3)
 {
     stats.addTriangle();