package Ġworld . ph ant asm al . web . core Ċ Ċ import Ġworld . ph ant asm al . web . external s . three .* Ċ import Ġkotlin . contracts . Experimental Contracts Ċ import Ġkotlin . contracts . contract Ċ Ċ private Ġval Ġtmp Sphere Ġ= ĠSphere () Ċ Ċ operator Ġfun ĠVector 3 . plus ( other : ĠVector 3 ): ĠVector 3 Ġ= ĊĠĠĠ Ġclone (). add ( other ) Ċ Ċ operator Ġfun ĠVector 3 . plus Assign ( other : ĠVector 3 ) Ġ{ ĊĠĠĠ Ġadd ( other ) Ċ } Ċ Ċ operator Ġfun ĠVector 3 . minus ( other : ĠVector 3 ): ĠVector 3 Ġ= ĊĠĠĠ Ġclone (). sub ( other ) Ċ Ċ operator Ġfun ĠVector 3 . minus Assign ( other : ĠVector 3 ) Ġ{ ĊĠĠĠ Ġsub ( other ) Ċ } Ċ Ċ operator Ġfun ĠVector 3 . times ( scalar : ĠDouble ): ĠVector 3 Ġ= ĊĠĠĠ Ġclone (). multiply Scalar ( scalar ) Ċ Ċ operator Ġfun ĠVector 3 . times Assign ( scalar : ĠDouble ) Ġ{ ĊĠĠĠ Ġmultiply Scalar ( scalar ) Ċ } Ċ Ċ infix Ġfun ĠVector 3 . dot ( other : ĠVector 3 ): ĠDouble Ġ= ĊĠĠĠ Ġdot ( other ) Ċ Ċ operator Ġfun ĠQuaternion . times Assign ( other : ĠQuaternion ) Ġ{ ĊĠĠĠ Ġmultiply ( other ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġan Ġ[ Euler ] Ġobject Ġfrom Ġa Ġ[ Quaternion ] Ġwith Ġthe Ġcorrect Ġrotation Ġorder . Ċ Ġ*/ Ċ fun ĠQuaternion . to Euler (): ĠE uler Ġ= ĊĠĠĠ ĠE uler (). set From Quaternion ( this , Ġ" Z XY ") Ċ Ċ /** Ċ Ġ* ĠCreates Ġan Ġ[ Euler ] Ġobject Ġwith Ġthe Ġcorrect Ġrotation Ġorder . Ċ Ġ*/ Ċ fun Ġe uler ( x : ĠFloat , Ġy : ĠFloat , Ġz : ĠFloat ): ĠE uler Ġ= ĊĠĠĠ Ġe uler ( x . toDouble (), Ġy . toDouble (), Ġz . toDouble ()) Ċ Ċ /** Ċ Ġ* ĠCreates Ġan Ġ[ Euler ] Ġobject Ġwith Ġthe Ġcorrect Ġrotation Ġorder . Ċ Ġ*/ Ċ fun Ġe uler ( x : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble ): ĠE uler Ġ= ĊĠĠĠ ĠE uler ( x , Ġy , Ġz , Ġ" Z XY ") Ċ Ċ /** Ċ Ġ* ĠCreates Ġan Ġ[ Euler ] Ġobject Ġfrom Ġa Ġ[ Quaternion ] Ġwith Ġthe Ġcorrect Ġrotation Ġorder . Ċ Ġ*/ Ċ fun ĠE uler . to Quaternion (): ĠQuaternion Ġ= ĊĠĠĠ ĠQuaternion (). set From Euler ( this ) Ċ Ċ @ Opt In ( Experimental Contracts :: class ) Ċ inline Ġfun ĠObject 3 D . is Mesh (): ĠBoolean Ġ{ ĊĠĠĠ Ġcontract Ġ{ ĊĠĠĠĠĠĠĠ Ġreturns ( true ) Ġimplies Ġ( this @ is Mesh Ġis ĠMesh ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġunsafe Cast < Mesh >(). is Mesh Ċ } Ċ Ċ @ Opt In ( Experimental Contracts :: class ) Ċ inline Ġfun ĠObject 3 D . is Skin ned Mesh (): ĠBoolean Ġ{ ĊĠĠĠ Ġcontract Ġ{ ĊĠĠĠĠĠĠĠ Ġreturns ( true ) Ġimplies Ġ( this @ is Skin ned Mesh Ġis ĠSk in ned Mesh ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġunsafe Cast < Skin ned Mesh >(). is Skin ned Mesh Ċ } Ċ Ċ fun Ġbounding Sphere ( object 3 d : ĠObject 3 D , Ġb Sphere : ĠSphere Ġ= ĠSphere ()): ĠSphere Ġ{ ĊĠĠĠ Ġif Ġ( object 3 d . is Mesh ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠDon 't Ġuse Ġreference Ġto Ġunion Ġmethod Ġto Ġimprove Ġperformance Ġof Ġemitted ĠJS . ĊĠĠĠĠĠĠĠ Ġobject 3 d . geometry . bounding Sphere ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Sphere . copy ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Sphere . apply Matrix 4 ( object 3 d . matrix World ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Sphere . union ( tmp Sphere ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobject 3 d . children . forEach Ġ{ Ġbounding Sphere ( it , Ġb Sphere ) Ġ} ĊĊĠĠĠ Ġreturn Ġb Sphere Ċ } Ċ