public void Use(ICameraRay cameraRay, Transform playerTransform) { const float maxDistance = 3f; if (!Physics.Raycast(cameraRay.GetCameraRay(), out RaycastHit hit, maxDistance)) { return; } if (!IsAppropriatePosition(hit, playerTransform)) { return; } GameObject item = hit.transform.gameObject; if (TryOperateDevice(item)) { return; } if (TryPickUpUsefulItem(item)) { return; } if (TryPickUpWeaponItem(item)) { return; } }
public PlayerController(ICameraRay cameraRay, IPlayerInput playerInput) { _playerMoveSystem = new PlayerMoveSystem(); _playerLookSystem = new PlayerLookSystem(); _weaponSystem = new PlayerWeaponSystem(); _activitySystem = new PlayerActivitySystem(_weaponSystem); _cameraRay = cameraRay; _playerInput = playerInput; }