VE Lua Documentation

Press F to search!

getNodePosition

Definition


-- @/=[C]:-1
function getNodePosition(...)

Callers

@/lua/ge/extensions/freeroam/dragRace.lua
      local axisNodes = vehicle:getWheelAxisNodes(i)
      local nodePos = vehicle:getNodePosition(axisNodes[1])
      local wheelNodePos = vehicle:getPosition() + vec3(nodePos.x, nodePos.y, nodePos.z)
@/lua/vehicle/extensions/tech/impactgen/damageEvaluation.lua

    p1 = obj:getNodePosition(id1)
    p2 = obj:getNodePosition(id2)
    p1 = obj:getNodePosition(id1)
    p2 = obj:getNodePosition(id2)
@/lua/vehicle/controller/couplings/fifthwheel.lua
  local position = obj:getPosition()
  local nodePostion = obj:getNodePosition(fifthwheelNodeCid)
  local distance = ((position + nodePostion) - data.nodePosition):length()
@/lua/vehicle/extensions/tech/wheelForces.lua
  for _, data in ipairs(wheelData) do
    local axleNodePos1 = obj:getNodePosition(data.axleNode1)
    local axleNodePos2 = obj:getNodePosition(data.axleNode2)
    local axleNodePos1 = obj:getNodePosition(data.axleNode1)
    local axleNodePos2 = obj:getNodePosition(data.axleNode2)
    local wheelLeftVector = (axleNodePos1 - axleNodePos2):normalized() * data.wheelDirection
      for _, beam in ipairs(data.rimBeamsNode1) do
        p1 = vehiclePos + obj:getNodePosition(v.data.beams[beam].id1)
        p2 = vehiclePos + obj:getNodePosition(v.data.beams[beam].id2)
        p1 = vehiclePos + obj:getNodePosition(v.data.beams[beam].id1)
        p2 = vehiclePos + obj:getNodePosition(v.data.beams[beam].id2)
        obj.debugDrawProxy:drawCylinder(p1, p2, 0.01, color(255, 255, 0, 128))
      for _, beam in ipairs(data.rimBeamsNode2) do
        p1 = vehiclePos + obj:getNodePosition(v.data.beams[beam].id1)
        p2 = vehiclePos + obj:getNodePosition(v.data.beams[beam].id2)
        p1 = vehiclePos + obj:getNodePosition(v.data.beams[beam].id1)
        p2 = vehiclePos + obj:getNodePosition(v.data.beams[beam].id2)
        obj.debugDrawProxy:drawCylinder(p1, p2, 0.01, color(255, 255, 0, 128))
      for _, beamData in ipairs(data.sidewallBeamsNode1) do
        p1 = vehiclePos + obj:getNodePosition(v.data.beams[beamData.beamId].id1)
        p2 = vehiclePos + obj:getNodePosition(v.data.beams[beamData.beamId].id2)
        p1 = vehiclePos + obj:getNodePosition(v.data.beams[beamData.beamId].id1)
        p2 = vehiclePos + obj:getNodePosition(v.data.beams[beamData.beamId].id2)
        obj.debugDrawProxy:drawCylinder(p1, p2, 0.01, color(128, 255, 128, 128))
      for _, beamData in ipairs(data.sidewallBeamsNode2) do
        p1 = vehiclePos + obj:getNodePosition(v.data.beams[beamData.beamId].id1)
        p2 = vehiclePos + obj:getNodePosition(v.data.beams[beamData.beamId].id2)
        p1 = vehiclePos + obj:getNodePosition(v.data.beams[beamData.beamId].id1)
        p2 = vehiclePos + obj:getNodePosition(v.data.beams[beamData.beamId].id2)
        obj.debugDrawProxy:drawCylinder(p1, p2, 0.01, color(128, 255, 128, 128))
      for _, beamId in ipairs(data.suspensionBeamsNode1) do
        p1 = vehiclePos + obj:getNodePosition(v.data.beams[beamId].id1)
        p2 = vehiclePos + obj:getNodePosition(v.data.beams[beamId].id2)
        p1 = vehiclePos + obj:getNodePosition(v.data.beams[beamId].id1)
        p2 = vehiclePos + obj:getNodePosition(v.data.beams[beamId].id2)
        obj.debugDrawProxy:drawCylinder(p1, p2, 0.01, color(128, 255, 128, 128))
      for _, beamId in ipairs(data.suspensionBeamsNode2) do
        p1 = vehiclePos + obj:getNodePosition(v.data.beams[beamId].id1)
        p2 = vehiclePos + obj:getNodePosition(v.data.beams[beamId].id2)
        p1 = vehiclePos + obj:getNodePosition(v.data.beams[beamId].id1)
        p2 = vehiclePos + obj:getNodePosition(v.data.beams[beamId].id2)
        obj.debugDrawProxy:drawCylinder(p1, p2, 0.01, color(255, 255, 0, 128))
      for _, treadNodeId in ipairs(data.treadNodes) do
        p1 = vehiclePos + obj:getNodePosition(treadNodeId)
        obj.debugDrawProxy:drawSphere(0.02, p1, color(255, 0, 0, 255))
@/lua/ge/extensions/util/nodeStream.lua
    -- Current positions
    local nodePos = vehicle:getNodePosition(j)
    nodeData.nodes[j] = {
@/lua/ge/extensions/gameplay/crawl/utils.lua
      local axisNodes = veh:getWheelAxisNodes(i)
      local nodePos = vec3(veh:getNodePosition(axisNodes[1]))
      local pos = vec3(nodePos:dot(x), nodePos:dot(y), nodePos:dot(z))
@/lua/ge/extensions/editor/api/roadRiver.lua
  for i = 0, object:getNodeCount()-1 do
    local node = {pos = object:getNodePosition(i), width = object:getNodeWidth(i)}
    if object.getNodeDepth then
@/lua/ge/extensions/scenario/waypoints.lua
        local axisNodes = vehicle:getWheelAxisNodes(i)
        local nodePos = vec3(vehicle:getNodePosition(axisNodes[1]))
        local pos = vec3(nodePos:dot(x), nodePos:dot(y), nodePos:dot(z))
@/lua/ge/extensions/tech/utils.lua
    local vid = be:getPlayerVehicleID(0)
    local driverNodePos = veh:getNodePosition(core_camera.getDriverDataById(vid))
    local args = {}
@/lua/ge/extensions/ui/vehicleVicinityApp.lua
  for nodeId, node in ipairs(couplerCache[vehId]) do
    node.livePos = veh:getNodePosition(node.cid) + vehPosition
  end
@/lua/vehicle/extensions/aeroDebug.lua
  for _, wd in pairs(wheels.wheels) do
    local pos1 = obj:getNodePosition(wd.node1) + obj:getPosition()
    local pos2 = obj:getNodePosition(wd.node2) + obj:getPosition()
    local pos1 = obj:getNodePosition(wd.node1) + obj:getPosition()
    local pos2 = obj:getNodePosition(wd.node2) + obj:getPosition()
    local middlePos = (pos2 + pos1) * 0.5
@/lua/ge/map.lua
            end
            mapNodes[prevName] = {pos = road:getNodePosition(0), radius = road:getNodeWidth(0) * 0.5, links = {}, noMerge = noMerge, endNode = true}
            for i = 1, nodeCount - 1 do
              local nodeName = nameNode(prefix, i+1)
              local pos = road:getNodePosition(i)
              local radius = road:getNodeWidth(i) * 0.5
@/lua/ge/extensions/editor/gen/exp_meshexplorer.lua
        for id, veh in activeVehiclesIterator() do
            lo('??++++++++++++++++++++++ veh:'..id..':'..veh:getNodeCount()..':'..tostring(veh:getNodePosition(1))..':'..veh:getJBeamFilename()) --.':'..tostring(veh:getPosition())..':'..tostring(veh:getNodePosition(veh:getRefNodeId()))) --..':'..tableSize(veh.vdata.beams))
            lo('?? forPos:'..tostring(veh:getPosition())..':'..tostring(be:getObjectByID(pvd.id):getPosition())..':'..tostring(veh:getNodePosition(veh:getRefNodeId())))
        for id, veh in activeVehiclesIterator() do
            lo('??++++++++++++++++++++++ veh:'..id..':'..veh:getNodeCount()..':'..tostring(veh:getNodePosition(1))..':'..veh:getJBeamFilename()) --.':'..tostring(veh:getPosition())..':'..tostring(veh:getNodePosition(veh:getRefNodeId()))) --..':'..tableSize(veh.vdata.beams))
            lo('?? forPos:'..tostring(veh:getPosition())..':'..tostring(be:getObjectByID(pvd.id):getPosition())..':'..tostring(veh:getNodePosition(veh:getRefNodeId())))
            lo('??++++++++++++++++++++++ veh:'..id..':'..veh:getNodeCount()..':'..tostring(veh:getNodePosition(1))..':'..veh:getJBeamFilename()) --.':'..tostring(veh:getPosition())..':'..tostring(veh:getNodePosition(veh:getRefNodeId()))) --..':'..tableSize(veh.vdata.beams))
            lo('?? forPos:'..tostring(veh:getPosition())..':'..tostring(be:getObjectByID(pvd.id):getPosition())..':'..tostring(veh:getNodePosition(veh:getRefNodeId())))
        end
        for id, veh in activeVehiclesIterator() do
            lo('??++++++++++++++++++++++ veh:'..id..':'..veh:getNodeCount()..':'..tostring(veh:getNodePosition(1))..':'..veh:getJBeamFilename()..':'..veh:getId()) --..':'..tableSize(veh.vdata.beams))
        end
@/lua/ge/extensions/editor/roadEditor.lua
      for _, nodeID in ipairs(nodesTbl) do
        local selNodePos = selectedRoad:getNodePosition(nodeID)
        local selNodeWidth = selectedRoad:getNodeWidth(nodeID)
        for _, nodeID in ipairs(nodes) do
          oldPosTbl[nodeID] = road:getNodePosition(nodeID)
        end
            if selectedNode == 0 and selRoad:getNodeCount() > 1 then
              addNodeRefPoint = addNodeRefPoint + selRoad:getNodePosition(selectedNode + 1)
              numNodes = numNodes + 1
            elseif selectedNode == selRoad:getNodeCount() - 1 then
              addNodeRefPoint = addNodeRefPoint + selRoad:getNodePosition(selectedNode)
              numNodes = numNodes + 1
              -- Add Node at the beginning
              local prevNodePos = selRoad:getNodePosition(selectedNode)
              local diff = focusPoint - addTempNodeStartPos
              -- Add Node at the end
              local prevNodePos = selRoad:getNodePosition(selectedNode)
              local diff = focusPoint - addTempNodeStartPos
            -- Undo action for placed node
            local nodeInfo = {pos = activeRoad:getNodePosition(tempNodeIndex), width = activeRoad:getNodeWidth(tempNodeIndex), index = tempNodeIndex}
            roadInfosTbl[activeRoadID] = nodeInfo
              for _, nodeID in ipairs(nodes) do
                posTbl[nodeID] = selectedRoad:getNodePosition(nodeID)
              end
          local prevNodeIndex = (roadTempNodeIndex == 0) and 1 or roadTempNodeIndex-1
          local prevNodePos = selectedRoad:getNodePosition(prevNodeIndex)
          local diff = focusPoint - addTempNodeStartPos
      for _, id in pairs(nodes) do
        nodePosTbl[id] = selectedRoad:getNodePosition(id)
      end
        for _, nodeID in ipairs(nodeIDs) do
            local selNodePos = selectedRoad:getNodePosition(nodeID)
            local selNodeWidth = selectedRoad:getNodeWidth(nodeID)
@/lua/ge/extensions/core/cameraModes/chase.lua
  --
  local ref  = data.veh:getNodePosition(self.refNodes.ref)
  local left = data.veh:getNodePosition(self.refNodes.left)
  local ref  = data.veh:getNodePosition(self.refNodes.ref)
  local left = data.veh:getNodePosition(self.refNodes.left)
  local back = data.veh:getNodePosition(self.refNodes.back)
  local left = data.veh:getNodePosition(self.refNodes.left)
  local back = data.veh:getNodePosition(self.refNodes.back)
@/lua/ge/extensions/flowgraph/nodes/vehicle/vehicleWheels.lua
      local axisNodes = veh:getWheelAxisNodes(i)
      wPos:set(veh:getNodePosition(axisNodes[1]))
      wCenter:setAdd(wPos)
@/lua/ge/extensions/gameplay/drag/general.lua
      local axisNodes = vehicle:getWheelAxisNodes(i)
      local nodePos = vec3(vehicle:getNodePosition(axisNodes[1]))
      local wheelNodePos = vehiclePos + nodePos
@/lua/ge/extensions/core/quickAccess.lua
      local driverNode = core_camera.getDriverData(getPlayerVehicle(0)) or 0
      local driverPos = getPlayerVehicle(0):getPosition() + getPlayerVehicle(0):getNodePosition(driverNode)
      local vehIds = {}
@/lua/ge/extensions/flowgraph/nodes/vehicle/ai/directlyTo.lua
  local up = vec3(0,0,1) -- hardcode up as up..
  local dir = vec3(road:getNodePosition(1)) - vec3(road:getNodePosition(0))
  dir = dir:normalized()
  local up = vec3(0,0,1) -- hardcode up as up..
  local dir = vec3(road:getNodePosition(1)) - vec3(road:getNodePosition(0))
  dir = dir:normalized()
@/lua/vehicle/extensions/advancedwheeldebug.lua
    if nodeId then
      local pos = obj:getNodePosition(nodeId) + obj:getPosition()
      local normal = mapmgr.surfaceNormalBelow(pos, 0.1)
@/lua/ge/extensions/core/vehicle/mirror.lua
      local mpos = veh:getInitialNodePosition(vdata.vdata.mirrors[i].idRef)
      local absoluteMPos = veh:getPosition() + veh:getNodePosition(vdata.vdata.mirrors[i].idRef)
      if not viewFrustum:isPointContained(absoluteMPos) then
@/lua/ge/extensions/util/export.lua

      p1 = vec3(veh:getNodePosition(id1))
      p2 = vec3(veh:getNodePosition(id2))
      p1 = vec3(veh:getNodePosition(id1))
      p2 = vec3(veh:getNodePosition(id2))
      length = (p1 - p2):length()
@/lua/vehicle/extensions/tech/vehiclePOI.lua
    ctr = ctr + 1
    wp[ctr] = obj:getNodePosition(wheel.node1)
  end
@/gameplay/missionTypes/cannon/customNodes/cannonBallTouchdownNode.lua
  end
  return (veh:getNodePosition(20)+veh:getNodePosition(3))*0.5 + veh:getPosition()
end
  end
  return (veh:getNodePosition(20)+veh:getNodePosition(3))*0.5 + veh:getPosition()
end
@/lua/ge/extensions/gameplay/walk.lua
  local refNodes = extensions.core_vehicle_manager.getVehicleData(veh:getId()).vdata.refNodes[0]
  local ref  = veh:getNodePosition(refNodes.ref)
  local left = veh:getNodePosition(refNodes.left)
  local ref  = veh:getNodePosition(refNodes.ref)
  local left = veh:getNodePosition(refNodes.left)
  local carLeft = (left-ref):normalized()
  driverNode = driverNode or 0
  local driverPos = veh:getPosition() + veh:getNodePosition(driverNode)
  local driverNode = core_camera.getDriverData(veh)
  return veh:getPosition() + veh:getNodePosition(driverNode or 0)
end
      local driverNode = core_camera.getDriverDataById(unicycle:getId())
      local driverPos = unicycle:getPosition() + unicycle:getNodePosition(driverNode or 0)
      alpha = clamp(camPos:distance(driverPos) - 0.1, 0, 1)
@/lua/vehicle/beamstate.lua
  for _, node in pairs(v.data.nodes) do
    local d = {obj:getNodePosition(node.cid):toTable()}
    if math.abs(obj:getOriginalNodeMass(node.cid) - obj:getNodeMass(node.cid)) > 0.1 then
@/gameplay/missionTypes/cannon/customNodes/cannonPreviewNode.lua
    local vehPosition = veh:getPosition()
    local pos = veh:getNodePosition(88) + vehPosition
    local back = veh:getNodePosition(87) + vehPosition
    local pos = veh:getNodePosition(88) + vehPosition
    local back = veh:getNodePosition(87) + vehPosition
    local cal = math.sqrt(power * 8.05^2 / weight / 2)
@/lua/vehicle/controller/tech/mesh.lua
  for i=0, nodesCount do
    pos = obj:getNodePosition(i)
    force = obj:getNodeForceVector(i)
@/lua/ge/extensions/util/nodeBeamExport.lua
-- Build a simple graph: points = nodes, edges = beams
-- positions are in game coordinates as returned by veh:getNodePosition(id)
local function buildGraph()
  for i = 0, nodeCount - 1 do
    local p = veh:getNodePosition(i)
    if p then
@/lua/ge/extensions/util/decalRoadsEditor.lua
          local n = {
            pos = vec3(o:getNodePosition(i)),
            radius = o:getNodeWidth(i) * 0.5,
@/lua/ge/extensions/core/cameraModes/topDown.lua
  -- get the data
  local ref  = vec3(data.veh:getNodePosition(self.refNodes.ref))
  local back = vec3(data.veh:getNodePosition(self.refNodes.back))
  local ref  = vec3(data.veh:getNodePosition(self.refNodes.ref))
  local back = vec3(data.veh:getNodePosition(self.refNodes.back))
@/lua/ge/extensions/core/cameraModes/external.lua
    local node = math.random(0, veh:getNodeCount()-1)
    local offset = veh:getNodePosition(node)
    local worldSpeed = veh:getNodeVelocity(node)
local function getNxyz(refNodes, veh)
  local ref  = veh:getNodePosition(refNodes.ref)
  local left = veh:getNodePosition(refNodes.left)
  local ref  = veh:getNodePosition(refNodes.ref)
  local left = veh:getNodePosition(refNodes.left)
  local back = veh:getNodePosition(refNodes.back)
  local left = veh:getNodePosition(refNodes.left)
  local back = veh:getNodePosition(refNodes.back)
  local nx = (left-ref):normalized()
@/lua/ge/extensions/core/cameraModes/unicycle.lua
  local camNodeID = core_camera.getDriverData(data.veh)
  local nodePos = vec3(data.veh:getNodePosition(camNodeID or 0))
  local carPos = data.pos
@/lua/ge/extensions/editor/vehicleEditor/liveEditor/veJBeamPicker.lua
local nodeDataRendering = {
  {name = "Displacement",     enabled = im.BoolPtr(false),    units = "m",      color = rainbowColor(8, 2, 1),   data = function(id) return vEditor.vehicle:getNodePosition(id):length() end, plotData = {}},
  {name = "Speed",            enabled = im.BoolPtr(true),     units = "m/s",    color = rainbowColor(8, 3, 1),   data = function(id) return vEditor.vehicle:getNodeVelocity(id):length() end, plotData = {}},
@/lua/vehicle/ai.lua
    -- obj:getNodePosition is the pos vector of query node (wheel.node1) relative to ref node in world coordinates
    avgWheelNodePos:setAdd(obj:getNodePosition(wheel.node1))
    numOfWheels = numOfWheels + 1
  for _, wheel in pairs(wheels.wheels) do
    local wheelPos = obj:getNodePosition(wheel.node1)
    if wheelPos:dot(dirVec) > avgWheelNodePos:dot(dirVec) then
      local wheelRadius = wheel.radius
      local wheelPosAbsolute = refNodePos + obj:getNodePosition(wheel.node1)
      debugDrawer:drawSphere(0.1, wheelPosAbsolute, color(255,0,0,255))
@/lua/ge/extensions/core/cameraModes/relative.lua
function C:update(data)
  local ref  = vec3(data.veh:getNodePosition(self.refNodes.ref))
  local left = vec3(data.veh:getNodePosition(self.refNodes.left))
  local ref  = vec3(data.veh:getNodePosition(self.refNodes.ref))
  local left = vec3(data.veh:getNodePosition(self.refNodes.left))
  local back = vec3(data.veh:getNodePosition(self.refNodes.back))
  local left = vec3(data.veh:getNodePosition(self.refNodes.left))
  local back = vec3(data.veh:getNodePosition(self.refNodes.back))
@/lua/ge/extensions/core/vehicleMirrors.lua
  for _, m in pairs(vehicleMirrorData) do
    local id1 = vec3(veh:getNodePosition(m.id1))
    local id2 = vec3(veh:getNodePosition(m.id2))
    local id1 = vec3(veh:getNodePosition(m.id1))
    local id2 = vec3(veh:getNodePosition(m.id2))
    local id3 = vec3(veh:getNodePosition(m.id3))
    local id2 = vec3(veh:getNodePosition(m.id2))
    local id3 = vec3(veh:getNodePosition(m.id3))
@/lua/vehicle/controller/tech/roadsSensor.lua
  for _, wheel in pairs(wheels.wheels) do
    wp[ctr] = obj:getNodePosition(wheel.node1)
    ctr = ctr + 1
@/lua/ge/extensions/editor/vehicleEditor/liveEditor/veAdjustableTechCarTuner.lua
--     local node = nodes[i]
--     local pos = veh:getNodePosition(i)
--     minExtents:set(math.min(minExtents.x, pos.x), math.min(minExtents.y, pos.y), math.min(minExtents.z, pos.z))
@/lua/vehicle/controller/tech/advancedIMU.lua
  end
  local n1, n2, n3 = obj:getNodePosition(state.node1Idx), obj:getNodePosition(state.node2Idx), obj:getNodePosition(state.node3Idx) -- Initial node positions.
  computeSensorFrame(n1, n2, n3) -- Compute the sensor frame in world space.
  end
  local n1, n2, n3 = obj:getNodePosition(state.node1Idx), obj:getNodePosition(state.node2Idx), obj:getNodePosition(state.node3Idx) -- Initial node positions.
  computeSensorFrame(n1, n2, n3) -- Compute the sensor frame in world space.
  end
  local n1, n2, n3 = obj:getNodePosition(state.node1Idx), obj:getNodePosition(state.node2Idx), obj:getNodePosition(state.node3Idx) -- Initial node positions.
  computeSensorFrame(n1, n2, n3) -- Compute the sensor frame in world space.
  -- Compute the current position of the sensor, in world space.
  local node1 = obj:getNodePosition(state.node1Idx) -- Current node positions, in world space.
  local node2 = obj:getNodePosition(state.node2Idx)
  local node1 = obj:getNodePosition(state.node1Idx) -- Current node positions, in world space.
  local node2 = obj:getNodePosition(state.node2Idx)
  local node3 = obj:getNodePosition(state.node3Idx)
  local node2 = obj:getNodePosition(state.node2Idx)
  local node3 = obj:getNodePosition(state.node3Idx)
  edge1:setSub2(node2, node1) -- Attach triangle edge vectors.
@/lua/ge/extensions/editor/meshEditor.lua
      else
        nodeTransform:setPosition(selectedMesh:getNodePosition(selectedNode))
      end
      for index,_ in pairs(selectedNodes) do
        averagePos = averagePos + selectedMesh:getNodePosition(index)
      end
      if not editingPos then
        local pos = selectedMesh:getNodePosition(selectedNode)
        nodePosition[0] = pos.x
      if positionSliderEditEnded[0] then
        editor.history:commitAction("PositionMeshNode", {meshID = selectedMeshId, nodeIDs = {selectedNode}, oldPositions = {[selectedNode] = selectedMesh:getNodePosition(selectedNode)}, newPositions = {[selectedNode] = vec3(nodePosition[0], nodePosition[1], nodePosition[2])}}, positionNodeActionUndo, positionNodeActionRedo)
        editingPos = false
    if M.type == "River" and selectedNode and selectedNode > 0 then
      local selectedNodePos = selectedMesh:getNodePosition(selectedNode)
      local prevNodeHeight = selectedMesh:getNodePosition(selectedNode-1).z
      local selectedNodePos = selectedMesh:getNodePosition(selectedNode)
      local prevNodeHeight = selectedMesh:getNodePosition(selectedNode-1).z
      nodeHeightRelative[0] = selectedNodePos.z - prevNodeHeight
      originalNormals[id] = selectedMesh:getNodeNormal(id)
      originalPositions[id] = selectedMesh:getNodePosition(id)
    end
      table.insert(nodeIDs, id)
      newPositions[id] = selectedMesh:getNodePosition(id)
      newNormals[id] = selectedMesh:getNodeNormal(id)
    if addedNewNode then
      local nodeInfo = {pos = selectedMesh:getNodePosition(selectedNode), width = selectedMesh:getNodeWidth(selectedNode), depth = selectedMesh:getNodeDepth(selectedNode), normal = selectedMesh:getNodeNormal(selectedNode), index = selectedNode}
      editor.history:commitAction("InsertMeshNode", {meshID = selectedMeshId, nodeInfos = {nodeInfo}}, insertNodeActionUndo, insertNodeActionRedo, true)
            -- Undo action for placed node
            local nodeInfo = {pos = selectedMesh:getNodePosition(selectedNode), width = selectedMesh:getNodeWidth(selectedNode), depth = selectedMesh:getNodeDepth(selectedNode), normal = selectedMesh:getNodeNormal(selectedNode), index = selectedNode}
            editor.history:commitAction("InsertMeshNode", {meshID = selectedMeshId, nodeInfos = {nodeInfo}}, insertNodeActionUndo, insertNodeActionRedo, true)
@/lua/ge/extensions/flowgraph/nodes/vehicle/moveTo.lua
        local axisNodes = veh:getWheelAxisNodes(i)
        local nodePos = veh:getNodePosition(axisNodes[1])
        local wheelNodePos = vec3(nodePos.x, nodePos.y, nodePos.z)
@/lua/ge/extensions/core/cameraModes/crash.lua
    if driverNode then
      local driverPos = veh2:getPosition() + veh2:getNodePosition(driverNode)
      if veh2:getDirectionVector():dot(bb1:getCenter() - driverPos) > 0 then
    local driverNode = core_camera.getDriverDataById(veh2:getId())
    local driverPos = veh2:getPosition() + veh2:getNodePosition(driverNode or 0)
    data.res.pos = driverPos
@/lua/ge/extensions/career/modules/delivery/general.lua
          clusterId = container.nodeId and veh:getNodeClusterId(container.nodeId),
          position = (container.nodeId and veh:getNodePosition(container.nodeId) or vec3(0,0,0)) + veh:getPosition(),
        }
@/lua/ge/extensions/gameplay/rally/vehicleTracker.lua
        local axisNodes = vehicle:getWheelAxisNodes(i)
        local nodePos = vec3(vehicle:getNodePosition(axisNodes[1]))
        local pos = vec3(nodePos:dot(x), nodePos:dot(y), nodePos:dot(z))
@/lua/ge/extensions/flowgraph/nodes/scene/raceLineParking.lua
      local axisNodes = vehicle:getWheelAxisNodes(i)
      local nodePos = vehicle:getNodePosition(axisNodes[1])
      nodePos = vec3(nodePos.x, nodePos.y, nodePos.z)
@/lua/vehicle/controller/tech/GPS.lua
  -- Compute the current world-space position of the GPS sensor.
  local node1, node2, node3 = obj:getNodePosition(nodeIndex1), obj:getNodePosition(nodeIndex2), obj:getNodePosition(nodeIndex3)
  local edge1, edge2 = node2 - node1, node3 - node1
  -- Compute the current world-space position of the GPS sensor.
  local node1, node2, node3 = obj:getNodePosition(nodeIndex1), obj:getNodePosition(nodeIndex2), obj:getNodePosition(nodeIndex3)
  local edge1, edge2 = node2 - node1, node3 - node1
  -- Compute the current world-space position of the GPS sensor.
  local node1, node2, node3 = obj:getNodePosition(nodeIndex1), obj:getNodePosition(nodeIndex2), obj:getNodePosition(nodeIndex3)
  local edge1, edge2 = node2 - node1, node3 - node1
@/lua/vehicle/controller/couplings/kingpin.lua
    local position = obj:getPosition()
    local nodePosition = obj:getNodePosition(kingpinNodeCid)
    local data = {nodeId = kingpinNodeCid, nodePosition = position + nodePosition}
@/lua/ge/extensions/career/modules/inventory.lua
          for nodeId = 0, veh:getNodeCount() - 1 do
            if zone:containsPoint2D(veh:getNodePosition(nodeId) + vehPos) then
              res[inventoryId] = true
@/lua/ge/extensions/c2/panelPlugins/tileManager.lua
            for i = 0, count - 1 do
              local p0 = obj:getNodePosition(i)
              local p1 = obj:getNodePosition(i + 1)
              local p0 = obj:getNodePosition(i)
              local p1 = obj:getNodePosition(i + 1)
              if p0 and p1 then
      for k = 0, count - 1 do
        local pos = obj:getNodePosition(k) -- Use Control Point
        local width = obj:getNodeWidth(k) or 10
@/lua/ge/extensions/flowgraph/nodes/scene/getPointOnDecalroad.lua
    if self.pinIn.idx.value < 0 or self.pinIn.idx.value > self.maxIdx then return end
    local point = self.roadObj:getNodePosition(self.pinIn.idx.value)
    self.pinOut.pos.value = {point.x, point.y, point.z}
    end
    local forward = vec3(self.roadObj:getNodePosition(prevIdx) - self.roadObj:getNodePosition(nextIdx)):normalized()
    end
    local forward = vec3(self.roadObj:getNodePosition(prevIdx) - self.roadObj:getNodePosition(nextIdx)):normalized()
@/lua/ge/extensions/core/cameraModes/autopoint.lua
function C:update(data)
  local ref  = data.veh:getNodePosition(self.refNodes.ref)
  local left = data.veh:getNodePosition(self.refNodes.left)
  local ref  = data.veh:getNodePosition(self.refNodes.ref)
  local left = data.veh:getNodePosition(self.refNodes.left)
  local back = data.veh:getNodePosition(self.refNodes.back)
  local left = data.veh:getNodePosition(self.refNodes.left)
  local back = data.veh:getNodePosition(self.refNodes.back)
  local nx = (left-ref):normalized()
@/lua/ge/extensions/flowgraph/nodes/vehicle/vehicleData.lua
        local axisNodes = veh:getWheelAxisNodes(i)
        wPos:set(veh:getNodePosition(axisNodes[1]))
        wCenter:setAdd(wPos)
@/lua/ge/extensions/gameplay/race/race.lua
      local axisNodes = vehicle:getWheelAxisNodes(i)
      local nodePos = vec3(vehicle:getNodePosition(axisNodes[1]))
      local pos = vec3(nodePos:dot(x), nodePos:dot(y), nodePos:dot(z))
          local axisNodes = veh:getWheelAxisNodes(i)
          local nodePos = vec3(veh:getNodePosition(axisNodes[1]))
          local pos = vec3(nodePos:dot(x), nodePos:dot(y), nodePos:dot(z))
@/lua/ge/spawn.lua
    if veh:getInitialNodeCollision(nodeId) == 3 then
      table.insert(nodePositions, veh:getNodePosition(nodeId))
    end
      for nodeId = 0, otherNodeCount - 1 do
        table.insert(vehicleNodes[vehID], otherVeh:getNodePosition(nodeId) + vehPos)
      end
@/lua/vehicle/controller/tech/cosimulationCoupling.lua
  for _, wheel in pairs(wheels.wheels) do
    wNodePos[ctr] = obj:getNodePosition(wheel.node1)
    ctr = ctr + 1
@/lua/ge/extensions/flowgraph/nodes/vehicle/ai/simpleFollowDecalroad.lua
  for i = 0, segCount-1 do
    local vec = vec3(road:getNodePosition(i))
    table.insert(path,{x = vec.x, y = vec.y, z = vec.z, t = self.distance / self.data.speed})
    table.insert(path,{x = vec.x, y = vec.y, z = vec.z, t = self.distance / self.data.speed})
    self.distance = self.distance + (vec3(road:getNodePosition(i+1)) - vec3(road:getNodePosition(i))):length()
  end
    table.insert(path,{x = vec.x, y = vec.y, z = vec.z, t = self.distance / self.data.speed})
    self.distance = self.distance + (vec3(road:getNodePosition(i+1)) - vec3(road:getNodePosition(i))):length()
  end
  local up = vec3(0,0,1) -- hardcode up as up..
  local dir = vec3(road:getNodePosition(1)) - vec3(road:getNodePosition(0))
  dir = dir:normalized()
  local up = vec3(0,0,1) -- hardcode up as up..
  local dir = vec3(road:getNodePosition(1)) - vec3(road:getNodePosition(0))
  dir = dir:normalized()
@/lua/vehicle/bdebugImpl.lua
    if partsSelected[node.partPath or v.config.partsTree.partPath] and (showWheels or not node.wheelID) then
      local pos = obj:getNodePosition(i)
      tempVec:set(pos)
        local node = v.data.nodes[i]
        tempVec2:setAdd2(tempVec, obj:getNodePosition(node.cid))
        local nodeText = getNodeText(node, string.format("(%0.3f, %0.3f, %0.3f)", tempVec2.x, tempVec2.y, tempVec2.z))

        local nodePos1 = nodePosCache[beam.id1] or obj:getNodePosition(beam.id1)
        local nodePos2 = nodePosCache[beam.id2] or obj:getNodePosition(beam.id2)
        local nodePos1 = nodePosCache[beam.id1] or obj:getNodePosition(beam.id1)
        local nodePos2 = nodePosCache[beam.id2] or obj:getNodePosition(beam.id2)
        nodePosCache[beam.id1] = nodePos1
@/lua/ge/extensions/flowgraph/nodes/vehicle/special/wheelDistance.lua
    for i = 0, vehicle:getWheelCount() - 1 do
      wheelNodePos:setAdd2(vehicle:getNodePosition(vehicle:getWheelAxisNodes(i)[1]), point)
      -- NOTE: nodePos alone is not good enough, vehicles such as the bus have the front wheels behind the ref node
@/gameplay/missionTypes/cannon/customNodes/cannonBallDistNode.lua
  end
  return (veh:getNodePosition(20)+veh:getNodePosition(3))*0.5 + veh:getPosition()
end
  end
  return (veh:getNodePosition(20)+veh:getNodePosition(3))*0.5 + veh:getPosition()
end
@/lua/ge/extensions/flowgraph/nodes/scene/pointOnDecalroad.lua
    self.oldRoadId = self.pinIn.roadId.value
    self.pz = self.roadObj:getNodePosition(0).z
    self.pinOut.maxIdx.value = self.roadObj:getNodeCount()-1
@/lua/common/extensions/networking/editorToolchain.lua
      for _, node in ipairs(selectedNodes) do
        local npos = veh:getNodePosition(node.cid) + vehPos
        --dump{'npos', npos}
          local name = node.name or tostring(node.cid)
          local pos = veh:getNodePosition(node.cid)
          data[name] = pos:toTable()
@/lua/ge/extensions/scenario/busdriver.lua
    local busStopPos = vec3(busStop:getPosition())
    currPos = currPos + vec3(pv:getNodePosition(0))
    local diff = (currPos-busStopPos):rotated(quatFromDir(fwd, up):inversed():normalized())
@/lua/ge/extensions/core/couplerCameraModifier.lua

  local obj1refNodePos = obj1:getNodePosition(core_camera.getCameraDataById(objId1).orbit.refNodes.ref)
  local obj2refNodePos = obj2:getNodePosition(core_camera.getCameraDataById(objId2).orbit.refNodes.ref)
  local obj1refNodePos = obj1:getNodePosition(core_camera.getCameraDataById(objId1).orbit.refNodes.ref)
  local obj2refNodePos = obj2:getNodePosition(core_camera.getCameraDataById(objId2).orbit.refNodes.ref)

  local obj1leftNodePos = obj1:getNodePosition(core_camera.getCameraDataById(objId1).orbit.refNodes.left)
  local obj2leftNodePos = obj2:getNodePosition(core_camera.getCameraDataById(objId2).orbit.refNodes.left)
  local obj1leftNodePos = obj1:getNodePosition(core_camera.getCameraDataById(objId1).orbit.refNodes.left)
  local obj2leftNodePos = obj2:getNodePosition(core_camera.getCameraDataById(objId2).orbit.refNodes.left)

  local obj1backNodePos = obj1:getNodePosition(core_camera.getCameraDataById(objId1).orbit.refNodes.back)
  local obj2backNodePos = obj2:getNodePosition(core_camera.getCameraDataById(objId2).orbit.refNodes.back)
  local obj1backNodePos = obj1:getNodePosition(core_camera.getCameraDataById(objId1).orbit.refNodes.back)
  local obj2backNodePos = obj2:getNodePosition(core_camera.getCameraDataById(objId2).orbit.refNodes.back)