C++ 4.16 Transition Guide

This seems like a really ugly change, but if you’re defining properties or net serializers etc. for custom USTRUCTS, the TStructOpsTypeTraitsBase class has changed.

For example, this:



template<>
struct TStructOpsTypeTraits<FOrbSecondaryTickFunction> : public TStructOpsTypeTraitsBase
{
	enum
	{
		WithCopy = false
	};
};


Becomes this:



template<>
struct TStructOpsTypeTraits<FOrbSecondaryTickFunction> : public TStructOpsTypeTraitsBase2<FOrbSecondaryTickFunction>
{
	enum
	{
		WithCopy = false
	};
};


Additionally, some network properties have now been moved into a single struct type. This:



		const UWorld* MyWorld = GetWorld();
		if (MyWorld && MyWorld->GetTimeSeconds() <= GetOwner()->NetUpdateTime)
		{
			UNetDriver* NetDriver = MyWorld->GetNetDriver();
			if (NetDriver && NetDriver->IsServer())
			{
				FNetworkObjectInfo* NetActor = NetDriver->GetNetworkActor(GetOwner());
				if (NetActor && NetDriver->IsNetworkActorUpdateFrequencyThrottled(*NetActor) && ShouldCancelAdaptiveReplication())
				{
					NetDriver->CancelAdaptiveReplication(*NetActor);
				}
			}
		}


Becomes this:



		const UWorld* MyWorld = GetWorld();
		if (MyWorld && MyWorld->GetTimeSeconds() <= GetOwner()->GetNetworkObjectInfo()->NextUpdateTime)
		{
			UNetDriver* NetDriver = MyWorld->GetNetDriver();
			if (NetDriver && NetDriver->IsServer())
			{
				FNetworkObjectInfo* NetActor = NetDriver->GetNetworkObjectInfo(GetOwner());
				if (NetActor && NetDriver->IsNetworkActorUpdateFrequencyThrottled(*NetActor) && ShouldCancelAdaptiveReplication())
				{
					NetDriver->CancelAdaptiveReplication(*NetActor);
				}
			}
		}


You’ll also need to add this include to the .cpp file:

#include "Engine/NetworkObjectList.h"