// -*- C++ -*-
#ifndef RISPHERE_H
#define RISPHERE_H
/* Copyright 1996 
 * Tue Jun  3 11:09:57 1997  Brian Smits  (bes@phoenix.cs.utah.edu)
 * 
 * RiSphere.H
 * 
 *	
 * 
 * $Id: RiSphere.H,v 1.1 1997/06/18 22:33:07 bes Exp $ 
 * 
 */
#ifndef RICOMMON_H
#include <RiCommon.H>
#endif

#ifndef RIOBJECT_H
#include <RiObjectBuilder.H>
#endif

#ifndef RIMATERIAL_H
#include <RiMaterial.H>
#endif

#ifndef RIVECTOR3_H
#include <RiVector3.H>
#endif


class RiRayObject;

/***************************************************************
CLASS
    RiSphereBuilder
     <one line summary> 

DESCRIPTION
     <Detailed description with any warnings>

****************************************************************/

class RiSphereBuilder : public RiObjectBuilder {
  public:
    // GROUP: Constructors and assignment
    //// Default Constructor
    RiSphereBuilder(Products wanted = noneFlag); 
				// GROUP: Members
				//// Set the material to be used for all subsequent spheres until
				//   a new material is set
    void		SetMaterial(RiMaterial *);
				//// Define the center of the sphere
    void		SetCenter(const RiVector3 &point);
				//// Define the radius and up vector of the sphere.
    void		SetRadius(const RiVector3 &radius);
				//// Define the radius, up vector is <0,0,1>.
    void		SetRadius(RiReal radius);
				//// Build the Sphere.
    virtual bool  	Build();
  private:
    ////Copy Constructor
    RiSphereBuilder(const RiSphereBuilder &);
    //// Assignment
    RiSphereBuilder &operator=(const RiSphereBuilder &);
    RiVector3 ctr;
    RiVector3 rad;
    RiMaterial *mat;
};
    

#endif /* RISPHERE_H */

