Hooking into saving serialization
C++
/**
* Called from within SavePackage on the passed in base/ root. The return value of this function will be passed to
* PostSaveRoot. This is used to allow objects used as base to perform required actions before saving and cleanup
* afterwards.
* @param Filename: Name of the file being saved to (includes path)
* @param AdditionalPackagesToCook [out] Array of other packages the Root wants to make sure are cooked when this is cooked
*
* @return Whether PostSaveRoot needs to perform internal cleanup
*/
virtual bool PreSaveRoot(const TCHAR\* Filename, TArray<FString>& AdditionalPackagesToCook)
{
return false;
}
/**
* Presave function. Gets called once before an object gets serialized for saving. This function is necessary
* for save time computation as Serialize gets called three times per object from within SavePackage.
*
* @warning: Objects created from within PreSave will NOT have PreSave called on them!!!
*/
virtual void PreSave(const class ITargetPlatform\* TargetPlatform);
Make sure to override cooking process somehow so that any lazily referenced objects in your new asset are added to the cook & inclusion process
Look at UDataTable::Serialize() & UWorld::AddReferencedObjects &
UWorld::PreSaveRoot(const TCHAR\* **Filename**, TArray<FString>& **AdditionalPackagesToCook**)
virtual void CookAdditionalFiles( const TCHAR* PackageFilename, const ITargetPlatform* TargetPlatform ) { }