Возвращает геодату, необходимую для проецирования координат интерактивного объекта в реальном мира в координаты текстуры интерфейсной карты.
Возвращается, если интерактивный объект objectId находится в зоне, принадлежащей интерфейсной карте зон zonesMapId. если он не находится в этих зонах, то геодата не может быть получена и возвращается nil.
Работает только для главного игрока, членов его группы и рейда, а так же для объектов, задетекченных детекторами, если такие есть.
См. Geodata.
-- библиотека:
cartographer
-- объявление:
function GetObjectGeodata( objectId, zonesMapId )
-- параметры:
objectId: ObjectId - идентификатор интерактивного объекта
zonesMapId: ObjectId or nil - идентификатор интерфейсной карты зоны, для которой надо получить геодату, если nil то будет взята зона на которой находится объект
-- возвращаемые значения
table (Geodata) or nil - геодата
Пример:
<pre>
local geodata = cartographer.GetObjectGeodata( objectId, currentZonesMapId )
if geodata then
local pos = object.GetPos( unitId )
if pos then
local pixelsPerMeterX = ( MAP_TEXTURE_X / geodata.width )
local pixelsPerMeterY = ( MAP_TEXTURE_Y / geodata.height )
local mapCenterX = geodata.x + ( geodata.width / 2 )
local mapCenterY = geodata.y + ( geodata.height / 2 )
texturePosX = math.ceil( ( pos.posX - mapCenterX ) * pixelsPerMeterX )
texturePosY = math.ceil( ( mapCenterY - pos.posY ) * pixelsPerMeterY )
end
end