package Ġworld . ph ant asm al . web . quest Editor . rendering Ċ Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Job Ċ import Ġkotlinx . coroutines . launch Ċ import Ġworld . ph ant asm al . core . dis posable . Disposable Ċ import Ġworld . ph ant asm al . core . dis posable . Disposable Super vised Scope Ċ import Ġworld . ph ant asm al . observable . cell . list . List Cell Ċ import Ġworld . ph ant asm al . observable . cell . list . List Change Ċ import Ġworld . ph ant asm al . observable . cell . list . List ChangeEvent Ċ import Ġworld . ph ant asm al . ps ol ib . Episode Ċ import Ġworld . ph ant asm al . web . quest Editor . loading . Area Asset Loader Ċ import Ġworld . ph ant asm al . web . quest Editor . loading . Entity Asset Loader Ċ import Ġworld . ph ant asm al . web . quest Editor . models . Area Variant Model Ċ import Ġworld . ph ant asm al . web . quest Editor . models . Quest Npc Model Ċ import Ġworld . ph ant asm al . web . quest Editor . models . Quest Object Model Ċ import Ġworld . ph ant asm al . web . quest Editor . stores . Quest Editor Store Ċ import Ġworld . ph ant asm al . we bui . Disposable Container Ċ Ċ /** Ċ Ġ* ĠLoads Ġthe Ġnecessary Ġarea Ġand Ġentity Ġ 3 D Ġmodels Ġinto Ġ[ Quest Renderer ]. Ċ Ġ*/ Ċ abstract Ġclass ĠQuest Mesh Manager Ġprotected Ġconstructor ( ĊĠĠĠ Ġarea Asset Loader : ĠArea Asset Loader , ĊĠĠĠ Ġentity Asset Loader : ĠEntity Asset Loader , ĊĠĠĠ Ġquest Editor Store : ĠQuest Editor Store , ĊĠĠĠ Ġrender Context : ĠQuest Render Context , Ċ ) Ġ: ĠDis posable Container () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġscope Ġ= Ġadd Disposable ( Disposable Super vised Scope ( this :: class , ĠDispatch ers . Default )) ĊĠĠĠ Ġprivate Ġval Ġarea Mesh Manager Ġ= ĠArea Mesh Manager ( render Context , Ġarea Asset Loader ) ĊĠĠĠ Ġprivate Ġval Ġnpc Mesh Manager Ġ= Ġadd Disposable ( ĊĠĠĠĠĠĠĠ ĠEntity Mesh Manager ( quest Editor Store , Ġrender Context , Ġentity Asset Loader ) ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval Ġobject Mesh Manager Ġ= Ġadd Disposable ( ĊĠĠĠĠĠĠĠ ĠEntity Mesh Manager ( quest Editor Store , Ġrender Context , Ġentity Asset Loader ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġvar Ġarea Load Job : ĠJob ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġnpc Load Job : ĠJob ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġobject Load Job : ĠJob ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġnpc Observer : ĠDis posable ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġobject Observer : ĠDis posable ? Ġ= Ġnull ĊĊĠĠĠ Ġprotected Ġfun Ġload Area Mes hes ( episode : ĠEp isode ?, Ġarea Variant : ĠArea Variant Model ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġarea Load Job ?. cancel () ĊĠĠĠĠĠĠĠ Ġarea Load Job Ġ= Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarea Mesh Manager . load ( episode , Ġarea Variant ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġload Npc Mes hes ( np cs : ĠList Cell < Quest Npc Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġnpc Load Job ?. cancel () ĊĠĠĠĠĠĠĠ Ġnpc Load Job Ġ= Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnpc Observer ?. dispose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnpc Mesh Manager . removeAll () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnp cs . value . forEach ( npc Mesh Manager :: add ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnpc Observer Ġ= Ġnp cs . observe List Change (:: np cs Changed ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġload Object Mes hes ( objects : ĠList Cell < Quest Object Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġobject Load Job ?. cancel () ĊĠĠĠĠĠĠĠ Ġobject Load Job Ġ= Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Observer ?. dispose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Mesh Manager . removeAll () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġobjects . value . forEach ( object Mesh Manager :: add ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Observer Ġ= Ġobjects . observe List Change (:: objects Changed ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnp cs Changed ( event : ĠList ChangeEvent < Quest Npc Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( change Ġin Ġevent . changes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( change Ġis ĠList Change . Structural ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange . removed . forEach ( npc Mesh Manager :: remove ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange . inserted . forEach ( npc Mesh Manager :: add ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobjects Changed ( event : ĠList ChangeEvent < Quest Object Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( change Ġin Ġevent . changes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( change Ġis ĠList Change . Structural ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange . removed . forEach ( object Mesh Manager :: remove ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange . inserted . forEach ( object Mesh Manager :: add ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ