/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠAnt on ĠTr ush kov Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . ks df v . the le ma . shader . node Ċ Ċ import Ġorg . ks df v . the le ma . json . I JsonObject Ċ Ċ /** Ċ Ġ* Ġ@ param Ġtype Ġuse Ġ[ GLSL Type ] Ċ Ġ* Ġ@ author Ġz eg an styl Ġ*/ Ċ class ĠAttribute Node ( ĊĠĠĠ Ġattribute Name : ĠString Ġ= Ġ"", ĊĠĠĠ Ġtype : ĠInt Ġ= ĠGL SL Type . Float Ċ ): ĠShader Node () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" Attribute " ĊĊĠĠĠ Ġoverride Ġval Ġclass Id : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠClass Id ĊĊĠĠĠ Ġoverride Ġval Ġinput Form : ĠMap < String , ĠInt > ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠInput Form ĊĊĠĠĠ Ġvar Ġtype : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis . value . type ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . value . type Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġattribute Name : ĠString Ġ= Ġattribute Name ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . value . name Ġ= Ġ" v $ value " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġvalue Ġ= ĠGL SL Value (" a Value ", Ġtype ). apply Ġ{ Ġdef Out ( this ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġread ( json : ĠI JsonObject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . read ( json ) ĊĊĠĠĠĠĠĠĠ Ġattribute Name Ġ= Ġjson . string (" attribute Name ", Ġ"") ĊĠĠĠĠĠĠĠ Ġtype Ġ= ĠGL SL Type . getType ByName ( json . string (" type ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwrite ( json : ĠI JsonObject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . write ( json ) ĊĊĠĠĠĠĠĠĠ Ġjson [" attribute Name "] Ġ= Ġattribute Name ĊĠĠĠĠĠĠĠ Ġjson [" type "] Ġ= ĠGL SL Type . getType Name ( type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdeclaration Vert ( out : ĠStringBuilder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . declaration Vert ( out ) ĊĠĠĠĠĠĠĠ Ġout . append (" attribute Ġ${ value . type Str } Ġ$ attribute Name ;\ n ") ĊĠĠĠĠĠĠĠ Ġout . append (" varying Ġ${ value . typed Ref }; \ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdeclaration Frag ( out : ĠStringBuilder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . declaration Frag ( out ) ĊĠĠĠĠĠĠĠ Ġout . append (" varying Ġ${ value . typed Ref }; \ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġexecution Vert ( out : ĠStringBuilder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . execution Vert ( out ) ĊĠĠĠĠĠĠĠ Ġout . append ("${ value . ref } Ġ= Ġ$ attribute Name ;\ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠClass Id Ġ= Ġ" attribute " ĊĊĠĠĠĠĠĠĠ Ġval ĠInput Form Ġ= ĠHashMap < String , ĠInt >() ĊĠĠĠ Ġ} Ċ }