package Ġorg . river . ex ert ion . k ob old C ave . screen . node Mesh Ċ Ċ import Ġcom . badlogic . gdx . G dx Ċ import Ġcom . badlogic . gdx . graphics .* Ċ import Ġcom . badlogic . gdx . graphics . g 2 d . Batch Ċ import Ġcom . badlogic . gdx . graphics . g 2 d . Bitmap Font Ċ import Ġcom . badlogic . gdx . scenes . scene 2 d . Actor Ċ import Ġcom . badlogic . gdx . scenes . scene 2 d . Stage Ċ import Ġk tx . actors . onClick Ċ import Ġk tx . app . K tx Screen Ċ import Ġk tx . graphics . use Ċ import Ġorg . river . ex ert ion .* Ċ import Ġorg . river . ex ert ion . k ob old C ave . l attice . Array L attice Ċ import Ġorg . river . ex ert ion . k ob old C ave . l attice . IL attice . Companion . node Mesh Ċ import Ġorg . river . ex ert ion . k ob old C ave . leaf . IL eaf . Companion . node Mesh Ċ import Ġorg . river . ex ert ion . k ob old C ave . leaf . L ace Ċ import Ġorg . river . ex ert ion . k ob old C ave . leaf . Leaf Ċ import Ġorg . river . ex ert ion . k ob old C ave . node . node Mesh . Node Mesh Ċ import Ġorg . river . ex ert ion . k ob old C ave . screen . Render Palette . Back Colors Ċ import Ġorg . river . ex ert ion . k ob old C ave . screen . Render Palette . Fore Colors Ċ Ċ class ĠDemo Node Mesh Operations Second Screen ( private Ġval Ġbatch : ĠBatch , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġfont : ĠBitmap Font , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġcamera : ĠOr tho graphic Camera , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġstage : ĠStage ) Ġ: ĠK tx Screen Ġ{ ĊĊĠĠĠ Ġval Ġh oriz Offset Ġ= ĠGame . init Viewport Width Ġ/ Ġ 1 1 ĊĠĠĠ Ġval Ġvert Offset Ġ= ĠGame . init Viewport Height Ġ/ Ġ 1 1 ĊĠĠĠ Ġval Ġlabel Offset Ġ= ĠPoint (- ĠGame . init Viewport Width Ġ/ Ġ 8 , ĠGame . init Viewport Height Ġ/ Ġ 3 2 ) ĊĊĠĠĠ Ġval Ġlocations Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠPoint ( 0 f , 0 f ) ĊĠĠĠĠĠĠĠ Ġ, ĠPoint ( h oriz Offset Ġ* Ġ 5 . 5 f , Ġvert Offset Ġ* Ġ 5 . 5 f ) ĊĠĠĠĠĠĠĠ Ġ, ĠPoint ( h oriz Offset Ġ* Ġ 2 . 5 f , Ġvert Offset Ġ* Ġ 8 . 5 f ) ĊĠĠĠĠĠĠĠ Ġ, ĠPoint ( h oriz Offset Ġ* Ġ 8 . 5 f , Ġvert Offset Ġ* Ġ 8 . 5 f ) ĊĠĠĠĠĠĠĠ Ġ, ĠPoint ( h oriz Offset Ġ* Ġ 2 . 5 f , Ġvert Offset Ġ* Ġ 2 . 5 f ) ĊĠĠĠĠĠĠĠ Ġ, ĠPoint ( h oriz Offset Ġ* Ġ 8 . 5 f , Ġvert Offset Ġ* Ġ 2 . 5 f ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġmesh Height Ġ= Ġ 6 ĊĊĠĠĠ Ġval Ġfirst Mesh Ġ= ĠLeaf ( top Height Ġ= Ġmesh Height , Ġposition Ġ= Ġlocations [ 0 ], Ġtop Angle Ġ= Ġ 9 0 f Ġ). node Mesh () ĊĠĠĠ Ġval Ġsecond Mesh Ġ= ĠL ace ( top Height Ġ= Ġmesh Height , Ġposition Ġ= Ġlocations [ 0 ], Ġtop Angle Ġ= Ġ 2 0 0 f Ġ). node Mesh () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL ace ( top Height Ġ= Ġmesh Height , Ġposition Ġ= Ġlocations [ 0 ], Ġtop Angle Ġ= Ġ 2 1 0 f Ġ). node Mesh () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL ace ( top Height Ġ= Ġmesh Height , Ġposition Ġ= Ġlocations [ 0 ], Ġtop Angle Ġ= Ġ 2 2 0 f Ġ). node Mesh () ĊĠĠĠ Ġval Ġthird Mesh Ġ= ĠArray L attice ( top Height Ġ= Ġmesh Height , Ġposition Ġ= Ġlocations [ 0 ], Ġtop Angle Ġ= Ġ 3 3 0 f Ġ). node Mesh () ĊĊĠĠĠ Ġval Ġnode Mes hes Ġ: ĠMap < String , ĠNode Mesh > Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġ" original " Ġto Ġ( first Mesh Ġ+ Ġsecond Mesh Ġ+ Ġthird Mesh ) ĊĠĠĠĠĠĠĠ Ġ, Ġ" cons Ġ+ Ġlink " Ġto Ġ( first Mesh Ġ+ Ġsecond Mesh Ġ+ Ġthird Mesh ). apply Ġ{ Ġcon solid ate Near Nodes () Ġ}. apply Ġ{ Ġlink Near Nodes () Ġ} ĊĠĠĠĠĠĠĠ Ġ, Ġ" cons Ġ+ Ġlink Ġ+ Ġnod " Ġto Ġ( first Mesh Ġ+ Ġsecond Mesh Ġ+ Ġthird Mesh ). apply Ġ{ Ġcon solid ate Near Nodes () Ġ}. apply Ġ{ Ġlink Near Nodes () Ġ}. apply Ġ{ Ġnod ify Intersect s () Ġ} ĊĠĠĠĠĠĠĠ Ġ, Ġ" cons Ġ+ Ġlink Ġ+ Ġnod Ġ+ Ġcons " Ġto Ġ( first Mesh Ġ+ Ġsecond Mesh Ġ+ Ġthird Mesh ). apply Ġ{ Ġcon solid ate Near Nodes () Ġ}. apply Ġ{ Ġlink Near Nodes () Ġ}. apply Ġ{ Ġnod ify Intersect s () Ġ}. apply Ġ{ Ġcon solid ate Near Nodes () Ġ} ĊĠĠĠĠĠĠĠ Ġ, Ġ" cons Ġ+ Ġlink Ġ+ Ġnod Ġ+ Ġcons Ġ+ Ġcons Link " Ġto Ġ( first Mesh Ġ+ Ġsecond Mesh Ġ+ Ġthird Mesh ). apply Ġ{ Ġcon solid ate Near Nodes () Ġ}. apply Ġ{ Ġlink Near Nodes () Ġ}. apply Ġ{ Ġnod ify Intersect s () Ġ}. apply Ġ{ Ġcon solid ate Near Nodes () Ġ}. apply Ġ{ Ġcon solid ate Node Links () Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġs dc Ġ= ĠShape Drawer Config ( batch ) ĊĠĠĠ Ġval Ġdrawer Ġ= Ġs dc . get Drawer () ĊĊĠĠĠ Ġoverride Ġfun Ġrender ( delta : ĠFloat ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġbatch . set Projection Matrix ( camera . combined ) ĊĠĠĠĠĠĠĠ Ġcamera . update () ĊĊĠĠĠĠĠĠĠ Ġbatch . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 .. 4 ). forEach Ġ{ Ġnode Mesh Idx Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont . draw Label ( it , Ġlocations [ node Mesh Idx Ġ+ Ġ 1 ] Ġ+ Ġlabel Offset Ġ* Ġ 2 , Ġ" Node Mes hes Ġ( height =$ mesh Height )\ n ${ node Mes hes . keys . toList ()[ node Mesh Idx ] }", ĠFore Colors [ node Mesh Idx Ġ% ĠFore Colors . size ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode Mes hes . values . toList ()[ node Mesh Idx ]. getLine List (). forEach Ġ{ Ġline Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( line Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer . line ( line . first Ġ+ Ġlocations [ node Mesh Idx Ġ+ Ġ 1 ], Ġline . second Ġ+ Ġlocations [ node Mesh Idx Ġ+ Ġ 1 ], ĠBack Colors [ node Mesh Idx Ġ% ĠBack Colors . size ], Ġ 2 F Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Handler . handle Input ( camera ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstage . isDebug All Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġstage . draw () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhide () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ( 0 .. 4 ). forEach Ġ{ Ġnode Mesh Idx Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode Mes hes . values . toList ()[ node Mesh Idx ]. nodes . forEach Indexed Ġ{ Ġindex , Ġlist Node Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnode Ġ= ĠActor () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode . name Ġ= Ġ"${ list Node . description }_${ node Mesh Idx }_${ list Node . uuid }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode . setPosition ( list Node . position . x Ġ+ Ġlocations [ node Mesh Idx Ġ+ Ġ 1 ]. x Ġ- Ġ 1 , Ġlist Node . position . y Ġ+ Ġlocations [ node Mesh Idx Ġ+ Ġ 1 ]. y Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode . setBounds ( node . x , Ġnode . y , Ġ 3 f , Ġ 3 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode . color Ġ= ĠFore Colors [ node Mesh Idx Ġ% ĠFore Colors . size ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// drawer . filled Circle ( list Node . position Ġ+ Ġlocations [ node Mesh Idx Ġ+ Ġ 1 ], Ġ 2 F , ĠFore Colors [ node Mesh Idx Ġ% ĠFore Colors . size ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode . onClick Ġ{ Ġprintln (" clicked Ġ${ node . name } Ġat Ġ(${ node . x }, ${ node . y }) ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . stage . add Actor ( node ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠG dx . input . input Processor Ġ= Ġthis . stage ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpause () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresume () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresize ( width : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcamera . viewport Width Ġ= Ġwidth . toFloat () ĊĠĠĠĠĠĠĠ Ġcamera . viewport Height Ġ= Ġheight . toFloat () ĊĠĠĠĠĠĠĠ Ġstage . viewport . update ( width , Ġheight , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġs dc . dispose Shape Drawer Config () ĊĠĠĠ Ġ} Ċ }