public void ListenTo(ITrackable activationCatalyst) { if (_activationCatalyst != null) { throw new System.InvalidOperationException($"World cannot listen to multiple catalysts at a time."); } _activationCatalyst = activationCatalyst; PositionTracker.Subscribe(activationCatalyst, OnPositionUpdate); var position = PositionTracker.GetCurrentPosition(activationCatalyst); OnPositionUpdate(activationCatalyst, null, position); }
public void Register(EnemyHealth enemy) { Enemies.Add(enemy); enemy.transform.SetParent(transform, true); PositionTracker.Subscribe(enemy, OnEnemyPositionUpdate); enemy.OnActorDeath += Unregister; enemy.gameObject.SetActive(gameObject.activeInHierarchy); OnChunkChanged.Raise(this); }