package Ġapp . the le ma . studio . component Ċ Ċ import Ġapp . the le ma . ecs . IEntity Component Ċ Ċ object ĠComponent Panel Provider Ġ{ ĊĠĠĠ Ġval Ġproviders Ġ= ĠHashMap < String , Ġ() Ġ-> ĠComponent Panel < IEntity Component >>() ĊĊĠĠĠ Ġval Ġcomponent Panels Cache Ġ= ĠHashMap < String , ĠComponent Panel < IEntity Component >>() ĊĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Provider Ġ{ ĠTransform Node Panel () Ġ} ĊĠĠĠĠĠĠĠ Ġadd Provider Ġ{ ĠProject Panel () Ġ} ĊĠĠĠĠĠĠĠ Ġadd Provider Ġ{ ĠLoader Panel () Ġ} ĊĠĠĠĠĠĠĠ Ġadd Provider Ġ{ ĠEntity Loader Panel () Ġ} ĊĠĠĠĠĠĠĠ Ġadd Provider Ġ{ ĠScene Panel () Ġ} ĊĠĠĠĠĠĠĠ Ġadd Provider Ġ{ ĠShader Panel () Ġ} ĊĠĠĠĠĠĠĠ Ġadd Provider Ġ{ ĠTexture 2 D Panel () Ġ} ĊĠĠĠĠĠĠĠ Ġadd Provider Ġ{ ĠMaterial Panel () Ġ} ĊĠĠĠĠĠĠĠ Ġadd Provider Ġ{ ĠMesh Instance Panel () Ġ} ĊĠĠĠĠĠĠĠ Ġadd Provider Ġ{ ĠAnimation Player Panel () Ġ} ĊĠĠĠĠĠĠĠ Ġadd Provider Ġ{ ĠArm ature Panel () Ġ} ĊĠĠĠĠĠĠĠ Ġadd Provider Ġ{ ĠSound Loader Panel () Ġ} ĊĠĠĠĠĠĠĠ Ġadd Provider Ġ{ ĠSound Panel () Ġ} ĊĠĠĠĠĠĠĠ Ġadd Provider Ġ{ ĠGL TF Panel () Ġ} ĊĠĠĠĠĠĠĠ Ġadd Provider Ġ{ ĠOr bit Camera Control Panel () Ġ} ĊĠĠĠĠĠĠĠ Ġadd Provider (" Kotlin Script ") Ġ{ ĠKotlin Script Panel () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget OrCreate Panel ( component Name : ĠString ): ĠComponent Panel < IEntity Component > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġpanel Ġ= Ġcomponent Panels Cache [ component Name ] ĊĠĠĠĠĠĠĠ Ġif Ġ( panel Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpanel Ġ= Ġproviders [ component Name ]?. invoke () Ġ?: ĠComponent Panel ( component Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomponent Panels Cache [ component Name ] Ġ= Ġpanel ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpanel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget OrCreate Panel ( component : ĠI Entity Component ): ĠComponent Panel < IEntity Component > Ġ= ĊĠĠĠĠĠĠĠ Ġget OrCreate Panel ( component . component Name ). also Ġ{ Ġit . component Ġ= Ġcomponent Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT : ĠI Entity Component > Ġadd Provider ( no inline Ġcreate : Ġ() Ġ-> ĠComponent Panel < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġproviders [ Component Panel . component Name < T >() ] Ġ= Ġcreate Ġas Ġ() Ġ-> ĠComponent Panel < IEntity Component > ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T : ĠI Entity Component > Ġadd Provider ( component Name : ĠString , Ġcreate : Ġ() Ġ-> ĠComponent Panel < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġproviders [ component Name ] Ġ= Ġcreate Ġas Ġ() Ġ-> ĠComponent Panel < IEntity Component > ĊĠĠĠ Ġ} Ċ } Ċ