@@ -16,6 +16,8 @@ public partial class ChartManager : SubViewportContainer
1616 [ Export ]
1717 public CanvasGroup ChartLoopables ;
1818
19+ private Node _arrowGroup ;
20+
1921 [ Signal ]
2022 public delegate void NotePressedEventHandler ( ArrowType arrowType ) ;
2123
@@ -47,9 +49,29 @@ public void PrepChart(BattleDirector.SongData songData)
4749 TimeKeeper . Bpm = songData . Bpm ;
4850
4951 InitBackgrounds ( ) ;
52+ _arrowGroup = ChartLoopables . GetNode < Node > ( "ArrowGroup" ) ;
5053
5154 IH . Connect ( nameof ( InputHandler . NotePressed ) , new Callable ( this , nameof ( OnNotePressed ) ) ) ;
5255 IH . Connect ( nameof ( InputHandler . NoteReleased ) , new Callable ( this , nameof ( OnNoteReleased ) ) ) ;
56+
57+ //This could be good as a function to call on something, to have many things animated to the beat.
58+ var tween = GetTree ( ) . CreateTween ( ) ;
59+ tween
60+ . TweenMethod (
61+ Callable . From ( ( Vector2 scale ) => TweenArrows ( scale ) ) ,
62+ new Vector2 ( 0.07f , 0.07f ) ,
63+ new Vector2 ( 0.07f , 0.07f ) * 1.25f ,
64+ 60f / TimeKeeper . Bpm / 2
65+ )
66+ . SetEase ( Tween . EaseType . Out )
67+ . SetTrans ( Tween . TransitionType . Elastic ) ;
68+ tween . TweenMethod (
69+ Callable . From ( ( Vector2 scale ) => TweenArrows ( scale ) ) ,
70+ new Vector2 ( 0.07f , 0.07f ) * 1.25f ,
71+ new Vector2 ( 0.07f , 0.07f ) ,
72+ 60f / TimeKeeper . Bpm / 2
73+ ) ;
74+ tween . SetLoops ( ) . Play ( ) ;
5375 }
5476
5577 private void InitBackgrounds ( )
@@ -66,6 +88,15 @@ private void InitBackgrounds()
6688 }
6789 }
6890
91+ private void TweenArrows ( Vector2 scale )
92+ {
93+ foreach ( var node in _arrowGroup . GetChildren ( ) )
94+ {
95+ NoteArrow arrow = ( NoteArrow ) node ;
96+ arrow . Scale = scale ;
97+ }
98+ }
99+
69100 public NoteArrow AddArrowToLane ( Note note , int noteIdx )
70101 {
71102 var newNote = CreateNote ( note . Type , note . Beat ) ;
@@ -80,7 +111,7 @@ private NoteArrow CreateNote(ArrowType arrow, int beat = 0)
80111 NoteArrow newArrow = noteScene . Instantiate < NoteArrow > ( ) ;
81112 newArrow . Init ( IH . Arrows [ ( int ) arrow ] ) ;
82113
83- ChartLoopables . AddChild ( newArrow ) ;
114+ _arrowGroup . AddChild ( newArrow ) ;
84115 newArrow . Bounds = ( float ) ( ( double ) beat / BeatsPerLoop * ( ChartLength / 2 ) ) ;
85116 return newArrow ;
86117 }
0 commit comments