00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __GU_PrimTriFan__
00020 #define __GU_PrimTriFan__
00021
00022 #include "GU_API.h"
00023 #include <GEO/GEO_PrimTriFan.h>
00024 #include "GU_Detail.h"
00025 #include "GU_Prim.h"
00026
00027 class GU_API GU_PrimTriFan : public GEO_PrimTriFan, public GU_Primitive
00028 {
00029 public:
00030
00031
00032 GU_PrimTriFan(GU_Detail *gdp) : GEO_PrimTriFan(gdp), GU_Primitive() {}
00033 virtual ~GU_PrimTriFan();
00034
00035
00036
00037 virtual GEO_Primitive *convert(GU_ConvertParms &parms,
00038 GB_PointGroup *usedpts = 0);
00039 virtual GEO_Primitive *convertNew(GU_ConvertParms &parms);
00040
00041 virtual void *castTo (void) const;
00042 virtual const GEO_Primitive *castToGeo(void) const;
00043
00044
00045
00046
00047
00048
00049
00050 static GU_PrimTriFan *build(GU_Detail *gdp, int numpts,
00051 int appendPts = 1);
00052
00053
00054 virtual void normal(int noff) const;
00055 virtual void normal(UT_Vector3Array &output) const;
00056 virtual void clip(UT_Vector3 &nml, float d = 0, int normalize = 1,
00057 GEO_Primitive *prim=0,
00058 GB_PrimitiveGroup *clipgrp = 0);
00059
00060 virtual int intersectRay(const UT_Vector3 &o, const UT_Vector3 &d,
00061 float tmax = 1E17F, float tol = 1E-12F,
00062 float *distance = 0, UT_Vector3 *pos = 0,
00063 UT_Vector3 *nml = 0, int accurate = 0,
00064 float *u = 0, float *v = 0,
00065 int ignoretrim = 1) const;
00066
00067
00068
00069 virtual GU_RayIntersect *createRayCache(int &persistent);
00070
00071 virtual GU_DisplayMesh *getDisplayMesh(int noff, float lod);
00072
00073 protected:
00074 private:
00075
00076 };
00077
00078 #endif
00079