//============================================================================= // ConeBuilder: Builds a 3D cone brush, compatible with cylinder of same size. //============================================================================= class ConeBuilder extends BrushBuilder; var() float Height, CapHeight, OuterRadius, InnerRadius; var() int Sides; var() name GroupName; var() bool AlignToSide, Hollow; function BuildCone( int Direction, bool AlignToSide, int Sides, float Height, float Radius, name Item ) { local int n,i,Ofs; n = GetVertexCount(); if( AlignToSide ) { Radius /= cos(pi/Sides); Ofs = 1; } // Vertices. for( i=0; i=OuterRadius) ) return BadParameters(); if( Hollow && CapHeight>Height ) return BadParameters(); if( Hollow && (CapHeight==Height && InnerRadius==OuterRadius) ) return BadParameters(); BeginBrush( false, GroupName ); BuildCone( +1, AlignToSide, Sides, Height, OuterRadius, 'Top' ); if( Hollow ) { BuildCone( -1, AlignToSide, Sides, CapHeight, InnerRadius, 'Cap' ); if( OuterRadius!=InnerRadius ) for( i=0; i