/* Ċ Ġ* ĠFX GL Ġ- ĠJava FX ĠGame ĠLibrary . ĠThe ĠMIT ĠLicense Ġ( MIT ). Ċ Ġ* ĠCopyright Ġ( c ) ĠAl mas B Ġ( al mas lvl @ gmail . com ). Ċ Ġ* ĠSee ĠLICENSE Ġfor Ġdetails . Ċ Ġ*/ Ċ Ċ package Ġcom . al mas b . fx gl . scene Ċ Ċ import Ġcom . al mas b . fx gl . core . fsm . State Ċ import Ġcom . al mas b . fx gl . input . Input Ċ import Ġcom . al mas b . fx gl . time . Timer Ċ import Ġjavafx . beans . property . Double Property Ċ import Ġjavafx . scene . Node Ċ import Ġjavafx . scene . layout . Pane Ċ import Ġjavafx . scene . transform . Scale Ċ import Ġjava . util . concurrent . Copy On Write ArrayList Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ġ@ author ĠAl mas ĠB aim ag amb et ov Ġ( al mas lvl @ gmail . com ) Ċ Ġ*/ Ċ Ċ abstract Ġclass ĠSub Scene Ġ: ĠScene () Ġ{ ĊĊĠĠĠ Ġoverride Ġfinal Ġval Ġis Sub State : ĠBoolean Ġ= Ġtrue Ċ } Ċ Ċ abstract Ġclass ĠScene Ġ: ĠState < Scene > Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTop - level Ġroot Ġnode . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġroot Ġ= ĠP ane () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRoot Ġnode Ġfor Ġcontent . ĠAll Ġchildren Ġof Ġthis Ġclass ĊĠĠĠĠ Ġ* Ġshould Ġuse Ġcontent Ġroot . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcontent Root Ġ= ĠP ane () ĊĊĠĠĠ Ġval Ġinput Ġ= ĠInput () ĊĠĠĠ Ġval Ġtimer Ġ= ĠTimer () ĊĊĠĠĠ Ġoverride Ġval Ġis Sub State : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġoverride Ġval Ġis Allow Concurrency : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġval Ġlisteners Ġ= ĠCopy On Write ArrayList < Scene Listener >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġroot . background Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġcontent Root . background Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġroot . children . addAll ( content Root ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Child ( node : ĠNode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontent Root . children Ġ+= Ġnode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Child ( node : ĠNode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontent Root . children Ġ-= Ġnode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Listener ( l : ĠScene Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlisteners Ġ+= Ġl ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Listener ( l : ĠScene Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlisteners Ġ-= Ġl ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate ( tp f : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinput . update ( tp f ) ĊĠĠĠĠĠĠĠ Ġtimer . update ( tp f ) ĊĠĠĠĠĠĠĠ ĠonUpdate ( tp f ) ĊĊĠĠĠĠĠĠĠ Ġlisteners . forEach Ġ{ Ġit . on Update ( tp f ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġbind Size ( scaled Width : ĠDouble Property , Ġscaled Height : ĠDouble Property , Ġscale Ratio X : ĠDouble Property , Ġscale Ratio Y : ĠDouble Property ) Ġ{ ĊĠĠĠĠĠĠĠ Ġroot . pref Width Property (). bind ( scaled Width ) ĊĠĠĠĠĠĠĠ Ġroot . pref Height Property (). bind ( scaled Height ) ĊĊĠĠĠĠĠĠĠ Ġval Ġscale Ġ= ĠScale () ĊĠĠĠĠĠĠĠ Ġscale . x Property (). bind ( scale Ratio X ) ĊĠĠĠĠĠĠĠ Ġscale . y Property (). bind ( scale Ratio Y ) ĊĠĠĠĠĠĠĠ Ġcontent Root . transforms . set All ( scale ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun ĠonUpdate ( tp f : ĠDouble ) Ġ{ Ġ} ĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Entered From ( prev State : ĠScene ) Ġ{ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Exit ing To ( next State : ĠScene ) Ġ{ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġjava Class . simple Name Ċ } ĊĊ