/* Object variables:
* handedness
* anim_cast_t
* anim_cast_scale
* charge_level
* pitch
* direction
*/
var offset_angle=ternary(handedness==Misc.right, 30, -30);
var offset_z=44;
var offset_distance=24;
var _xrot=0;
var _yrot=10+anim_cast_scale*dsin(anim_cast_t)-anim_cast_scale*min(5, sqrt(charge_level));
var _zrot=180+direction;
var _xoffset=x+offset_distance*dcos(direction-offset_angle);
var _yoffset=y-offset_distance*dsin(direction-offset_angle);
var _zoffset=z-offset_z+EYE_LEVEL;
var _zoffset2=0;
var m0=matrix_build(0, 0, -_zoffset2, 0, pitch/2, 0, 1, 1, 1);
var m1=matrix_build(0, 0, 0, _xrot, _yrot, _zrot, 1, 1, 1);
var m2=matrix_build(_xoffset, _yoffset, _zoffset, 0, 0, 0, 1, 1, 1);
matrix_set(matrix_world, matrix_multiply(matrix_multiply(m0, m1), m2));