133 lines
3.3 KiB
Markdown
133 lines
3.3 KiB
Markdown
|
|
# Simulator 모듈 가이드
|
||
|
|
|
||
|
|
Simulator는 Factory 모듈의 **시뮬레이션 전용 버전**입니다. 실시간 MQTT 데이터 없이 로컬에서 설비 동작을 테스트하고 시뮬레이션합니다.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 모듈 구조
|
||
|
|
|
||
|
|
```
|
||
|
|
Simulator/
|
||
|
|
├── SimulatorAppMain.cs # 앱 진입점
|
||
|
|
├── SimulatorSceneMain.cs # 씬 초기화
|
||
|
|
├── Config/
|
||
|
|
│ ├── AppConfig.cs # 설정 로드
|
||
|
|
│ └── Constants.cs # 상수 정의
|
||
|
|
└── LNB/
|
||
|
|
├── SimulatorLNB.cs # Left Navigation Bar
|
||
|
|
├── LNBExplorer.cs # 탐색기 뷰
|
||
|
|
└── LNBLibrary.cs # 라이브러리 뷰
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## SimulatorAppMain
|
||
|
|
|
||
|
|
```csharp
|
||
|
|
namespace Simulator
|
||
|
|
{
|
||
|
|
[DefaultExecutionOrder(100)]
|
||
|
|
public class SimulatorAppMain : SingletonApp<SimulatorAppMain>
|
||
|
|
{
|
||
|
|
public Action Initialized;
|
||
|
|
|
||
|
|
protected override async void Init()
|
||
|
|
{
|
||
|
|
// 로깅 설정
|
||
|
|
Log4netCodeConfigurator.Setup();
|
||
|
|
|
||
|
|
// 설정 로드
|
||
|
|
await SettupConfigAsync();
|
||
|
|
|
||
|
|
// 네트워크 설정 (MQTT 토픽은 주석 처리됨)
|
||
|
|
SetNetworkConfig();
|
||
|
|
|
||
|
|
Initialized?.Invoke();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Factory와의 차이점
|
||
|
|
|
||
|
|
| 항목 | Factory | Simulator |
|
||
|
|
|------|---------|-----------|
|
||
|
|
| **MQTT 구독** | AGV, ALARM, PORT 토픽 활성화 | 토픽 구독 비활성화 |
|
||
|
|
| **데이터 소스** | 실시간 MQTT | 로컬 시뮬레이션 데이터 |
|
||
|
|
| **용도** | 프로덕션 시각화 | 개발/테스트 |
|
||
|
|
| **Playback** | 서버 데이터 재생 | 로컬 데이터 재생 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 설정
|
||
|
|
|
||
|
|
Factory와 동일한 `FactoryAppConfig`를 공유합니다:
|
||
|
|
|
||
|
|
```csharp
|
||
|
|
private async UniTask SettupConfigAsync()
|
||
|
|
{
|
||
|
|
if (FactoryAppConfig.LoadConfig())
|
||
|
|
{
|
||
|
|
Application.targetFrameRate = FactoryAppConfig.Config.TargetFrameRate;
|
||
|
|
LocalizationManager.Instance.LoadDefaultLocalizationData(FactoryAppConfig.Config.Language);
|
||
|
|
// ...
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 네트워크 설정
|
||
|
|
|
||
|
|
```csharp
|
||
|
|
private void SetNetworkConfig()
|
||
|
|
{
|
||
|
|
// URL 등록
|
||
|
|
URLList.Add("baseinfo", $"{FactoryConstants.API_DOMAIN}/baseinfo");
|
||
|
|
URLList.Add("playbackList", $"{FactoryConstants.API_DOMAIN}/playback/list");
|
||
|
|
URLList.Add("playbackFile", $"{FactoryConstants.API_DOMAIN}/playback");
|
||
|
|
|
||
|
|
// MQTT 설정만 하고 토픽은 구독하지 않음
|
||
|
|
DataRepository.Instance.MqttReceiver.SetDataPicker(...);
|
||
|
|
DataRepository.Instance.MqttReceiver.SetDomainPort(...);
|
||
|
|
|
||
|
|
// 주석 처리된 토픽 구독
|
||
|
|
// DataRepository.Instance.MqttReceiver.AddTopic("AGV");
|
||
|
|
// DataRepository.Instance.MqttReceiver.AddTopic("ALARM");
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## LNB (Left Navigation Bar)
|
||
|
|
|
||
|
|
### SimulatorLNB
|
||
|
|
|
||
|
|
시뮬레이터 전용 좌측 네비게이션 바입니다.
|
||
|
|
|
||
|
|
### LNBExplorer
|
||
|
|
|
||
|
|
파일 시스템 탐색기 뷰를 제공합니다.
|
||
|
|
|
||
|
|
### LNBLibrary
|
||
|
|
|
||
|
|
사전 정의된 설비 라이브러리를 제공합니다.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 사용 시나리오
|
||
|
|
|
||
|
|
1. **설비 배치 테스트**: 3D 공간에 설비 배치 및 레이아웃 확인
|
||
|
|
2. **애니메이션 테스트**: AGV 이동 경로, 알람 UI 동작 확인
|
||
|
|
3. **UI 개발**: InfoWindow, Modal 등 UI 컴포넌트 테스트
|
||
|
|
4. **Playback 테스트**: 과거 데이터 재생 기능 검증
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 의존성
|
||
|
|
|
||
|
|
- **Factory 모듈**: Config, Constants 공유
|
||
|
|
- **UVC 라이브러리**: Core, Data, Locale, Util, Log
|