Пользовательские дополнения

На главную


object.GetProjectedInfo( objectId )

Возвращает для объекта информацию об его 2D проекции на экран, если он есть в списке для проецирования в 2D координаты.

Точка (0, 0) - центр экрана. (-1, -1) - левый верхний угол. (1, 1) - правый нижний угол.

Если какая-либо возвращаемая координата равна 1 или -1, то объект находится за зоной видимости. Если обе координаты в промежутке (-1, 1), то проецируемая точка видна на экране.

-- библиотека
object

-- семантика
function GetProjectedInfo( objectId )

-- входные параметры:
objectId: ObjectId - идентификатор объекта

-- возвращаемое значение:
table or nil - если объект найден и он в списке для проецирования, то таблица с полями:
  posX: number - 2D экранная координата в интервале [-1, 1]
  posY: number - 2D экранная координата в интервале [-1, 1]
  playerDistance: number - дистанция от объекта до главного игрока в метрах
  cameraDistance: number - дистанция от объекта до камеры в метрах
  isLos: boolean - false, если на линии видимости до объекта какое-то препятствие.
  canProject: boolean - false, если объект не может быть спроецирован. например изменились условия, и он теперь не детектируется детекторами. В обычной ситуации всегда true.

-- пример
local show = true

local projectedInfo =object.GetProjectedInfo( avatar.GetTarget() )
if projectedInfo then

  local position = {} -- экранные координаты в пикселях
  position.x = projectedInfo.posX * width / 2
  position.y = projectedInfo.posY * height / 2

  -- попадание 3D точки в зону видимости
  if ( math.abs( projectedInfo.posX ) ~= 1 ) and ( math.abs( projectedInfo.posY ) ~= 1 ) then
    if projectedInfo.isLos then
      show = false -- точка видна на экране - не показываем
    else
      position.y = -height / 2 -- точка за препятствием - показываем сверху
    end
  end
end

Search: "CategoryLuaApi" "CategoryProjectedObject"

EnumAttachedObjectPos
EventProjectedObjectChanged
FunctionObjectAddToProjected
FunctionObjectGetProjectedInfo
FunctionObjectRemoveFromProjected
FunctionObjectSetControl3DForProjected

Search: "CategoryLuaApi" "CategoryObject"

EnumVendor
EventCannotAttachWidget3D
EventObjectDetectFinished
EventObjectDetectorListChanged
EventObjectDetectStarted
EventPickObject
EventProjectedObjectChanged
EventQuestMarkUpdated
EventSecretFinisherStatusChanged
FunctionAvatarEnableClientDetector
FunctionAvatarGetDetectedObjects
FunctionAvatarIsClientDetectorEnabled
FunctionObjectAddToProjected
FunctionObjectAttachVisibleObject
FunctionObjectAttachWidget2D
FunctionObjectAttachWidget3D
FunctionObjectDetachWidget2D
FunctionObjectDetachWidget3D
FunctionObjectGetDetectors
FunctionObjectGetInteractorInfo
FunctionObjectGetName
FunctionObjectGetPos
FunctionObjectGetProjectedInfo
FunctionObjectGetQuestMark
FunctionObjectGetWorldSecrets
FunctionObjectHasOnlyRepeatableQuests
FunctionObjectHasQuest
FunctionObjectHasWorldSecret
FunctionObjectHighlight
FunctionObjectIsAstralUnit
FunctionObjectIsDevice
FunctionObjectIsExist
FunctionObjectIsInUsageRange
FunctionObjectIsTransport
FunctionObjectIsUnit
FunctionObjectIsUsable
FunctionObjectIsVendor
FunctionObjectRemoveFromProjected
FunctionObjectSetControl3DForProjected
FunctionObjectSetCutTerrainArea
FunctionObjectUse


CategoryLuaApi CategoryFunction CategoryObject CategoryProjectedObject

На главную