32#define STUB_SYSTEM(Name) \
33 class Name##System final : public ECSSystem<Name##System, Name##Component> {\
34 public: explicit Name##System(ECS::ECSEngine& parentEngine) : ECSSystem(parentEngine) {}\
54 auto* IKSys = _ecsEngine.GetSystemManager()->AddSystem<
IKSystem>(_ecsEngine);
56 auto* NetSys = _ecsEngine.GetSystemManager()->AddSystem<
NetworkingSystem>(_ecsEngine);
57 auto* RagSys = _ecsEngine.GetSystemManager()->AddSystem<
RagdollSystem>(_ecsEngine);
59 auto* ScpSys = _ecsEngine.GetSystemManager()->AddSystem<
ScriptSystem>(_ecsEngine);
61 auto* UnitSys = _ecsEngine.GetSystemManager()->AddSystem<
UnitSystem>(_ecsEngine);
81 _ecsEngine.GetSystemManager()->UpdateSystemWorkOrder();
87 const auto saveSystemCache = [sgn, &outputBuffer](
ECS::ISystem* system) {
89 if (!serializer.
saveCache(sgn, outputBuffer)) {
98 _ecsEngine.GetSystemManager()->ForEachSystem(saveSystemCache);
104 inputBuffer >> tempVer;
106 const auto loadSystemCache = [sgn, &inputBuffer](
ECS::ISystem* system) {
108 if (!serializer.
loadCache(sgn, inputBuffer)) {
115 _ecsEngine.GetSystemManager()->ForEachSystem(loadSystemCache);
#define STUB_SYSTEM(Name)
void readSkipToMarker(const T(&pattern)[N])
Skip (consume) everything in the buffer until we find the specified list of items....
void addMarker(const T(&pattern)[N])
Add a specific list of items in order to mark a special point in the buffer. Can be used for skipping...
bool saveCache(const SceneGraphNode *sgn, ByteBuffer &outputBuffer) const
ECSManager(PlatformContext &context, ECS::ECSEngine &engine)
bool loadCache(SceneGraphNode *sgn, ByteBuffer &inputBuffer) const
PlatformContext & _context
void AddDependencies(Dependencies &&... dependencies)
Handle console commands that start with a forward slash.
constexpr U32 g_cacheMarkerByteValue[2]
constexpr U16 BYTE_BUFFER_VERSION
static NO_INLINE void errorfn(const char *format, T &&... args)
virtual bool loadCache(SceneGraphNode *sgn, ByteBuffer &inputBuffer)=0
virtual bool saveCache(const SceneGraphNode *sgn, ByteBuffer &outputBuffer)=0