package Ġfr . mes ablo o . he av ym ach defense . ui . debug Ċ Ċ import Ġcom . badlogic . gdx . G dx Ċ import Ġcom . badlogic . gdx . graphics . Color Ċ import Ġcom . badlogic . gdx . graphics . g 2 d . N ine Patch Ċ import Ġcom . badlogic . gdx . graphics . gl utils . Shape Renderer Ċ import Ġcom . badlogic . gdx . scenes . scene 2 d . ui . Image Ċ import Ġcom . badlogic . gdx . scenes . scene 2 d . ui . Label Ċ import Ġcom . badlogic . gdx . scenes . scene 2 d . ui . Table Ċ import Ġcom . badlogic . gdx . scenes . scene 2 d . utils . N ine Patch Drawable Ċ import Ġcom . badlogic . gdx . utils . Align Ċ import Ġfr . mes ablo o . he av ym ach defense . managers . assets . Debug Assets Manager Ċ import Ġfr . mes ablo o . he av ym ach defense . managers . assets . debug Assets Manager Ċ import Ġjava . lang . management . Management Factory Ċ import Ġjavax . management . Attribute Ċ import Ġjavax . management . ObjectName Ċ import Ġkotlin . math . max ĊĊ Ċ class ĠDebug Info Ġ: ĠTable () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġfps Ġ= ĠLabel (" 0 ĠF PS ", ĠLabel . Label Style (). also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . font Ġ= Ġdebug Assets Manager . font ĊĠĠĠĠĠĠĠ Ġit . font Color Ġ= ĠColor . BLUE ĊĠĠĠ Ġ}) ĊĠĠĠ Ġprivate Ġval Ġmemory Ġ= ĠLabel (" 0 ĠMB Ġused ", ĠLabel . Label Style (). also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . font Ġ= Ġdebug Assets Manager . font ĊĠĠĠĠĠĠĠ Ġit . font Color Ġ= ĠColor . BLUE ĊĠĠĠ Ġ}) ĊĠĠĠ Ġprivate Ġval Ġcpu Load Ġ= ĠLabel (" 0 %", ĠLabel . Label Style (). also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . font Ġ= Ġdebug Assets Manager . font ĊĠĠĠĠĠĠĠ Ġit . font Color Ġ= ĠColor . BLUE ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġprivate Ġvar Ġtime Since Last Update Ġ= ĠUPDATE _ DELAY ĊĊĠĠĠ Ġprivate Ġval Ġbg Ġ= ĊĠĠĠĠĠĠĠ ĠImage ( N ine Patch Drawable ( N ine Patch ( debug Assets Manager . get ( Debug Assets Manager . BLACK _ BG ), Ġ 7 , Ġ 7 , Ġ 7 , Ġ 7 ))) ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠOUT ER _ P ADDING Ġ= Ġ 5 f ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠUPDATE _ DELAY Ġ= Ġ 1 f Ġ// Ġevery Ġsecond ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . add Actor ( this . bg ) ĊĠĠĠĠĠĠĠ Ġthis . add ( this . fps ). width ( 5 0 f ). center (). left () ĊĠĠĠĠĠĠĠ Ġthis . add ( this . cpu Load ). width ( 5 0 f ). center (). left () ĊĠĠĠĠĠĠĠ Ġthis . add ( this . memory ). min Width ( 7 0 f ). center (). left () ĊĊĠĠĠĠĠĠĠ Ġthis . bg . set Origin ( Align . bottom Left ) ĊĠĠĠĠĠĠĠ Ġthis . bottom (). left (). pad ( OUT ER _ P ADDING ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġact ( delta : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp FPS Ġ= ĠG dx . graphics . frames PerSecond ĊĠĠĠĠĠĠĠ Ġval Ġapp Memory Ġ= Ġget Memory Info In MB () ĊĠĠĠĠĠĠĠ Ġval Ġcpu Usage Ġ= Ġget Process Cpu Load () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( this . time Since Last Update Ġ> ĠUPDATE _ DELAY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . fps . setText ("$ app FPS ĠF PS ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . fps . style . font Color Ġ= Ġif Ġ( app FPS Ġ>= Ġ 5 0 ) ĠColor . GREEN Ġelse Ġif Ġ( app FPS Ġ>= Ġ 3 0 ) ĠColor . OR ANGE Ġelse ĠColor . RED ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . memory . setText ("$ app Memory ĠMB Ġused ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . memory . style . font Color Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( app Memory Ġ<= Ġ 5 0 ) ĠColor . GREEN Ġelse Ġif Ġ( app Memory Ġ<= Ġ 1 0 0 ) ĠColor . OR ANGE Ġelse ĠColor . RED ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cpu Load . setText ("$ cpu Usage % ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cpu Load . style . font Color Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cpu Usage Ġ<= Ġ 3 3 ) ĠColor . GREEN Ġelse Ġif Ġ( cpu Usage Ġ<= Ġ 6 6 ) ĠColor . OR ANGE Ġelse ĠColor . RED ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . act ( delta ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . bg . setPosition ( 0 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . bg . width Ġ= Ġ 5 0 f Ġ+ Ġ 5 0 f Ġ+ Ġmax ( this . memory . width , Ġ 7 0 f ) Ġ+ Ġ 2 Ġ* ĠOUT ER _ P ADDING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . bg . height Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( this . fps . height , Ġthis . memory . height , Ġthis . cpu Load . height ). max OrNull () !! Ġ+ Ġ 2 Ġ* ĠOUT ER _ P ADDING ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . time Since Last Update Ġ-= ĠUPDATE _ DELAY ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthis . time Since Last Update Ġ+= Ġdelta ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw Debug ( shapes : ĠShape Renderer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġprevent Ġdrawing Ġdebug ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ////////////////////////////////////////////////////////////////// / ĊĊĠĠĠ Ġprivate Ġval Ġm bean Server Ġ= ĠManagement Factory . get Platform MBean Server () ĊĠĠĠ Ġprivate Ġval Ġos ObjectName Ġ= ĠObject Name . getInstance ( Management Factory . OPER ATING _ SYSTEM _ MX BE AN _ NAME ) ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġget Process Cpu Load (): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcpu Load Attr List Ġ= Ġthis . m bean Server . getAttributes ( this . os ObjectName , ĠarrayOf (" Process Cpu Load ")) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( cpu Load Attr List . isEmpty ()) ĠDouble . NaN ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ( cpu Load Attr List [ 0 ] Ġas ĠAttribute ). value Ġas ĠDouble ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġ- 1 . 0 ) ĠDouble . NaN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ( value Ġ* Ġ 1 0 0 0 ). toInt () Ġ/ Ġ 1 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġreturns Ġa Ġpercentage Ġvalue Ġwith Ġ 1 Ġdecimal Ġpoint Ġprecision ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġmemory MX Bean Ġ= ĠManagement Factory . get Memory MX Bean () ĊĊĠĠĠ Ġprivate Ġfun Ġget Memory Info In MB () Ġ= Ġmemory MX Bean . heap Memory Usage . used Ġ/ Ġ( 1 0 2 4 Ġ* Ġ 1 0 2 4 ) Ċ }