using namespace apex;
class MyCallback
{
public:
static constexpr
UT_StringLit funcname =
"hdk::MyCallbackHDK";
static constexpr const char *argnames[] = {"det", "matrix"};
{
}
};
SetPointTransforms,
Geometry,
const VariadicArg<Matrix4>>
{
public:
static constexpr
UT_StringLit funcname =
"hdk::SetPointTransformsHDK";
static constexpr const char *argnames[] = {"*geo", "transforms"};
struct RunData
{
RunData() = default;
~RunData() = default;
RunData(const RunData &other) = delete;
const RunData &
operator=(
const RunData &other) =
delete;
{
{
return false;
return true;
}
}
{
myLookupHandle.clear();
myLookupHandle.constant(-1);
{
for (auto &pt_name : names)
{
myLookupHandle[ptoff] = idx;
idx++;
}
}
else
}
};
{
if (transform_h.isInvalid())
return;
if (rundata.needsRecache(gdp))
rundata.cacheLookup(gdp, transforms.names());
return;
{
for (
auto ri =
r.begin(); ri !=
r.end(); ++ri)
{
exint idx = rundata.myLookupHandle[ptoff];
if (idx < 0)
continue;
const Matrix4 &xform = *transforms[idx];
transform_h.set(ptoff, m3);
}
};
transform_h->bumpDataId();
}
};
GetPointTransforms,
VariadicArg<Matrix4>,
const Geometry>
{
public:
static constexpr
UT_StringLit funcname =
"hdk::GetPointTransformsHDK";
static constexpr const char *argnames[] = {"transforms", "geo"};
struct RunData
{
{
{
return false;
return true;
}
}
{
myPointOffsets.clear();
myPointOffsets.setCapacity(names.
size());
{
for (auto &pt_name : names)
{
myPointOffsets.append(ptoff);
}
}
else
}
};
RunData &rundata,
{
if (rundata.needsRecache(gdp))
rundata.cacheLookup(gdp, transforms.names());
int idx = 0;
if (h_transform.isInvalid())
return;
for (auto &ptoff : rundata.myPointOffsets)
{
{
++idx;
continue;
}
Matrix3 m3 = h_transform.get(ptoff);
*transforms[idx++] = m;
}
}
};
{
static MyCallback my_callback;
static SetPointTransforms set_point_transforms;
static GetPointTransforms get_point_transforms;
}