refactor: CanApply use structs instead of std::pair (#1523)
* refactor: CanApply use structs instead of std::pair * feat(CanApply): format nodes
This commit is contained in:
parent
7b552f71aa
commit
305f6e7e8d
@ -29,7 +29,12 @@
|
|||||||
|
|
||||||
namespace big
|
namespace big
|
||||||
{
|
{
|
||||||
static std::vector<std::pair<Hash, std::vector<uint64_t>>> trees = {
|
struct sync_tree_children
|
||||||
|
{
|
||||||
|
Hash parent;
|
||||||
|
std::vector<Hash> children;
|
||||||
|
};
|
||||||
|
static std::vector<sync_tree_children> trees = {
|
||||||
{RAGE_JOAAT("CAutomobileSyncTree"),
|
{RAGE_JOAAT("CAutomobileSyncTree"),
|
||||||
{
|
{
|
||||||
RAGE_JOAAT("CVehicleCreationDataNode"),
|
RAGE_JOAAT("CVehicleCreationDataNode"),
|
||||||
@ -420,7 +425,94 @@ namespace big
|
|||||||
}},
|
}},
|
||||||
};
|
};
|
||||||
|
|
||||||
static auto nodes = std::to_array<std::pair<Hash, uint64_t>>({{RAGE_JOAAT("CAutomobileCreationDataNode"), 0}, {RAGE_JOAAT("CBikeGameStateDataNode"), 0}, {RAGE_JOAAT("CBoatGameStateDataNode"), 0}, {RAGE_JOAAT("CDoorCreationDataNode"), 0}, {RAGE_JOAAT("CDoorMovementDataNode"), 0}, {RAGE_JOAAT("CDoorScriptGameStateDataNode"), 0}, {RAGE_JOAAT("CDoorScriptInfoDataNode"), 0}, {RAGE_JOAAT("CDynamicEntityGameStateDataNode"), 0}, {RAGE_JOAAT("CEntityOrientationDataNode"), 0}, {RAGE_JOAAT("CEntityScriptGameStateDataNode"), 0}, {RAGE_JOAAT("CEntityScriptInfoDataNode"), 0}, {RAGE_JOAAT("CGlobalFlagsDataNode"), 0}, {RAGE_JOAAT("CHeliControlDataNode"), 0}, {RAGE_JOAAT("CHeliHealthDataNode"), 0}, {RAGE_JOAAT("CMigrationDataNode"), 0}, {RAGE_JOAAT("CObjectCreationDataNode"), 0}, {RAGE_JOAAT("CObjectGameStateDataNode"), 0}, {RAGE_JOAAT("CObjectOrientationNode"), 0}, {RAGE_JOAAT("CObjectScriptGameStateDataNode"), 0}, {RAGE_JOAAT("CObjectSectorPosNode"), 0}, {RAGE_JOAAT("CPedAIDataNode"), 0}, {RAGE_JOAAT("CPedAppearanceDataNode"), 0}, {RAGE_JOAAT("CPedAttachDataNode"), 0}, {RAGE_JOAAT("CPedComponentReservationDataNode"), 0}, {RAGE_JOAAT("CPedCreationDataNode"), 0}, {RAGE_JOAAT("CPedGameStateDataNode"), 0}, {RAGE_JOAAT("CPedHealthDataNode"), 0}, {RAGE_JOAAT("CPedInventoryDataNode"), 0}, {RAGE_JOAAT("CPedMovementDataNode"), 0}, {RAGE_JOAAT("CPedMovementGroupDataNode"), 0}, {RAGE_JOAAT("CPedOrientationDataNode"), 0}, {RAGE_JOAAT("CPedScriptCreationDataNode"), 0}, {RAGE_JOAAT("CPedScriptGameStateDataNode"), 0}, {RAGE_JOAAT("CPedSectorPosMapNode"), 0}, {RAGE_JOAAT("CPedSectorPosNavMeshNode"), 0}, {RAGE_JOAAT("CPedTaskSequenceDataNode"), 0}, {RAGE_JOAAT("CPedTaskSpecificDataNode"), 0}, {RAGE_JOAAT("CPedTaskTreeDataNode"), 0}, {RAGE_JOAAT("CPhysicalAngVelocityDataNode"), 0}, {RAGE_JOAAT("CPhysicalAttachDataNode"), 0}, {RAGE_JOAAT("CPhysicalGameStateDataNode"), 0}, {RAGE_JOAAT("CPhysicalHealthDataNode"), 0}, {RAGE_JOAAT("CPhysicalMigrationDataNode"), 0}, {RAGE_JOAAT("CPhysicalScriptGameStateDataNode"), 0}, {RAGE_JOAAT("CPhysicalScriptMigrationDataNode"), 0}, {RAGE_JOAAT("CPhysicalVelocityDataNode"), 0}, {RAGE_JOAAT("CPickupCreationDataNode"), 0}, {RAGE_JOAAT("CPickupPlacementCreationDataNode"), 0}, {RAGE_JOAAT("CPickupPlacementStateDataNode"), 0}, {RAGE_JOAAT("CPickupScriptGameStateNode"), 0}, {RAGE_JOAAT("CPickupSectorPosNode"), 0}, {RAGE_JOAAT("CPlaneControlDataNode"), 0}, {RAGE_JOAAT("CPlaneGameStateDataNode"), 0}, {RAGE_JOAAT("CPlayerAmbientModelStreamingNode"), 0}, {RAGE_JOAAT("CPlayerAppearanceDataNode"), 0}, {RAGE_JOAAT("CPlayerCameraDataNode"), 0}, {RAGE_JOAAT("CPlayerCreationDataNode"), 0}, {RAGE_JOAAT("CPlayerExtendedGameStateNode"), 0}, {RAGE_JOAAT("CPlayerGameStateDataNode"), 0}, {RAGE_JOAAT("CPlayerGamerDataNode"), 0}, {RAGE_JOAAT("CPlayerPedGroupDataNode"), 0}, {RAGE_JOAAT("CPlayerSectorPosNode"), 0}, {RAGE_JOAAT("CPlayerWantedAndLOSDataNode"), 0}, {RAGE_JOAAT("CSectorDataNode"), 0}, {RAGE_JOAAT("CSectorPositionDataNode"), 0}, {RAGE_JOAAT("CSubmarineControlDataNode"), 0}, {RAGE_JOAAT("CSubmarineGameStateDataNode"), 0}, {RAGE_JOAAT("CTrainGameStateDataNode"), 0}, {RAGE_JOAAT("CVehicleAngVelocityDataNode"), 0}, {RAGE_JOAAT("CVehicleAppearanceDataNode"), 0}, {RAGE_JOAAT("CVehicleComponentReservationDataNode"), 0}, {RAGE_JOAAT("CVehicleControlDataNode"), 0}, {RAGE_JOAAT("CVehicleCreationDataNode"), 0}, {RAGE_JOAAT("CVehicleDamageStatusDataNode"), 0}, {RAGE_JOAAT("CVehicleGadgetDataNode"), 0}, {RAGE_JOAAT("CVehicleGameStateDataNode"), 0}, {RAGE_JOAAT("CVehicleHealthDataNode"), 0}, {RAGE_JOAAT("CVehicleProximityMigrationDataNode"), 0}, {RAGE_JOAAT("CVehicleScriptGameStateDataNode"), 0}, {RAGE_JOAAT("CVehicleSteeringDataNode"), 0}, {RAGE_JOAAT("CVehicleTaskDataNode"), 0}});
|
struct sync_node
|
||||||
|
{
|
||||||
|
Hash node_hash;
|
||||||
|
void* vtable_addr;
|
||||||
|
};
|
||||||
|
static auto nodes = std::to_array<sync_node>({
|
||||||
|
{RAGE_JOAAT("CAutomobileCreationDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CBikeGameStateDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CBoatGameStateDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CDoorCreationDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CDoorMovementDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CDoorScriptGameStateDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CDoorScriptInfoDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CDynamicEntityGameStateDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CEntityOrientationDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CEntityScriptGameStateDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CEntityScriptInfoDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CGlobalFlagsDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CHeliControlDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CHeliHealthDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CMigrationDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CObjectCreationDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CObjectGameStateDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CObjectOrientationNode"), 0},
|
||||||
|
{RAGE_JOAAT("CObjectScriptGameStateDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CObjectSectorPosNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPedAIDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPedAppearanceDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPedAttachDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPedComponentReservationDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPedCreationDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPedGameStateDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPedHealthDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPedInventoryDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPedMovementDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPedMovementGroupDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPedOrientationDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPedScriptCreationDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPedScriptGameStateDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPedSectorPosMapNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPedSectorPosNavMeshNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPedTaskSequenceDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPedTaskSpecificDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPedTaskTreeDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPhysicalAngVelocityDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPhysicalAttachDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPhysicalGameStateDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPhysicalHealthDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPhysicalMigrationDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPhysicalScriptGameStateDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPhysicalScriptMigrationDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPhysicalVelocityDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPickupCreationDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPickupPlacementCreationDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPickupPlacementStateDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPickupScriptGameStateNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPickupSectorPosNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPlaneControlDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPlaneGameStateDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPlayerAmbientModelStreamingNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPlayerAppearanceDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPlayerCameraDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPlayerCreationDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPlayerExtendedGameStateNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPlayerGameStateDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPlayerGamerDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPlayerPedGroupDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPlayerSectorPosNode"), 0},
|
||||||
|
{RAGE_JOAAT("CPlayerWantedAndLOSDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CSectorDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CSectorPositionDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CSubmarineControlDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CSubmarineGameStateDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CTrainGameStateDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CVehicleAngVelocityDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CVehicleAppearanceDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CVehicleComponentReservationDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CVehicleControlDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CVehicleCreationDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CVehicleDamageStatusDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CVehicleGadgetDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CVehicleGameStateDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CVehicleHealthDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CVehicleProximityMigrationDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CVehicleScriptGameStateDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CVehicleSteeringDataNode"), 0},
|
||||||
|
{RAGE_JOAAT("CVehicleTaskDataNode"), 0},
|
||||||
|
});
|
||||||
|
|
||||||
static void cache_nodes()
|
static void cache_nodes()
|
||||||
{
|
{
|
||||||
@ -429,9 +521,9 @@ namespace big
|
|||||||
if (i == (int)eNetObjType::NET_OBJ_TYPE_TRAILER)
|
if (i == (int)eNetObjType::NET_OBJ_TYPE_TRAILER)
|
||||||
continue;
|
continue;
|
||||||
rage::netSyncTree* tree = g_pointers->m_gta.m_get_sync_tree_for_type(*g_pointers->m_gta.m_network_object_mgr, i);
|
rage::netSyncTree* tree = g_pointers->m_gta.m_get_sync_tree_for_type(*g_pointers->m_gta.m_network_object_mgr, i);
|
||||||
if (tree->m_child_node_count > trees[i].second.size())
|
if (tree->m_child_node_count > trees[i].children.size())
|
||||||
{
|
{
|
||||||
LOG(FATAL) << "Cache nodes failed " << i << tree->m_child_node_count << " " << trees[i].second.size();
|
LOG(FATAL) << "Cache nodes failed " << i << tree->m_child_node_count << " " << trees[i].children.size();
|
||||||
throw std::runtime_error("Failed to cache nodes");
|
throw std::runtime_error("Failed to cache nodes");
|
||||||
}
|
}
|
||||||
for (int j = 0; j < tree->m_child_node_count; j++)
|
for (int j = 0; j < tree->m_child_node_count; j++)
|
||||||
@ -439,9 +531,9 @@ namespace big
|
|||||||
PVOID vft = *(PVOID*)tree->m_child_nodes[j];
|
PVOID vft = *(PVOID*)tree->m_child_nodes[j];
|
||||||
for (auto& n : nodes)
|
for (auto& n : nodes)
|
||||||
{
|
{
|
||||||
if (n.first == trees[i].second[j])
|
if (n.node_hash == trees[i].children[j])
|
||||||
{
|
{
|
||||||
n.second = (uint64_t)vft;
|
n.vtable_addr = vft;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -543,9 +635,9 @@ namespace big
|
|||||||
|
|
||||||
for (const auto& n : nodes)
|
for (const auto& n : nodes)
|
||||||
{
|
{
|
||||||
if ((void*)n.second == vtable)
|
if (n.vtable_addr == vtable)
|
||||||
{
|
{
|
||||||
node_hash = n.first;
|
node_hash = n.node_hash;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user