//----------------------------------------------------------------------------
void CParticleSamplerAnimTrack:

eclareExternalObject(CCompilerASTBuilder &builder) const
{
CParticleSamplerShape *shapeSampler = Sampler();
if (shapeSampler == null)
return;
if (shapeSampler->Shape() == null || shapeSampler->Shape()->Descriptor() == null)
return;
HH_ASSERT(builder.CompilerContext() != null);
if (m_SamplerNameGUID.Valid())
{
hh_u32 shapeStreamMask = (shapeSampler->SampleDimensionality() > 2) ? shapeSampler->Shape()->Descriptor()->VolumeSamplingMask() : shapeSampler->Shape()->Descriptor()->SurfaceSamplingMask();
// const char samplerTypeName[] = "samplerShape"; // FIXME: this will have to change depending on the 'm_UsingFixedLocations' flag. name it differently
char _samplerTypeName[32];
snprintf(_samplerTypeName, sizeof(_samplerTypeName), "samplerAnimTrack_%02X%s", shapeStreamMask, shapeSampler->UsingFixedLocations() ? "_fixed" : "");
CStringView samplerTypeName(_samplerTypeName, strlen(_samplerTypeName));
{
CCompilerTypeLibrary *typeLib = builder.CompilerContext()->TypeLibrary().Get();
SCompilerTypeID stId = typeLib->Find(samplerTypeName);
if (!stId.Empty())
{
builder.DeclareExternal(m_SamplerNameGUID,
stId,
sizeof(void*),
CCompilerASTNode::MetaType_Normal,
Compiler::Attribute_NoWrite); // read-only, can't modify
}
}
}
}