This is what I ended up doing:
function FxDtsBrick::isCovered(%this)
{
%area = %this.getDatablock().topArea / 4;
%box = %this.getWorldBox();
%covered = 0;
%xLow = getWord(%box, 0);
%yLow = getWord(%box, 1);
%xHigh = getWord(%box, 3);
%yHigh = getWord(%box, 4);
for(%i = %this.getNumUpBricks() - 1; %i >= 0; %i --)
{
%b = %this.getUpBrick(%i).getWorldBox();
%overlapX = getMax(0, getMin(%xHigh, getWord(%b, 3)) - getMax(%xLow, getWord(%b, 0)));
%overlapY = getMax(0, getMin(%yHigh, getWord(%b, 4)) - getMax(%yLow, getWord(%b, 1)));
%covered += %overlapX * %overlapY;
}
return %covered >= %area;
}