package Ġme . han . m uff in . client . utils . render čĊč Ċ import Ġme . han . m uff in . client . core . Globals č Ċ import Ġme . han . m uff in . client . utils . color . Colour č Ċ import Ġme . han . m uff in . client . utils . math . Math Utils č Ċ import Ġnet . minecraft . client . Minecraft č Ċ import Ġnet . minecraft . client . renderer . Active Render Info č Ċ import Ġnet . minecraft . client . renderer . Gl StateManager č Ċ import Ġnet . minecraft . client . renderer . Tes sell ator č Ċ import Ġnet . minecraft . client . renderer . vertex . Default Vertex Formats č Ċ import Ġnet . minecraft . util . Enum Facing č Ċ import Ġnet . minecraft . util . math . Axis Aligned BB č Ċ import Ġnet . minecraft . util . math . Vec 3 d č Ċ import Ġorg . lwjgl . opengl . GL 1 1 .* č Ċ import Ġorg . lwjgl . opengl . GL 3 2 čĊč Ċ object ĠM uff in Tes sell ator Ġ: ĠTes sell ator ( 0 x 2 0 0 0 0 0 ) Ġ{ čĊĠĠĠ Ġprivate Ġval Ġmc Ġ= ĠMinecraft . getM inecraft () čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠSetup ĠGl Ġstates čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġprepare GL () Ġ{ čĊĠĠĠĠĠĠĠ ĠGl StateManager . push Matrix () čĊĠĠĠĠĠĠĠ Ġgl LineWidth ( 1 f ) čĊĠĠĠĠĠĠĠ Ġgl Enable ( GL _ LINE _ S MO OTH ) čĊĠĠĠĠĠĠĠ Ġgl Enable ( GL 3 2 . GL _ DEPTH _ CLAMP ) čĊĠĠĠĠĠĠĠ Ġgl Hint ( GL _ LINE _ S MO OTH _ HINT , ĠGL _ NIC EST ) čĊĠĠĠĠĠĠĠ ĠGl StateManager . disable Alpha () čĊĠĠĠĠĠĠĠ ĠGl StateManager . shade Model ( GL _ S MO OTH ) čĊĠĠĠĠĠĠĠ ĠGl StateManager . disable Cull () čĊĠĠĠĠĠĠĠ ĠGl StateManager . enable Blend () čĊĠĠĠĠĠĠĠ ĠGl StateManager . depth Mask ( false ) čĊĠĠĠĠĠĠĠ ĠGl StateManager . disable Texture 2 D () čĊĠĠĠĠĠĠĠ ĠGl StateManager . disable Lighting () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠRe verts ĠGl Ġstates čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġrelease GL () Ġ{ čĊĠĠĠĠĠĠĠ ĠGl StateManager . enable Texture 2 D () čĊĠĠĠĠĠĠĠ ĠGl StateManager . enable Depth () čĊĠĠĠĠĠĠĠ ĠGl StateManager . disable Blend () čĊĠĠĠĠĠĠĠ ĠGl StateManager . enable Cull () čĊĠĠĠĠĠĠĠ ĠGl StateManager . shade Model ( GL _ FLAT ) čĊĠĠĠĠĠĠĠ ĠGl StateManager . enable Alpha () čĊĠĠĠĠĠĠĠ ĠGl StateManager . depth Mask ( true ) čĊĠĠĠĠĠĠĠ Ġgl Disable ( GL 3 2 . GL _ DEPTH _ CLAMP ) čĊĠĠĠĠĠĠĠ Ġgl Disable ( GL _ LINE _ S MO OTH ) čĊĠĠĠĠĠĠĠ ĠGl StateManager . color ( 1 f , Ġ 1 f , Ġ 1 f ) čĊĠĠĠĠĠĠĠ Ġgl LineWidth ( 1 f ) čĊĠĠĠĠĠĠĠ ĠGl StateManager . pop Matrix () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠBegin s ĠV BO Ġbuffer Ġwith Ġ[ mode ] čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġbegin ( mode : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠ Ġbuffer . begin ( mode , ĠDefault Vertex Formats . POSITION _ COLOR ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠDraw s Ġvertex es Ġin Ġthe Ġbuffer čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġrender () Ġ{ čĊĠĠĠĠĠĠĠ Ġdraw () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġval Ġcam Pos : ĠVec 3 d čĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠMath Utils . interpolate Entity ( Globals . mc . render View Entity čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠGlobals . mc . player , ĠRender Utils . render Partial Ticks ). add ( Active Render Info . get Camera Position ()) čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġ@ author ĠX iar o čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* ĠDraw s Ġrect angles Ġaround Ġ[ sides ] Ġof Ġ[ box ] čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġbox ĠBox Ġto Ġbe Ġdrawn Ġrect angles Ġaround čĊĠĠĠĠ Ġ* Ġ@ param Ġcolor ĠRGB čĊĠĠĠĠ Ġ* Ġ@ param Ġa ĠAlpha čĊĠĠĠĠ Ġ* Ġ@ param Ġsides ĠS ides Ġto Ġbe Ġdrawn čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġdraw Box ( box : ĠAxis Aligned BB , Ġcolor : ĠColour , Ġa : ĠInt , Ġsides : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġvertex List Ġ= ĠArrayList < Vec 3 d >() čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( sides Ġand ĠGeometry Masks . Quad . DOWN Ġ!= Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertex List . addAll ( Square Vec ( box . min X , Ġbox . max X , Ġbox . min Z , Ġbox . max Z , Ġbox . min Y , ĠEnum Facing . DOWN ). to Quad ()) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ( sides Ġand ĠGeometry Masks . Quad . UP Ġ!= Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertex List . addAll ( Square Vec ( box . min X , Ġbox . max X , Ġbox . min Z , Ġbox . max Z , Ġbox . max Y , ĠEnum Facing . UP ). to Quad ()) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ( sides Ġand ĠGeometry Masks . Quad . NORTH Ġ!= Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertex List . addAll ( Square Vec ( box . min X , Ġbox . max X , Ġbox . min Y , Ġbox . max Y , Ġbox . min Z , ĠEnum Facing . NORTH ). to Quad ()) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ( sides Ġand ĠGeometry Masks . Quad . SO UTH Ġ!= Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertex List . addAll ( Square Vec ( box . min X , Ġbox . max X , Ġbox . min Y , Ġbox . max Y , Ġbox . max Z , ĠEnum Facing . SO UTH ). to Quad ()) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ( sides Ġand ĠGeometry Masks . Quad . WEST Ġ!= Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertex List . addAll ( Square Vec ( box . min Y , Ġbox . max Y , Ġbox . min Z , Ġbox . max Z , Ġbox . min X , ĠEnum Facing . WEST ). to Quad ()) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ( sides Ġand ĠGeometry Masks . Quad . EAST Ġ!= Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertex List . addAll ( Square Vec ( box . min Y , Ġbox . max Y , Ġbox . min Z , Ġbox . max Z , Ġbox . max X , ĠEnum Facing . EAST ). to Quad ()) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġfor Ġ( pos Ġin Ġvertex List ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . pos ( pos . x , Ġpos . y , Ġpos . z ). color ( color . r , Ġcolor . g , Ġcolor . b , Ġa ). end Vertex () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġdraw G low ES PF illed ( box : ĠAxis Aligned BB , Ġcolor : ĠColour , Ġg low Height : ĠDouble ) Ġ{ čĊĠĠĠĠĠĠĠ Ġ// Ġ- Y čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . max X , Ġbox . min Y , Ġbox . min Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . max X , Ġbox . min Y , Ġbox . max Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . min X , Ġbox . min Y , Ġbox . max Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . min X , Ġbox . min Y , Ġbox . min Z ). color ( color , Ġcolor . a ). end Vertex () čĊčĊĠĠĠĠĠĠĠ Ġ// Ġ- X čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . min X , Ġbox . min Y , Ġbox . min Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . min X , Ġbox . min Y , Ġbox . max Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . min X , Ġbox . min Y Ġ+ Ġg low Height , Ġbox . max Z ). color ( color , Ġ 0 ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . min X , Ġbox . min Y Ġ+ Ġg low Height , Ġbox . min Z ). color ( color , Ġ 0 ). end Vertex () čĊčĊĠĠĠĠĠĠĠ Ġ// Ġ+ X čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . max X , Ġbox . min Y , Ġbox . max Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . max X , Ġbox . min Y , Ġbox . min Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . max X , Ġbox . min Y Ġ+ Ġg low Height , Ġbox . min Z ). color ( color , Ġ 0 ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . max X , Ġbox . min Y Ġ+ Ġg low Height , Ġbox . max Z ). color ( color , Ġ 0 ). end Vertex () čĊčĊĠĠĠĠĠĠĠ Ġ// Ġ- Z čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . max X , Ġbox . min Y , Ġbox . min Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . min X , Ġbox . min Y , Ġbox . min Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . min X , Ġbox . min Y Ġ+ Ġg low Height , Ġbox . min Z ). color ( color , Ġ 0 ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . max X , Ġbox . min Y Ġ+ Ġg low Height , Ġbox . min Z ). color ( color , Ġ 0 ). end Vertex () čĊčĊĠĠĠĠĠĠĠ Ġ// Ġ+ Z čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . min X , Ġbox . min Y , Ġbox . max Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . max X , Ġbox . min Y , Ġbox . max Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . max X , Ġbox . min Y Ġ+ Ġg low Height , Ġbox . max Z ). color ( color , Ġ 0 ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . min X , Ġbox . min Y Ġ+ Ġg low Height , Ġbox . max Z ). color ( color , Ġ 0 ). end Vertex () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġdraw G low ESP Outline ( box : ĠAxis Aligned BB , Ġcolor : ĠColour , Ġg low Height : ĠDouble , Ġflat Outline : ĠBoolean ) Ġ{ čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . min X , Ġbox . min Y , Ġbox . min Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . max X , Ġbox . min Y , Ġbox . min Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . max X , Ġbox . min Y , Ġbox . min Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . max X , Ġbox . min Y , Ġbox . max Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . max X , Ġbox . min Y , Ġbox . max Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . min X , Ġbox . min Y , Ġbox . max Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . min X , Ġbox . min Y , Ġbox . max Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( box . min X , Ġbox . min Y , Ġbox . min Z ). color ( color , Ġcolor . a ). end Vertex () čĊčĊĠĠĠĠĠĠĠ Ġif Ġ(! flat Outline ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . pos ( box . min X , Ġbox . min Y , Ġbox . min Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . pos ( box . min X , Ġbox . min Y Ġ+ Ġg low Height , Ġbox . min Z ). color ( color , Ġ 0 ). end Vertex () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . pos ( box . max X , Ġbox . min Y , Ġbox . min Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . pos ( box . max X , Ġbox . min Y Ġ+ Ġg low Height , Ġbox . min Z ). color ( color , Ġ 0 ). end Vertex () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . pos ( box . max X , Ġbox . min Y , Ġbox . max Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . pos ( box . max X , Ġbox . min Y Ġ+ Ġg low Height , Ġbox . max Z ). color ( color , Ġ 0 ). end Vertex () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . pos ( box . min X , Ġbox . min Y , Ġbox . max Z ). color ( color , Ġcolor . a ). end Vertex () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . pos ( box . min X , Ġbox . min Y Ġ+ Ġg low Height , Ġbox . max Z ). color ( color , Ġ 0 ). end Vertex () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġ@ author ĠX iar o čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* ĠDraw s Ġa Ġline Ġfrom Ġplayer Ġcross hair Ġto Ġ[ position ] čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġposition ĠPosition Ġto Ġbe Ġdrawn Ġline Ġto čĊĠĠĠĠ Ġ* Ġ@ param Ġcolor ĠRGB čĊĠĠĠĠ Ġ* Ġ@ param Ġa ĠAlpha čĊĠĠĠĠ Ġ* Ġ@ param Ġthickness ĠTh ickness Ġof Ġthe Ġline čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġdraw Line To ( position : ĠVec 3 d , Ġcolor : ĠColour , Ġa : ĠInt , Ġthickness : ĠFloat ) Ġ{ čĊĠĠĠĠĠĠĠ ĠGl StateManager . gl LineWidth ( thickness ) čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( cam Pos . x , Ġcam Pos . y , Ġcam Pos . z ). color ( color . r , Ġcolor . g , Ġcolor . b , Ġa ). end Vertex () čĊĠĠĠĠĠĠĠ Ġbuffer . pos ( position . x , Ġposition . y , Ġposition . z ). color ( color . r , Ġcolor . g , Ġcolor . b , Ġa ). end Vertex () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġ@ author ĠX iar o čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* ĠDraw s Ġoutline Ġfor Ġ[ sides ] Ġof Ġ[ box ] čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġbox ĠBox Ġto Ġbe Ġdrawn Ġoutline čĊĠĠĠĠ Ġ* Ġ@ param Ġcolor ĠRGB čĊĠĠĠĠ Ġ* Ġ@ param Ġa ĠAlpha čĊĠĠĠĠ Ġ* Ġ@ param Ġsides ĠS ides Ġto Ġdraw Ġoutline čĊĠĠĠĠ Ġ* Ġ@ param Ġthickness ĠTh ickness Ġof Ġthe Ġoutline čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġdraw Outline ( box : ĠAxis Aligned BB , Ġcolor : ĠColour , Ġa : ĠInt , Ġsides : ĠInt , Ġthickness : ĠFloat ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġvertex List Ġ= ĠLinked HashSet < Pair < Vec 3 d , ĠVec 3 d >>() čĊĠĠĠĠĠĠĠ ĠGl StateManager . gl LineWidth ( thickness ) čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( sides Ġand ĠGeometry Masks . Quad . DOWN Ġ!= Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertex List . addAll ( Square Vec ( box . min X , Ġbox . max X , Ġbox . min Z , Ġbox . max Z , Ġbox . min Y , ĠEnum Facing . DOWN ). to Lines ()) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ( sides Ġand ĠGeometry Masks . Quad . UP Ġ!= Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertex List . addAll ( Square Vec ( box . min X , Ġbox . max X , Ġbox . min Z , Ġbox . max Z , Ġbox . max Y , ĠEnum Facing . UP ). to Lines ()) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ( sides Ġand ĠGeometry Masks . Quad . NORTH Ġ!= Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertex List . addAll ( Square Vec ( box . min X , Ġbox . max X , Ġbox . min Y , Ġbox . max Y , Ġbox . min Z , ĠEnum Facing . NORTH ). to Lines ()) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ( sides Ġand ĠGeometry Masks . Quad . SO UTH Ġ!= Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertex List . addAll ( Square Vec ( box . min X , Ġbox . max X , Ġbox . min Y , Ġbox . max Y , Ġbox . max Z , ĠEnum Facing . SO UTH ). to Lines ()) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ( sides Ġand ĠGeometry Masks . Quad . WEST Ġ!= Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertex List . addAll ( Square Vec ( box . min Y , Ġbox . max Y , Ġbox . min Z , Ġbox . max Z , Ġbox . min X , ĠEnum Facing . WEST ). to Lines ()) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ( sides Ġand ĠGeometry Masks . Quad . EAST Ġ!= Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertex List . addAll ( Square Vec ( box . min Y , Ġbox . max Y , Ġbox . min Z , Ġbox . max Z , Ġbox . max X , ĠEnum Facing . EAST ). to Lines ()) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġfor Ġ(( p 1 , Ġp 2 ) Ġin Ġvertex List ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . pos ( p 1 . x , Ġp 1 . y , Ġp 1 . z ). color ( color . r , Ġcolor . g , Ġcolor . b , Ġa ). end Vertex () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . pos ( p 2 . x , Ġp 2 . y , Ġp 2 . z ). color ( color . r , Ġcolor . g , Ġcolor . b , Ġa ). end Vertex () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġdata Ġclass ĠSquare Vec ( val Ġmin X : ĠDouble , Ġval Ġmax X : ĠDouble , Ġval Ġmin Z : ĠDouble , Ġval Ġmax Z : ĠDouble , Ġval Ġy : ĠDouble , Ġval Ġfacing : ĠEnum Facing ) Ġ{ čĊĠĠĠĠĠĠĠ Ġfun Ġto Lines (): ĠArray < Pair < Vec 3 d , ĠVec 3 d >> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquad Ġ= Ġthis . to Quad () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( quad [ 0 ], Ġquad [ 1 ]), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( quad [ 1 ], Ġquad [ 2 ]), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( quad [ 2 ], Ġquad [ 3 ]), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( quad [ 3 ], Ġquad [ 0 ]) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġfun Ġto Quad (): ĠArray < Vec 3 d > Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( this . facing . horizontal Index Ġ!= Ġ- 1 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquad Ġ= Ġthis . to 2 D Quad () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArray ( 4 ) Ġ{ Ġi Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvec Ġ= Ġquad [ i ] čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( facing . axis Ġ== ĠEnum Facing . Axis . X ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 d ( vec . y , Ġvec . x , Ġvec . z ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 d ( vec . x , Ġvec . z , Ġvec . y ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġthis . to 2 D Quad () čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġfun Ġto 2 D Quad (): ĠArray < Vec 3 d > Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 d ( this . min X , Ġthis . y , Ġthis . min Z ), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 d ( this . min X , Ġthis . y , Ġthis . max Z ), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 d ( this . max X , Ġthis . y , Ġthis . max Z ), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 d ( this . max X , Ġthis . y , Ġthis . min Z ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ }