package Ġcom . cout 9 7 0 . gl utilities . shader Ċ Ċ import Ġjava . io . InputStream Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġcout 9 7 0 Ġon Ġ 3 1 / 0 7 / 2 0 1 6 . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠThis Ġobject Ġallow Ġthe Ġuser Ġto Ġhave Ċ Ġ* Ġ Ġ# include Ġ" file . glsl " Ċ Ġ* Ġin Ġa Ġshader Ġprogram Ċ Ġ*/ Ċ object ĠShader Pre processor Ġ{ ĊĊĠĠĠ Ġval ĠINCLUDE _ PREFIX Ġ= Ġ"# include Ġ\"" ĊĠĠĠ Ġval ĠINCLUDE _ SUFFIX Ġ= Ġ"\"" ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoads Ġa Ġshader Ġfrom Ġa Ġresource ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġload Shader ( resource : ĠInputStream , Ġdependency Resolver : Ġ( String ) Ġ-> ĠInputStream ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Lines ( resource , Ġdependency Resolver ). join ToString ("\ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġall Ġthe Ġlines Ġof Ġthe Ġshader ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Lines ( stream : ĠInputStream , Ġdependency Resolver : Ġ( String ) Ġ-> ĠInputStream ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlines Ġ= Ġmutable ListOf < String >() ĊĊĠĠĠĠĠĠĠ Ġstream . reader (). forEach Line Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . startsWith ( INCLUDE _ PREFIX ) Ġ&& Ġit . endsWith ( INCLUDE _ SUFFIX )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġit . substring ( INCLUDE _ PREFIX . length , Ġit . length Ġ- ĠINCLUDE _ SUFFIX . length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġget Lines ( dependency Resolver ( name ), Ġdependency Resolver ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlines . addAll ( code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlines . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlines ĊĠĠĠ Ġ} Ċ }