#undef UT_ASSERT_LEVEL
#define UT_ASSERT_LEVEL 4
using namespace HDK_Sample;
};
{
public:
{
}
};
void
{
}
: myMaxRadius(0.05)
, myCurveCount(0)
, mySegments(1)
, myDebug(false)
{
myBox.initBounds(0, 0, 0);
}
RAY_DemoGT::~RAY_DemoGT()
{
}
const char *
{
return "RAY_DemoGT";
}
int
{
if (box)
myBox = *box;
else
if (!import("segments", &mySegments, 1))
mySegments = 1;
if (!import("count", &myCurveCount, 1))
myCurveCount = 100;
if (!import("maxradius", &myMaxRadius, 1))
myMaxRadius = 0.05;
int ival;
if (import("debug", &ival, 1))
myDebug = (ival != 0);
if (myDebug)
return true;
return myCurveCount > 0 && mySegments > 0 && myMaxRadius > 0;
}
void
{
box = myBox;
}
int ncurves,
int segments)
{
static const int pts_per_curve = 4;
int npts = ncurves * pts_per_curve;
for (int i = 0; i < ncurves*3; ++i)
clr.reset(f16);
for (int curve = 0; curve < ncurves; curve++)
{
for (int pt = 0; pt < pts_per_curve; ++pt)
{
width *= .7;
}
}
widths.reset(f16);
for (int i = 0; i < segments; ++i)
{
}
for (int i = 0; i < pts_per_curve; ++i)
{
}
for (int curve = 0; curve < ncurves; ++curve)
{
for (int seg = 0; seg < segments; ++seg)
{
int off = curve * pts_per_curve * 3;
for (int pt = 0; pt < pts_per_curve; ++pt)
{
Pdata[seg]->data()[off+pt*3+0] = px;
Pdata[seg]->data()[off+pt*3+1] = Py[pt] *
height;
Pdata[seg]->data()[off+pt*3+2] = pz;
px += vx;
pz += vz;
vx *= .4;
vz *= .4;
}
}
}
for (int seg = 0; seg < segments; ++seg)
uniform->
set(0, clr, seg);
amap->
add(
"width",
true);
for (int seg = 0; seg < segments; ++seg)
{
vertex->
set(0, P[seg], seg);
vertex->
set(1, widths, seg);
}
vertex_counts,
false));
return prim;
}
{
);
return prim;
}
void
{
if (myDebug)
prim = testBox(myBox, myMaxRadius*2);
else
{
int one = 1;
prim = makeCurveMesh(myBox, myCurveCount, myMaxRadius, mySegments);
obj->changeSetting("object:rendersubdcurves", 1, &one);
}
obj->changeSetting("geometry:computeN", 1, &zero);
}