// Copyright (c) 1999 Philip A. Hardin (pahardin@cs.utexas.edu)
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License v2 or later.


#ifndef BSPPANEL3D_h
#define BSPPANEL3D_h


#include "polygon.h"   // from the bsp library
#include "general.h"
#include "panel3d.h"
#include "fastpts.h"



/************************************************************************/
struct bspPanel3d : panel3d {

  // no additional data members

 	bspPanel3d() {};
  	bspPanel3d(int* &nums,pt3d pts[]) : panel3d(nums,pts) {};
  	bspPanel3d(const Polygon3f&, fastPts&, const bspPanel3d&);
  	bspPanel3d(const region2d& rgn, fastPts& fp,
		   const pt3d& offset=pt3d(0,0,0), const ang3d& ang=ang3d(0),
		   const pt3d& scale =pt3d(1,1,1), bool ds=0)
	  : panel3d(rgn,fp,offset,ang,scale,ds) {};
  	bspPanel3d(const bspPanel3d& p, pt3d panelPts[],
		   fastPts& fp,
		   const pt3d& offset=pt3d(0,0,0), const ang3d& ang=ang3d(0),
		   const pt3d& scale =pt3d(1,1,1))
	  : panel3d(p,panelPts,fp,offset,ang,scale) {};

  Polygon3f asPolygon3f(pt3d pts[]);
};


/*-------------------------------------------------------------------------*/
inline void pt3d2Vec3f(const pt3d& p, Vec3f& v)
{ Vset3f((float) p.x, (float) p.y, (float) p.z, v);
}

#endif
