package Ġcom . dis graded . gdx machine . framework . batches Ċ Ċ import Ġcom . badlogic . gdx . G dx Ċ import Ġcom . badlogic . gdx . graphics . GL 2 0 Ċ import Ġcom . badlogic . gdx . graphics . gl utils . Shape Renderer Ċ import Ġcom . badlogic . gdx . math . Matrix 4 Ċ import Ġcom . dis graded . gdx machine . framework . core . graphics . Batch Ċ import Ġcom . dis graded . gdx machine . framework . core . graphics . Drawable Ċ import Ġcom . dis graded . gdx machine . framework . core . graphics . utils . Color Ċ import Ġcom . dis graded . gdx machine . framework . core . graphics . utils . Transform 2 D Ċ import Ġcom . dis graded . gdx machine . framework . draw ables .* Ċ import Ġcom . badlogic . gdx . math . Rectangle Ġas ĠRectangle 2 D Ċ import Ġcom . badlogic . gdx . math . Circle Ġas ĠCircle 2 D Ċ import Ġcom . badlogic . gdx . math . Ellipse Ġas ĠEl lipse 2 D Ċ import Ġcom . badlogic . gdx . math . Polygon Ġas ĠPolygon 2 D Ċ Ċ class ĠShape Batch ( private Ġval Ġmode : ĠMode Ġ= ĠMode . DIFF USE ) Ġ: ĠBatch Ġ{ ĊĊĠĠĠ Ġenum Ġclass ĠMode Ġ{ ĊĠĠĠĠĠĠĠ ĠDIFF USE , ĠBU MP ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġforced Color : ĠColor ĊĊĠĠĠ Ġprivate Ġval Ġshape Renderer Ġ= ĠShape Renderer () ĊĠĠĠ Ġprivate Ġval Ġblend Equation : ĠInt ĊĠĠĠ Ġprivate Ġval Ġblend Src RGB : ĠInt ĊĠĠĠ Ġprivate Ġval Ġblend Dst RGB : ĠInt ĊĠĠĠ Ġprivate Ġval Ġblend Src Alpha : ĠInt ĊĠĠĠ Ġprivate Ġval Ġblend Dst Alpha : ĠInt ĊĊĠĠĠ Ġprivate Ġvar Ġcalls Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval Ġtransform Matrix Ġ= ĠMatrix 4 () ĊĠĠĠ Ġprivate Ġvar Ġprojection Matrix Ġ= ĠMatrix 4 () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMode . DIFF USE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforced Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblend Equation Ġ= ĠGL 2 0 . GL _ FUNC _ ADD ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblend Src RGB Ġ= ĠGL 2 0 . GL _ SRC _ ALPHA ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblend Dst RGB Ġ= ĠGL 2 0 . GL _ ONE _ MINUS _ SRC _ ALPHA ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblend Src Alpha Ġ= ĠGL 2 0 . GL _ SRC _ ALPHA ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblend Dst Alpha Ġ= ĠGL 2 0 . GL _ ONE _ MINUS _ SRC _ ALPHA ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMode . BU MP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforced Color Ġ= ĠColor . NORMAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblend Equation Ġ= ĠGL 2 0 . GL _ FUNC _ ADD ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblend Src RGB Ġ= ĠGL 2 0 . GL _ SRC _ ALPHA ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblend Dst RGB Ġ= ĠGL 2 0 . GL _ ONE _ MINUS _ SRC _ ALPHA ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblend Src Alpha Ġ= ĠGL 2 0 . GL _ ONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblend Dst Alpha Ġ= ĠGL 2 0 . GL _ ONE _ MINUS _ SRC _ ALPHA ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Projection Matrix ( projection Matrix : ĠMatrix 4 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . projection Matrix Ġ= Ġprojection Matrix ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw ( drawable : ĠDrawable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshape Ġ= Ġdrawable Ġas ĠShape ĊĠĠĠĠĠĠĠ Ġval Ġshape Type Ġ= Ġwhen ( shape . style ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShape . Style . FIL LED Ġ-> ĠShape Renderer . Shape Type . Filled ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShape . Style . LINE Ġ-> ĠShape Renderer . Shape Type . Line ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShape . Style . POINT Ġ-> ĠShape Renderer . Shape Type . Point ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠG dx . gl . gl Enable ( GL 2 0 . GL _ BLEND ) ĊĠĠĠĠĠĠĠ ĠG dx . gl . gl Blend Equation ( blend Equation ) ĊĠĠĠĠĠĠĠ ĠG dx . gl . gl Blend Func Separ ate ( blend Src RGB , Ġblend Dst RGB , Ġblend Src Alpha , Ġblend Dst Alpha ) ĊĠĠĠĠĠĠĠ Ġshape Renderer . begin ( shape Type ) ĊĠĠĠĠĠĠĠ Ġif Ġ( forced Color Ġ!= ĠColor . TRANSP ARENT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshape Renderer . color . set ( forced Color . r , Ġforced Color . g , Ġforced Color . b , Ġforced Color . a Ġ* Ġshape . opacity ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshape Renderer . color . set ( shape . color . r , Ġshape . color . g , Ġshape . color . b , Ġshape . color . a Ġ* Ġshape . opacity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhen ( shape . get Shape Type ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCircle :: class Ġ-> Ġdraw Circle ( shape . absolute , Ġshape . get Shape 2 D () Ġas ĠCircle 2 D ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEl lipse :: class Ġ-> Ġdraw Ellipse ( shape . absolute , Ġshape . get Shape 2 D () Ġas ĠEl lipse 2 D ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPolygon :: class Ġ-> Ġdraw Polygon ( shape . absolute , Ġshape . get Shape 2 D () Ġas ĠPolygon 2 D ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRectangle :: class Ġ-> Ġdraw Rectangle ( shape . absolute , Ġshape . get Shape 2 D () Ġas ĠRectangle 2 D ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠRuntimeException (" Unsupported Ġshape Ġtype Ġ${ shape . getType () }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcalls ++ ĊĠĠĠĠĠĠĠ Ġshape Renderer . end () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġend (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtotal Calls Ġ= Ġcalls ĊĠĠĠĠĠĠĠ Ġcalls Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġtotal Calls ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ= Ġshape Renderer . dispose () ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Rectangle ( transform 2 D : ĠTransform 2 D , Ġrectangle : ĠRectangle 2 D ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapply Translation ( transform 2 D ) ĊĠĠĠĠĠĠĠ Ġshape Renderer . rect (- rectangle . width Ġ* Ġtransform 2 D . anchor X , Ġ- rectangle . height Ġ* Ġtransform 2 D . anchor Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrectangle . width , Ġrectangle . height ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Circle ( transform 2 D : ĠTransform 2 D , Ġcircle : ĠCircle 2 D ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapply Translation ( transform 2 D ) ĊĠĠĠĠĠĠĠ Ġshape Renderer . circle ( circle . radius Ġ- Ġ( circle . radius Ġ* Ġ 2 Ġ* Ġtransform 2 D . anchor X ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcircle . radius Ġ- Ġ( circle . radius Ġ* Ġ 2 Ġ* Ġtransform 2 D . anchor Y ), Ġcircle . radius ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Ellipse ( transform 2 D : ĠTransform 2 D , Ġel lipse : ĠEl lipse 2 D ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapply Translation ( transform 2 D ) ĊĠĠĠĠĠĠĠ Ġshape Renderer . ellipse (- ellipse . width Ġ* Ġtransform 2 D . anchor X , Ġ- ellipse . height Ġ* Ġtransform 2 D . anchor Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġel lipse . width , Ġel lipse . height , Ġtransform 2 D . angle ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Polygon ( transform 2 D : ĠTransform 2 D , Ġpolygon : ĠPolygon 2 D ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapply Translation ( transform 2 D ) ĊĠĠĠĠĠĠĠ Ġshape Renderer . polygon ( polygon . vertices ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġapply Translation ( transform 2 D : ĠTransform 2 D ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtransform Matrix . id t () ĊĠĠĠĠĠĠĠ Ġtransform Matrix . set To Translation ( transform 2 D . x , Ġtransform 2 D . y , Ġ 0 f ) ĊĠĠĠĠĠĠĠ Ġtransform Matrix . scale ( transform 2 D . scale X , Ġtransform 2 D . scale Y , Ġ 1 f ) ĊĠĠĠĠĠĠĠ Ġtransform Matrix . rotate ( 0 f , Ġ 0 f , Ġ 1 f , Ġtransform 2 D . angle ) ĊĠĠĠĠĠĠĠ Ġshape Renderer . projection Matrix Ġ= Ġtransform Matrix . mul Left ( projection Matrix ) ĊĠĠĠ Ġ} Ċ }