package Ġinfo . la ht . three kt . examples . java fx Ċ Ċ import Ġinfo . la ht . three kt . Side Ċ import Ġinfo . la ht . three kt . cam eras . Perspective Camera Ċ import Ġinfo . la ht . three kt . core . Clock Ċ import Ġinfo . la ht . three kt . ge ometries . Box Buffer Geometry Ċ import Ġinfo . la ht . three kt . ge ometries . Cy linder Buffer Geometry Ċ import Ġinfo . la ht . three kt . ge ometries . Plane Buffer Geometry Ċ import Ġinfo . la ht . three kt . ge ometries . Sphere Buffer Geometry Ċ import Ġinfo . la ht . three kt . materials . Mesh Basic Material Ċ import Ġinfo . la ht . three kt . math . Color Ċ import Ġinfo . la ht . three kt . math . DEG 2 RAD Ċ import Ġinfo . la ht . three kt . objects . Mesh Ċ import Ġinfo . la ht . three kt . render ers . GL Renderer Ċ import Ġinfo . la ht . three kt . scenes . Scene Ċ import Ġjavafx . application . Application Ċ import Ġjavafx . event . EventHandler Ċ import Ġjavafx . scene . control . Button Ċ import Ġjavafx . scene . control . CheckBox Ċ import Ġjavafx . scene . layout . Border Pane Ċ import Ġjavafx . scene . layout . H Box Ċ import Ġjavafx . scene . layout . V Box Ċ import Ġjavafx . stage . Stage Ċ import Ġorg . eclipse . fx . dr ift . D rift FX Surface Ċ import Ġkotlin . concurrent . thread Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ ĠApplication . launch ( Hello D rift FX :: class . java ) Ċ } Ċ Ċ class ĠHello D rift FX Ġ: ĠApplication () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġd rift Fx Surface 1 Ġ= ĠD rift FX Surface () ĊĠĠĠ Ġprivate Ġval Ġd rift Fx Surface Renderer 1 Ġ= ĠD rift Fx Surface Renderer ( dr ift Fx Surface 1 ) ĊĊĠĠĠ Ġprivate Ġval Ġd rift Fx Surface 2 Ġ= ĠD rift FX Surface () ĊĠĠĠ Ġprivate Ġval Ġd rift Fx Surface Renderer 2 Ġ= ĠD rift Fx Surface Renderer ( dr ift Fx Surface 2 ) ĊĊĠĠĠ Ġprivate Ġval Ġmesh 1 : ĠMesh ĊĠĠĠ Ġprivate Ġval Ġmesh 2 : ĠMesh ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġmesh 1 Ġ= ĠMesh ( Box Buffer Geometry ( 1 f ), ĠMesh Basic Material (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor . set ( 0 x 0 0 ff 0 0 ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġmesh 2 Ġ= ĠMesh ( Cy linder Buffer Geometry (), ĠMesh Basic Material (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor . set ( 0 x 0 0 0 0 ff ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart ( stage : ĠStage ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġborder Ġ= ĠBorder Pane () ĊĠĠĠĠĠĠĠ Ġstage . scene Ġ= Ġjavafx . scene . Scene ( border , Ġ 8 0 0 . 0 , Ġ 5 0 0 . 0 ) ĊĊĠĠĠĠĠĠĠ Ġval ĠcheckBox 1 Ġ= ĠCheckBox (" Show Ġcube ") ĊĠĠĠĠĠĠĠ ĠcheckBox 1 . on Action Ġ= ĠEventHandler Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmesh 1 . visible Ġ= Ġ( event . source Ġas ĠCheckBox ). isSelected ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠcheckBox 1 . isSelected Ġ= Ġmesh 1 . visible ĊĊĠĠĠĠĠĠĠ Ġval ĠcheckBox 2 Ġ= ĠCheckBox (" Show Ġcy linder ") ĊĠĠĠĠĠĠĠ ĠcheckBox 2 . on Action Ġ= ĠEventHandler Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmesh 2 . visible Ġ= Ġ( event . source Ġas ĠCheckBox ). isSelected ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠcheckBox 2 . isSelected Ġ= Ġmesh 1 . visible ĊĊĠĠĠĠĠĠĠ Ġval Ġbutton Ġ= ĠButton (" Open Ġnew Ġwindow ") ĊĠĠĠĠĠĠĠ Ġbutton . setOn Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen New Window () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġborder . left Ġ= ĠV Box ( checkBox 2 , ĠcheckBox 1 , Ġbutton ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpane 1 Ġ= ĠBorder Pane ( dr ift Fx Surface 1 ) ĊĠĠĠĠĠĠĠ Ġpane 1 . set Pref Size ( 3 0 0 . 0 , Ġ 3 0 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġpane 2 Ġ= ĠBorder Pane ( dr ift Fx Surface 2 ) ĊĠĠĠĠĠĠĠ Ġpane 2 . set Pref Size ( 3 0 0 . 0 , Ġ 3 0 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġborder . center Ġ= ĠH Box ( pane 1 , Ġpane 2 ) ĊĊĠĠĠĠĠĠĠ Ġstage . setOn Close Request Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd rift Fx Surface Renderer 1 . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd rift Fx Surface Renderer 2 . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstage . show () ĊĊĠĠĠĠĠĠĠ Ġ// Ġrender Ġmultiple Ġsurfaces Ġ:) ĊĊĠĠĠĠĠĠĠ Ġthread ( start Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd rift Fx Surface Renderer 1 . initialize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd rift Fx Surface Renderer 1 . enable Debug Callback () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender Three 1 () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthread ( start Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd rift Fx Surface Renderer 2 . initialize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender Three 2 () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender Three 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscene Ġ= ĠScene (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Background ( Color . alice blue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( mesh 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcamera Ġ= ĠPers pective Camera (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition . z Ġ= Ġ 1 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠMesh ( Plane Buffer Geometry ( 1 0 f ), ĠMesh Basic Material (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor . set ( Color . gray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġside Ġ= ĠSide . Double ĊĠĠĠĠĠĠĠ Ġ}). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . rotation . x Ġ= ĠDE G 2 RAD Ġ* Ġ- 9 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . translate Z (- 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscene . add ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrenderer Ġ= ĠGL Renderer ( dr ift Fx Surface 1 . width . toInt (), Ġd rift Fx Surface 1 . height . toInt ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġclock Ġ= ĠClock () ĊĠĠĠĠĠĠĠ Ġd rift Fx Surface Renderer 1 . animate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmesh 1 . rotation . y Ġ+= Ġ 1 f Ġ* Ġclock . get Delta () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrenderer . render ( scene , Ġcamera ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender Three 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscene Ġ= ĠScene (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Background ( Color . or anger ed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( mesh 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcamera Ġ= ĠPers pective Camera (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition . z Ġ= Ġ 1 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠMesh ( Plane Buffer Geometry ( 1 0 f ), ĠMesh Basic Material (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor . set ( Color . green ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġside Ġ= ĠSide . Double ĊĠĠĠĠĠĠĠ Ġ}). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . rotation . x Ġ= ĠDE G 2 RAD Ġ* Ġ- 9 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . translate Z (- 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscene . add ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrenderer Ġ= ĠGL Renderer ( dr ift Fx Surface 2 . width . toInt (), Ġd rift Fx Surface 2 . height . toInt ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġclock Ġ= ĠClock () ĊĊĠĠĠĠĠĠĠ Ġd rift Fx Surface Renderer 2 . onClose Callback Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrenderer . dispose () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġd rift Fx Surface Renderer 2 . animate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmesh 2 . rotation . x Ġ+= Ġ 1 f Ġ* Ġclock . get Delta () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrenderer . render ( scene , Ġcamera ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen New Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġd rift Fx Surface 3 Ġ= ĠD rift FX Surface () ĊĠĠĠĠĠĠĠ Ġval Ġd rift Fx Surface Renderer 3 Ġ= ĠD rift Fx Surface Renderer ( dr ift Fx Surface 3 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġstage Ġ= ĠStage () ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= ĠBorder Pane ( dr ift Fx Surface 3 ) ĊĠĠĠĠĠĠĠ Ġstage . scene Ġ= Ġjavafx . scene . Scene ( root , Ġ 4 0 0 . 0 , Ġ 3 0 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġstage . setOn Close Request Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd rift Fx Surface Renderer 3 . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġstage . show () ĊĊĠĠĠĠĠĠĠ Ġthread ( start Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd rift Fx Surface Renderer 3 . initialize () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscene Ġ= ĠScene (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Background ( Color . brown ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcamera Ġ= ĠPers pective Camera (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition . z Ġ= Ġ 1 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeometry Ġ= ĠSphere Buffer Geometry ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmaterial Ġ= ĠMesh Basic Material (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor . set ( 0 xff 0 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwire frame Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsphere Ġ= ĠMesh ( geometry , Ġmaterial ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscene . add ( sphere ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrenderer Ġ= ĠGL Renderer ( dr ift Fx Surface 3 . width . toInt (), Ġd rift Fx Surface 3 . height . toInt ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclock Ġ= ĠClock () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġd rift Fx Surface Renderer 3 . animate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsphere . rotation . y Ġ+= Ġ 0 . 5 f Ġ* Ġclock . get Delta () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrenderer . render ( scene , Ġcamera ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ