모든 MD 문서(README.md, MERGE_INSTRUCTIONS.md)를 한국어로 번역 - 기능 설명, 설치 방법, 사용 가이드 한국어화 - 기술 세부사항 및 문제 해결 섹션 한국어화 - 병합 가이드 및 롤백 방법 한국어화
232 lines
6.1 KiB
Markdown
232 lines
6.1 KiB
Markdown
# 기존 파일 병합 가이드
|
|
|
|
이 문서는 기존 WorldStalkerEditor 모듈 파일에 병합해야 하는 변경사항을 설명합니다.
|
|
|
|
## 개요
|
|
|
|
Asset Export to JSON 기능은 기존 파일에 대한 최소한의 수정만 필요합니다:
|
|
- **WorldStalkerEditor.h**: private 메서드 선언 2개 추가
|
|
- **WorldStalkerEditor.cpp**: include 지시문 추가 및 메뉴 등록 구현
|
|
|
|
## 파일: WorldStalkerEditor.h
|
|
|
|
### 변경 위치
|
|
18-20줄 (기존 private 멤버 변수 다음)
|
|
|
|
### 추가할 변경사항
|
|
|
|
```cpp
|
|
private:
|
|
void RegisterMenuExtensions();
|
|
void AddToolbarMenuEntry(class FMenuBuilder& MenuBuilder);
|
|
```
|
|
|
|
### 완전한 수정 섹션
|
|
|
|
```cpp
|
|
class FWorldStalkerEditorModule : public IModuleInterface
|
|
{
|
|
public:
|
|
virtual void StartupModule() override;
|
|
virtual void ShutdownModule() override;
|
|
|
|
private:
|
|
// 이 두 줄을 추가하세요:
|
|
void RegisterMenuExtensions();
|
|
void AddToolbarMenuEntry(class FMenuBuilder& MenuBuilder);
|
|
|
|
TSharedPtr<class FUICommandList> PluginCommands;
|
|
TSharedPtr<class FDataTableNoticeListener> DataTableListener;
|
|
TSharedPtr<class FObjectSaveEventListener> ObjectSaveEventListener;
|
|
};
|
|
```
|
|
|
|
**참고**: `AddToolbarMenuEntry` 메서드는 하위 호환성을 위해 유지되지만 실제로는 사용되지 않습니다.
|
|
|
|
---
|
|
|
|
## 파일: WorldStalkerEditor.cpp
|
|
|
|
### 변경 1: Include 지시문 추가
|
|
|
|
**위치**: 4줄 (기존 include 다음)
|
|
|
|
**이 줄을 추가**:
|
|
```cpp
|
|
#include "Utility/AssetExporterToJSON.h"
|
|
```
|
|
|
|
**완전한 Include 섹션**:
|
|
```cpp
|
|
#include "WorldStalkerEditor.h"
|
|
#include "DataTable/DataTableNoticeListener.h"
|
|
#include "Asset/ObjectSaveEventListener.h"
|
|
#include "Utility/AssetExporterToJSON.h" // 이 줄을 추가하세요
|
|
#include "ToolMenus.h"
|
|
```
|
|
|
|
### 변경 2: StartupModule에서 메뉴 확장 등록
|
|
|
|
**위치**: `StartupModule()` 메서드 내부 (기존 초기화 다음)
|
|
|
|
**이 줄들을 추가**:
|
|
```cpp
|
|
// Register editor menu extensions
|
|
UToolMenus::RegisterStartupCallback(FSimpleMulticastDelegate::FDelegate::CreateRaw(this, &FWorldStalkerEditorModule::RegisterMenuExtensions));
|
|
```
|
|
|
|
**완전한 StartupModule 메서드**:
|
|
```cpp
|
|
void FWorldStalkerEditorModule::StartupModule()
|
|
{
|
|
DataTableListener = MakeShared<FDataTableNoticeListener>();
|
|
ObjectSaveEventListener = MakeShared<FObjectSaveEventListener>();
|
|
|
|
// 이 두 줄을 추가하세요:
|
|
// Register editor menu extensions
|
|
UToolMenus::RegisterStartupCallback(FSimpleMulticastDelegate::FDelegate::CreateRaw(this, &FWorldStalkerEditorModule::RegisterMenuExtensions));
|
|
}
|
|
```
|
|
|
|
### 변경 3: ShutdownModule에서 정리
|
|
|
|
**위치**: `ShutdownModule()` 메서드 내부 (기존 정리 코드 다음)
|
|
|
|
**이 줄들을 추가**:
|
|
```cpp
|
|
// Unregister all tool menus
|
|
UToolMenus::UnRegisterStartupCallback(this);
|
|
UToolMenus::UnregisterOwner(this);
|
|
```
|
|
|
|
**완전한 ShutdownModule 메서드**:
|
|
```cpp
|
|
void FWorldStalkerEditorModule::ShutdownModule()
|
|
{
|
|
DataTableListener.Reset();
|
|
ObjectSaveEventListener.Reset();
|
|
|
|
// 이 두 줄을 추가하세요:
|
|
// Unregister all tool menus
|
|
UToolMenus::UnRegisterStartupCallback(this);
|
|
UToolMenus::UnregisterOwner(this);
|
|
}
|
|
```
|
|
|
|
### 변경 4: 새 메서드 구현 추가
|
|
|
|
**위치**: `ShutdownModule()` 메서드 다음 (`#undef LOCTEXT_NAMESPACE` 전)
|
|
|
|
**이 두 메서드 전체를 추가**:
|
|
|
|
```cpp
|
|
void FWorldStalkerEditorModule::RegisterMenuExtensions()
|
|
{
|
|
UToolMenu* ToolsMenu = UToolMenus::Get()->ExtendMenu("LevelEditor.MainMenu.Tools");
|
|
if (!ToolsMenu)
|
|
{
|
|
return;
|
|
}
|
|
|
|
FToolMenuSection& Section = ToolsMenu->FindOrAddSection("WorldStalkerTools");
|
|
Section.Label = LOCTEXT("WorldStalkerToolsSection", "WorldStalker");
|
|
|
|
Section.AddMenuEntry(
|
|
"ExportAssetsToJSON",
|
|
LOCTEXT("ExportAssetsToJSON", "Export Assets to JSON"),
|
|
LOCTEXT("ExportAssetsToJSONTooltip", "Export DataTable, Blueprint, AnimMontage, and CurveTable assets to JSON format for LLM analysis"),
|
|
FSlateIcon(FAppStyle::GetAppStyleSetName(), "LevelEditor.Tabs.StatsViewer"),
|
|
FUIAction(FExecuteAction::CreateStatic(&FAssetExporterToJSON::ExportAssetsToJSON))
|
|
);
|
|
}
|
|
|
|
void FWorldStalkerEditorModule::AddToolbarMenuEntry(FMenuBuilder& MenuBuilder)
|
|
{
|
|
// This method is no longer used but kept for backward compatibility
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 빌드 설정
|
|
|
|
`WorldStalkerEditor.Build.cs`에 다음 의존성이 포함되어 있는지 확인하세요:
|
|
|
|
```csharp
|
|
PublicDependencyModuleNames.AddRange(new string[] {
|
|
"AssetRegistry",
|
|
"Json",
|
|
"JsonUtilities"
|
|
});
|
|
|
|
PrivateDependencyModuleNames.AddRange(new string[] {
|
|
"UnrealEd",
|
|
"Engine",
|
|
"Slate",
|
|
"SlateCore",
|
|
"ToolMenus",
|
|
"DeveloperSettings"
|
|
});
|
|
```
|
|
|
|
**참고**: 이러한 의존성의 대부분은 이미 모듈에 존재할 가능성이 높습니다. 누락된 것만 추가하세요.
|
|
|
|
---
|
|
|
|
## 변경사항 요약
|
|
|
|
### WorldStalkerEditor.h
|
|
- **추가된 줄**: 메서드 선언 2개
|
|
- **목적**: 메뉴 등록 메서드 선언
|
|
|
|
### WorldStalkerEditor.cpp
|
|
- **추가된 줄**:
|
|
- include 지시문 1줄
|
|
- StartupModule()에 2줄
|
|
- ShutdownModule()에 2줄
|
|
- 메서드 구현 2개 전체 (~24줄)
|
|
- **총**: ~29줄 추가
|
|
- **목적**: Tools 메뉴 통합 구현
|
|
|
|
---
|
|
|
|
## 병합 후 테스트
|
|
|
|
1. WorldStalkerEditor 모듈 리빌드
|
|
2. 언리얼 에디터 실행
|
|
3. `툴 → WorldStalker → Export Assets to JSON` 메뉴로 이동
|
|
4. `편집 → 프로젝트 설정 → 플러그인 → Asset Export to JSON`에서 설정 구성
|
|
5. 익스포트 실행 후 `Content/Exports/`에 JSON 파일이 생성되었는지 확인
|
|
|
|
---
|
|
|
|
## 롤백 방법
|
|
|
|
이 기능을 제거해야 하는 경우:
|
|
|
|
1. 새로 추가된 4개 파일 삭제:
|
|
- `AssetExportSettings.h`
|
|
- `AssetExportSettings.cpp`
|
|
- `AssetExporterToJSON.h`
|
|
- `AssetExporterToJSON.cpp`
|
|
|
|
2. `WorldStalkerEditor.h`에서 변경사항 제거:
|
|
- 두 개의 메서드 선언 삭제
|
|
|
|
3. `WorldStalkerEditor.cpp`에서 변경사항 제거:
|
|
- `#include "Utility/AssetExporterToJSON.h"` 줄 제거
|
|
- StartupModule()에서 UToolMenus 등록 제거
|
|
- ShutdownModule()에서 UToolMenus 정리 제거
|
|
- 두 개의 메서드 구현 삭제
|
|
|
|
4. 모듈 리빌드
|
|
|
|
---
|
|
|
|
## 연락처
|
|
|
|
변경사항 병합에 대한 질문:
|
|
- 작성자: jinilkim@oneunivrs.com
|
|
- 프로젝트: WorldStalker (DungeonStalkers)
|
|
- 모듈: WorldStalkerEditor
|