コード例 #1
0
    private void UpdatePlayerToActive(PlayerInteractor playerInteractor, InRangeListener active)
    {
        var playerIndex = playerInteractor.Player.PlayerIndex;

        if (!_playerToActive.ContainsKey(playerInteractor))
        {
            _playerToActive.Add(playerInteractor, active);

            if (active != null)
            {
                active.NotifyInRange(playerIndex);
            }

            return;
        }

        _playerToActive[playerInteractor]?.NotifyOutOfRange(playerIndex);
        _playerToActive[playerInteractor] = active;

        if (active == null)
        {
            return;
        }
        active.NotifyInRange(playerIndex);
    }
コード例 #2
0
    private void UpdateActiveInteractable()
    {
        var closest = GetClosestInteractable(_inRange, transform);

        if (closest != null)
        {
            _active = closest.GetComponent <InRangeListener>();
            _lineRenderer.SetPosition(0, transform.position);
            _lineRenderer.SetPosition(1, closest.transform.position);
            _lineRenderer.enabled = true;
        }
        else
        {
            _active = null;
            _lineRenderer.enabled = false;
        }

        InteractionController.Instance.NotifyActiveChanged(this, _active);
    }
コード例 #3
0
 public void NotifyActiveChanged(PlayerInteractor playerInteractor, InRangeListener active)
 {
     UpdatePlayerToActive(playerInteractor, active);
 }
コード例 #4
0
 private void Awake()
 {
     _inventory       = GetComponent <Inventory>();
     _inRangeListener = GetComponent <InRangeListener>();
     _useListener     = GetComponent <UseListener>();
 }