@@ -9,7 +9,7 @@ public class Plugin : IBeatSaberPlugin
99 ColorManager _colorManager ;
1010 BeatmapObjectSpawnController _spawnController ;
1111
12- SliceController [ ] _sliceControllers ;
12+ SliceController [ , ] _sliceControllers ;
1313 bool _logNotesCut = false ;
1414
1515 private void MenuSceneLoadedFresh ( )
@@ -23,30 +23,36 @@ private void GameSceneLoaded()
2323 _spawnController = GameObject . FindObjectOfType < BeatmapObjectSpawnController > ( ) ;
2424 _spawnController . noteWasCutEvent += OnNoteCut ;
2525
26- GameObject canvasA = AssetBundleHelper . Instantiate ( "Canvas" ) ;
27- GameObject canvasB = AssetBundleHelper . Instantiate ( "Canvas" ) ;
28-
29- canvasA . transform . Translate ( - 1.5f , 0f , 0f ) ;
30- canvasB . transform . Translate ( 1.5f , 0f , 0f ) ;
31-
32- Color colorNoteA = _colorManager . ColorForNoteType ( NoteType . NoteA ) ;
3326 Color colorNoteB = _colorManager . ColorForNoteType ( NoteType . NoteB ) ;
3427
35- Console . WriteLine ( $ "[NoteSliceVisualizer] Color NoteA: { colorNoteA } ") ;
36- Console . WriteLine ( $ "[NoteSliceVisualizer] Color NoteB: { colorNoteB } ") ;
37-
38- _sliceControllers = new SliceController [ ]
28+ GameObject [ , ] canvases = new GameObject [ 4 , 3 ] ;
29+ _sliceControllers = new SliceController [ 4 , 3 ] ;
30+ for ( int x = 0 ; x < 4 ; ++ x )
3931 {
40- new SliceController ( canvasA , colorNoteA ) ,
41- new SliceController ( canvasB , colorNoteB ) ,
42- } ;
32+ for ( int y = 0 ; y < 3 ; ++ y )
33+ {
34+ GameObject canvas = canvases [ x , y ] ;
35+
36+ float xPos = - 1.2f + ( 0.8f * x ) ;
37+ float yPos = 0f + ( 0.8f * y ) - 1.5f ;
38+
39+ canvas = AssetBundleHelper . Instantiate ( "Canvas" ) ;
40+ canvas . transform . localScale *= 0.25f ;
41+ canvas . transform . Translate ( xPos , yPos , 0f ) ;
42+ _sliceControllers [ x , y ] = new SliceController ( canvas ) ;
43+ }
44+ }
4345 }
4446
4547 private void OnNoteCut ( BeatmapObjectSpawnController spawnController , INoteController noteController , NoteCutInfo info )
4648 {
4749 Vector3 center = noteController . noteTransform . position ;
4850 Vector3 localCutPoint = info . cutPoint - center ;
49- _sliceControllers [ ( int ) info . saberType ] . UpdateSlice ( localCutPoint , info . cutNormal ) ;
51+
52+ NoteData data = noteController . noteData ;
53+ SliceController sliceController = _sliceControllers [ data . lineIndex , ( int ) data . noteLineLayer ] ;
54+ sliceController . UpdateBlockColor ( _colorManager . ColorForSaberType ( info . saberType ) ) ;
55+ sliceController . UpdateSlice ( localCutPoint , info . cutNormal ) ;
5056
5157 if ( _logNotesCut )
5258 {
@@ -86,11 +92,19 @@ public void OnActiveSceneChanged(global::UnityEngine.SceneManagement.Scene prevS
8692
8793 public void OnUpdate ( )
8894 {
95+ if ( _sliceControllers != null )
96+ {
97+ foreach ( SliceController sliceController in _sliceControllers )
98+ {
99+ sliceController ? . Update ( ) ;
100+ }
101+ }
89102 }
90103
91104 public void OnFixedUpdate ( )
92105 {
93106 }
107+
94108 #endregion // IBeatSaberPlugin
95109 }
96110}
0 commit comments