# 2023.3.x から 2023.4.x への移行

2023.4.0 にて `Sora.Config` 中にあるカメラに関する以下のフィールドを `Sora.CameraConfig` に移動しました。
以下の項目を利用している場合は、 `Sora.CameraConfig` に移行してください。

- CapturerType
- UnityCamera
- UnityCameraRenderTargetDepthBuffer
- VideoCapturerDevice
- VideoWidth
- VideoHeight
- VideoFps

## 修正内容

- `Sora.Config` に `Sora.CameraConfig` を追加しました。 `Sora.CameraConfig` はカメラに関する以下の設定を保持するクラスです。- CapturerType
  - UnityCamera
  - UnityCameraRenderTargetDepthBuffer
  - VideoCapturerDevice
  - VideoWidth
  - VideoHeight
  - VideoFps
- `Sora.Config` から以下の項目を削除しました。- CapturerType
  - UnityCamera
  - UnityCameraRenderTargetDepthBuffer
  - VideoCapturerDevice
  - VideoWidth
  - VideoHeight
  - VideoFps

## 移行方法

以下の通り、カメラに関する設定を `Sora.CameraConfig` に移行してください。

### デバイスカメラの例

- 移行前 (2023.3.0)

移行前のデバイスカメラに関する設定は Sora.Config のフィールドとして定義されており、以下のように設定していました。
例として可能な限り多くの項目を設定していますが利用している項目のみの移行で問題ありません。

```csharp
config = new Config() {
  SignalingUrl = "wss://sora.example.com/signaling",
  ChannelId = "sora",
  // Sora.Config フィールドにあったデバイスカメラに関する設定
  CapturerType = Sora.CapturerType.DeviceCamera,
  VideoCapturerDevice = "camera",
  VideoWidth = 640,
  VideoHeight = 480,
  VideoFps = 30,
};
```

- 移行後 (2023.4.0)

移行後のデバイスカメラに関する設定は新たに作られた Sora.CameraConfig 内のフィールドになりました。

```csharp
config = new Config() {
  SignalingUrl = "wss://sora.example.com/signaling",
  ChannelId = "sora",
  // Sora.CameraConfig で移行前と同じデバイスカメラ設定を指定します。
  CameraConfig = new CameraConfig() {
    CapturerType = Sora.CapturerType.DeviceCamera,
    VideoCapturerDevice = "camera",
    VideoWidth = 640,
    VideoHeight = 480,
    VideoFps = 30,
  },
};
```

### Unity Camera の例

- 移行前 (2023.3.0)

移行前の Unity カメラに関する設定は Sora.Config のフィールドとして定義されており、以下のように設定していました。
例として可能な限り多くの項目を設定していますが利用している項目のみの移行で問題ありません。

```csharp
config = new Config() {
  SignalingUrl = "wss://sora.example.com/signaling",
  ChannelId = "sora",
  // Sora.Config フィールドにあった Unity カメラに関する設定
  CapturerType = Sora.CapturerType.UnityCamera,
  UnityCamera = someUnityCapturedCamera,
  UnityCameraRenderTargetDepthBuffer = 16,
  VideoWidth = 640,
  VideoHeight = 480,
  VideoFps = 30,
};
```

- 移行後 (2023.4.0)

移行後の Unity カメラに関する設定は新たに作られた Sora.CameraConfig 内のフィールドになりました。

```csharp
config = new Config() {
  SignalingUrl = "wss://sora.example.com/signaling",
  ChannelId = "sora",
  // Sora.CameraConfig で移行前と同じ Unity カメラ設定を指定します。
  CameraConfig = new CameraConfig() {
    CapturerType = Sora.CapturerType.UnityCamera,
    UnityCamera = someUnityCapturedCamera,
    UnityCameraRenderTargetDepthBuffer = 16,
    VideoWidth = 640,
    VideoHeight = 480,
    VideoFps = 30,
  },
};
```

## 移行の経緯

カメラ切り替え機能を追加に伴い `Sora` に `Sora.SwitchCamera(CameraConfig)` を追加しました。
引数の簡略化のために `Sora.CameraConfig` に設定をまとめました。
