package Ġc ga . exercise . components . light Ċ Ċ import Ġc ga . exercise . components . geometry . Transform able Ċ import Ġc ga . exercise . components . shader . Shader Program Ċ import Ġorg . j om l . Matrix 4 f Ċ import Ġorg . j om l . Vector 3 f Ċ import Ġorg . j om l . Vector 3 i Ċ import Ġorg . j om l . Math . cos Ċ import Ġorg . j om l . Math . to Radians Ċ Ċ class ĠSpot Light ( position : ĠVector 3 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlight Col : ĠVector 3 i , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinner Con e : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġouter Con e : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ: ĠTransform able ?) Ġ: ĠI Spot Light , ĠPoint Light ( position Ġ= Ġposition , Ġlight Col Ġ= Ġlight Col , Ġparent Ġ= Ġparent ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġbind ( shader Program : ĠShader Program , Ġname : ĠString , Ġview Matrix : ĠMatrix 4 f ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . bind ( shader Program , Ġname ) ĊĠĠĠĠĠĠĠ Ġshader Program . set Uniform ("${ name } Direction ", Ġview Matrix . transform Direction ( get World Z Axis (). neg ate ())) Ġ// World ĠSpace ĠV ek tor Ġ-> ĠView ĠSpace ĠV ek tor ĊĠĠĠĠĠĠĠ Ġshader Program . set Uniform ("${ name } Inner Con e ", Ġcos ( to Radians ( inner Con e ))) ĊĠĠĠĠĠĠĠ Ġshader Program . set Uniform ("${ name } Outer Con e ", Ġcos ( to Radians ( outer Con e ))) ĊĠĠĠ Ġ} Ċ }