#ifndef H_OBJECT

#include "../../tools/vector/linear.h"
#include "../../tools/ppm/ppm.h"
#include "types.h"

struct primitivestruct
{
  int type;
  union
  {
    light li;
    sphere sph;
    wall wa;
    tube tu;
    pipe pi;
    cone co;
  } primitiveu;
};
typedef struct primitivestruct primitive;

struct objdescelem
{
  bool isprimitive;
  union
  {
    struct objdesc *objptr;
    primitive *primitiveptr;
  } ptr;
  vector pos;
  vector ydir, zdir;
};

struct objdesc
{
  int nsubobjs;
  struct objdescelem *objdescelems;
};

struct obj
{
  struct objdesc *objdescptr;
  vector pos;
  vector ydir, zdir;
};


#define H_OBJECT
#endif

