home *** CD-ROM | disk | FTP | other *** search
/ Game Level Design / GLDesign.bin / Software / UnrealEngine2Runtime / UE2Runtime-22262001_Demo.exe / Editor / Classes / LinearStairBuilder.uc < prev    next >
Text File  |  2003-10-22  |  4KB  |  127 lines

  1. //=============================================================================
  2. // LinearStairBuilder: Builds a Linear Staircase.
  3. //=============================================================================
  4. class LinearStairBuilder
  5.     extends BrushBuilder;
  6.  
  7. var() int StepLength, StepHeight, StepWidth, NumSteps, AddToFirstStep;
  8. var() name GroupName;
  9.  
  10. event bool Build()
  11. {
  12.     local int i, LastIdx, CurrentX, CurrentY, CurrentZ, Adjustment;
  13.  
  14.     // Check for bad input.
  15.     if( StepLength<=0 || StepHeight<=0 || StepWidth<=0 )
  16.         return BadParameters();
  17.     if( Numsteps<=1 || Numsteps>45 )
  18.         return BadParameters("NumSteps must be greater than 1 and less than 45.");
  19.  
  20.     //
  21.     // Build the brush.
  22.     //
  23.     BeginBrush( false, GroupName );
  24.  
  25.     CurrentX = 0;
  26.     CurrentY = 0;
  27.     CurrentZ = 0;
  28.  
  29.     LastIdx = GetVertexCount();
  30.  
  31.     // Bottom poly.
  32.     Vertex3f( 0,                        0,            -StepHeight );
  33.     Vertex3f( 0,                        StepWidth,    -StepHeight );
  34.     Vertex3f( StepLength * NumSteps,    StepWidth,    -StepHeight );
  35.     Vertex3f( StepLength * NumSteps,    0,            -StepHeight );
  36.     Poly4i(1, 0, 1, 2, 3, 'Base');
  37.     LastIdx += 4;
  38.  
  39.     // Back poly.
  40.     Vertex3f( StepLength * NumSteps,    StepWidth,    -StepHeight );
  41.     Vertex3f( StepLength * NumSteps,    StepWidth,    (StepHeight * (NumSteps - 1)) + AddToFirstStep );
  42.     Vertex3f( StepLength * NumSteps,    0,            (StepHeight * (NumSteps - 1)) + AddToFirstStep );
  43.     Vertex3f( StepLength * NumSteps,    0,            -StepHeight );
  44.     Poly4i(1, 4, 5, 6, 7, 'Back');
  45.     LastIdx += 4;
  46.  
  47.     // Tops of steps.
  48.     for( i = 0 ; i < Numsteps ; i++ )
  49.     {
  50.         CurrentX = (i * StepLength);
  51.         CurrentZ = (i * StepHeight) + AddToFirstStep;
  52.  
  53.         // Top of the step
  54.         Vertex3f( CurrentX,                    CurrentY,                CurrentZ );
  55.         Vertex3f( CurrentX,                    CurrentY + StepWidth,    CurrentZ );
  56.         Vertex3f( CurrentX + StepLength,    CurrentY + StepWidth,    CurrentZ );
  57.         Vertex3f( CurrentX + StepLength,    CurrentY,                CurrentZ );
  58.  
  59.         Poly4i(1,
  60.             LastIdx+(i*4)+3,
  61.             LastIdx+(i*4)+2,
  62.             LastIdx+(i*4)+1,
  63.             LastIdx+(i*4), 'Step');
  64.     }
  65.     LastIdx += (NumSteps*4);
  66.  
  67.     // Fronts of steps.
  68.     for( i = 0 ; i < Numsteps ; i++ )
  69.     {
  70.         CurrentX = (i * StepLength);
  71.         CurrentZ = (i * StepHeight) + AddToFirstStep;
  72.         if( i == 0 )
  73.             Adjustment = AddToFirstStep;
  74.         else
  75.             Adjustment = 0;
  76.  
  77.         // Top of the step
  78.         Vertex3f( CurrentX,        CurrentY,                CurrentZ );
  79.         Vertex3f( CurrentX,        CurrentY,                CurrentZ - StepHeight - Adjustment );
  80.         Vertex3f( CurrentX,        CurrentY + StepWidth,    CurrentZ - StepHeight - Adjustment );
  81.         Vertex3f( CurrentX,        CurrentY + StepWidth,    CurrentZ );
  82.  
  83.         Poly4i(1,
  84.             LastIdx+(i*12)+3,
  85.             LastIdx+(i*12)+2,
  86.             LastIdx+(i*12)+1,
  87.             LastIdx+(i*12), 'Rise');
  88.  
  89.         // Sides of the step
  90.         Vertex3f( CurrentX,                                CurrentY,        CurrentZ );
  91.         Vertex3f( CurrentX,                                CurrentY,        CurrentZ - StepHeight - Adjustment );
  92.         Vertex3f( CurrentX + (StepLength*(Numsteps-i)),    CurrentY,        CurrentZ - StepHeight - Adjustment );
  93.         Vertex3f( CurrentX + (StepLength*(Numsteps-i)),    CurrentY,        CurrentZ );
  94.  
  95.         Poly4i(1,
  96.             LastIdx+(i*12)+4,
  97.             LastIdx+(i*12)+5,
  98.             LastIdx+(i*12)+6,
  99.             LastIdx+(i*12)+7, 'Side');
  100.  
  101.         Vertex3f( CurrentX,                                CurrentY + StepWidth,        CurrentZ );
  102.         Vertex3f( CurrentX,                                CurrentY + StepWidth,        CurrentZ - StepHeight - Adjustment );
  103.         Vertex3f( CurrentX + (StepLength*(Numsteps-i)),    CurrentY + StepWidth,        CurrentZ - StepHeight - Adjustment );
  104.         Vertex3f( CurrentX + (StepLength*(Numsteps-i)),    CurrentY + StepWidth,        CurrentZ );
  105.  
  106.         Poly4i(1,
  107.             LastIdx+(i*12)+11,
  108.             LastIdx+(i*12)+10,
  109.             LastIdx+(i*12)+9,
  110.             LastIdx+(i*12)+8, 'Side');
  111.     }
  112.  
  113.     return EndBrush();
  114. }
  115.  
  116. defaultproperties
  117. {
  118.     StepLength=32
  119.     StepHeight=16
  120.     StepWidth=256
  121.     NumSteps=8
  122.     AddToFirstStep=0
  123.     GroupName=LinearStair
  124.     BitmapFilename="BBLinearStair"
  125.     ToolTip="Linear Staircase"
  126. }
  127.