@@ -21,6 +21,10 @@ class Transform implements IDisposable #if cog implements cog.IComponent #end {
2121 * The Transform's rotation (as degrees) in world coordinates.
2222 */
2323 public var rotation (get , set ): Float ;
24+ /**
25+ * The Transform's rotation in world coordinates.
26+ */
27+ public var radians (get , set ): Float ;
2428 /**
2529 * The Transform's scale on the X axis in world coordinates.
2630 */
@@ -40,7 +44,11 @@ class Transform implements IDisposable #if cog implements cog.IComponent #end {
4044 /**
4145 * The Transform's rotation (as degrees) in local coordinates.
4246 */
43- public var local_rotation (default , set ): Float ;
47+ public var local_rotation (get , set ): Float ;
48+ /**
49+ * The Transform's rotation in local coordinates.
50+ */
51+ public var local_radians (default , set ): Float ;
4452 /**
4553 * The Transform's scale on the X axis in local coordinates.
4654 */
@@ -50,18 +58,18 @@ class Transform implements IDisposable #if cog implements cog.IComponent #end {
5058 */
5159 public var local_scale_y (default , set ): Float ;
5260
53- public var right (get , never ): Vector2 ;
54- public var left (get , never ): Vector2 ;
5561 public var up (get , never ): Vector2 ;
5662 public var down (get , never ): Vector2 ;
63+ public var right (get , never ): Vector2 ;
64+ public var left (get , never ): Vector2 ;
5765 /**
5866 * Optional callback method that gets called when the Transform is set as dirty.
5967 */
6068 public var on_dirty : Transform -> Void = null ;
6169
6270 var _x : Float = 0 ;
6371 var _y : Float = 0 ;
64- var _rotation : Float = 0 ;
72+ var _radians : Float = 0 ;
6573 var _scale_x : Float = 1 ;
6674 var _scale_y : Float = 1 ;
6775
@@ -157,10 +165,9 @@ class Transform implements IDisposable #if cog implements cog.IComponent #end {
157165 * @return Matrix3
158166 */
159167 public inline function get_local_matrix (): Matrix3 {
160- // translate(local_x, local_y) * rotate(local_rotation.deg_to_rad()) * scale(local_scale_x, local_scale_y);
161- var radians = local_rotation .deg_to_rad ();
162- var s = Math .sin (radians );
163- var c = Math .cos (radians );
168+ // translate(local_x, local_y) * rotate(local_radians) * scale(local_scale_x, local_scale_y);
169+ var s = Math .sin (local_radians );
170+ var c = Math .cos (local_radians );
164171 return new Matrix3 (c * local_scale_x , - s * local_scale_y , local_x , s * local_scale_x , c * local_scale_y , local_y , 0 , 0 , 1 );
165172 }
166173 /**
@@ -402,7 +409,7 @@ class Transform implements IDisposable #if cog implements cog.IComponent #end {
402409 _y = local_y ;
403410 _scale_x = local_scale_x ;
404411 _scale_y = local_scale_y ;
405- _rotation = local_rotation ;
412+ _radians = local_radians ;
406413 }
407414 else {
408415 var a = m .m00 ;
@@ -413,7 +420,7 @@ class Transform implements IDisposable #if cog implements cog.IComponent #end {
413420 _y = m .m21 ;
414421 _scale_x = Math .sqrt (a * a + b * b );
415422 _scale_y = Math .sqrt (c * c + d * d );
416- _rotation = Math .atan2 (- c / _scale_y , a / _scale_x ).rad_to_deg ();
423+ _radians = Math .atan2 (- c / _scale_y , a / _scale_x ).rad_to_deg ();
417424 }
418425
419426 coordinates_dirty = false ;
@@ -443,9 +450,15 @@ class Transform implements IDisposable #if cog implements cog.IComponent #end {
443450 }
444451
445452 inline function get_rotation () {
446- if (parent == null ) return local_rotation ;
453+ if (parent == null ) return local_radians . rad_to_deg () ;
447454 sync ();
448- return _rotation ;
455+ return _radians .rad_to_deg ();
456+ }
457+
458+ inline function get_radians () {
459+ if (parent == null ) return local_radians ;
460+ sync ();
461+ return _radians ;
449462 }
450463
451464 inline function get_scale_x () {
@@ -460,20 +473,24 @@ class Transform implements IDisposable #if cog implements cog.IComponent #end {
460473 return _scale_y ;
461474 }
462475
476+ inline function get_local_rotation () {
477+ return local_radians .rad_to_deg ();
478+ }
479+
463480 inline function get_right () {
464- return Vector2 .from_radians (rotation . deg_to_rad () , 1 );
481+ return Vector2 .from_radians (radians , 1 );
465482 }
466483
467484 inline function get_left () {
468- return Vector2 .from_radians (( rotation + 180 ). deg_to_rad () , 1 );
485+ return Vector2 .from_radians (radians + Math . PI , 1 );
469486 }
470487
471488 inline function get_up () {
472- return Vector2 .from_radians (( rotation + 90 ). deg_to_rad () , 1 );
489+ return Vector2 .from_radians (radians + Math . PI * 0.5 , 1 );
473490 }
474491
475492 inline function get_down () {
476- return Vector2 .from_radians (( rotation - 90 ). deg_to_rad () , 1 );
493+ return Vector2 .from_radians (radians - Math . PI * 0.5 , 1 );
477494 }
478495
479496 inline function set_x (v : Float ) {
@@ -494,6 +511,12 @@ class Transform implements IDisposable #if cog implements cog.IComponent #end {
494511 return rotation ;
495512 }
496513
514+ inline function set_radians (v : Float ) {
515+ if (parent == null ) return local_radians = v ;
516+ local_radians = parent .rotation_to_local (v );
517+ return radians ;
518+ }
519+
497520 inline function set_scale_x (v : Float ) {
498521 if (parent == null ) return local_scale_x = v ;
499522 set_local_scale (parent .scale_to_local (v , scale_y ));
@@ -517,8 +540,12 @@ class Transform implements IDisposable #if cog implements cog.IComponent #end {
517540 }
518541
519542 inline function set_local_rotation (v : Float ) {
543+ return local_radians = v .deg_to_rad ();
544+ }
545+
546+ inline function set_local_radians (v : Float ) {
520547 try_set_dirty ();
521- return local_rotation = v ;
548+ return local_radians = v ;
522549 }
523550
524551 inline function set_local_scale_x (v : Float ) {
0 commit comments