//============================================================================= // SheetBuilder: Builds a simple sheet. //============================================================================= class SheetBuilder extends BrushBuilder; var() int Height, Width, HorizBreaks, VertBreaks; var() enum ESheetAxis { AX_Horizontal, AX_XAxis, AX_YAxis, } Axis; var() name GroupName; event bool Build() { local int x, y, XStep, YStep, count; if( Height<=0 || Width<=0 || HorizBreaks<=0 || VertBreaks<=0 ) return BadParameters(); BeginBrush( false, GroupName ); XStep = Width/HorizBreaks; YStep = Height/VertBreaks; count = 0; for( x = 0 ; x < HorizBreaks ; x++ ) { for( y = 0 ; y < VertBreaks ; y++ ) { if( Axis==AX_Horizontal ) { Vertex3f( (x*XStep)-Width/2, (y*YStep)-Height/2, 0 ); Vertex3f( (x*XStep)-Width/2, ((y+1)*YStep)-Height/2, 0 ); Vertex3f( ((x+1)*XStep)-Width/2, ((y+1)*YStep)-Height/2, 0 ); Vertex3f( ((x+1)*XStep)-Width/2, (y*YStep)-Height/2, 0 ); } else if( Axis==AX_XAxis ) { Vertex3f( 0, (x*XStep)-Width/2, (y*YStep)-Height/2 ); Vertex3f( 0, (x*XStep)-Width/2, ((y+1)*YStep)-Height/2 ); Vertex3f( 0, ((x+1)*XStep)-Width/2, ((y+1)*YStep)-Height/2 ); Vertex3f( 0, ((x+1)*XStep)-Width/2, (y*YStep)-Height/2 ); } else { Vertex3f( (x*XStep)-Width/2, 0, (y*YStep)-Height/2 ); Vertex3f( (x*XStep)-Width/2, 0, ((y+1)*YStep)-Height/2 ); Vertex3f( ((x+1)*XStep)-Width/2, 0, ((y+1)*YStep)-Height/2 ); Vertex3f( ((x+1)*XStep)-Width/2, 0, (y*YStep)-Height/2 ); } Poly4i(+1,count,count+1,count+2,count+3,'Sheet',0x00000108); // PF_TwoSided|PF_NotSolid. count = GetVertexCount(); } } return EndBrush(); } defaultproperties { Height=256 Width=256 HorizBreaks=1 VertBreaks=1 Axis=SHEETAXIS_FloorCeiling GroupName=Sheet BitmapFilename="BBSheet" ToolTip="Sheet" }