package Ġcom . ser ge y . space game . client . ui . scene 2 d Ċ Ċ import Ġcom . badlogic . gdx . graphics . Texture Ċ import Ġcom . badlogic . gdx . graphics . g 2 d . Texture Region Ċ import Ġcom . badlogic . gdx . math . Math Utils Ċ import Ġcom . ser ge y . space game . client . gl . Drawing Batch Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġsprite Ġthat Ġis Ġdrawn Ġsuch Ġthat Ġonly Ġa Ġcertain Ġangle Ġof Ġit Ġis Ġvisible Ġusing Ġmy Ġcustom Ġdrawing Ġbatch Ċ Ġ* Ċ Ġ* Ġ@ see ĠRad ial Drawing Batch Sprite Ċ Ġ* Ċ Ġ* Ġ@ author Ġser ge ys Ċ Ġ* Ċ Ġ* Ġ@ constructor ĠCreates Ġa Ġnew ĠRad ial Drawing Batch Sprite Ċ Ġ* Ġ@ param Ġtexture Region Ġ- Ġthe Ġtexture Ġregion Ġthat Ġthis Ġsprite Ġwill Ġuse Ċ Ġ*/ Ċ class ĠRad ial Drawing Batch Sprite ( texture Region : ĠTexture Region ) Ġ{ ĊĠĠĠĠĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġtexture Ġthat Ġthe Ġsprite Ġuses Ġto Ġdraw ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġtexture : ĠTexture ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠĠĊĠĠĠ Ġ// Vert s : Ġx , y , u , v , mult , add ĊĠĠĠ Ġprivate Ġval Ġvert s Ġ= ĠFloat Array ( 7 2 ) ĊĠĠĠĠĊĠĠĠ Ġprivate Ġvar Ġx : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġy : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġangle Ġthat Ġthe Ġsprite Ġshould Ġbe Ġdraw Ġto ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġangle : ĠFloat Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ== Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġwidth : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġheight : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġu 1 : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġu 2 : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġv 1 : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġv 2 : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġval Ġdu : ĠFloat ĊĠĠĠ Ġprivate Ġval Ġdv : ĠFloat ĊĠĠĠ Ġprivate Ġvar Ġdirty Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġdraw Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġorigin X : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġorigin Y : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġscale X Ġ= Ġ 1 f ĊĠĠĠ Ġprivate Ġvar Ġscale Y Ġ= Ġ 1 f ĊĠĠĠ Ġprivate Ġvar Ġlast Mult Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġlast Add Ġ= Ġ 0 f ĊĠĠĠĠĊĠĠĠ Ġvar Ġleft Width Ġ= Ġ 0 f ĊĠĠĠ Ġvar Ġright Width Ġ= Ġ 0 f ĊĠĠĠ Ġvar Ġtop Height Ġ= Ġ 0 f ĊĠĠĠ Ġvar Ġbottom Height Ġ= Ġ 0 f ĊĠĠĠ Ġvar ĠminWidth Ġ= Ġ 0 f ĊĠĠĠ Ġvar ĠminHeight Ġ= Ġ 0 f ĊĠĠĠĠĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . texture Ġ= Ġtexture Region . texture ĊĠĠĠĠĠĠĠ Ġthis . u 1 Ġ= Ġtexture Region . u ĊĠĠĠĠĠĠĠ Ġthis . v 1 Ġ= Ġtexture Region . v ĊĠĠĠĠĠĠĠ Ġthis . u 2 Ġ= Ġtexture Region . u 2 ĊĠĠĠĠĠĠĠ Ġthis . v 2 Ġ= Ġtexture Region . v 2 ĊĠĠĠĠĠĠĠ Ġthis . du Ġ= Ġu 2 Ġ- Ġu 1 ĊĠĠĠĠĠĠĠ Ġthis . dv Ġ= Ġv 2 Ġ- Ġv 1 ĊĠĠĠĠĠĠĠ Ġthis . width Ġ= Ġtexture Region . region Width . toFloat () ĊĠĠĠĠĠĠĠ Ġthis . height Ġ= Ġtexture Region . region Height . toFloat () ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġmultip lic ative Ġand Ġadd itive Ġcolor Ġof Ġthe Ġbatch ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmult Ġ- Ġthe Ġmultip lic ative Ġcolor Ġin Ġpacked Ġfloat Ġform ĊĠĠĠĠ Ġ* Ġ@ param Ġadd Ġ- Ġthe Ġadd itive Ġcolor Ġin Ġpacked Ġfloat Ġform ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Color ( mult : ĠFloat , Ġadd : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( mult Ġ!= Ġlast Mult ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Mult Ġ= Ġmult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 1 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert s [ i Ġ* Ġ 6 Ġ+ Ġ 4 ] Ġ= Ġmult ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( add Ġ!= Ġlast Add ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Add Ġ= Ġadd ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 1 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert s [ i Ġ* Ġ 6 Ġ+ Ġ 5 ] Ġ= Ġadd ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprivate Ġfun Ġvert ( verts : ĠFloat Array , Ġoffset : ĠInt , Ġx : ĠFloat , Ġy : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġu Ġ= Ġu 1 Ġ+ Ġdu Ġ* Ġ(( x Ġ- Ġthis . x ) Ġ/ Ġthis . width ) ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġv 1 Ġ+ Ġdv Ġ* Ġ( 1 f Ġ- Ġ( y Ġ- Ġthis . y ) Ġ/ Ġthis . height ) ĊĠĠĠĠĠĠĠ Ġvert ( verts , Ġoffset , Ġx , Ġy , Ġu , Ġv ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprivate Ġfun Ġvert ( verts : ĠFloat Array , Ġoffset : ĠInt , Ġx : ĠFloat , Ġy : ĠFloat , Ġu : ĠFloat , Ġv : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvert s [ offset ] Ġ= Ġthis . x Ġ+ Ġorigin X Ġ+ Ġ( x Ġ- Ġthis . x Ġ- Ġorigin X ) Ġ* Ġscale X ĊĠĠĠĠĠĠĠ Ġvert s [ offset Ġ+ Ġ 1 ] Ġ= Ġthis . y Ġ+ Ġorigin Y Ġ+ Ġ( y Ġ- Ġthis . y Ġ- Ġorigin Y ) Ġ* Ġscale Y ĊĠĠĠĠĠĠĠ Ġvert s [ offset Ġ+ Ġ 2 ] Ġ= Ġu ĊĠĠĠĠĠĠĠ Ġvert s [ offset Ġ+ Ġ 3 ] Ġ= Ġv ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprotected Ġfun Ġcalculate ( x : ĠFloat , Ġy : ĠFloat , Ġwidth : ĠFloat , Ġheight : ĠFloat , Ġangle : ĠFloat , Ġu 0 : ĠFloat , Ġv 0 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġu 1 : ĠFloat , Ġv 1 : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! this . dirty Ġ&& Ġthis . x Ġ== Ġx Ġ&& Ġthis . y Ġ== Ġy Ġ&& Ġthis . angle Ġ== Ġangle Ġ&& Ġthis . width Ġ== Ġwidth Ġ&& Ġthis . height Ġ== Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġthis . u 1 Ġ== Ġu 0 Ġ&& Ġthis . v 2 Ġ== Ġv 1 Ġ&& Ġthis . u 2 Ġ== Ġu 1 Ġ&& Ġthis . v 2 Ġ== Ġv 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġthis . x Ġ= Ġx ĊĠĠĠĠĠĠĠ Ġthis . y Ġ= Ġy ĊĠĠĠĠĠĠĠ Ġthis . width Ġ= Ġwidth ĊĠĠĠĠĠĠĠ Ġthis . height Ġ= Ġheight ĊĠĠĠĠĠĠĠ Ġthis . angle Ġ= Ġangle ĊĠĠĠĠĠĠĠ Ġthis . u 1 Ġ= Ġu 0 ĊĠĠĠĠĠĠĠ Ġthis . v 1 Ġ= Ġv 0 ĊĠĠĠĠĠĠĠ Ġthis . u 2 Ġ= Ġu 1 ĊĠĠĠĠĠĠĠ Ġthis . v 2 Ġ= Ġv 1 ĊĠĠĠĠĠĠĠ Ġval Ġcenter X Ġ= Ġwidth Ġ* Ġ 0 . 5 f ĊĠĠĠĠĠĠĠ Ġval Ġcenter Y Ġ= Ġheight Ġ* Ġ 0 . 5 f ĊĠĠĠĠĠĠĠ Ġval Ġx 2 Ġ= Ġx Ġ+ Ġwidth ĊĠĠĠĠĠĠĠ Ġval Ġy 2 Ġ= Ġy Ġ+ Ġheight ĊĠĠĠĠĠĠĠ Ġval Ġxc Ġ= Ġx Ġ+ Ġcenter X ĊĠĠĠĠĠĠĠ Ġval Ġy c Ġ= Ġy Ġ+ Ġcenter Y ĊĠĠĠĠĠĠĠ Ġval Ġax Ġ= ĠMath Utils . cos Deg ( angle Ġ+ Ġ 2 7 0 ) Ġ// Ġpositive Ġright , Ġnegative Ġleft ĊĠĠĠĠĠĠĠ Ġval Ġay Ġ= ĠMath Utils . sin Deg ( angle Ġ+ Ġ 2 7 0 ) Ġ// Ġpositive Ġtop , Ġnegative Ġbottom ĊĠĠĠĠĠĠĠ Ġval Ġt xa Ġ= Ġif Ġ( ax Ġ!= Ġ 0 f ) ĠMath . abs ( center X Ġ/ Ġax ) Ġelse Ġ 9 9 9 9 9 9 9 9 f Ġ// Ġintersection Ġon Ġleft Ġor Ġright Ġ" wall " ĊĠĠĠĠĠĠĠ Ġval Ġty a Ġ= Ġif Ġ( ay Ġ!= Ġ 0 f ) ĠMath . abs ( center Y Ġ/ Ġay ) Ġelse Ġ 9 9 9 9 9 9 9 9 f Ġ// Ġintersection Ġon Ġtop Ġor Ġbottom Ġ" wall " ĊĠĠĠĠĠĠĠ Ġval Ġt Ġ= ĠMath . min ( tx a , Ġty a ) ĊĠĠĠĠĠĠĠ Ġ// Ġtx Ġand Ġty Ġare Ġthe Ġintersection Ġpoints Ġrelative Ġto Ġcenter X Ġand Ġcenter Y . ĊĠĠĠĠĠĠĠ Ġval Ġtx Ġ= Ġt Ġ* Ġax ĊĠĠĠĠĠĠĠ Ġval Ġty Ġ= Ġt Ġ* Ġay ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġvert ( verts , ĠBOTTOM RIGHT 1 , Ġxc , Ġy 2 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( ax Ġ>= Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrotation Ġon Ġthe Ġrights Ġhalf ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠTOP LEFT 1 , Ġx , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠTOP RIGHT 1 , Ġxc , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠBOTTOM LEFT 1 , Ġx , Ġy 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠBOTTOM LEFT 2 , Ġxc , Ġy c ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠTOP LEFT 2 , Ġxc , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tx a Ġ< Ġty a ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrotation Ġon Ġthe Ġright Ġside ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠTOP RIGHT 2 , Ġx 2 , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠBOTTOM RIGHT 2 , Ġx 2 , Ġy c Ġ- Ġty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( ay Ġ> Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrotation Ġon Ġthe Ġtop Ġside ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠBOTTOM RIGHT 2 , Ġxc Ġ+ Ġtx , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠTOP RIGHT 2 , Ġxc Ġ+ Ġtx Ġ* Ġ 0 . 5 f , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrotation Ġon Ġthe Ġbottom Ġside ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠTOP RIGHT 2 , Ġx 2 , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠBOTTOM RIGHT 2 , Ġx 2 , Ġy 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠTOP LEFT 3 , Ġxc , Ġy c ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠTOP RIGHT 3 , Ġx 2 , Ġy 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠBOTTOM LEFT 3 , Ġxc Ġ+ Ġtx , Ġy 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠBOTTOM RIGHT 3 , Ġxc Ġ+ Ġtx Ġ* Ġ 0 . 5 f , Ġy 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrotation Ġon Ġthe Ġleft Ġhalf ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠTOP RIGHT 1 , Ġx Ġ+ Ġcenter X , Ġy 2 Ġ- Ġcenter Y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tx a Ġ< Ġty a ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrotation Ġon Ġthe Ġleft Ġside ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠBOTTOM LEFT 1 , Ġx , Ġy 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠTOP LEFT 1 , Ġx , Ġy c Ġ- Ġty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( ay Ġ< Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrotation Ġon Ġthe Ġbottom Ġside ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠTOP LEFT 1 , Ġxc Ġ+ Ġtx , Ġy 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠBOTTOM LEFT 1 , Ġxc Ġ+ Ġtx Ġ* Ġ 0 . 5 f , Ġy 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrotation Ġon Ġthe Ġtop Ġside ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠTOP LEFT 1 , Ġx , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠBOTTOM LEFT 1 , Ġx , Ġy 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠBOTTOM RIGHT 2 , Ġxc , Ġy c ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠBOTTOM LEFT 2 , Ġx , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠTOP LEFT 2 , Ġxc Ġ+ Ġtx Ġ* Ġ 0 . 5 f , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvert ( verts , ĠTOP RIGHT 2 , Ġxc Ġ+ Ġtx , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . dirty Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDraw Ġthis Ġsprite Ġat Ġa Ġgiven Ġangle Ġand Ġsize ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġbatch Ġ- Ġthe Ġbatch Ġto Ġdraw Ġthe Ġsprite Ġto ĊĠĠĠĠ Ġ* Ġ@ param Ġx Ġ- Ġthe Ġx Ġcoordinate Ġto Ġdraw Ġthe Ġsprite Ġat ĊĠĠĠĠ Ġ* Ġ@ param Ġy Ġ- Ġthe Ġy Ġcoordinate Ġto Ġdraw Ġthe Ġsprite Ġat ĊĠĠĠĠ Ġ* Ġ@ param Ġwidth _ Ġ- Ġthe Ġwidth Ġof Ġthe Ġsprite ĊĠĠĠĠ Ġ* Ġ@ param Ġheight _ Ġ- Ġthe Ġheight Ġof Ġthe Ġsprite ĊĠĠĠĠ Ġ* Ġ@ param Ġangle Ġ- Ġthe Ġangle Ġto Ġdraw Ġthe Ġsprite Ġat ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdraw ( batch : ĠDraw ing Batch , Ġx : ĠFloat , Ġy : ĠFloat , Ġwidth _: ĠFloat , Ġheight _: ĠFloat , Ġangle : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġwidth Ġ= Ġwidth _ ĊĠĠĠĠĠĠĠ Ġvar Ġheight Ġ= Ġheight _ ĊĠĠĠĠĠĠĠ Ġif Ġ( width Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale X Ġ= Ġ- 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ- width ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( height Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale Y Ġ= Ġ- 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ- height ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Color ( batch . mult Tint , Ġbatch . add Tint ) ĊĠĠĠĠĠĠĠ Ġcalculate ( x , Ġy , Ġwidth , Ġheight , Ġangle , Ġu 1 , Ġv 1 , Ġu 2 , Ġv 2 ) ĊĠĠĠĠĠĠĠ Ġbatch . draw ( texture , Ġvert s , Ġ 0 , Ġ 2 4 Ġ* Ġdraw ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDraw Ġthis Ġsprite Ġat Ġa Ġgiven Ġangle ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġbatch Ġ- Ġthe Ġbatch Ġto Ġdraw Ġthe Ġsprite Ġto ĊĠĠĠĠ Ġ* Ġ@ param Ġx Ġ- Ġthe Ġx Ġcoordinate Ġto Ġdraw Ġthe Ġsprite Ġat ĊĠĠĠĠ Ġ* Ġ@ param Ġy Ġ- Ġthe Ġy Ġcoordinate Ġto Ġdraw Ġthe Ġsprite Ġat ĊĠĠĠĠ Ġ* Ġ@ param Ġangle Ġ- Ġthe Ġangle Ġto Ġdraw Ġthe Ġsprite Ġat ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdraw ( batch : ĠDraw ing Batch , Ġx : ĠFloat , Ġy : ĠFloat , Ġangle : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdraw ( batch , Ġx , Ġy , Ġwidth , Ġheight , Ġangle ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġfun Ġset Origin ( x : ĠFloat , Ġy : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( origin X Ġ== Ġx Ġ&& Ġorigin Y Ġ== Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġorigin X Ġ= Ġx ĊĠĠĠĠĠĠĠ Ġorigin Y Ġ= Ġy ĊĠĠĠĠĠĠĠ Ġdirty Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġfun Ġset Scale ( x : ĠFloat , Ġy : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( scale X Ġ== Ġx Ġ&& Ġscale Y Ġ== Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġscale X Ġ= Ġx ĊĠĠĠĠĠĠĠ Ġscale Y Ġ= Ġy ĊĠĠĠĠĠĠĠ Ġdirty Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġfun Ġdraw ( batch : ĠDraw ing Batch , Ġx : ĠFloat , Ġy : ĠFloat , Ġwidth : ĠFloat , Ġheight : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdraw ( batch , Ġx , Ġy , Ġwidth , Ġheight , Ġthis . angle ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġfun Ġset Texture Region ( texture Region : ĠTexture Region ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . texture Ġ= Ġtexture Region . texture ĊĠĠĠĠĠĠĠ Ġthis . u 1 Ġ= Ġtexture Region . u ĊĠĠĠĠĠĠĠ Ġthis . v 1 Ġ= Ġtexture Region . v ĊĠĠĠĠĠĠĠ Ġthis . u 2 Ġ= Ġtexture Region . u 2 ĊĠĠĠĠĠĠĠ Ġthis . v 2 Ġ= Ġtexture Region . v 2 ĊĠĠĠĠĠĠĠ Ġthis . dirty Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTOP RIGHT 1 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval ĠBOTTOM RIGHT 1 Ġ= Ġ 6 ĊĠĠĠĠĠĠĠ Ġval ĠBOTTOM LEFT 1 Ġ= Ġ 1 2 ĊĠĠĠĠĠĠĠ Ġval ĠTOP LEFT 1 Ġ= Ġ 1 8 ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval ĠTOP RIGHT 2 Ġ= Ġ 2 4 ĊĠĠĠĠĠĠĠ Ġval ĠBOTTOM RIGHT 2 Ġ= Ġ 3 0 ĊĠĠĠĠĠĠĠ Ġval ĠBOTTOM LEFT 2 Ġ= Ġ 3 6 ĊĠĠĠĠĠĠĠ Ġval ĠTOP LEFT 2 Ġ= Ġ 4 2 ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval ĠTOP RIGHT 3 Ġ= Ġ 4 8 ĊĠĠĠĠĠĠĠ Ġval ĠBOTTOM RIGHT 3 Ġ= Ġ 5 4 ĊĠĠĠĠĠĠĠ Ġval ĠBOTTOM LEFT 3 Ġ= Ġ 6 0 ĊĠĠĠĠĠĠĠ Ġval ĠTOP LEFT 3 Ġ= Ġ 6 6 ĊĠĠĠ Ġ} Ċ }