public void Assign( QueuedSubMesh qsm, ushort atlod )
{
QueuedGeometry q = new QueuedGeometry();
queuedGeometryList.Add( q );
q.position = qsm.position;
q.orientation = qsm.orientation;
q.scale = qsm.scale;
if ( qsm.geometryLodList.Count > atlod )
{
// This submesh has enough lods, use the right one
q.geometry = (SubMeshLodGeometryLink)qsm.geometryLodList[ atlod ];
}
else
{
// Not enough lods, use the lowest one we have
q.geometry = (SubMeshLodGeometryLink)qsm.geometryLodList[ qsm.geometryLodList.Count - 1 ];
}
// Locate a material bucket
MaterialBucket mbucket;
if ( materialBucketMap.ContainsKey( qsm.materialName ) )
{
mbucket = materialBucketMap[ qsm.materialName ];
}
else
{
mbucket = new MaterialBucket( this, qsm.materialName );
materialBucketMap.Add( qsm.materialName, mbucket );
}
mbucket.Assign( q );
}