void main(void) { InitX(); InitColor(); InitScratch(); MainLoop(); EndX(); }
void FEditorCommonDrawHelper::DrawOldGrid(const FSceneView* View,FPrimitiveDrawInterface* PDI) { ESceneDepthPriorityGroup eDPG = (ESceneDepthPriorityGroup)DepthPriorityGroup; bool bIsPerspective = ( View->ViewMatrices.ProjMatrix.M[3][3] < 1.0f ); // Draw 3D perspective grid if( bIsPerspective) { // @todo: Persp grid should be changed to be adaptive and use same settings as ortho grid, including grid interval! const int32 RangeInCells = NumCells / 2; const int32 MajorLineInterval = NumCells / 8; const int32 NumLines = NumCells + 1; const int32 AxesIndex = NumCells / 2; for( int32 LineIndex = 0; LineIndex < NumLines; ++LineIndex ) { bool bIsMajorLine = ( ( LineIndex - RangeInCells ) % MajorLineInterval ) == 0; FVector A,B; A.X=(PerspectiveGridSize/4.f)*(-1.0+2.0*LineIndex/NumCells); B.X=A.X; A.Y=(PerspectiveGridSize/4.f); B.Y=-(PerspectiveGridSize/4.f); A.Z=0.0; B.Z=0.0; FColor LineColor; float LineThickness = 0.f; if ( LineIndex==AxesIndex ) { LineColor = GridColorAxis; LineThickness = AxesLineThickness; } else if ( bIsMajorLine ) { LineColor = GridColorMajor; } else { LineColor = GridColorMinor; } PDI->DrawLine(A,B,LineColor,eDPG, LineThickness, GridDepthBias); A.Y=A.X; B.Y=B.X; A.X=(PerspectiveGridSize/4.f); B.X=-(PerspectiveGridSize/4.f); PDI->DrawLine(A,B,LineColor,eDPG, LineThickness, GridDepthBias); } } // Draw ortho grid. else { const bool bIsOrthoXY = ( FMath::Abs(View->ViewMatrices.ViewMatrix.M[2][2]) > 0.0f ); const bool bIsOrthoXZ = ( FMath::Abs(View->ViewMatrices.ViewMatrix.M[1][2]) > 0.0f ); const bool bIsOrthoYZ = ( FMath::Abs(View->ViewMatrices.ViewMatrix.M[0][2]) > 0.0f ); FLinearColor AxisColors[3]; GetAxisColors(AxisColors, false); if( bIsOrthoXY ) { FVector StartY( 0.0f, +HALF_WORLD_MAX1, -HALF_WORLD_MAX ); FVector EndY( 0.0f, -HALF_WORLD_MAX1, -HALF_WORLD_MAX ); FVector StartX( +HALF_WORLD_MAX1, 0.0f, -HALF_WORLD_MAX ); FVector EndX( -HALF_WORLD_MAX1, 0.0f, -HALF_WORLD_MAX ); DrawGridSection( GEditor->GetGridSize(), &StartY, &EndY, &StartY.X, &EndY.X, 0, View, PDI); DrawGridSection( GEditor->GetGridSize(), &StartX, &EndX, &StartX.Y, &EndX.Y, 1, View, PDI); DrawOriginAxisLine( &StartY, &EndY, &StartY.X, &EndY.X, View, PDI, AxisColors[1] ); DrawOriginAxisLine( &StartX, &EndX, &StartX.Y, &EndX.Y, View, PDI, AxisColors[0] ); } else if( bIsOrthoXZ ) { FVector StartZ( 0.0f, -HALF_WORLD_MAX, +HALF_WORLD_MAX1 ); FVector EndZ( 0.0f, -HALF_WORLD_MAX, -HALF_WORLD_MAX1 ); FVector StartX( +HALF_WORLD_MAX1, -HALF_WORLD_MAX, 0.0f ); FVector EndX( -HALF_WORLD_MAX1, -HALF_WORLD_MAX, 0.0f ); DrawGridSection( GEditor->GetGridSize(), &StartZ, &EndZ, &StartZ.X, &EndZ.X, 0, View, PDI); DrawGridSection( GEditor->GetGridSize(), &StartX, &EndX, &StartX.Z, &EndX.Z, 2, View, PDI); DrawOriginAxisLine( &StartZ, &EndZ, &StartZ.X, &EndZ.X, View, PDI, AxisColors[2] ); DrawOriginAxisLine( &StartX, &EndX, &StartX.Z, &EndX.Z, View, PDI, AxisColors[0] ); } else if( bIsOrthoYZ ) { FVector StartZ( +HALF_WORLD_MAX, 0.0f, +HALF_WORLD_MAX1 ); FVector EndZ( +HALF_WORLD_MAX, 0.0f, -HALF_WORLD_MAX1 ); FVector StartY( +HALF_WORLD_MAX, +HALF_WORLD_MAX1, 0.0f ); FVector EndY( +HALF_WORLD_MAX, -HALF_WORLD_MAX1, 0.0f ); DrawGridSection( GEditor->GetGridSize(), &StartZ, &EndZ, &StartZ.Y, &EndZ.Y, 1, View, PDI); DrawGridSection( GEditor->GetGridSize(), &StartY, &EndY, &StartY.Z, &EndY.Z, 2, View, PDI); DrawOriginAxisLine( &StartZ, &EndZ, &StartZ.Y, &EndZ.Y, View, PDI, AxisColors[2] ); DrawOriginAxisLine( &StartY, &EndY, &StartY.Z, &EndY.Z, View, PDI, AxisColors[1] ); } if( bDrawKillZ && ( bIsOrthoXZ || bIsOrthoYZ ) && GWorld->GetWorldSettings()->bEnableWorldBoundsChecks ) { float KillZ = GWorld->GetWorldSettings()->KillZ; PDI->DrawLine( FVector(-HALF_WORLD_MAX,0,KillZ), FVector(HALF_WORLD_MAX,0,KillZ), FColor(255,0,0), SDPG_Foreground ); PDI->DrawLine( FVector(0,-HALF_WORLD_MAX,KillZ), FVector(0,HALF_WORLD_MAX,KillZ), FColor(255,0,0), SDPG_Foreground ); } } // Draw orthogonal worldframe. if(bDrawWorldBox) { DrawWireBox(PDI, FBox( FVector(-HALF_WORLD_MAX1,-HALF_WORLD_MAX1,-HALF_WORLD_MAX1),FVector(HALF_WORLD_MAX1,HALF_WORLD_MAX1,HALF_WORLD_MAX1) ), GEngine->C_WorldBox, eDPG ); } }