/Engine/Plugins/Runtime/NetworkPrediction/Source/NetworkPrediction/Public/Services/NetworkPredictionServiceRegistry.h
Future Improvements: -All services template classes are currently instantiated for all ModelDefs (the templated code is generated for each ModelDef) -Even if ModelDefs are incompatible for a given service. E.g, a pure physics ModelDef with no Simulation still has the TLocalInputServicecode instantiated. -To be clear: it does not instantiate an instance ofTLocalInputServiceat runtime, but the code is generated and almost certainly cannot be culled by the compiler. -Concepts could be used to determine if ModelDefs are compatible with Services and we could avoid the template code instantiation. -This would add more template machinery, and basically requires all TServicebe hidden behind SFINAE walls. E.g, Factories for instantiating and CallOrNot for Register/Unregister. -Its not clear if its worth the effort at this point. In practice there should be relatively few ModelDefs that would benefit from this. -But it could make a difference in some cases for build time and exe size
class FNetworkPredictionServiceRegistry
TServiceStorage...
FixedFinalize
TServiceStorage...
FixedInputLocal
TServiceStorage...
FixedInputRemote
TServiceStorage...
FixedInterpolate
TServiceStorage...
FixedPhysics
TServiceStorage...
FixedRollback
TServiceStorage...
FixedTick
TServiceStorage...
IndependentInterpolate
TServiceStorage...
IndependentLocalFinalize
TServiceStorage...
IndependentLocalInput
TServiceStorage...
IndependentLocalTick
TServiceStorage...
IndependentRemoteFinalize
TServiceStorage...
IndependentRemoteTick
TServiceStorage...
IndependentRollback
TServiceStorage...
ServerRPC
Declares generic storage for the service type: TServiceStorage