rock-mod
Version:
Rock-Mod is a powerful framework designed for creating and managing mods for Grand Theft Auto (GTA) games.
32 lines (31 loc) • 1.65 kB
JavaScript
/// <reference types="@classic-mp/types/client" />
/**
* Реализация `IPathfindManager` под CCMP.
*
* RageMP `mp.game.pathfind.getStreetNameAtCoord` маппится 1:1 на GTA V натив
* `GET_STREET_NAME_AT_COORD` (`0x2EB41072B4C1E4C0`), который в CCMP экспонирован
* как `ccmp.natives.pathfind.getStreetNameAtCoord`. Натив возвращает два хэша
* локализационных GXT-ключей — улицу и пересекающую дорогу (или 0 для второй,
* если в точке нет пересечения).
*
* **Hot path:** вызывается ~раз в секунду из `HudController.onInterval` →
* `HudService.syncCurrentLocation` → `LocationService.getCurrentLocation` →
* `LocationService.getLocationByCords` → `RockModLocationAdapter.getStreetByCords`.
* Не render-tick, но всё равно высокая частота — синхронный native-call,
* стоимость незначительная.
*
* ### Маппинг полей
*
* CCMP-натив возвращает `{streetname, crossingroad}` (lowercase, как в C++
* биндинге), интерфейс `IStreetNameHash` ожидает `{streetName, crossingRoad}`
* (camelCase). Переименовываем в return-statement.
*/
export class CCMPPathfindManager {
getStreetNameAtCoord(position) {
const result = ccmp.natives.pathfind.getStreetNameAtCoord(position.x, position.y, position.z);
return {
streetName: result.streetname,
crossingRoad: result.crossingroad,
};
}
}