package Ġapp . the le ma . studio ; Ċ Ċ import Ġapp . the le ma . ecs .* Ċ import Ġapp . the le ma . g 3 d . IT rans form Node Ċ import Ġapp . the le ma . g 3 d . light . Direction al Light Ċ import Ġapp . the le ma . g 3 d . mesh . Mesh Visualizer Ċ import Ġapp . the le ma . gl . GL Ċ import Ġapp . the le ma . gl . IM esh Ċ import Ġapp . the le ma . phys . I Box Shape Ċ import Ġapp . the le ma . phys . IS phere Shape Ċ import Ġapp . the le ma . ui . Head Up Display Ċ import Ġapp . the le ma . utils . iterate Ċ Ċ class ĠStudio Component System ( val Ġh ud : ĠHead Up Display ): ĠI Component System Ġ{ ĊĠĠĠ Ġval Ġshape Render Tool Ġ= ĠShape Render Tool () ĊĊĠĠĠ Ġval Ġbox Shapes Ġ= ĠArrayList < I Box Shape >() ĊĠĠĠ Ġval Ġsphere Shapes Ġ= ĠArrayList < IS phere Shape >() ĊĠĠĠ Ġval Ġdirection al Lights Ġ= ĠArrayList < Direction al Light >() ĊĊĠĠĠ Ġval Ġentity Listener Ġ= Ġobject Ġ: ĠEntity Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadded Component To Branch ( component : ĠI Entity Component ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( component Ġis ĠI Box Shape ) Ġbox Shapes . add ( component ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( component Ġis ĠIS phere Shape ) Ġsphere Shapes . add ( component ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( component Ġis ĠDirection al Light ) Ġdirection al Lights . add ( component ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġremoved Component From Branch ( component : ĠI Entity Component ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( component Ġis ĠI Box Shape ) Ġbox Shapes . remove ( component ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( component Ġis ĠIS phere Shape ) Ġsphere Shapes . remove ( component ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( component Ġis ĠDirection al Light ) Ġdirection al Lights . remove ( component ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( delta : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġh ud . update ( delta ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġbasis Ġ= ĠTransform Basis View () ĊĊĠĠĠ Ġoverride Ġfun Ġrender ( shader Channel : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠGL . gl Clear Color ( 0 f , Ġ 0 f , Ġ 0 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠ ĠGL . gl Viewport ( 0 , Ġ 0 , Ġh ud . width . toInt (), Ġh ud . height . toInt ()) ĊĊĠĠĠĠĠĠĠ Ġshape Render Tool . color . setColor ( 0 x 0 0 8 0 0 0 FF ) ĊĠĠĠĠĠĠĠ Ġbox Shapes . iterate Ġ{ Ġshape Render Tool . render Box ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġsphere Shapes . iterate Ġ{ Ġshape Render Tool . render Sphere ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġmesh Visual izers . iterate Ġ{ Ġit . render () Ġ} ĊĊĠĠĠĠĠĠĠ ĠStudio . tabs Pane . active Tab ?. scene ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( translation G izmo . isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslation G izmo . render () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection . iterate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatrix Ġ= Ġit . component OrNull < IT rans form Node >() ?. world Matrix ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġit . component OrNull < IM esh >() ?. world Matrix ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatrix ?. also Ġ{ Ġbasis . render ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠSelection 3 D . prepare Selection () ĊĠĠĠĠĠĠĠ ĠSelection 3 D . render () ĊĊĠĠĠĠĠĠĠ Ġh ud . render () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadded Scene ( entity : ĠI Entity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġentity . forEach Component In Branch Ġ{ Ġentity Listener . added Component To Branch ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġentity . add Entity Listener ( entity Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremoved Scene ( entity : ĠI Entity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġentity . forEach Component In Branch Ġ{ Ġentity Listener . removed Component From Branch ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġentity . remove Entity Listener ( entity Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmesh Visual izers Ġ= ĠArrayList < Mesh Visualizer >() ĊĠĠĠ Ġ} Ċ }