I have just upgraded to 5.5, which has fixed the linker error when tagging the net filter object as UCLASS.
Another issue that I then faced was an ensure about missing the ‘MyNetFilterConfig’ class. I simply had to create this class (empty UCLASS derived from UNetObjectFilterConfig) myself, but this isn’t explictly said on the following page:
So here is the final header file:
#pragma once
include “Iris/ReplicationSystem/Filtering/NetObjectFilter.h”
include “MyNetObjectFilter.generated.h”
UCLASS(Transient, MinimalAPI)
class UMyNetObjectFilterConfig final : public UNetObjectFilterConfig
{
GENERATED_BODY()
};UCLASS()
class UMyNetObjectFilter : public UNetObjectFilter
{
GENERATED_BODY()public:
// UNetObjectFilter interface
virtual void OnInit(const FNetObjectFilterInitParams& Params) override;
virtual void OnDeinit() override;
virtual void OnMaxInternalNetRefIndexIncreased(uint32 NewMaxInternalIndex) override;
virtual void AddConnection(uint32 ConnectionId) override;
virtual void RemoveConnection(uint32 ConnectionId) override;
virtual bool AddObject(uint32 ObjectIndex, FNetObjectFilterAddObjectParams& Params) override;
virtual void RemoveObject(uint32 ObjectIndex, const FNetObjectFilteringInfo& Info) override;
virtual void UpdateObjects(FNetObjectFilterUpdateParams& Params) override;
virtual void PreFilter(FNetObjectPreFilteringParams& Parms) override;
virtual void Filter(FNetObjectFilteringParams& Params) override;
virtual void PostFilter(FNetObjectPostFilteringParams& Params) override;};
The first three methods (OnInit, OnDeinit, OnMaxInternalNetRefIndexIncreased) must be overridden (pure virtual). The remaining are optional.
And finally, in DefaultEngine.ini:
[/Script/IrisCore.NetObjectFilterDefinitions]
+NetObjectFilterDefinitions=(FilterName=MyNetObjectFilter, ClassName=/Script/MyProjectName.MyNetObjectFilter, ConfigClassName=/Script/MyProjectName.MyNetObjectFilterConfig)