@@ -684,6 +684,36 @@ class StageEditor extends UIState {
684684 return Options .editorStagePrettyPrint ? xmlThingYea : xmlThingYea .replace (" \n " , " " );
685685 }
686686
687+ function storeSpriteTransform (sprite : FunkinSprite ) {
688+ sprite .setPosition (CoolUtil .quantize (sprite .x , 100 ), CoolUtil .quantize (sprite .y , 100 ));
689+ sprite .scale .set (CoolUtil .quantize (sprite .scale .x , 100 ), CoolUtil .quantize (sprite .scale .y , 100 ));
690+ sprite .skew .set (CoolUtil .quantize (sprite .skew .x , 100 ), CoolUtil .quantize (sprite .skew .y , 100 ));
691+ sprite .angle = CoolUtil .quantize (sprite .angle , 100 );
692+
693+ var button : StageElementButton = cast (sprite .extra .get (exID (" button" )), StageElementButton );
694+ button .xml .att .x = Std .string (sprite .x );
695+ button .xml .att .y = Std .string (sprite .y );
696+ button .xml .att .skewx = Std .string (sprite .skew .x );
697+ button .xml .att .skewy = Std .string (sprite .skew .y );
698+ button .xml .att .angle = Std .string (sprite .angle );
699+
700+ for (attrib in [" graphicSize" , " graphicSizex" , " graphicSizey" ])
701+ button .xml .x .remove (attrib );
702+ if (MathUtil .equal (sprite .scale .x , sprite .scale .y )) {
703+ button .xml .att .scale = Std .string (sprite .scale .x );
704+ } else {
705+ button .xml .att .scalex = Std .string (sprite .scale .x );
706+ button .xml .att .scaley = Std .string (sprite .scale .y );
707+ }
708+
709+ if (button .xml .has .width )
710+ button .xml .att .width = Std .string (sprite .width );
711+ if (button .xml .has .height )
712+ button .xml .att .height = Std .string (sprite .height );
713+
714+ button .updateInfo ();
715+ }
716+
687717 function _edit_undo (_ ) {
688718 UIState .playEditorSound (Flags .DEFAULT_EDITOR_UNDO_SOUND );
689719 var undo = undos .undo ();
@@ -706,7 +736,7 @@ class StageEditor extends UIState {
706736 sprite .scale .set (oldInfo .scaleX , oldInfo .scaleY );
707737 sprite .skew .set (oldInfo .skewX , oldInfo .skewY );
708738 sprite .angle = oldInfo .angle ;
709- cast (sprite . extra . get ( exID ( " button " )), StageElementButton ). updateInfo ( );
739+ storeSpriteTransform (sprite );
710740 }
711741 }
712742
@@ -732,7 +762,7 @@ class StageEditor extends UIState {
732762 sprite .scale .set (newInfo .scaleX , newInfo .scaleY );
733763 sprite .skew .set (newInfo .skewX , newInfo .skewY );
734764 sprite .angle = newInfo .angle ;
735- cast (sprite . extra . get ( exID ( " button " )), StageElementButton ). updateInfo ( );
765+ storeSpriteTransform (sprite );
736766 }
737767 }
738768
@@ -1117,6 +1147,7 @@ class StageEditor extends UIState {
11171147 if (prevMode == NONE && mouseMode == NONE ) return ;
11181148
11191149 if (prevMode != NONE && mouseMode == NONE ) {
1150+ storeSpriteTransform (sprite );
11201151 undos .addToUndo (CTransform (sprite , {
11211152 x : storedPos .x ,
11221153 y : storedPos .y ,
0 commit comments