FArchive& FObjectReader::operator<<( class FAssetPtr& AssetPtr )
{
	FArchive& Ar = *this;
	FStringAssetReference ID;
	ID.Serialize(Ar);

	AssetPtr = ID;
	return Ar;
}
FArchive& FDuplicateDataReader::operator<<( FAssetPtr& AssetPtr)
{
	FArchive& Ar = *this;
	FStringAssetReference ID;
	ID.Serialize(Ar);

	AssetPtr = ID;
	return Ar;
}
FArchive& FLinkerSave::operator<<( FAssetPtr& AssetPtr)
{
	FStringAssetReference ID;
	UObject *Object = AssetPtr.Get();

	if (Object)
	{
		// Use object in case name has changed. 
		ID = FStringAssetReference(Object);
	}
	else
	{
		ID = AssetPtr.GetUniqueID();
	}

	ID.Serialize(*this);
	return *this;
}
FArchive& FDuplicateDataWriter::operator<<(FAssetPtr& AssetPtr)
{
	FStringAssetReference ID = AssetPtr.GetUniqueID();
	ID.Serialize(*this);
	return *this;
}
FArchive& FObjectWriter::operator<<( class FAssetPtr& AssetPtr )
{
	FStringAssetReference ID = AssetPtr.GetUniqueID();
	ID.Serialize(*this);
	return *this;
}