- Remove Shape, because it seems to be mostly extra. All renderable objects now derive from Object, rather than Shape - Light (which inherited from Object before) now defines its own origin, but this is coming in a later commit... - Use charles namespace - Use a std::vector<double> instead of float** to pass back intersection points. This is kind of a biggie because it made the render process 50% slower :( I'll have to work out why and maybe fix it...
73 lines
916 B
C++
73 lines
916 B
C++
/* object.c
|
|
*
|
|
* Definition of generic scene objects.
|
|
*
|
|
* Eryn Wells <eryn@erynwells.me>
|
|
*/
|
|
|
|
#include <cassert>
|
|
#include <cmath>
|
|
#include <cstdlib>
|
|
|
|
#include "basics.h"
|
|
#include "material.h"
|
|
#include "object.h"
|
|
|
|
namespace charles {
|
|
|
|
#pragma mark - Objects
|
|
|
|
/*
|
|
* Object::Object --
|
|
*
|
|
* Default constructor. Create a new Object with an origin at (0, 0, 0).
|
|
*/
|
|
Object::Object()
|
|
: Object(Vector3::Zero)
|
|
{ }
|
|
|
|
|
|
/*
|
|
* Object::Object --
|
|
*
|
|
* Constructor. Create a new Object with an origin at o.
|
|
*/
|
|
Object::Object(Vector3 origin)
|
|
: mOrigin(origin),
|
|
mMaterial()
|
|
{ }
|
|
|
|
|
|
Vector3
|
|
Object::GetOrigin()
|
|
const
|
|
{
|
|
return mOrigin;
|
|
}
|
|
|
|
|
|
Object::~Object()
|
|
{ }
|
|
|
|
|
|
void
|
|
Object::SetOrigin(const Vector3& origin)
|
|
{
|
|
mOrigin = origin;
|
|
}
|
|
|
|
|
|
Material&
|
|
Object::GetMaterial()
|
|
{
|
|
return mMaterial;
|
|
}
|
|
|
|
|
|
void
|
|
Object::SetMaterial(const Material& material)
|
|
{
|
|
mMaterial = material;
|
|
}
|
|
|
|
} /* namespace charles */
|