랜드스케이프 데이터를 임포트하기 위한 자체 하이트맵 및 웨이트맵 포맷을 만들려면 플러그인을 작성해야 합니다. 작성한 플러그인을 통해 새로운 포맷을 엔진에 추가하고 파일에서 데이터를 임포트할 수 있습니다.
커스텀 임포터 작성하기
새 임포터를 만들려면, 플러그인에서
ILandscapeHeightmapFileFormat
및ILandscapeWeightmapFileFormat
을 구현하는 오브젝트의 인스턴스를 생성하고, 이러한 오브젝트를 각각ILandscapeEditorModulemodule::RegisterHeightmapFileFormat
및ILandscapeEditorModulemodule::RegisterWeightmapFileFormat
으로 등록해야 합니다.플러그인에서
ILandscapeHeightmapFileFormat
인터페이스를 구현하려면 다음 함수를 오버라이드해야 합니다.const FLandscapeFileTypeInfo& GetInfo() const
: 이 클래스가 처리하는 파일 타입과 익스포트 지원 여부를 나타내는 타입 정보를 반환합니다.FLandscapeHeightmapInfo Validate(const TCHAR* HeightmapFilename) const
- 명명된 파일의 유효성을 검사하거나 파일을 거부하고 오류 코드와 메시지를 반환합니다.FLandscapeHeightmapImportData Import(const TCHAR* HeightmapFilename, FLandscapeFileResolution ExpectedResolution) const
- 실제로 파일을 임포트합니다.void Export(const TCHAR* HeightmapFilename, TArrayView<const uint16> Data, FLandscapeFileResolution DataResolution, FVector Scale) const
-GetInfo
의 반환 값을 참조하여 이 포맷이 익스포트를 지원하는 경우 파일을 익스포트합니다. 이 함수는 컴파일하기 위해 오버라이드할 필요가 없는 유일한 함수입니다. 하지만, 오버라이드 없이 호출되면check
를 호출합니다.(Destructor)
- 이 인터페이스를 구현하는 클래스는 인터페이스 클래스에 대한 포인터를 통해 삭제되므로 가상 소멸자를 사용해야 합니다.
ILandscapeWeightmapFileFormat
인터페이스 구현은 일부 반환 타입만 약간 다를 뿐 거의 동일합니다.const FLandscapeFileTypeInfo& GetInfo() const
- 이 클래스가 처리하는 파일 타입과 익스포트 지원 여부를 나타내는 타입 정보를 반환합니다.FLandscapeWeightmapInfo Validate(const TCHAR* WeightmapFilename) const
- 명명된 파일의 유효성을 검사하거나 파일을 거부하고 오류 코드와 메시지를 반환합니다.FLandscapeWeightmapImportData Import(const TCHAR* WeightmapFilename, FLandscapeFileResolution ExpectedResolution) const
- 실제로 파일을 임포트합니다.void Export(const TCHAR* WeightmapFilename, TArrayView<const uint16> Data, FLandscapeFileResolution DataResolution, FVector Scale) const
- GetInfo의 반환 값을 참조하여 이 포맷이 익스포트를 지원하는 경우 파일을 익스포트합니다. 이 함수는 컴파일하기 위해 오버라이드할 필요가 없는 유일한 함수입니다. 하지만, 오버라이드 없이 호출되면
check` 를 호출합니다.(Destructor)
- 이 인터페이스를 구현하는 클래스는 인터페이스 클래스에 대한 포인터를 통해 삭제되므로 가상 소멸자를 사용해야 합니다.
추가 정보와 예시는
LandscapeFileFormatInterfaces.h
의 인터페이스,LandscapeFileFormatPng.cpp
및LandscapeFileFormatPng.h
의 .PNG 구현,LandscapeFileFormatRaw.cpp
및LandscapeFileFormatRaw.h
의 .RAW 구현을 참고하면 됩니다. 이 모든 코드는 엔진의 LandscapeEditor 모듈에 있습니다.