Files
DS-Asset_Export_to_JSON/MERGE_INSTRUCTIONS.md

232 lines
6.1 KiB
Markdown
Raw Permalink Normal View History

# 기존 파일 병합 가이드
이 문서는 기존 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