package Ġminus kel vin . game lib . math . vector Ċ Ċ import Ġminus kel vin . game lib . math . lerp Ċ import Ġkotlin . math . sqrt Ċ Ċ data Ġclass ĠVector 4 i ( val Ġx : ĠInt , Ġval Ġy : ĠInt , Ġval Ġz : ĠInt , Ġval Ġw : ĠInt ) Ġ{ ĊĠĠĠ Ġconstructor ( xy : ĠVector 2 i , Ġz : ĠInt , Ġw : ĠInt ): Ġthis ( xy . x , Ġxy . y , Ġz , Ġw ) ĊĠĠĠ Ġconstructor ( x : ĠInt , Ġy z : ĠVector 2 i , Ġw : ĠInt ): Ġthis ( x , Ġy z . x , Ġy z . y , Ġw ) ĊĠĠĠ Ġconstructor ( x : ĠInt , Ġy : ĠInt , Ġz w : ĠVector 2 i ): Ġthis ( x , Ġy , Ġz w . x , Ġz w . y ) ĊĠĠĠĠĊĠĠĠ Ġconstructor ( xy : ĠVector 2 i , Ġz w : ĠVector 2 i ): Ġthis ( xy . x , Ġxy . y , Ġz w . x , Ġz w . y ) ĊĠĠĠĠĊĠĠĠ Ġconstructor ( xyz : ĠVector 3 i , Ġw : ĠInt ): Ġthis ( xyz . x , Ġxyz . y , Ġxyz . z , Ġw ) ĊĠĠĠ Ġconstructor ( x : ĠInt , Ġy zw : ĠVector 3 i ): Ġthis ( x , Ġy zw . x , Ġy zw . y , Ġy zw . z ) ĊĠĠĠĠĊĠĠĠ Ġoperator Ġfun Ġplus ( rhs : ĠVector 4 i ) Ġ= ĠVector 4 i ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġthis . x Ġ+ Ġrhs . x , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġthis . y Ġ+ Ġrhs . y , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz Ġ= Ġthis . z Ġ+ Ġrhs . z , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw Ġ= Ġthis . w Ġ+ Ġrhs . w ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoperator Ġfun Ġminus ( rhs : ĠVector 4 i ) Ġ= ĠVector 4 i ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġthis . x Ġ- Ġrhs . x , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġthis . y Ġ- Ġrhs . y , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz Ġ= Ġthis . z Ġ- Ġrhs . z , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw Ġ= Ġthis . w Ġ- Ġrhs . w ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoperator Ġfun Ġtimes ( rhs : ĠVector 4 i ) Ġ= ĠVector 4 i ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġthis . x Ġ* Ġrhs . x , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġthis . y Ġ* Ġrhs . y , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz Ġ= Ġthis . z Ġ* Ġrhs . z , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw Ġ= Ġthis . w Ġ* Ġrhs . w ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoperator Ġfun Ġdiv ( rhs : ĠVector 4 i ) Ġ= ĠVector 4 i ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġthis . x Ġ/ Ġrhs . x , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġthis . y Ġ/ Ġrhs . y , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz Ġ= Ġthis . z Ġ/ Ġrhs . z , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw Ġ= Ġthis . w Ġ/ Ġrhs . w ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoperator Ġfun Ġtimes ( rhs : ĠInt ) Ġ= ĠVector 4 i ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġthis . x Ġ* Ġrhs , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġthis . y Ġ* Ġrhs , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz Ġ= Ġthis . z Ġ* Ġrhs , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw Ġ= Ġthis . w Ġ* Ġrhs ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoperator Ġfun Ġdiv ( rhs : ĠInt ) Ġ= ĠVector 4 i ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġthis . x Ġ/ Ġrhs , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġthis . y Ġ/ Ġrhs , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz Ġ= Ġthis . z Ġ/ Ġrhs , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw Ġ= Ġthis . w Ġ/ Ġrhs ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoperator Ġfun Ġunary Minus () Ġ= ĠVector 4 i (- x , Ġ- y , Ġ- z , Ġ- w ) ĊĊĠĠĠ Ġin fix Ġfun Ġdot ( rhs : ĠVector 4 i ) Ġ= Ġthis . x Ġ* Ġrhs . x Ġ+ Ġthis . y Ġ* Ġrhs . y Ġ+ Ġthis . z Ġ* Ġrhs . z Ġ+ Ġthis . w Ġ* Ġrhs . w ĊĊĠĠĠ Ġfun Ġl erp ( to : ĠVector 4 i , Ġalpha : ĠDouble ) Ġ= ĠVector 4 i ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġx . lerp ( to . x , Ġalpha ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġy . lerp ( to . y , Ġalpha ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz Ġ= Ġz . lerp ( to . z , Ġalpha ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw Ġ= Ġw . lerp ( to . w , Ġalpha ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġto Double () Ġ= ĠVector 4 d ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġx . toDouble (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġy . toDouble (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz Ġ= Ġz . toDouble (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw Ġ= Ġw . toDouble () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġto Float () Ġ= ĠVector 4 f ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġx . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġy . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz Ġ= Ġz . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw Ġ= Ġw . toFloat () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġlength Sq Ġget () Ġ= Ġthis Ġdot Ġthis ĊĠĠĠ Ġval Ġlength Ġget () Ġ= Ġsqrt ( length Sq . toDouble ()) Ċ } Ċ Ċ operator Ġfun ĠInt . times ( rhs : ĠVector 4 i ) Ġ= ĠVector 4 i ( ĊĠĠĠĠĠĠĠ Ġx Ġ= Ġthis Ġ* Ġrhs . x , ĊĠĠĠĠĠĠĠ Ġy Ġ= Ġthis Ġ* Ġrhs . y , ĊĠĠĠĠĠĠĠ Ġz Ġ= Ġthis Ġ* Ġrhs . z , ĊĠĠĠĠĠĠĠ Ġw Ġ= Ġthis Ġ* Ġrhs . w Ċ )