//----------------------------------------------------------- // // Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. //----------------------------------------------------------- class DebugCameraHUD extends HUD config(Game); /** When true the debug text is drawn. This is passed through from CheatManager's ToggleDebugCamera exec function. */ var bool bDrawDebugText; simulated event PostBeginPlay() { super.PostBeginPlay(); } function bool DisplayMaterials( float X, out float Y, float DY, MeshComponent MeshComp ) { local int MaterialIndex; local bool bDisplayedMaterial; local MaterialInterface Material; bDisplayedMaterial = false; if ( MeshComp != None ) { for ( MaterialIndex = 0; MaterialIndex < MeshComp.GetNumElements(); ++MaterialIndex ) { Material = MeshComp.GetMaterial(MaterialIndex); if ( Material != None ) { Y += DY; Canvas.SetPos( X + DY, Y ); Canvas.DrawText("Material: '" $ Material.Name $ "'" ); bDisplayedMaterial = true; } } } return bDisplayedMaterial; } event PostRender() { local DebugCameraController DCC; local float xl,yl,X,Y; local String MyText; local vector CamLoc, ZeroVec; local rotator CamRot; local TraceHitInfo HitInfo; local Actor HitActor; local MeshComponent MeshComp; local vector HitLoc, HitNormal; local bool bFoundMaterial; super.PostRender(); DCC = DebugCameraController( PlayerOwner ); if( DCC != none && bDrawDebugText ) { Canvas.SetDrawColor(0, 0, 255, 255); MyText = "DebugCameraHUD"; Canvas.Font = class'Engine'.Static.GetSmallFont(); Canvas.StrLen(MyText, XL, YL); X = Canvas.SizeX * 0.05f; Y = YL;//*1.67; YL += 2*Y; Canvas.SetPos( X, YL); Canvas.DrawText(MyText, true); Canvas.SetDrawColor(128, 128, 128, 255); //DCC.GetPlayerViewPoint( CamLoc, CamRot ); CamLoc = DCC.PlayerCamera.CameraCache.POV.Location; CamRot = DCC.PlayerCamera.CameraCache.POV.Rotation; YL += Y; Canvas.SetPos(X,YL); Canvas.DrawText("CamLoc:" $ CamLoc @ "CamRot:" $ CamRot ); HitActor = Trace(HitLoc, HitNormal, vector(camRot) * 5000 * 20 + CamLoc, CamLoc, true, ZeroVec, HitInfo); if( HitActor != None) { YL += Y; Canvas.SetPos(X,YL); Canvas.DrawText("HitLoc:" $ HitLoc @ "HitNorm:" $ HitNormal ); YL += Y; Canvas.SetPos(X,YL); Canvas.DrawText("HitDist:" @ VSize(CamLoc - HitLoc) ); YL += Y; Canvas.SetPos(X,YL); Canvas.DrawText("HitActor: '" $ HitActor.Name $ "'" ); YL += Y; Canvas.SetPos(X,YL); Canvas.DrawText("PhysMat: '" $ HitInfo.PhysMaterial $ "'" ); bFoundMaterial = false; if ( HitInfo.Material != None ) { YL += Y; Canvas.SetPos(X + Y,YL); Canvas.DrawText("Material:" $ HitInfo.Material.Name ); bFoundMaterial = true; } else if ( HitInfo.HitComponent != None ) { bFoundMaterial = DisplayMaterials( X, YL, Y, MeshComponent(HitInfo.HitComponent) ); } else { foreach HitActor.AllOwnedComponents( class'MeshComponent', MeshComp ) { bFoundMaterial = bFoundMaterial || DisplayMaterials( X, YL, Y, MeshComp ); } } if ( bFoundMaterial == false ) { YL += Y; Canvas.SetPos( X + Y, YL ); Canvas.DrawText("Material: NONE" ); } DrawDebugLine( HitLoc, HitLoc+HitNormal*30, 255,255,1255 ); } else { YL += Y; Canvas.SetPos(X,YL); Canvas.DrawText( "Not trace hit" ); } if ( DCC.bShowSelectedInfo == true && DCC.SelectedActor != None ) { YL += Y; Canvas.SetPos( X, YL ); Canvas.DrawText( "Selected actor: '" $ DCC.SelectedActor.Name $ "'" ); DisplayMaterials( X, YL, Y, MeshComponent(DCC.SelectedComponent) ); } } } DefaultProperties { bHidden=false }