@@ -23,37 +23,54 @@ namespace VisualPinball.Unity.VisualScripting
2323 [ DisallowMultipleComponent ]
2424 [ RequireComponent ( typeof ( IGamelogicEngine ) ) ]
2525 [ RequireComponent ( typeof ( Player ) ) ]
26- [ AddComponentMenu ( "Visual Pinball/Game Logic Engine/Visual Scripting Bridge" ) ]
26+ [ AddComponentMenu ( "Visual Pinball/Gamelogic Engine/Visual Scripting Bridge" ) ]
2727 public class VisualScriptingGamelogicBridge : MonoBehaviour
2828 {
29- private IGamelogicEngine _gle ;
3029 private Player _player ;
30+ private IGamelogicEngine _gle ;
31+
32+ private bool _init ;
3133
3234 private void Awake ( )
3335 {
34- _gle = GetComponent < IGamelogicEngine > ( ) ;
36+ _init = false ;
37+
3538 _player = GetComponent < Player > ( ) ;
36- if ( _gle == null ) {
37- Debug . LogWarning ( "Cannot find gamelogic engine." ) ;
38- return ;
39- }
4039 if ( _player == null ) {
4140 Debug . LogWarning ( "Cannot find player." ) ;
42- return ;
4341 }
4442
45- _player . OnPlayerStarted += OnPlayerStarted ;
43+ _gle = GetComponent < IGamelogicEngine > ( ) ;
44+ if ( _gle != null ) {
45+ _gle . OnStarted += OnStarted ;
46+ }
47+ else {
48+ Debug . LogWarning ( "Cannot find gamelogic engine." ) ;
49+ }
4650 }
4751
48- private void OnDestroy ( )
49- {
50- if ( _player != null ) {
51- _player . OnPlayerStarted -= OnPlayerStarted ;
52+ private void OnDestroy ( ) {
53+ if ( _gle != null ) {
54+ _gle . OnStarted -= OnStarted ;
55+
56+ if ( _init ) {
57+ _gle . OnSwitchChanged -= OnSwitchChanged ;
58+ _gle . OnCoilChanged -= OnCoilChanged ;
59+ _gle . OnLampChanged -= OnLampChanged ;
60+ }
5261 }
62+ }
63+
64+ private void OnStarted ( object sender , EventArgs e )
65+ {
5366 if ( _gle != null ) {
54- _gle . OnSwitchChanged -= OnSwitchChanged ;
55- _gle . OnCoilChanged -= OnCoilChanged ;
56- _gle . OnLampChanged -= OnLampChanged ;
67+ _gle . OnSwitchChanged += OnSwitchChanged ;
68+ _gle . OnCoilChanged += OnCoilChanged ;
69+ _gle . OnLampChanged += OnLampChanged ;
70+
71+ _init = true ;
72+
73+ EventBus . Trigger ( VisualScriptingEventNames . GleStartedEvent , e ) ;
5774 }
5875 }
5976
@@ -67,21 +84,9 @@ private static void OnCoilChanged(object sender, CoilEventArgs e)
6784 EventBus . Trigger ( VisualScriptingEventNames . CoilEvent , e ) ;
6885 }
6986
70- private void OnPlayerStarted ( object sender , EventArgs e )
71- {
72- if ( _gle != null ) {
73- _gle . OnSwitchChanged += OnSwitchChanged ;
74- _gle . OnCoilChanged += OnCoilChanged ;
75- _gle . OnLampChanged += OnLampChanged ;
76- }
77-
78- EventBus . Trigger ( VisualScriptingEventNames . PlayerStartedEvent , EventArgs . Empty ) ;
79- }
80-
8187 private static void OnLampChanged ( object sender , LampEventArgs e )
8288 {
8389 EventBus . Trigger ( VisualScriptingEventNames . LampEvent , e ) ;
8490 }
85-
8691 }
8792}
0 commit comments