class MyModHud extends GameHUD config(Game); var Vector WorldOrigin; var Vector WorldDirection; var FontRenderInfo TextRenderInfo; var Texture2D CursorTexture; /** Various colors */ var const color GoldColor; var Vector2D MousePosition; simulated function PostBeginPlay() { super.PostBeginPlay(); } function vector2D GetMouseCoordinates() { local Vector2D mousePos; local UIInteraction UIController; local GameUISceneClient GameSceneClient; UIController = PlayerOwner.GetUIController(); if ( UIController != None) { GameSceneClient = UIController.SceneClient; if ( GameSceneClient != None ) { mousePos.X = GameSceneClient.MousePosition.X; mousePos.Y = GameSceneClient.MousePosition.Y; } } return mousePos; } //Canvas is only valid during PostRender phase event PostRender() { MousePosition = GetMouseCoordinates(); Canvas.DeProject(MousePosition, WorldOrigin, WorldDirection); //now you have the world origin and direction vector of the mouse deprojection //so you can do with it whatever you'd like, such as do a Trace with it to see what the mouse is pointing at DrawHUD(); } /** * This is the main drawing pump. It will determine which hud we need to draw (Game or PostGame). Any drawing that should occur * regardless of the game state should go here. */ function DrawHUD() { local string StringMessage; StringMessage = "MouseX" @ MousePosition.X @ "MouseY" @ MousePosition.Y @ "World" @ WorldOrigin @ "WorldDir" @ WorldDirection; // now draw string with GoldColor color Canvas.DrawColor = GoldColor; Canvas.SetPos( 10, 10 ); Canvas.DrawText( StringMessage, false, , , TextRenderInfo ); Canvas.SetPos(MousePosition.X, MousePosition.Y); Canvas.DrawTile(CursorTexture, 26 , 26, 380, 320, 26,26); } DefaultProperties { CursorTexture=Texture2D'UI_HUD.HUD.UTCrossHairs' GoldColor=(R=255,G=183,B=11,A=255) TextRenderInfo=(bClipText=true) }