24616Fermer24618
bearbecueLe 14/12/2012 à 20:43

//----------------------------------------------------------------------------

void CParticleSamplerAnimTrack:grineclareExternalObject(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
}
}
}
}