GTAV-Classes-private/netsync/CProjectBaseSyncDataNode.hpp

46 lines
2.8 KiB
C++
Raw Permalink Normal View History

2024-09-25 08:11:17 -04:00
#pragma once
#include "netSyncDataNode.hpp"
#include "NodeCommonDataOperations.hpp"
namespace rage
{
class netSyncData;
class netObject;
}
class CProjectBaseSyncDataNode : public rage::netSyncDataNode
{
public:
virtual bool IsSyncNode() { return false; } // 0x50
virtual bool _0x58() { return false; } // 0x58
virtual bool IsGlobalFlags() { return false; } // 0x60
virtual void DoPreCache(rage::netSyncData* data) {} // 0x68
virtual std::uint8_t GetSyncFrequency(int index) { return 0; } // 0x70
virtual int GetSyncInterval(int index) { return 0; } // 0x78
virtual int GetBandwidthForPlayer(int player) { return 200; } // 0x80 (should always return 200)
virtual void _0x88(void*) {} // 0x88
virtual bool _0x90(void*, void*, int, int, int) { return false; } // 0x90
virtual int CalculateSize() { return 0; } // 0x98 need to verify later
virtual bool IsPreCacheDisabled() { return false; } // 0xA0
virtual bool CanApply(rage::netObject* object) { return false; } // 0xA8
virtual int GetPlayersInScope() { return -1; } // 0xB0
virtual void DeserializeImpl() {} // 0xB8 need to verify later
virtual void SerializeImpl() {} // 0xC0 need to verify later
virtual int CalculateSize2() { return 0; } // 0xC8
virtual int _0xD0() { return 0; } // 0xD0 calls NodeCommonDataOperations::Unk()
virtual void Log() {} // 0xD8
virtual bool CanPreCache(int) { return false; } // 0xE0 arg is always zero afaik
virtual bool CanBeEmpty() { return false; } // 0xE8
virtual bool IsEmpty() { return false; } // 0xF0 returns true if all data is default
virtual void SetEmpty() {} // 0xF8 sets all data to their default values
virtual void Log2() {} // 0x100
virtual void ResetScriptData() {} // 0x108
virtual bool _0x110() { return false; } // 0x110
private:
NodeCommonDataOperations m_common_data_operations; // 0xB0 this is generally invalidated by MoveCommonDataOpsVFT()
};
static_assert(sizeof(CProjectBaseSyncDataNode) == 0xC0);
class CSyncDataNodeFrequent : public CProjectBaseSyncDataNode {};
class CSyncDataNodeInfrequent : public CProjectBaseSyncDataNode {};