package Ġdev . the code war ri or . hook ed . client . gl itter Ċ Ċ import Ġcom . team wizard ry . libr arian lib . gl itter . Read Particle Binding Ċ import Ġcom . team wizard ry . libr arian lib . gl itter . bindings . Abstract Time Binding Ċ import Ġcom . team wizard ry . libr arian lib . math . E asing Ċ import Ġkotlin . math . cos Ċ import Ġkotlin . math . sin Ċ Ċ class ĠRotation Binding ( ĊĠĠĠ Ġlifetime : ĠRead Particle Binding , ĊĠĠĠ Ġage : ĠRead Particle Binding , ĊĠĠĠ Ġtime scale : ĠRead Particle Binding ? Ġ= Ġnull , ĊĠĠĠ Ġoffset : ĠRead Particle Binding ? Ġ= Ġnull , ĊĠĠĠ Ġeasing : ĠE asing , ĊĠĠĠ Ġval Ġinput Vector : ĠRead Particle Binding , ĊĠĠĠ Ġval Ġrotation Axis : ĠRead Particle Binding , ĊĠĠĠ Ġval Ġangle Start : ĠRead Particle Binding , ĊĠĠĠ Ġval Ġangle End : ĠRead Particle Binding Ċ ): ĠAbstract Time Binding ( lifetime , Ġage , Ġtime scale , Ġoffset , Ġeasing ) Ġ{ ĊĠĠĠ Ġoverride Ġval Ġcontents : ĠDouble Array Ġ= ĠDouble Array ( 3 ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinput Vector . require ( 3 ) ĊĠĠĠĠĠĠĠ Ġrotation Axis . require ( 3 ) ĊĠĠĠĠĠĠĠ Ġangle Start . require ( 1 ) ĊĠĠĠĠĠĠĠ Ġangle End . require ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload ( particle : ĠDouble Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . load ( particle ) ĊĠĠĠĠĠĠĠ Ġinput Vector . load ( particle ) ĊĠĠĠĠĠĠĠ Ġval Ġinput X Ġ= Ġinput Vector . contents [ 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġinput Y Ġ= Ġinput Vector . contents [ 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġinput Z Ġ= Ġinput Vector . contents [ 2 ] ĊĠĠĠĠĠĠĠ Ġrotation Axis . load ( particle ) ĊĠĠĠĠĠĠĠ Ġval Ġaxis X Ġ= Ġrotation Axis . contents [ 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġaxis Y Ġ= Ġrotation Axis . contents [ 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġaxis Z Ġ= Ġrotation Axis . contents [ 2 ] ĊĠĠĠĠĠĠĠ Ġangle Start . load ( particle ) ĊĠĠĠĠĠĠĠ Ġval Ġangle Start Ġ= Ġangle Start . contents [ 0 ] ĊĠĠĠĠĠĠĠ Ġangle End . load ( particle ) ĊĠĠĠĠĠĠĠ Ġval Ġangle End Ġ= Ġangle End . contents [ 0 ] ĊĊĠĠĠĠĠĠĠ Ġval Ġangle Ġ= Ġangle Start Ġ+ Ġ( angle End Ġ- Ġangle Start ) Ġ* Ġeasing . ease ( time . toFloat ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġrotation Ġaround Ġan Ġaxis : ĊĠĠĠĠĠĠĠ Ġ// Ġout Ġ= Ġaxis Ġ* Ġ( axis Ġdot Ġinput ) Ġ+ Ġcos ( angle )( axis Ġcross Ġinput ) Ġcross Ġaxis Ġ+ Ġsin ( angle )( axis Ġcross Ġinput ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġcross Ġproduct Ġformula Ġreference : Ġc Ġ= Ġa Ġx Ġb ĊĠĠĠĠĠĠĠ Ġ// Ġc X Ġ= Ġa Y Ġ* Ġb Z Ġ- Ġa Z Ġ* Ġb Y ĊĠĠĠĠĠĠĠ Ġ// Ġc Y Ġ= Ġa Z Ġ* Ġb X Ġ- Ġa X Ġ* Ġb Z ĊĠĠĠĠĠĠĠ Ġ// Ġc Z Ġ= Ġa X Ġ* Ġb Y Ġ- Ġa Y Ġ* Ġb X ĊĊĠĠĠĠĠĠĠ Ġval Ġaxis Dot Input Ġ= Ġaxis X Ġ* Ġinput X Ġ+ Ġaxis Y Ġ* Ġinput Y Ġ+ Ġaxis Z Ġ* Ġinput Z ĊĊĠĠĠĠĠĠĠ Ġval Ġaxis Cross Input X Ġ= Ġaxis Y Ġ* Ġinput Z Ġ- Ġaxis Z Ġ* Ġinput Y ĊĠĠĠĠĠĠĠ Ġval Ġaxis Cross Input Y Ġ= Ġaxis Z Ġ* Ġinput X Ġ- Ġaxis X Ġ* Ġinput Z ĊĠĠĠĠĠĠĠ Ġval Ġaxis Cross Input Z Ġ= Ġaxis X Ġ* Ġinput Y Ġ- Ġaxis Y Ġ* Ġinput X ĊĊĠĠĠĠĠĠĠ Ġval Ġaxis Cross Input Cross Axis X Ġ= Ġaxis Cross Input Y Ġ* Ġaxis Z Ġ- Ġaxis Cross Input Z Ġ* Ġaxis Y ĊĠĠĠĠĠĠĠ Ġval Ġaxis Cross Input Cross Axis Y Ġ= Ġaxis Cross Input Z Ġ* Ġaxis X Ġ- Ġaxis Cross Input X Ġ* Ġaxis Z ĊĠĠĠĠĠĠĠ Ġval Ġaxis Cross Input Cross Axis Z Ġ= Ġaxis Cross Input X Ġ* Ġaxis Y Ġ- Ġaxis Cross Input Y Ġ* Ġaxis X ĊĊĠĠĠĠĠĠĠ Ġval Ġsin Ġ= Ġsin ( angle ) ĊĠĠĠĠĠĠĠ Ġval Ġcos Ġ= Ġcos ( angle ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtransformed X Ġ= Ġaxis X Ġ* Ġaxis Dot Input Ġ+ Ġcos Ġ* Ġaxis Cross Input Cross Axis X Ġ+ Ġsin Ġ* Ġaxis Cross Input X ĊĠĠĠĠĠĠĠ Ġval Ġtransformed Y Ġ= Ġaxis Y Ġ* Ġaxis Dot Input Ġ+ Ġcos Ġ* Ġaxis Cross Input Cross Axis Y Ġ+ Ġsin Ġ* Ġaxis Cross Input Y ĊĠĠĠĠĠĠĠ Ġval Ġtransformed Z Ġ= Ġaxis Z Ġ* Ġaxis Dot Input Ġ+ Ġcos Ġ* Ġaxis Cross Input Cross Axis Z Ġ+ Ġsin Ġ* Ġaxis Cross Input Z ĊĊĠĠĠĠĠĠĠ Ġcontents [ 0 ] Ġ= Ġtransformed X ĊĠĠĠĠĠĠĠ Ġcontents [ 1 ] Ġ= Ġtransformed Y ĊĠĠĠĠĠĠĠ Ġcontents [ 2 ] Ġ= Ġtransformed Z ĊĠĠĠ Ġ} Ċ }