package Ġclub . sk 1 er . element a . effects Ċ Ċ import Ġclub . sk 1 er . element a . UI Component Ċ import Ġclub . sk 1 er . element a . components . Window Ċ import Ġclub . sk 1 er . mods . core . universal . U Resolution Ċ import Ġorg . lwjgl . opengl . GL 1 1 .* Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . min Ċ Ċ /** Ċ Ġ* ĠEnables ĠGL ĠSc iss oring Ġto Ġrestrict Ġall Ġdrawing Ġdone Ġby Ċ Ġ* Ġthe Ġcomponent Ġwhere Ġthis Ġis Ġenabled Ġto Ġbe Ġonly Ġinside Ġof Ġthat Ġcomponent 's Ġbounds . Ċ Ġ* Ċ Ġ* ĠBy Ġproxy , Ġthis Ġrestrict s Ġall Ġof Ġsaid Ġcomponent 's Ġchildren Ġdrawing Ġto Ġinside Ġof Ġthe Ġsame Ġbounds . Ċ Ġ* Ċ Ġ* Ġ[ sc issor Intersection ] Ġwill Ġtry Ġto Ġcombine Ġthis Ġsc issor Ġwith Ġall Ġof Ġit 's Ġparents Ġsc iss ors Ġ( if Ġany ). Ċ Ġ*/ Ċ class ĠSc issor Effect Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġcustom BoundingBox : ĠUI Component ? Ġ= Ġnull , ĊĠĠĠ Ġprivate Ġval Ġsc issor Intersection : ĠBoolean Ġ= Ġtrue Ċ ) Ġ: ĠEffect () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġold State : ĠSc issor State ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġbefore Draw () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbounding Box Ġ= Ġcustom BoundingBox Ġ?: Ġbound Component ĊĠĠĠĠĠĠĠ Ġval Ġscale Factor Ġ= ĠU Resolution . scale Factor . toInt () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( current Sc issor State Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl Enable ( GL _ SC IS SOR _ TEST ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġold State Ġ= Ġcurrent Sc issor State ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġold State ĊĊĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġbounding Box . get Left (). toInt () Ġ* Ġscale Factor ĊĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġ( U Resolution . scaled Height Ġ* Ġscale Factor ) Ġ- Ġ( bounding Box . get Bottom (). toInt () Ġ* Ġscale Factor ) ĊĠĠĠĠĠĠĠ Ġvar Ġwidth Ġ= Ġbounding Box . getWidth (). toInt () Ġ* Ġscale Factor ĊĠĠĠĠĠĠĠ Ġvar Ġheight Ġ= Ġbounding Box . getHeight (). toInt () Ġ* Ġscale Factor ĊĊĠĠĠĠĠĠĠ Ġif Ġ( state Ġ!= Ġnull Ġ&& Ġsc issor Intersection ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx 2 Ġ= Ġx Ġ+ Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy 2 Ġ= Ġy Ġ+ Ġheight ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold X Ġ= Ġstate . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Y Ġ= Ġstate . y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold X 2 Ġ= Ġstate . x Ġ+ Ġstate . width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Y 2 Ġ= Ġstate . y Ġ+ Ġstate . height ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġmax ( x , Ġold X ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġmax ( y , Ġold Y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġmin ( x 2 , Ġold X 2 ) Ġ- Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġmin ( y 2 , Ġold Y 2 ) Ġ- Ġy ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġgl Sc issor ( x , Ġy , Ġwidth . coerce At Least ( 0 ), Ġheight . coerce At Least ( 0 )) ĊĊĠĠĠĠĠĠĠ Ġcurrent Sc issor State Ġ= ĠSc issor State ( x , Ġy , Ġwidth . coerce At Least ( 0 ), Ġheight . coerce At Least ( 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġafter Draw () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġold State ĊĊĠĠĠĠĠĠĠ Ġif Ġ( state Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl Sc issor ( state . x , Ġstate . y , Ġstate . width , Ġstate . height ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġold State Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl Disable ( GL _ SC IS SOR _ TEST ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcurrent Sc issor State Ġ= Ġstate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠSc issor State ( val Ġx : ĠInt , Ġval Ġy : ĠInt , Ġval Ġwidth : ĠInt , Ġval Ġheight : ĠInt ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Sc issor State : ĠSc issor State ? Ġ= Ġnull ĊĠĠĠ Ġ} Ċ } Ċ