public void Initialize(ILiftManager manager) { foreach (var floor in manager.Floors) { var controller = Instantiate(floorPrefab, root); controller.Floor = floor; var selection = controller.GetComponent <FloorSelection>(); if (selection == null) { continue; } selection.OnFloorFocusStateChanged += FloorFocusStateChanged; if (selection.Floor != manager.CurrentFloor) { continue; } _selected = selection; _selected.Selected = true; } OnFloorSelected?.Invoke(_selected != null ? _selected.Floor : manager.CurrentFloor); }
private void FloorFocusStateChanged(FloorSelection selection) { if (selection.Selected && _selected != selection) { _selected.Selected = false; _selected = selection; } if (selection.Focused) { _focused = selection; } else if (_focused == selection) { _focused = null; } OnFloorSelected?.Invoke(_focused != null ? _focused.Floor : _selected.Floor); }