package Ġcom . code vik ing . kx g . platform Ċ Ċ import Ġcom . code vik ing . kx g .* Ċ import Ġcom . code vik ing . kx g . gl . GL _ DEPTH _ COMPONENT Ċ import Ġcom . code vik ing . kx g . gl . GL _ LINEAR Ċ import Ġcom . code vik ing . kx g . gl . GL _ MAX _ TEXTURE _ IMAGE _ UNITS Ċ import Ġcom . code vik ing . kx g . gl . GL _ VERSION Ċ import Ġorg . lwjgl . glfw . Callbacks . glfw Free Callbacks Ċ import Ġorg . lwjgl . glfw . GLFW .* Ċ import Ġorg . lwjgl . opengl . EXT Texture Filter An isot ropic Ċ import Ġorg . lwjgl . opengl . GL Ċ import Ġorg . lwjgl . opengl . GL 1 1 Ċ import Ġorg . lwjgl . opengl . GL 2 0 Ċ import Ġorg . lwjgl . system . Memory Stack Ċ import Ġorg . lwjgl . system . Memory Util Ċ import Ġjava . awt . Desktop Ċ import Ġjava . net . URI ĊĊ Ċ /** Ċ Ġ* Ġ@ author Ġfab max Ċ Ġ*/ Ċ class ĠL wjgl 3 Context ( props : ĠInit Props ) Ġ: ĠK xg Context () Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġgl Capabilities : ĠGl Capabilities ĊĊĠĠĠ Ġoverride Ġval Ġasset Mgr Ġ= ĠJ vm Asset Manager ( props . assets Base Dir ) ĊĊĠĠĠ Ġval Ġwindow : ĠLong ĊĊĠĠĠ Ġoverride Ġvar Ġwindow Width Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġoverride Ġvar Ġwindow Height Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġval Ġsupported Extensions Ġ= Ġmutable Set Of < String >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġconfigure ĠGLFW ĊĠĠĠĠĠĠĠ Ġglfw Default Window Hints () ĊĠĠĠĠĠĠĠ Ġglfw Window Hint ( GLFW _ VISIBLE , ĠGLFW _ FALSE ) ĊĠĠĠĠĠĠĠ Ġglfw Window Hint ( GLFW _ RE SIZ ABLE , ĠGLFW _ TRUE ) ĊĠĠĠĠĠĠĠ Ġglfw Window Hint ( GLFW _ SAMPLES , Ġprops . ms aa Samples ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġcreate Ġwindow ĊĠĠĠĠĠĠĠ Ġwindow Ġ= Ġglfw Create Window ( props . width , Ġprops . height , Ġprops . title , Ġprops . monitor , Ġprops . share ) ĊĠĠĠĠĠĠĠ Ġif Ġ( window Ġ== ĠMemory Util . NULL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠK xg Exception (" Failed Ġto Ġcreate Ġthe ĠGLFW Ġwindow ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġcenter Ġthe Ġwindow ĊĠĠĠĠĠĠĠ Ġval Ġprimary Ġ= ĠDesktop Impl . primary Monitor ĊĠĠĠĠĠĠĠ Ġval Ġw nd Pos X Ġ= Ġprimary . pos X Ġ+ Ġ( primary . width Px Ġ- Ġprops . width ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġw nd Pos Y Ġ= Ġprimary . pos Y Ġ+ Ġ( primary . height Px Ġ- Ġprops . height ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġglfw SetWindow Pos ( window , Ġw nd Pos X , Ġw nd Pos Y ) ĊĠĠĠĠĠĠĠ Ġscreen D pi Ġ= Ġprimary . dpi ĊĊĠĠĠĠĠĠĠ Ġ// Ġinstall Ġwindow Ġcallbacks ĊĠĠĠĠĠĠĠ Ġglfw Set Framebuffer Size Callback ( window ) Ġ{ Ġ_, Ġw , Ġh Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow Width Ġ= Ġw ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow Height Ġ= Ġh ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġglfw SetWindow Pos Callback ( window ) Ġ{ Ġ_, Ġx , Ġy Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen D pi Ġ= Ġget Resolution At ( x , Ġy ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġinstall Ġmouse Ġcallbacks ĊĠĠĠĠĠĠĠ Ġglfw Set MouseButton Callback ( window ) Ġ{ Ġ_, Ġbtn , Ġact , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Mgr . handle MouseButton State ( btn , Ġact Ġ== ĠGLFW _ PRESS ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġglfw Set Cursor Pos Callback ( window ) Ġ{ Ġ_, Ġx , Ġy Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Mgr . handle MouseMove ( x . toFloat (), Ġy . toFloat ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġglfw Set Cursor Enter Callback ( window ) Ġ{ Ġ_, Ġentered Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! enter ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Mgr . handle Mouse Exit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġglfw Set Scroll Callback ( window ) Ġ{ Ġ_, Ġ_, Ġy Off Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Mgr . handle Mouse Scroll ( y Off . toFloat ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġinstall Ġkeyboard Ġcallbacks ĊĠĠĠĠĠĠĠ Ġglfw Set Key Callback ( window ) Ġ{ Ġ_, Ġkey , Ġ_, Ġaction , Ġmods Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevent Ġ= Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ PRESS Ġ-> ĠInput Manager . KEY _ EV _ DOWN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ REPEAT Ġ-> ĠInput Manager . KEY _ EV _ DOWN Ġor ĠInput Manager . KEY _ EV _ RE PE ATED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ RELEASE Ġ-> ĠInput Manager . KEY _ EV _ UP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠkeyCode Ġ= ĠKEY _ CODE _ MAP [ key ] Ġ?: Ġkey ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġkey Mod Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mods Ġand ĠGLFW _ MOD _ ALT Ġ!= Ġ 0 ) Ġ{ Ġkey Mod Ġ= Ġkey Mod Ġor ĠInput Manager . KEY _ MOD _ ALT Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mods Ġand ĠGLFW _ MOD _ CONTROL Ġ!= Ġ 0 ) Ġ{ Ġkey Mod Ġ= Ġkey Mod Ġor ĠInput Manager . KEY _ MOD _ CTRL Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mods Ġand ĠGLFW _ MOD _ SHIFT Ġ!= Ġ 0 ) Ġ{ Ġkey Mod Ġ= Ġkey Mod Ġor ĠInput Manager . KEY _ MOD _ SHIFT Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mods Ġand ĠGLFW _ MOD _ SUPER Ġ!= Ġ 0 ) Ġ{ Ġkey Mod Ġ= Ġkey Mod Ġor ĠInput Manager . KEY _ MOD _ SUPER Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Mgr . key Event ( keyCode , Ġkey Mod , Ġevent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġglfw Set Char Callback ( window ) Ġ{ Ġ_, Ġcode point Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Mgr . char Typed ( code point . to Char ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġthe Ġthread Ġstack Ġand Ġpush Ġa Ġnew Ġframe ĊĠĠĠĠĠĠĠ ĠMemory Stack . stack Push (). use Ġ{ Ġstack Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Width Ġ= Ġstack . malloc Int ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Height Ġ= Ġstack . malloc Int ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġglfw Get Framebuffer Size ( window , Ġp Width , Ġp Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow Width Ġ= Ġp Width [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow Height Ġ= Ġp Height [ 0 ] ĊĠĠĠĠĠĠĠ Ġ} Ġ// Ġthe Ġstack Ġframe Ġis Ġpop ped Ġautomatically ĊĊĠĠĠĠĠĠĠ Ġ// Ġmake Ġthe ĠOpenGL Ġcontext Ġcurrent ĊĠĠĠĠĠĠĠ Ġglfw Make Context Current ( window ) ĊĠĠĠĠĠĠĠ Ġ// Ġenable Ġv - sync ĊĠĠĠĠĠĠĠ Ġglfw Swap Interval ( 1 ) ĊĠĠĠĠĠĠĠ Ġ// Ġmake Ġthe Ġwindow Ġvisible ĊĠĠĠĠĠĠĠ Ġglfw Show Window ( window ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġline Ġis Ġcritical Ġfor ĠL WJ GL 's Ġinter operation Ġwith ĠGLFW 's ĠOpenGL Ġcontext , Ġor Ġany Ġcontext Ġthat Ġis Ġmanaged ĊĠĠĠĠĠĠĠ Ġ// Ġextern ally . ĠL WJ GL Ġdetect s Ġthe Ġcontext Ġthat Ġis Ġcurrent Ġin Ġthe Ġcurrent Ġthread , Ġcreates Ġthe ĠGL Capabilities ĊĠĠĠĠĠĠĠ Ġ// Ġinstance Ġand Ġmakes Ġthe ĠOpenGL Ġbindings Ġavailable Ġfor Ġuse . ĊĠĠĠĠĠĠĠ ĠGL . create Capabilities () ĊĊĠĠĠĠĠĠĠ Ġval Ġversion Str Ġ= ĠGL 1 1 . gl GetString ( GL _ VERSION ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġversion Major Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġversion Minor Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( version Str . matches ( Regex ("^ [ 0 - 9 ]\\ .[ 0 - 9 ]. * "))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparts Ġ= Ġversion Str . split ( Regex ("[ ^ 0 - 9 ] "), Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Major Ġ= Ġjava . lang . Integer . parseInt ( parts [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Minor Ġ= Ġjava . lang . Integer . parseInt ( parts [ 1 ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġfor Ġan isot ropic Ġtexture Ġfiltering Ġsupport ĊĠĠĠĠĠĠĠ Ġvar Ġan isot ropic Tex Filter Info Ġ= ĠAn isot ropic Tex Filter Info . NOT _ SUPPORTED ĊĠĠĠĠĠĠĠ Ġsupported Extensions . addAll ( GL 1 1 . gl GetString ( GL 1 1 . GL _ EXTENSION S )?. split (" Ġ") Ġ?: Ġempty List ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( supported Extensions . contains (" GL _ EXT _ texture _ filter _ an isot ropic ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Ġ= ĠGL 1 1 . glGet Float ( EXT Texture Filter An isot ropic . GL _ MAX _ TEXTURE _ MAX _ AN IS OT RO PY _ EXT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan isot ropic Tex Filter Info Ġ= ĠAn isot ropic Tex Filter Info ( max , ĠEXT Texture Filter An isot ropic . GL _ TEXTURE _ MAX _ AN IS OT RO PY _ EXT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġnumber Ġof Ġavailable Ġtexture Ġun is ĊĠĠĠĠĠĠĠ Ġval Ġmax Tex Units Ġ= ĠGL 1 1 . glGet Integer ( GL _ MAX _ TEXTURE _ IMAGE _ UNITS ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġrequired Ġto Ġbe Ġable Ġto Ġset Ġgl _ Point Size Ġin Ġvertex Ġshaders Ġ( to Ġget Ġsame Ġbehaviour Ġas Ġin ĠGLES ) ĊĠĠĠĠĠĠĠ ĠGL 1 1 . gl Enable ( GL 2 0 . GL _ VERTEX _ PROGRAM _ POINT _ SIZE ) ĊĊĠĠĠĠĠĠĠ Ġgl Capabilities Ġ= ĠGl Capabilities ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuint 3 2 Indices Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshader Int Attribs Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Tex Units Ġ= Ġmax Tex Units , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdepth Textures Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdepth Component Int Format Ġ= ĠGL _ DEPTH _ COMPONENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdepth Filter Method Ġ= ĠGL _ LINEAR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġglsl Dialect Ġ= ĠGl sl Dialect . GLSL _ DI AL ECT _ 3 3 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgl Version Ġ= ĠGl Version (" OpenGL ", Ġversion Major , Ġversion Minor ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan isot ropic Tex Filter Info Ġ= Ġan isot ropic Tex Filter Info ) ĊĊĠĠĠĠĠĠĠ Ġtexture Mgr . max Texture Load s Per Frame Ġ= ĠMAX _ TEXTURE _ LOAD S _ PER _ FR Am E ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġopen Url ( url : ĠString ) Ġ Ġ= ĠDesktop . get Desktop (). browse ( URI ( url )) ĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġrun Ġthe Ġrendering Ġloop Ġuntil Ġthe Ġuser Ġhas Ġattempted Ġto Ġclose Ġthe Ġwindow ĊĠĠĠĠĠĠĠ Ġvar Ġprev Time Ġ= ĠSystem . nano Time () ĊĠĠĠĠĠĠĠ Ġwhile Ġ(! glfw Window Should Close ( window )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdetermine Ġtime Ġdelta ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Ġ= ĠSystem . nano Time () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdt Ġ= Ġ( time Ġ- Ġprev Time ) Ġ/ Ġ 1 e 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprev Time Ġ= Ġtime ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrender Ġengine Ġcontent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender ( dt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġswap Ġthe Ġcolor Ġbuffers ĊĠĠĠĠĠĠĠĠĠĠĠ Ġglfw Swap Buffers ( window ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPoll Ġfor Ġwindow Ġevents . ĠThe Ġkey Ġcallback Ġabove Ġwill Ġonly Ġbe Ġinvoked Ġduring Ġthis Ġcall . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġglfw Poll Events () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdestroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġfree Ġthe Ġwindow Ġcallbacks Ġand Ġdestroy Ġthe Ġwindow ĊĠĠĠĠĠĠĠ Ġglfw Free Callbacks ( window ) ĊĠĠĠĠĠĠĠ Ġglfw Destroy Window ( window ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġterminate ĠGLFW Ġand Ġfree Ġthe Ġerror Ġcallback ĊĠĠĠĠĠĠĠ Ġglfw Terminate () ĊĠĠĠĠĠĠĠ Ġglfw Set Error Callback ( null )?. free () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠInit Props ( init : ĠInit Props . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġwidth Ġ= Ġ 1 0 2 4 ĊĠĠĠĠĠĠĠ Ġvar Ġheight Ġ= Ġ 7 6 8 ĊĠĠĠĠĠĠĠ Ġvar Ġtitle Ġ= Ġ" K xg " ĊĠĠĠĠĠĠĠ Ġvar Ġmonitor Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġvar Ġshare Ġ= Ġ 0 L ĊĊĠĠĠĠĠĠĠ Ġvar Ġms aa Samples Ġ= Ġ 8 ĊĊĠĠĠĠĠĠĠ Ġvar Ġassets Base Dir Ġ= Ġ"./ assets " ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMAX _ TEXTURE _ LOAD S _ PER _ FR Am E Ġ= Ġ 2 0 ĊĊĠĠĠĠĠĠĠ Ġval ĠKEY _ CODE _ MAP : ĠMap < Int , ĠInt > Ġ= Ġmutable Map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ LEFT _ CONTROL Ġto ĠInput Manager . KEY _ CTRL _ LEFT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ RIGHT _ CONTROL Ġto ĠInput Manager . KEY _ CTRL _ RIGHT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ LEFT _ SHIFT Ġto ĠInput Manager . KEY _ SHIFT _ LEFT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ RIGHT _ SHIFT Ġto ĠInput Manager . KEY _ SHIFT _ RIGHT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ LEFT _ ALT Ġto ĠInput Manager . KEY _ ALT _ LEFT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ RIGHT _ ALT Ġto ĠInput Manager . KEY _ ALT _ RIGHT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ LEFT _ SUPER Ġto ĠInput Manager . KEY _ SUPER _ LEFT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ RIGHT _ SUPER Ġto ĠInput Manager . KEY _ SUPER _ RIGHT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ ESCAPE Ġto ĠInput Manager . KEY _ ESC , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ MENU Ġto ĠInput Manager . KEY _ MENU , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ ENTER Ġto ĠInput Manager . KEY _ ENTER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ KP _ ENTER Ġto ĠInput Manager . KEY _ NP _ ENTER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ KP _ DI VID E Ġto ĠInput Manager . KEY _ NP _ DIV , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ KP _ MULTI PLY Ġto ĠInput Manager . KEY _ NP _ MUL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ KP _ ADD Ġto ĠInput Manager . KEY _ NP _ PLUS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ KP _ SUB TRACT Ġto ĠInput Manager . KEY _ NP _ MINUS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ BACK SPACE Ġto ĠInput Manager . KEY _ BACK SPACE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ TAB Ġto ĠInput Manager . KEY _ TAB , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ DELETE Ġto ĠInput Manager . KEY _ DEL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ INSERT Ġto ĠInput Manager . KEY _ INSERT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ HOME Ġto ĠInput Manager . KEY _ HOME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ END Ġto ĠInput Manager . KEY _ END , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ PAGE _ UP Ġto ĠInput Manager . KEY _ PAGE _ UP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ PAGE _ DOWN Ġto ĠInput Manager . KEY _ PAGE _ DOWN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ LEFT Ġto ĠInput Manager . KEY _ CURSOR _ LEFT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ RIGHT Ġto ĠInput Manager . KEY _ CURSOR _ RIGHT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ UP Ġto ĠInput Manager . KEY _ CURSOR _ UP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ DOWN Ġto ĠInput Manager . KEY _ CURSOR _ DOWN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ F 1 Ġto ĠInput Manager . KEY _ F 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ F 2 Ġto ĠInput Manager . KEY _ F 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ F 3 Ġto ĠInput Manager . KEY _ F 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ F 4 Ġto ĠInput Manager . KEY _ F 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ F 5 Ġto ĠInput Manager . KEY _ F 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ F 6 Ġto ĠInput Manager . KEY _ F 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ F 7 Ġto ĠInput Manager . KEY _ F 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ F 8 Ġto ĠInput Manager . KEY _ F 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ F 9 Ġto ĠInput Manager . KEY _ F 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ F 1 0 Ġto ĠInput Manager . KEY _ F 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ F 1 1 Ġto ĠInput Manager . KEY _ F 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLFW _ KEY _ F 1 2 Ġto ĠInput Manager . KEY _ F 1 2 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } ĊĊ