GE Lua Documentation

Press F to search!

SetCursorPosX

Definition


-- @/lua/common/extensions/ui/imgui_gen_luaintf.lua:250
function M.SetCursorPosX(float_local_x) imgui.SetCursorPosX(float_local_x) end

Callers

@/lua/ge/extensions/editor/flowgraph/search.lua
      if result.location then
        im.SetCursorPosX(x)
        im.Text("In: "..result.location)
@/lua/ge/extensions/ui/console.lua

    im.SetCursorPosX(im.GetCursorPosX() + im.GetContentRegionAvailWidth() - fsize)
    if gui.uiIconImageButton(fullscreen and gui.icons.fullscreen_exit or gui.icons.fullscreen, {x=fsize, y=fsize}, iconButtonFgColor.Value, nil, iconButtonBgColor.Value) then
@/lua/ge/extensions/editor/terrainEditor.lua

        im.SetCursorPosX(bottomButtonPosX)
        local autoPaintButtonPosX = im.GetCursorPosX() + im.GetContentRegionAvailWidth() - im.GetStyle().ItemSpacing.x - im.GetStyle().FramePadding.x - im.GetStyle().ItemInnerSpacing.x - im.CalcTextSize("Auto Paint").x
        im.SameLine()
        im.SetCursorPosX(autoPaintButtonPosX)
        if im.Button("Auto Paint##OpenModal") then
        im.SameLine()
        im.SetCursorPosX(im.GetCursorPosX() + im.GetContentRegionAvailWidth() - (var.channelComboWidth + var.materialComboWidth + var.style.ItemSpacing.x))
        im.PushItemWidth(var.materialComboWidth)
@/lua/ge/extensions/flowgraph/utils.lua

  im.SetCursorPosX(im.GetCursorPosX() + spacing.x)
  im.SetCursorPosY(im.GetCursorPosY() - spacing.y)
@/lua/ge/extensions/editor/dynamicDecals/helper.lua
  if not string_label then return end
  im.SetCursorPosX(im.GetCursorPosX() + im.GetContentRegionAvailWidth() / 2 - im.CalcTextSize(string_label).x / 2)
  im.TextUnformatted(string_label)
  if not string_label then return end
  im.SetCursorPosX(im.GetCursorPosX() + im.GetContentRegionAvailWidth() / 2 - im.CalcTextSize(string_label).x / 2)
  im.TextColored(color, string_label)
@/lua/ge/extensions/editor/flowgraph/main.lua
            im.SameLine()
            --im.SetCursorPosX(im.GetCursorPosX()+20)
            if self.mgr.runningState ~= "stopped" then
@/lua/ge/extensions/editor/shortcutLegend.lua
      if completeNeededSpace < wholeSpace then
        im.SetCursorPosX(im.GetCursorPosX() + (wholeSpace - completeNeededSpace) / 2.0)
      end
@/lua/ge/extensions/editor/gen/exp_meshexplorer.lua
--                                local curx = im.GetCursorPosX()
--                                im.SetCursorPosX(curx)
                                for k,v in pairs(geonode.astep) do
    --                                lo('?? pop_UP:')
--                        im.SetCursorPosX(im.GetCursorPosX()-40)
                        local md = amodel[imd]
--                im.SetCursorPosY(im.GetCursorPosY() - 42)
--                im.SetCursorPosX(im.GetCursorPosX() + avail.x - 42)
                avail = im.GetContentRegionAvail()
                im.SetCursorPosX(im.GetCursorPosX() + avail.x - 42)
                color = env.ui['bmodel_over'] and im.ImVec4(1, 1, 1, 0.4) or UI.cbutOn
@/lua/ge/extensions/editor/terrainMaterialsEditor.lua
  im.SameLine()
  im.SetCursorPosX(posX + 90)
  im.PushItemWidth(im.GetContentRegionAvailWidth())
  im.SameLine()
  im.SetCursorPosX(posX + 90)
  im.PushItemWidth(im.GetContentRegionAvailWidth())
  im.SameLine()
  im.SetCursorPosX(posX + 90)
  im.PushItemWidth(im.GetContentRegionAvailWidth())
  im.SameLine()
  im.SetCursorPosX(posX + 90)
  im.PushItemWidth(im.GetContentRegionAvailWidth())
  local removeMapButtonCursorX = childWidth - editor_terrainEditor.getVars().style.ItemInnerSpacing.x - fontSize - editor_terrainEditor.getVars().style.ScrollbarSize
  im.SetCursorPosX(removeMapButtonCursorX)
  if editor.uiIconImageButton(editor.icons.delete, im.ImVec2(fontSize, fontSize)) then
  im.SameLine()
  im.SetCursorPosX(removeMapButtonCursorX)
  if editor.uiIconImageButton(editor.icons.delete, im.ImVec2(fontSize, fontSize)) then
  im.SameLine()
  im.SetCursorPosX(removeMapButtonCursorX)
  if editor.uiIconImageButton(editor.icons.delete, im.ImVec2(fontSize, fontSize)) then
  im.SameLine()
  im.SetCursorPosX(removeMapButtonCursorX)
  if editor.uiIconImageButton(editor.icons.delete, im.ImVec2(fontSize, fontSize)) then
      local posX = im.GetCursorPosX()
      im.SetCursorPosX(posX + im.GetContentRegionAvailWidth() - ((2 * im.GetStyle().FramePadding.x) + im.CalcTextSize("Reload Terrain Materials").x))
      if im.SmallButton("Reload Terrain Materials") then

              im.SetCursorPosX(im.GetContentRegionAvailWidth() - ((2 * im.GetStyle().FramePadding.x) + im.CalcTextSize("Apply Changes").x))
              if im.Button("Apply Changes") then
@/lua/ge/extensions/editor/raceEditor/trackLayout.lua
  self:displayClassification(classification, "Reversible: ", 'reversible', "If the track can be reversed. Possible if both the Default Starting Position\nand Reverse Starting Positions are set, as well as the End Node for open tracks.")
  im.SameLine() im.SetCursorPosX(180)
  self:displayClassification(classification, "Rolling Start: ", 'allowRollingStart', "If the track can be started from from a distance. Possible if Rolling Start Position is set.\nIf the track is reversible, also Reverse Rolling Start has to be set.")
  self:displayClassification(classification, "Closed: ", 'closed', "If the track is closed, Lap Count can be set to values higher than 1\nand End Node does not need to be set. A non-closed track is considered Open.")
  im.SameLine() im.SetCursorPosX(180)
  self:displayClassification(classification, "Branching: ", 'branching', "Branching tracks will not compare lap times or record final times in Time Trial Mode.")
  local cpx = im.GetCursorPosX()
  im.Text(name) im.SameLine() im.SetCursorPosX(cpx + 90) im.tooltip(tt or "")
  if classification[field] then
@/lua/ge/extensions/editor/flowgraph/variables.lua
    im.SameLine()
    im.SetCursorPosX(totalWidth-35*im.uiscale[0])
    self.targets = {{name = loc, target = self.mgr.graph.variables},{name="Project", target=self.mgr.variables}}
    im.SameLine()
    im.SetCursorPosX(totalWidth-35*im.uiscale[0])
    if not self.mgr.allowEditing then im.BeginDisabled() end
  if self.mgr.allowEditing then
    im.SetCursorPosX(width - 75*scale - 5)
    editor.uiIconImageButton(editor.icons.cloud_download, im.ImVec2(24,24))

  im.SetCursorPosX(width - 22*scale)
  editor.uiIconImageButton(editor.icons.reorder, im.ImVec2(24,24), self.dragPayload and self.dragPayload.name == varName and self.dragPayload.target.id == target.id and highlightColor or nil)
@/lua/ge/extensions/editor/util/transformUtil.lua
  im.SameLine()
  im.SetCursorPosX(prePos.x + width - 23*scale)
  if editor.uiIconImageButton(editor.icons.settings, vec22x22) then
      --im.NewLine()
      im.SetCursorPosX(btnX)
    end
    im.SameLine()
    im.SetCursorPosX(prePos.x + 35 * scale)
    im.PushItemWidth(width - (im.GetCursorPosX() - startPosX))
    im.SameLine()
    im.SetCursorPosX(prePos.x + 35 * scale)
    im.PushItemWidth(width - (im.GetCursorPosX() - startPosX))
    im.SameLine()
    im.SetCursorPosX(prePos.x + 35 * scale)
    im.PushItemWidth(width - (im.GetCursorPosX() - startPosX))
@/lua/ge/extensions/editor/camPathEditor.lua
        local x_position = (window_width - text_size.x) / 2
        im.SetCursorPosX(x_position)
        im.Text(text)
@/lua/ge/extensions/editor/main.lua
        if off > 0.0 then
          imgui.SetCursorPosX(imgui.GetCursorPosX() + off)
        end
@/lua/common/extensions/ui/flowgraph/editor.lua
  im.SameLine()
  im.SetCursorPosX(totalWidth - 22 * im.uiscale[0])
  if editor.uiIconImageButton(editor.icons.settings, im.ImVec2(22, 22)) then
@/lua/ge/extensions/editor/api/gui.lua
  end
  imgui.SetCursorPosX(imgui.GetCursorPosX() + imgui.GetContentRegionAvailWidth() - imgui.CalcTextSize(string_label).x + ((offset) and offset or 0))
  imgui.TextUnformatted(string_label)
  end
  imgui.SetCursorPosX(imgui.GetCursorPosX() + imgui.GetContentRegionAvailWidth() - ((ImVec2_size and ImVec2_size.x > 0) and ImVec2_size.x or (imgui.CalcTextSize(string_label).x +  2*imgui.GetStyle().FramePadding.x)) + ((offset) and offset or 0))
  if imgui.Button((id) and string_label .. "##" .. id or string_label, ImVec2_size) then
  )
  imgui.SetCursorPosX(cursor.x + ((width or 1) + imgui.GetStyle().ItemSpacing.x))
end
@/lua/ge/extensions/editor/flowgraph/garbageDebug.lua
  im.SameLine()
  im.SetCursorPosX(winWidth - (valueTextSize.x + 16))
@/lua/ge/extensions/editor/mainMenu.lua
  local txtSize = imgui.CalcTextSize("FPS: 999 ").y + imgui.CalcTextSize("GpuWait: 00.0f ").y + imgui.CalcTextSize("Poly: 123456789").y
  imgui.SetCursorPosX(imgui.GetCursorPosX() + imgui.GetContentRegionAvailWidth() - txtSize*4)
@/lua/ge/extensions/editor/inspector.lua

        imgui.SetCursorPosX(fontSize*2 + (size.x)/2)
        imgui.TextUnformatted("U")

        imgui.SetCursorPosX(size.x - (imgui.CalcTextSize("1.0").x) + 2*fontSize)
        imgui.TextUnformatted("1.0")
          imgui.SameLine()
          imgui.SetCursorPosX(cursorPos.x + uvValueWidgetWidth + 2*imgui.GetStyle().FramePadding.x)
          editor.uiInputFloat("##input" .. tostring(typeIndex).."U", groundCoverUVal, 0.1, 1.0, "%0.5f", imgui.InputTextFlags_EnterReturnsTrue)
          imgui.SameLine()
          imgui.SetCursorPosX(cursorPos.x + uvValueWidgetWidth + 2*imgui.GetStyle().FramePadding.x)
          editor.uiInputFloat("##input" .. tostring(typeIndex).."V", groundCoverVVal, 0.1, 1.0, "%0.5f", imgui.InputTextFlags_EnterReturnsTrue)
          imgui.SameLine()
          imgui.SetCursorPosX(cursorPos.x + uvValueWidgetWidth + 2*imgui.GetStyle().FramePadding.x)
          editor.uiInputFloat("##input" .. tostring(typeIndex).."W", groundCoverWVal, 0.1, 1.0, "%0.5f", imgui.InputTextFlags_EnterReturnsTrue)
          imgui.SameLine()
          imgui.SetCursorPosX(cursorPos.x + uvValueWidgetWidth + 2*imgui.GetStyle().FramePadding.x)
          editor.uiInputFloat("##input" .. tostring(typeIndex).."H", groundCoverHVal, 0.1, 1.0, "%0.5f", imgui.InputTextFlags_EnterReturnsTrue)

          imgui.SetCursorPosX(cursorPos.x + uvValueWidgetWidth + 2*imgui.GetStyle().FramePadding.x)
          if imgui.Button("Reset") then

      imgui.SetCursorPosX(imgui.GetCursorPos().x + fontSize + 2)
      if imgui.BeginCombo("##handleColor", groundCoverUVHandleColors[groundCoverUVHandleColorIndex].name) then

          imgui.SetCursorPosX(imgui.GetCursorPos().x + fontSize)
          if imgui.Selectable1(val.name, false) then
      imgui.SameLine()
      imgui.SetCursorPosX(imgui.GetCursorPos().x + fontSize)
      imgui.TextUnformatted("Background Color: ")

      imgui.SetCursorPosX(cursorPosBg.x + fontSize + 2)
      if imgui.BeginCombo("##backgroundColor", groundCoverUVBgColors[groundCoverUVBgColorIndex].name) then

          imgui.SetCursorPosX(imgui.GetCursorPos().x + fontSize)
          if imgui.Selectable1(val.name, false) then
      imgui.SameLine()
      imgui.SetCursorPosX(availableSize.x * 0.75 + 2*imgui.GetStyle().FramePadding.x)
      if imgui.Button("OK") then
@/lua/ge/extensions/editor/mainToolbar.lua
    if im.GetContentRegionAvailWidth() > (550 * (1+im.uiscale[0])/2) then
      im.SetCursorPosX(im.GetCursorPosX() + im.GetContentRegionAvailWidth() - (550 * (1+im.uiscale[0])/2))
    end
@/lua/ge/extensions/editor/vehicleDetailViewer.lua
    im.SameLine()
    im.SetCursorPosX(200)
    im.SetNextItemWidth(200)
        im.SameLine()
        im.SetCursorPosX(200)
        if im.SmallButton('load##loadLayouy_'..tostring(lidx)) then
  local bottomY = im.GetCursorPosY()
  im.SetCursorPosX(5)
  im.SetCursorPosY(35)
  im.TextUnformatted('[Right click for context menu]')
  im.SetCursorPosX(5)
  im.SetCursorPosY(55)
  im.TextUnformatted(view.typeName)
  im.SetCursorPosX(5)
  im.TextUnformatted('Nearclip: ' .. tostring(customRound(view.nearClip, 6)))
  if view.statusMessage then
    im.SetCursorPosX(5)
    im.SetCursorPosY(75)
@/lua/ge/extensions/flowgraph/manager.lua
  im.SetCursorPosY(im.GetCursorPosY() + 3 * uiscale)
  im.SetCursorPosX(im.GetCursorPosX() + 3 * uiscale)
  editor.uiIconImage(editor.icons[iconType .. "_" .. (connected and 1 or 2)], im.ImVec2(typeIconSize * uiscale, typeIconSize * uiscale), color)
  im.SetCursorPosY(im.GetCursorPosY() + 3 * uiscale)
  im.SetCursorPosX(im.GetCursorPosX() + 3 * uiscale)
  im.EndGroup()
@/lua/ge/extensions/editor/biomeTool.lua
  imgui.SameLine()
  imgui.SetCursorPosX(posX + textSize + 5)
  imgui.SetNextItemWidth(200)
  imgui.SameLine()
  imgui.SetCursorPosX(panelWidth - 180)
  imgui.SameLine()
  imgui.SetCursorPosX(posX + textSize + 5)
  imgui.SetNextItemWidth(200)
    imgui.SameLine()
    imgui.SetCursorPosX(posX + textSize + 5)
    imgui.SetNextItemWidth(200)
    imgui.SameLine()
    imgui.SetCursorPosX(posX + textSize + 5)
    imgui.SetNextItemWidth(200)

    imgui.SetCursorPosX(posX + textSize + 5)
    local imgPosStart = imgui.GetCursorPos()
  imgui.SameLine()
  imgui.SetCursorPosX(posX + textSize + 5)
  local firstWidgetPos = imgui.GetCursorPosX()
  local firstWidgetPos = imgui.GetCursorPosX()
  imgui.SetCursorPosX(firstWidgetPos)
  imgui.BeginChild1("CentralBrushesSelected"..layerType..layerID, imgui.ImVec2(180, 100), imgui.WindowFlags_ChildWindow)
  local posXCol2 = imgui.GetCursorPosX()
  imgui.SetCursorPosX(posXCol2 + 20)
  imgui.Text("Density:")
  if shouldWrap then
    imgui.SetCursorPosX(firstWidgetPos)
  else
  else
    imgui.SetCursorPosX(posXCol2 + imgui.CalcTextSize("Density:").x + 25)
  end
  imgui.SameLine()
  imgui.SetCursorPosX(posX + textSize + 5)

  imgui.SetCursorPosX(firstWidgetPos)
  imgui.BeginChild1("FalloffBrushesSelected"..layerType..layerID, imgui.ImVec2(180, 100), imgui.WindowFlags_ChildWindow)
  end
  imgui.SetCursorPosX(posXCol2 + 20)
  imgui.Text("Density:")
  if not shouldWrap then
    imgui.SetCursorPosX(posXCol2 + imgui.CalcTextSize("Density:").x + 25)
  else
  else
    imgui.SetCursorPosX(firstWidgetPos)
  end
  imgui.SameLine()
  imgui.SetCursorPosX(imgui.GetCursorPos().x + 20)
  imgui.Text("Border Width:")
  imgui.SameLine()
  imgui.SetCursorPosX(imgui.GetCursorPos().x + 5)
  imgui.SetNextItemWidth(120)
  imgui.SameLine()
  imgui.SetCursorPosX(posX + textSize + 5)
  imgui.SetNextItemWidth(120)
    var.fieldPlacementBoolPtr[0] = getFieldPlacement(layerType, layerID)
    imgui.SetCursorPosX(posX + textSize + 5)
    if imgui.Checkbox("##fieldPlacementEnabled", var.fieldPlacementBoolPtr) then
      imgui.SameLine()
      imgui.SetCursorPosX(posX + textSize + 5)
      local fieldItemDistPtr = imgui.FloatPtr(getFieldItemDistance(layerType, layerID))
      imgui.SameLine()
      imgui.SetCursorPosX(posX + textSize + 5)
      local fieldRowDistPtr = imgui.FloatPtr(getFieldRowDistance(layerType, layerID))
      imgui.SameLine()
      imgui.SetCursorPosX(posX + textSize + 5)
      local fieldRowOriPtr = imgui.FloatPtr(getFieldRowOrientation(layerType, layerID))
  posX = imgui.GetCursorPosX()
  imgui.SetCursorPosX(firstWidgetPos)
  if imgui.Checkbox("##edgePlacementEnabled", var.edgePlacementBoolPtr) then

    imgui.SetCursorPosX(firstWidgetPos)
    imgui.BeginChild1("EdgeBrushesSelected"..layerType..layerID, imgui.ImVec2(180, 100), imgui.WindowFlags_ChildWindow)
    imgui.SameLine()
    imgui.SetCursorPosX(firstWidgetPos)
    local fieldName = "EP_ItemDistance"
    imgui.SameLine()
    imgui.SetCursorPosX(firstWidgetPos)
    local randomTiltRange = var.getEPRandomTiltRange(layerType, layerID)
    imgui.SameLine()
    imgui.SetCursorPosX(firstWidgetPos)
    fieldName = "EP_BorderFalloff"
  else
    imgui.SetCursorPosX(imgui.GetContentRegionAvail().x/2 - 150)
    local arealistHeight = math.max(imgui.GetContentRegionAvail().y, 200)
  local buttonSize = imgui.ImVec2(150, 30)
  imgui.SetCursorPosX(imgui.GetContentRegionAvail().x/2 - buttonSize.x - 20)
  local cursorPosMsg = imgui.GetCursorPosX()
    local txtSize = imgui.CalcTextSize("Please draw the area on map")
    imgui.SetCursorPosX(cursorPosMsg - math.abs(buttonSize.x - txtSize.x)/2)
    imgui.PushStyleColor2(imgui.Col_Text, imgui.ImVec4(1, 0, 0, 1));
        else
          imgui.SetCursorPosX(widgetStartPosX)
        end

      --imgui.SetCursorPosX(cursorPosX)
      --if imgui.Button("Duplicate Layer", buttonSize) then

  imgui.SetCursorPosX(imgui.GetContentRegionAvail().x/2 - buttonSize.x/2)
  imgui.SetCursorPosY(imgui.GetCursorPosY()+imgui.GetStyle().FramePadding.y*2)

  imgui.SetCursorPosX(imgui.GetContentRegionAvail().x/2 - buttonSize.x/2)
  imgui.SetCursorPosY(imgui.GetCursorPosY()+imgui.GetStyle().FramePadding.y*2)
@/lua/ge/extensions/editor/dynamicDecals/layerTypes/decal.lua
  local cpos = im.GetCursorPos()
  im.SetCursorPosX(cpos.x + 80)
  if im.SmallButton("enable all") then
    im.SameLine()
    im.SetCursorPosX(im.GetCursorPosX() + im.GetContentRegionAvailWidth() - (im.CalcTextSize("Do not show again").x + 2*im.GetStyle().ItemSpacing.x + tool.getIconSize()))
    im.TextUnformatted("Do not show again")
@/lua/ge/extensions/util/groundModelDebug.lua
          im.PushID1(k..'_active')
          im.SetCursorPosX(15)
          if im.Checkbox('', groundModels[k].active) then
          im.PushID1(k..'_color')
          im.SetCursorPosX(65)
          if im.ColorEdit3("", groundModels[k].color, im.ColorEditFlags_NoInputs) then

          -- im.SetCursorPosX(55)
          if im.TreeNode1(k) then
@/lua/ge/extensions/editor/gen/lib/ui.lua
        im.SetCursorPosY(im.GetCursorPosY() + dim.y*(1-scale.y)/2)
        im.SetCursorPosX(im.GetCursorPosX() + dim.x*(1-scale.x)/2)
        im.Image(dicon[src].tex:getID(),
@/lua/ge/extensions/editor/missionPlaybook/missionTreeViewer.lua
  --im.SetCursorPosY(cp.y+nodeSize.y/2-10)
  --im.SetCursorPosX(cp.x)
  im.Dummy(im.ImVec2(10,nodeSize.y))
@/lua/ge/extensions/editor/dynamicDecals/docs.lua
    local titleSize = im.CalcTextSize(windowName)
    im.SetCursorPosX(im.GetCursorPosX() + im.GetContentRegionAvailWidth() / 2 - titleSize.x / 2)
    im.TextColored(editor.color.beamng.Value, windowName)
        local titleSize = im.CalcTextSize(currentSection.name)
        im.SetCursorPosX(im.GetCursorPosX() + im.GetContentRegionAvailWidth() / 2 - titleSize.x / 2)
        im.TextColored(editor.color.beamng.Value, currentSection.name)
@/lua/ge/extensions/editor/veMain.lua
  local txtSize = im.CalcTextSize("FPS: 999 ").y + im.CalcTextSize("GpuWait: 00.0f ").y + im.CalcTextSize("Poly: 123456789").y
  im.SetCursorPosX(im.GetCursorPosX() + im.GetContentRegionAvailWidth() - txtSize*4)
@/lua/ge/extensions/flowgraph/pin.lua
      local dnWidth = im.CalcTextSize(displayName)
      im.SetCursorPosX(xStart + outWidth - 16 - dnWidth.x - 3)
      im.TextUnformatted(displayName)
  end
  im.SetCursorPosX(xStart + outWidth - 16)
@/lua/ge/extensions/editor/fileDialog.lua
      im.SameLine()
      im.SetCursorPosX(im.GetCursorPosX() + im.GetContentRegionAvailWidth() - (25 * im.uiscale[0]))
      if editor.uiIconImageButton(editor.icons.create_new_folder, im.ImVec2(25 * im.uiscale[0], 25 * im.uiscale[0])) then
@/lua/ge/extensions/trackbuilder/trackBuilder.lua
  local piecePositions = partitionWidth(im.GetWindowWidth(), 46, 5)
  im.SetCursorPosX(piecePositions[1]+10)
  if im.Button("|<",style.thinButtonSize) then tbFunctions.navigate('first') end
  im.SameLine()
  im.SetCursorPosX(piecePositions[2]+10)
  if im.Button("<",style.thinButtonSize) then tbFunctions.navigate(-1) end
  im.SameLine()
  im.SetCursorPosX(piecePositions[3] + 10)
  if editor.uiIconImageButton(editor.icons.videocam, im.ImVec2(22,22), style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(piecePositions[4]-10)
  if im.Button(">",style.thinButtonSize) then tbFunctions.navigate(1) end
  im.SameLine()
  im.SetCursorPosX(piecePositions[5]-10)
  if im.Button(">|",style.thinButtonSize) then tbFunctions.navigate('last') end
  im.SameLine()
  im.SetCursorPosX(x + 191)
  modifierButtons('leftWall',0,true)
  im.SameLine()
  im.SetCursorPosX(x + 191)
  modifierButtons('rightWall',0,true)
  im.SameLine()
  im.SetCursorPosX(x + 191)
  modifierButtons('ceilingMesh',0,true)
  for i, v  in ipairs(values) do
    im.SetCursorPosX(pos[i])
    if im.Button((displayNames and displayNames[i] or v)..'##'..name, size) then

  im.SetCursorPosX(62)
  im.SameLine()
  im.SetCursorPosX(x + 191)
  modifierButtons('bank',0,true)
  im.NewLine()
  im.SetCursorPosX(62)
  im.SameLine()
  im.SetCursorPosX(x + 191)
  modifierButtons('height',0)

  im.SetCursorPosX(62)
  if im.Button("<##width",style.slimButtonSize) then tbFunctions.modifierShift('width',-1) end
  im.SameLine()
  im.SetCursorPosX(x + 191)
  modifierButtons('width',10,true)
  im.SameLine()
  im.SetCursorPosX(im.GetWindowWidth()-25)
  if editor.uiIconImageButton(editor.icons.undo, size or im.ImVec2(20,20), style.colorGreen) then
  im.SameLine()
  im.SetCursorPosX(im.GetWindowWidth()-25)
  if editor.uiIconImageButton(editor.icons.undo, size or im.ImVec2(20,20), style.colorGreen) then

  im.SetCursorPosX(xPositions[1])
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.base.radius", "Radius") .. ": " .. (p.radius[0]*4)..'m')
  im.SameLine()
  im.SetCursorPosX(xPositions[3])
  im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.base.length", "Length") .. ": " .. p.length[0]..'°')

  im.SetCursorPosX(xPositions[1])
  if editor.uiIconImageButton(editor.icons['tb_'..side..'_curve_thinner'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[2])
  if editor.uiIconImageButton(editor.icons['tb_'..side..'_curve_wider'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[3])
  if editor.uiIconImageButton(editor.icons['tb_'..side..'_curve_shorter'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[4])
  if editor.uiIconImageButton(editor.icons['tb_'..side..'_curve_longer'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
    im.SameLine()
    im.SetCursorPosX(xPositions[5])
    if editor.uiIconImageButton(editor.icons.content_cut,style.buttonSize,style.buttonColorBase) then

  im.SetCursorPosX(xPositions[1])
  im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.base.length", "Length") .. ": " .. (p.length[0]*4)..'m')

  im.SetCursorPosX(xPositions[1])
  if editor.uiIconImageButton(editor.icons['tb_forward_shorter'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[2])
  if editor.uiIconImageButton(editor.icons['tb_forward_longer'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
    im.SameLine()
    im.SetCursorPosX(xPositions[3])
    if editor.uiIconImageButton(editor.icons.content_cut,style.buttonSize,style.buttonColorBase) then

  im.SetCursorPosX(xPositions[1])
  im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.base.radius", "Radius") .. ": " .. (p.size[0]*4)..'m')
  im.SameLine()
  im.SetCursorPosX(xPositions[3])
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.base.length", "Length") .. ": " .. p.angle[0]..'°')

  im.SetCursorPosX(xPositions[1])
  if editor.uiIconImageButton(editor.icons['tb_'..side..'_curve_thinner'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[2])
  if editor.uiIconImageButton(editor.icons['tb_'..side..'_curve_wider'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[3])
  if editor.uiIconImageButton(editor.icons['tb_'..side..'_curve_shorter'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[4])
  if editor.uiIconImageButton(editor.icons['tb_'..side..'_curve_longer'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  end
  im.SetCursorPosX(xPositions[1])
  im.TextColored(style.textColor,(p.inside[0] and 'Outward' or 'Inward'))

  im.SetCursorPosX(xPositions[3])
  if editor.uiIconImageButton(editor.icons['tb_spiral_'..side..'_' .. (p.inside[0] and 'inside' or 'outside')] or editor.icons.stop,style.buttonSize) then
  local xPositions = partitionWidth(im.GetWindowWidth(),48,4)
  im.SetCursorPosX(xPositions[1])
  im.TextColored(style.textColor,"yOffset: " .. (p.length[0]*4)..'m')
  im.SameLine()
  im.SetCursorPosX(xPositions[3])
  im.TextColored(style.textColor,"xOffset: " .. (p.xOffset[0]*4)..'m')

  im.SetCursorPosX(xPositions[1])
  if editor.uiIconImageButton(editor.icons['tb_arrow_down'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[2])
  if editor.uiIconImageButton(editor.icons['tb_arrow_up'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[3])
  if editor.uiIconImageButton(editor.icons['tb_arrow_left'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[4])
  if editor.uiIconImageButton(editor.icons['tb_arrow_right'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  end
  im.SetCursorPosX(xPositions[2])
  im.TextColored(style.textColor,"Hardness: " .. (p.hardness[0]))

  im.SetCursorPosX(xPositions[2])
  if editor.uiIconImageButton(editor.icons['tb_scurve_softer'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[3])
  if editor.uiIconImageButton(editor.icons['tb_scurve_harder'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  local xPositions = partitionWidth(im.GetWindowWidth(),48,4)
  im.SetCursorPosX(xPositions[1])
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.base.radius", "Radius") .. ": " .. (p.radius[0]*4)..'m')
  im.SameLine()
  im.SetCursorPosX(xPositions[3])
  im.TextColored(style.textColor,"xOffset: " .. (p.xOffset[0]*4)..'m')

  im.SetCursorPosX(xPositions[1])
  if editor.uiIconImageButton(editor.icons['tb_loop_smaller'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[2])
  if editor.uiIconImageButton(editor.icons['tb_loop_bigger'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[3])
  if editor.uiIconImageButton(editor.icons['tb_arrow_left'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[4])
  if editor.uiIconImageButton(editor.icons['tb_arrow_right'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then

  im.SetCursorPosX(xPositions[1])
  im.TextColored(style.textColor,"yOffset: " .. (p.yOff[0]*4)..'m')
  im.SameLine()
  im.SetCursorPosX(xPositions[3])
  im.TextColored(style.textColor,"xOffset: " .. (p.xOff[0]*4)..'m')

  im.SetCursorPosX(xPositions[1])
  if editor.uiIconImageButton(editor.icons['tb_arrow_down'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[2])
  if editor.uiIconImageButton(editor.icons['tb_arrow_up'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[3])
  if editor.uiIconImageButton(editor.icons['tb_arrow_left'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[4])
  if editor.uiIconImageButton(editor.icons['tb_arrow_right'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then

  im.SetCursorPosX(xPositions[1])
  im.TextColored(style.textColor,"fwdLen: " .. (p.forwardLen[0])..'')
  im.SameLine()
  im.SetCursorPosX(xPositions[3])
  im.TextColored(style.textColor,"bckLen: " .. (p.backwardLen[0])..'')

  im.SetCursorPosX(xPositions[1])
  if editor.uiIconImageButton(editor.icons['tb_bezier_back_dec'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[2])
  if editor.uiIconImageButton(editor.icons['tb_bezier_back_inc'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[3])
  if editor.uiIconImageButton(editor.icons['tb_bezier_fwd_dec'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[4])
  if editor.uiIconImageButton(editor.icons['tb_bezier_fwd_inc'],style.buttonSize,style.buttonColorBase) then

  im.SetCursorPosX(xPositions[1])
  im.TextColored(style.textColor,"dirOff: " .. (p.dirOff[0])..'°')
  im.SameLine()
  im.SetCursorPosX(xPositions[3])
  im.TextColored(style.textColor,(p.absolute[0] and 'global' or 'local'))
  im.SameLine()
  im.SetCursorPosX(xPositions[4])
  im.TextColored(style.textColor,(p.empty[0] and 'empty' or 'solid'))

  im.SetCursorPosX(xPositions[1])
  if editor.uiIconImageButton(editor.icons['tb_rotate_left'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[2])
  if editor.uiIconImageButton(editor.icons['tb_rotate_right'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[3])
  if editor.uiIconImageButton(editor.icons[p.absolute[0] and 'tb_bezier_absolute_yes' or 'tb_bezier_absolute_no'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  im.SameLine()
  im.SetCursorPosX(xPositions[4])
  if editor.uiIconImageButton(editor.icons[p.empty[0] and 'tb_bezier_empty_yes' or 'tb_bezier_empty_no'] or editor.icons.stop,style.buttonSize,style.buttonColorBase) then
  -- first row
  im.SetCursorPosX(piecePositions[1]+1)
  deleteButton()
  im.SameLine()
  im.SetCursorPosX(piecePositions[2]+1)
  leftCurveButton()
  im.SameLine()
  im.SetCursorPosX(piecePositions[3]+1)
  straightButton()
  im.SameLine()
  im.SetCursorPosX(piecePositions[4]+1)
  rightCurveButton()
  im.SameLine()
  im.SetCursorPosX(piecePositions[5]+1)
  closeTrackButton()
  -- second row
  im.SetCursorPosX(piecePositions[1]+1)
  bezierButton()
  im.SameLine()
  im.SetCursorPosX(piecePositions[2]+1)
  leftSpiralButton()
  im.SameLine()
  im.SetCursorPosX(piecePositions[3]+1)
  scurveButton()
  im.SameLine()
  im.SetCursorPosX(piecePositions[4]+1)
  rightSpiralButton()
  im.SameLine()
  im.SetCursorPosX(piecePositions[5]+1)
  loopButton()
  if driving then
    --im.SetCursorPosX(style.toolbarWidth/2 - 100)
    if im.Button("Stop Driving", im.ImVec2(-1,-1)) then
    im.ImDrawList_AddRectFilled(im.GetWindowDrawList(), p, im.ImVec2(p.x+1,p.y+40), col)
    im.SetCursorPosX(im.GetCursorPosX() + 1)
    im.ImDrawList_AddRectFilled(im.GetWindowDrawList(), p, im.ImVec2(p.x+1,p.y+40), col)
    im.SetCursorPosX(im.GetCursorPosX() + 1)
    local piecePositions = partitionWidth(im.GetWindowWidth(), 48, 5)
    im.SetCursorPosX(piecePositions[1]+1)
    deleteButton()
    im.SameLine()
    im.SetCursorPosX(piecePositions[2]+1)
    leftCurveButton()
    im.SameLine()
    im.SetCursorPosX(piecePositions[3]+1)
    straightButton()
    im.SameLine()
    im.SetCursorPosX(piecePositions[4]+1)
    rightCurveButton()
    im.SameLine()
    im.SetCursorPosX(piecePositions[5]+1)
    closeTrackButton()
      im.Spacing()
      im.SetCursorPosX(im.GetWindowWidth()/2 - 100)
      if im.Button(translateLanguage("ui.trackbuilder.menus.openAdvancedPieces","Open Advanced Pieces"),im.ImVec2(200,50)) then
  local selectorPositions = partitionWidth(im.GetWindowWidth(), 100, 2)
  im.SetCursorPosX(selectorPositions[1])
  if im.Button(translateLanguage("ui.trackBuilder.base.drive","Drive"),im.ImVec2(100,24)) then
  im.SameLine()
  im.SetCursorPosX(selectorPositions[2])
  if im.Button(translateLanguage("ui.trackBuilder.base.test","Test"),im.ImVec2(100,24)) then
@/lua/ge/extensions/editor/dynamicDecals/layerStack.lua
  im.SameLine()
  im.SetCursorPosX(im.GetCursorPosX() + (im.GetContentRegionAvailWidth() - (tool.getIconSize() * im.uiscale[0])))
  if editor.uiIconImageButton(layer.enabled and editor.icons.visibility or editor.icons.visibility_off, im.ImVec2(tool.getIconSize(), tool.getIconSize()), nil, nil, nil, string.format("##enabled_%s_%s", guiId, layer.uid)) then

  im.SetCursorPosX(indentedCursorPosX)
    local textWidth = im.CalcTextSize(text).x
    im.SetCursorPosX(im.GetCursorPosX() + im.GetContentRegionAvailWidth() - textWidth)
    im.TextColored(editor.color.warning.Value, text)
  if layer.mask then
    im.SetCursorPosX(indentedCursorPosX)
    if im.Checkbox(string.format("##%s_%s_%s", layer.uid, guiId, "layerMaskEnabled"), editor.getTempBool_BoolBool(layer.mask.enabled)) then
      for k, maskLayer in ipairs(layer.mask.layers) do
        im.SetCursorPosX(indentedCursorPosX)
        local indentWidth = 2 * im.GetStyle().IndentSpacing
    local topLayerTextSize = im.CalcTextSize(topLayerText)
    im.SetCursorPosX(im.GetCursorPosX() +  im.GetContentRegionAvailWidth() / 2 - topLayerTextSize.x / 2)
    im.TextUnformatted(topLayerText)
    local bottomLayerTextSize = im.CalcTextSize(bottomLayerText)
    im.SetCursorPosX(im.GetCursorPosX() +  im.GetContentRegionAvailWidth() / 2 - bottomLayerTextSize.x / 2)
    im.TextUnformatted(bottomLayerText)
    local bottomLayerTextSize = im.CalcTextSize(bottomLayerText)
    im.SetCursorPosX(im.GetCursorPosX() +  im.GetContentRegionAvailWidth() / 2 - bottomLayerTextSize.x / 2)
    im.TextUnformatted(bottomLayerText)
    local topLayerTextSize = im.CalcTextSize(topLayerText)
    im.SetCursorPosX(im.GetCursorPosX() +  im.GetContentRegionAvailWidth() / 2 - topLayerTextSize.x / 2)
    im.TextUnformatted(topLayerText)
@/lua/ge/extensions/editor/raceEditor/tools.lua
  local cpx = im.GetCursorPosX()
  im.Text(name) im.SameLine() im.SetCursorPosX(cpx + 90) im.tooltip(tt or "")
  if classification[field] then
@/lua/ge/extensions/editor/vehicleEditor/veToolbar.lua
  im.SameLine()
  im.SetCursorPosX(im.GetCursorPosX() + im.GetContentRegionAvailWidth() - getCameraTodSlidersSize())
  cameraTodSliders()
@/lua/ge/extensions/editor/assetBrowser.lua
  im.SameLine()
  im.SetCursorPosX(cPosX + var.iconSize.x)
  editor.uiIconImage(editor.icons.star_border, var.iconSize, editor.color.gold.Value)
  im.SameLine()
  im.SetCursorPosX(cPosX + var.iconSize.x)
  if dir.open == true then
  end
  im.SetCursorPosX((im.GetCursorPosX() + im.GetContentRegionAvailWidth()) - (var.thumbnailSliderGroupWidth))
  thumbnailSizeSliderWidget(sliderWidth, true)
      end
      im.SetCursorPosX(indentedPos)
      -- Set the position to where we'd like to start rendering the right-side menu entries.
      im.SetCursorPosX(im.GetCursorPosX() + availWidth - (
        1 * var.style.FramePadding.x + -- padding to the right side of the window frame
        -- Some spacing.
        im.SetCursorPosX(im.GetCursorPosX() + 2 * var.style.ItemSpacing.x)
      end
        -- Some spacing.
        im.SetCursorPosX(im.GetCursorPosX() + 2 * var.style.ItemSpacing.x)
      end
        -- Some moar spacing.
        im.SetCursorPosX(im.GetCursorPosX() + 2 * var.style.ItemSpacing.x)
      end
@/lua/common/extensions/ui/imguiUtils.lua
      end
      imgui.SetCursorPosX(curX + 20 * imgui.uiscale[0])
      if imgui.Selectable1(item.label .. "##", nil, imgui.ImGuiSelectableFlags_DontClosePopups) then
@/lua/ge/extensions/editor/audioEventsList.lua

    im.SetCursorPosX(im.GetContentRegionAvail().x / 2 - stopButtonSize.x / 2)
    if im.Button("Stop Current Sound") then
@/lua/ge/extensions/editor/dynamicDecals/widgets.lua
  -- align with InputText widget
  -- im.SetCursorPosX(inputPosX)
  -- right align
  im.SetCursorPosX(im.GetContentRegionAvailWidth() - (imgWidth))
@/lua/ge/extensions/editor/forestEditor.lua
  if var.style then
    im.SetCursorPosX(im.GetCursorPosX() + var.style.ItemSpacing.x)
  end
      for _, element in ipairs(forestBrush.elements) do
        im.SetCursorPosX(cursorPos.x + var.style.FramePadding.x - var.fontSize)
        editor.uiIconImage(editor.icons.forest_brushelement, im.ImVec2(var.fontSize, var.fontSize))
  else
    im.SetCursorPosX(im.GetCursorPosX() + var.fontSize + var.style.ItemSpacing.x)
    editor.uiIconImage(editor.icons.forest_brushelement, im.ImVec2(var.fontSize, var.fontSize))
    local imgSize = (im.GetContentRegionAvailWidth() - (im.GetStyle().WindowPadding.x + 8 * im.GetStyle().ItemSpacing.x + 8 * im.GetStyle().FramePadding.x)) / 4
    im.SetCursorPosX(imgSize + im.GetStyle().ItemSpacing.x + im.GetStyle().WindowPadding.x + 2 * im.GetStyle().FramePadding.x)
    textureSetImageButton(imgSize, 1, "Top")

    im.SetCursorPosX(im.GetCursorPosX() + 5 * im.GetStyle().ItemSpacing.x)
    textureSetImageButton(imgSize, 6, "Front")

    im.SetCursorPosX(imgSize + im.GetStyle().ItemSpacing.x + im.GetStyle().WindowPadding.x + 2 * im.GetStyle().FramePadding.x)
    textureSetImageButton(imgSize, 5, "Bottom")
@/lua/ge/extensions/editor/materialEditor.lua
    im.SetColumnWidth(0, size.x + v.style.WindowPadding.x)
    im.SetCursorPosX(im.GetCursorPosX() - v.style.ItemSpacing.x)
  end
      -- -Y Back[2]
      im.SetCursorPosX(im.GetCursorPosX() + cubemapFaceThumbnailSize + v.style.ItemSpacing.x + 2) -- +2 = ImageButton border
      cubemapFaceImageButton(2, "-Y Back[2]")
      -- +Y Front[3]
      im.SetCursorPosX(im.GetCursorPosX() + cubemapFaceThumbnailSize + v.style.ItemSpacing.x + 2) -- +2 = ImageButton border
      cubemapFaceImageButton(3, "+Y Front[3]")

    im.SetCursorPosX(im.GetCursorPosX() + im.GetContentRegionAvailWidth() - (v.style.ItemSpacing.x + 4 * v.style.FramePadding.x + im.CalcTextSize("Create").x + im.CalcTextSize("Cancel").x))
    if createMaterialError then im.BeginDisabled() end
@/lua/ge/extensions/editor/dynamicDecals/news.lua
    local titleSize = im.CalcTextSize("Vehicle Livery Creator")
    im.SetCursorPosX(im.GetCursorPosX() + im.GetContentRegionAvailWidth() / 2 - titleSize.x / 2)
    im.TextColored(editor.color.beamng.Value, "Vehicle Livery Creator")
    im.SameLine()
    im.SetCursorPosX(im.GetCursorPosX() + im.GetContentRegionAvailWidth() - (im.CalcTextSize("Do not show again").x + 2*im.GetStyle().ItemSpacing.x + tool.getIconSize()))
    im.TextUnformatted("Do not show again")
@/lua/ge/extensions/editor/dynamicDecals/fonts.lua
    local textPosX = cpos.x + glyphPreviewSize + im.GetStyle().ItemSpacing.x
    im.SetCursorPosX(textPosX)
    im.TextUnformatted("exists: " .. tostring(char["exists"]))
    im.TextUnformatted("exists: " .. tostring(char["exists"]))
    im.SetCursorPosX(textPosX)
    im.TextUnformatted("monospaced_x: " .. tostring(char["monospaced_x"]))
    im.TextUnformatted("monospaced_x: " .. tostring(char["monospaced_x"]))
    im.SetCursorPosX(textPosX)
    im.TextUnformatted("monospaced_y: " .. tostring(char["monospaced_y"]))
    im.TextUnformatted("monospaced_y: " .. tostring(char["monospaced_y"]))
    -- im.SetCursorPosX(textPosX)
    -- im.TextUnformatted("x0: " .. tostring(char["x0"]))
    -- im.TextUnformatted("x0: " .. tostring(char["x0"]))
    -- im.SetCursorPosX(textPosX)
    -- im.TextUnformatted("y0: " .. tostring(char["y0"]))
    -- im.TextUnformatted("y0: " .. tostring(char["y0"]))
    -- im.SetCursorPosX(textPosX)
    -- im.TextUnformatted("x1: " .. tostring(char["x1"]))
    -- im.TextUnformatted("x1: " .. tostring(char["x1"]))
    -- im.SetCursorPosX(textPosX)
    -- im.TextUnformatted("y1: " .. tostring(char["y1"]))
    -- im.TextUnformatted("y1: " .. tostring(char["y1"]))
    -- im.SetCursorPosX(textPosX)
    -- im.TextUnformatted("width: " .. tostring(char["width"]))
    -- im.TextUnformatted("width: " .. tostring(char["width"]))
    -- im.SetCursorPosX(textPosX)
    -- im.TextUnformatted("height: " .. tostring(char["height"]))
    -- im.TextUnformatted("height: " .. tostring(char["height"]))
    im.SetCursorPosX(textPosX)
    im.TextUnformatted("xoff: " .. tostring(char["xoff"]))
    im.TextUnformatted("xoff: " .. tostring(char["xoff"]))
    im.SetCursorPosX(textPosX)
    im.TextUnformatted("yoff: " .. tostring(char["yoff"]))
    im.TextUnformatted("yoff: " .. tostring(char["yoff"]))
    im.SetCursorPosX(textPosX)
    im.TextUnformatted("xadvance: " .. tostring(char["xadvance"]))