VE Lua Documentation

Press F to search!

getTerrainHeight

Definition


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

Callers

@/lua/ge/extensions/editor/crawlEditor/paths.lua
  if core_terrain then
    p.z = (core_terrain.getTerrainHeight(p) or p.z)
    return p, true
@/lua/ge/extensions/editor/gen/test.lua
	if inworld then
		scenetree.findObject("thePlayer"):setPosition(vec3(x, y, core_terrain.getTerrainHeight(vec3(x,y))))
		if true then return end
@/lua/ge/extensions/editor/toolUtilities/polygon.lua
      tmp4:set(lerp(tmp1, tmp2, j * lineSegGranInv))
      tmp3.z = core_terrain.getTerrainHeight(tmp3) + lineRaiseHeight
      tmp4.z = core_terrain.getTerrainHeight(tmp4) + lineRaiseHeight
      tmp3.z = core_terrain.getTerrainHeight(tmp3) + lineRaiseHeight
      tmp4.z = core_terrain.getTerrainHeight(tmp4) + lineRaiseHeight
      render.drawSplineLine(tmp3, tmp4)
@/lua/ge/extensions/util/forestGenerator.lua
    if core_terrain.getTerrain() then
      data.pos.z = core_terrain.getTerrainHeight(data.pos)
    end
    if core_terrain.getTerrain() then
      data.pos.z = core_terrain.getTerrainHeight(data.pos)
    end
@/lua/ge/extensions/editor/tech/roadArchitect/utilities.lua
local function isOverTerrain(p)
  local zTerrain = core_terrain.getTerrainHeight(p)
  tmp:set(p.x, p.y, p.z + 4.5)
@/gameplay/missionTypes/scatterPickup/customNodes/scatterStuffInZonesNode.lua
          local z = zone.center.z
          if core_terrain.getTerrain() and core_terrain.getTerrainHeight(blue) > 0 then
            z = core_terrain.getTerrainHeight(blue)
          if core_terrain.getTerrain() and core_terrain.getTerrainHeight(blue) > 0 then
            z = core_terrain.getTerrainHeight(blue)
          end
@/lua/ge/extensions/editor/levelValidator.lua
  local terrainHeights = {}
  table.insert(terrainHeights, core_terrain.getTerrainHeight(bb:getCenter()) or 0)
  table.insert(terrainHeights, core_terrain.getTerrainHeight(bb.minExtents) or 0)
  table.insert(terrainHeights, core_terrain.getTerrainHeight(bb:getCenter()) or 0)
  table.insert(terrainHeights, core_terrain.getTerrainHeight(bb.minExtents) or 0)
  table.insert(terrainHeights, core_terrain.getTerrainHeight(bb.maxExtents) or 0)
  table.insert(terrainHeights, core_terrain.getTerrainHeight(bb.minExtents) or 0)
  table.insert(terrainHeights, core_terrain.getTerrainHeight(bb.maxExtents) or 0)
  table.insert(terrainHeights, core_terrain.getTerrainHeight(vec3(bb.minExtents.x, bb.maxExtents.y, 0)) or 0)
  table.insert(terrainHeights, core_terrain.getTerrainHeight(bb.maxExtents) or 0)
  table.insert(terrainHeights, core_terrain.getTerrainHeight(vec3(bb.minExtents.x, bb.maxExtents.y, 0)) or 0)
  table.insert(terrainHeights, core_terrain.getTerrainHeight(vec3(bb.maxExtents.x, bb.minExtents.y, 0)) or 0)
  table.insert(terrainHeights, core_terrain.getTerrainHeight(vec3(bb.minExtents.x, bb.maxExtents.y, 0)) or 0)
  table.insert(terrainHeights, core_terrain.getTerrainHeight(vec3(bb.maxExtents.x, bb.minExtents.y, 0)) or 0)
  local firstSignPositive = (bbMax - terrainHeights[1]) > 0
@/lua/ge/extensions/editor/crawlEditor/boundaries.lua
  if core_terrain then
    p.z = (core_terrain.getTerrainHeight(p) or p.z)
    return p, true
@/lua/ge/extensions/core/cameraModes/pacenoteOrbit.lua
  -- Note: Assuming newPos should be camPos in your context and considering BeamNG's Z-up coordinate system
  local terrainHeight = core_terrain.getTerrainHeight(vec3(camPos.x, camPos.y, 0))
@/lua/ge/extensions/editor/sitesEditor/zones.lua
  if core_terrain then
    p.z = (core_terrain.getTerrainHeight(p) or p.z)
    return p, true
@/lua/ge/extensions/editor/raceEditor/pathnodes.lua
--   local newPos = pos - offset
--   local rv = core_terrain.getTerrainHeight(pos)
--   if rv then
--   if rv then
--     newPos.z = core_terrain.getTerrainHeight(pos)
--   end
          editor.history:commitAction("Drop Node to Ground",
            {index = self.index, old = node.pos,self = self, new = vec3(pathnodePosition[0], pathnodePosition[1], core_terrain.getTerrainHeight(node.pos)), field = 'pos'},
            setFieldUndo, setFieldRedo)
          local tip = node.pos + new*node.radius
          new = vec3(tip.x, tip.y, core_terrain.getTerrainHeight(tip))-node.pos
        end
          local normalTip = node.pos + node.normal*node.radius
          normalTip = vec3(normalTip.x, normalTip.y, core_terrain.getTerrainHeight(normalTip))
          editor.history:commitAction("Align Normal with Terrain",
@/lua/ge/extensions/editor/objectToSplineEditor.lua
        if hasTerrain then
          local z = core_terrain.getTerrainHeight(pos)
          if math.abs(pos.z - z) >= 0.1 then -- terrain is below or above the current surface
@/lua/ge/extensions/editor/trafficSignalsEditor.lua
      if core_terrain.getTerrain() then
        signalPos[2] = core_terrain.getTerrainHeight(currInstance.pos)
        changed = true
@/lua/ge/extensions/gameplay/crawl/boundary.lua
      if core_terrain then
        pos.z = core_terrain.getTerrainHeight(pos) or pos.z
      else
@/lua/ge/extensions/editor/gen/network.lua
--    massCenter = vec3(pos.x, pos.y)
    local h = core_terrain.getTerrainHeight(pos)
    if not h then return end
                        local sc,sp,sn = an[k].pos
                        local hc = core_terrain.getTerrainHeight(sc)
    --                    v = v:normalized()
                        local htgt = core_terrain.getTerrainHeight(an[k+1].pos)
                        local a,b = (an[k].pos-sc):length(),(an[k+1].pos-sc):length()
                        local v = an[k+1].pos - sc
                        local h = core_terrain.getTerrainHeight(sc)
                        local dh = (htgt - h)/v:length()
                                local cp = sc + step*U.vturn(v, a)
                                local ch = core_terrain.getTerrainHeight(cp)
                                local cdh = (ch - h)/step
                            v = an[k+1].pos - sc
                            h = core_terrain.getTerrainHeight(sc)
                            dh = (htgt - h)/v:length()
                    local sc,sp,sn = s[2].pos
                    local hc = core_terrain.getTerrainHeight(sc)
                            local cp = sc + step*U.vturn(v, a)
                            local h = core_terrain.getTerrainHeight(cp)
                            if h < hmi then
@/lua/ge/extensions/editor/util/transformUtil.lua
  if not core_terrain.getTerrain() then return end
  self:set(vec3(self.pos.x, self.pos.y, core_terrain.getTerrainHeight(self.pos) or self.pos.z))
end
@/lua/ge/extensions/gameplay/race/startPosition.lua
  if scenetree.findClassObjects("TerrainBlock") then
    center.z = core_terrain.getTerrainHeight(center)
    local normalTip = center + (bl-fl)
    local normalTip = center + (bl-fl)
    normalTip = vec3(normalTip.x, normalTip.y, core_terrain.getTerrainHeight(normalTip))
    self.rot = quatFromDir((center - normalTip):normalized(), (flU-bl):normalized())
@/lua/ge/extensions/gameplay/rally/notebook/pacenote.lua
  for _,wp in ipairs(self.pacenoteWaypoints.sorted) do
    wp.pos.z = core_terrain.getTerrainHeight(wp.pos)
  end
@/lua/ge/extensions/editor/gen/region.lua
		out.avedit = {
			U.proj2D(adec[rmi].list[nmi])+vec3(0,0,core_terrain.getTerrainHeight(U.proj2D(adec[rmi].list[nmi]))),
			U.proj2D(adec[rmi].list[nmi+1])+vec3(0,0,core_terrain.getTerrainHeight(U.proj2D(adec[rmi].list[nmi+1]))),
			U.proj2D(adec[rmi].list[nmi])+vec3(0,0,core_terrain.getTerrainHeight(U.proj2D(adec[rmi].list[nmi]))),
			U.proj2D(adec[rmi].list[nmi+1])+vec3(0,0,core_terrain.getTerrainHeight(U.proj2D(adec[rmi].list[nmi+1]))),
		}
		local r = rma * math.sqrt((p - core_camera.getPosition()):length())
		p.z = core_terrain.getTerrainHeight(U.proj2D(p))
		debugDrawer:drawSphere(p, r, clr)
		tb:setHeightWs(vec3(x,y), 0)
		lo('?? 0_0 : h='..core_terrain.getTerrainHeight(vec3(x,y)))

		lo('?? -1_0 : '..core_terrain.getTerrainHeight(vec3(x-1,y)))
		lo('?? +1_0 : '..core_terrain.getTerrainHeight(vec3(x+1,y)))
		lo('?? -1_0 : '..core_terrain.getTerrainHeight(vec3(x-1,y)))
		lo('?? +1_0 : '..core_terrain.getTerrainHeight(vec3(x+1,y)))
		lo('?? 0_-1 : '..core_terrain.getTerrainHeight(vec3(x,y-1)))
		lo('?? +1_0 : '..core_terrain.getTerrainHeight(vec3(x+1,y)))
		lo('?? 0_-1 : '..core_terrain.getTerrainHeight(vec3(x,y-1)))
		lo('?? 0_+1 : '..core_terrain.getTerrainHeight(vec3(x,y+1)))
		lo('?? 0_-1 : '..core_terrain.getTerrainHeight(vec3(x,y-1)))
		lo('?? 0_+1 : '..core_terrain.getTerrainHeight(vec3(x,y+1)))
		tb:setHeightWs(vec3(x,y), 1)
		lo('?? 0_0 : h='..core_terrain.getTerrainHeight(vec3(x,y)))

		lo('?? -1_0 : '..core_terrain.getTerrainHeight(vec3(x-1,y)))
		lo('?? +1_0 : '..core_terrain.getTerrainHeight(vec3(x+1,y)))
		lo('?? -1_0 : '..core_terrain.getTerrainHeight(vec3(x-1,y)))
		lo('?? +1_0 : '..core_terrain.getTerrainHeight(vec3(x+1,y)))
		lo('?? 0_-1 : '..core_terrain.getTerrainHeight(vec3(x,y-1)))
		lo('?? +1_0 : '..core_terrain.getTerrainHeight(vec3(x+1,y)))
		lo('?? 0_-1 : '..core_terrain.getTerrainHeight(vec3(x,y-1)))
		lo('?? 0_+1 : '..core_terrain.getTerrainHeight(vec3(x,y+1)))
		lo('?? 0_-1 : '..core_terrain.getTerrainHeight(vec3(x,y-1)))
		lo('?? 0_+1 : '..core_terrain.getTerrainHeight(vec3(x,y+1)))
		tb:setHeightWs(vec3(x,y), 0)
		lo('?? 0_0 : h='..core_terrain.getTerrainHeight(vec3(x,y)))

		lo('?? -1_0 : '..core_terrain.getTerrainHeight(vec3(x-1,y)))
		lo('?? +1_0 : '..core_terrain.getTerrainHeight(vec3(x+1,y)))
		lo('?? -1_0 : '..core_terrain.getTerrainHeight(vec3(x-1,y)))
		lo('?? +1_0 : '..core_terrain.getTerrainHeight(vec3(x+1,y)))
		lo('?? 0_-1 : '..core_terrain.getTerrainHeight(vec3(x,y-1)))
		lo('?? +1_0 : '..core_terrain.getTerrainHeight(vec3(x+1,y)))
		lo('?? 0_-1 : '..core_terrain.getTerrainHeight(vec3(x,y-1)))
		lo('?? 0_+1 : '..core_terrain.getTerrainHeight(vec3(x,y+1)))
		lo('?? 0_-1 : '..core_terrain.getTerrainHeight(vec3(x,y-1)))
		lo('?? 0_+1 : '..core_terrain.getTerrainHeight(vec3(x,y+1)))
	c = c + pos
	local hbase = desc.pinned and desc.pos.z or core_terrain.getTerrainHeight(c) + hplus --+ 10
	-- get mantle
		for y = math.floor(c.y - r), math.ceil(c.y + r) do
--                lo('?? for_H:'..x..':'..y..':'..core_terrain.getTerrainHeight(vec3(x,y)), true)
--                out.avedit[#out.avedit + 1] = vec3(x, y, desc.pos.z + 5)
						end
						local hter = block[x][y] --core_terrain.getTerrainHeight(p)
						local h = U.spline2(hbase, hter, a, a + b)
@/lua/ge/extensions/gameplay/crawl/utils.lua
          if core_terrain then
            terrainHeight = core_terrain.getTerrainHeight(dotPos) or dotPos.z
          end
@/lua/ge/extensions/editor/crawlEditor/startingPositions.lua
  if core_terrain then
    p.z = (core_terrain.getTerrainHeight(p) or p.z)
    return p, true
@/lua/ge/extensions/editor/tech/roadArchitect/geometry.lua
    local rLeft, rRight = rDLeft[4], rD[rIdx][3]                                                    -- Test both the left-most and right-most lateral road points.
    local zLeft = core_terrain.getTerrainHeight(rLeft)
    local zRight = core_terrain.getTerrainHeight(rRight)
    local zLeft = core_terrain.getTerrainHeight(rLeft)
    local zRight = core_terrain.getTerrainHeight(rRight)
      tmp1:set(p.x, p.y, 0)
      p.z = core_terrain.getTerrainHeight(tmp1)
    end
        tmp2:set(l2.x, l2.y, 0)
        local gL = core_terrain.getTerrainHeight(tmp1)                                              -- Get the terrain height value under the left and right points.
        local gR = core_terrain.getTerrainHeight(tmp2)
        local gL = core_terrain.getTerrainHeight(tmp1)                                              -- Get the terrain height value under the left and right points.
        local gR = core_terrain.getTerrainHeight(tmp2)
        tmp1:set(0, 0, l4.z - gL)                                                                   -- The left and right vertical offset vectors, required to conform the road.
@/lua/ge/extensions/scenario/busdriver.lua
  end
  table.insert(wps, vec3(task[3][1], task[3][2], core_terrain.getTerrainHeight(vec3(task[3]))))
  local options = {
          end
          table.insert(wps, vec3(task[3][1], task[3][2], core_terrain.getTerrainHeight(vec3(task[3]))))
          local options = {
@/lua/ge/extensions/editor/gen/terrain.lua
local function forZ(p)
    return core_terrain.getTerrainHeight(p)
end
@/lua/ge/extensions/scenario/raceMarkers/crawlMarker.lua
      if core_terrain then
        local terrainHeight = core_terrain.getTerrainHeight(leftPos)
        if terrainHeight then
      if core_terrain then
        local terrainHeight = core_terrain.getTerrainHeight(rightPos)
        if terrainHeight then
  if core_terrain then
    local terrainHeight = core_terrain.getTerrainHeight(self.pos)
    if terrainHeight then
@/lua/ge/extensions/editor/rallyEditor/pacenotes.lua
  local newPos = pos - offset
  local rv = core_terrain.getTerrainHeight(pos)
  if rv then
  if rv then
    newPos.z = core_terrain.getTerrainHeight(pos)
  end
@/lua/ge/extensions/gameplay/sites/zone.lua
        if core_terrain then
          p.z = (core_terrain.getTerrainHeight(p) or p.z)
        end
@/lua/ge/extensions/editor/buildingEditor.lua
		pos = vec3(15, -72, 10)
		local hter = core_terrain.getTerrainHeight(pos)
		pos.z = pos.z + hter
		cpos.z = 0
		local ch = core_terrain.getTerrainHeight(cpos)
--            lo('??___ for_z:'..ch..':'..sz)
@/lua/ge/extensions/editor/api/gizmo.lua
      if core_terrain.getTerrain() then
        initialGizmoTerrainOffset = gizmoPos.z - core_terrain.getTerrainHeight(gizmoPos)
        initialGizmoTerrainNormal = core_terrain.getTerrainSmoothNormal(gizmoPos)
        initialGizmoTerrainNormal = core_terrain.getTerrainSmoothNormal(gizmoPos)
        lastGizmoTerrainHeight = core_terrain.getTerrainHeight(gizmoPos)
      else
          if core_terrain.getTerrain() then
            objectTerrainOffsets[index] = objPos.z - core_terrain.getTerrainHeight(objPos)
            objectTerrainNormals[index] = core_terrain.getTerrainSmoothNormal(objPos)
      if core_terrain.getTerrain() then
        newGizmoTerrainHeight = core_terrain.getTerrainHeight(newGizmoPos)
        newGizmoTerrainNormal = core_terrain.getTerrainSmoothNormal(newGizmoPos)
      local rotatedOffsetPos = objectGizmoOffsets[index]
      local objectTerrainHeight = core_terrain.getTerrainHeight(newPos) or 0
      local objectTerrainNormal = core_terrain.getTerrainSmoothNormal(newPos) or vec3(0, 1, 0)
@/lua/ge/extensions/flowgraph/nodes/gameplay/decalCircle.lua
    -- if self.data.snapToTerrain and core_terrain and core_terrain.getTerrain() then
    --   data.position.z = core_terrain.getTerrainHeight(data.position)
    -- end
@/lua/ge/extensions/gameplay/rally/snaproad.lua
local adjustHeight = function(pos, r)
  -- local newZ = core_terrain.getTerrainHeight(pos)
  -- return vec3(pos.x, pos.y, newZ-(r*0.25))
@/lua/ge/extensions/editor/gen/world.lua
	local cpos = core_camera.getPosition()
	cpos.z = core_terrain.getTerrainHeight(U.proj2D(cpos)) + 10
end
	if not shmap[p.x][p.y] then
--        lo('?? for_h:'..p.x..':'..p.y..':'..core_terrain.getTerrainHeight(p))
		shmap[p.x][p.y] = core_terrain.getTerrainHeight(p)
--        lo('?? for_h:'..p.x..':'..p.y..':'..core_terrain.getTerrainHeight(p))
		shmap[p.x][p.y] = core_terrain.getTerrainHeight(p)
	end
			end
			shmap[x][y] = core_terrain.getTerrainHeight(vec3(x,y))
		end
	if U._PRD == 0 and W.ui.injunction then
		scenetree.findObject("thePlayer"):setPosition(vec3(0, 0, core_terrain.getTerrainHeight(vec3(0,0))))
	end
			p = vec3(x, y)
			local z = tb and core_terrain.getTerrainHeight(p) or 0
			p.z = z
			local p = vec3(x, y)
			local z = tb and core_terrain.getTerrainHeight(p) or 0
			p.z = z
				dpos[id][#dpos[id]+1] = p
				local z = tb and core_terrain.getTerrainHeight(p) or 0
				p.z = z
--						pos = vec3(0,0,0)
					pos.z = core_terrain.getTerrainHeight(U.proj2D(pos))
					buildingGen(pos, base)
@/lua/ge/extensions/editor/crawlEditor/waypoints.lua
    editor.history:commitAction("Drop Pathnode to Ground",
      {index = index, old = pathnode.pos, self = self, new = vec3(pathnodePosition[0], pathnodePosition[1], core_terrain.getTerrainHeight(pathnode.pos)), field = 'pos'},
      setFieldUndo, setFieldRedo)
@/lua/ge/extensions/gameplay/parking.lua
    if core_terrain.getTerrain() then
      lastPos.z = core_terrain.getTerrainHeight(lastPos)
      debugDrawer:drawCylinder(lastPos, lastPos + vec3(0, 0, 1), checkRadius, ColorF(0, 1, 0, 0.1))

      debugPos.z = core_terrain.getTerrainHeight(debugPos)
      debugDrawer:drawCylinder(debugPos, debugPos + vec3(0, 0, 1), areaRadius, ColorF(0, 1, 1, 0.1))
@/lua/ge/extensions/editor/tech/roadArchitect/tunnelMesh.lua
        tmp0:set(sx1, sy1, 0)
        tmp1:set(sx1, sy1, core_terrain.getTerrainHeight(tmp0))
        local dSq = tmp1:squaredDistanceToLineSegment(c1, c2)
        tmp0:set(sx1, sy2, 0)
        tmp1:set(sx1, sy2, core_terrain.getTerrainHeight(tmp0))
        local dSq = tmp1:squaredDistanceToLineSegment(c1, c2)
        tmp0:set(sx2, sy1, 0)
        tmp1:set(sx2, sy1, core_terrain.getTerrainHeight(tmp0))
        local dSq = tmp1:squaredDistanceToLineSegment(c1, c2)
        tmp0:set(sx2, sy2, 0)
        tmp1:set(sx2, sy2, core_terrain.getTerrainHeight(tmp0))
        local dSq = tmp1:squaredDistanceToLineSegment(c1, c2)
@/lua/ge/extensions/gameplay/sites/parkingSpot.lua
  if scenetree.findClassObjects("TerrainBlock") then
    center.z = core_terrain.getTerrainHeight(center)
    local normalTip = center + (bl-fl)
    local normalTip = center + (bl-fl)
    normalTip = vec3(normalTip.x, normalTip.y, core_terrain.getTerrainHeight(normalTip))
    self.rot = quatFromDir((center - normalTip):normalized(), (flU-bl):normalized())
@/lua/ge/extensions/editor/terrainAndRoadImporter.lua
      tmp1:set(d.x, d.y, 0)
      nodes[j] = vec3(d.x, d.y, core_terrain.getTerrainHeight(tmp1))
      widths[j] = d.width
@/lua/ge/extensions/editor/raceEditor/tools.lua
    for _, node in pairs(self.path.pathnodes.objects) do
      newDataMap[node.id] = core_terrain.getTerrainHeight(node.pos)
    end
        local normalTip = node.pos + node.normal*node.radius
        normalTip = vec3(normalTip.x, normalTip.y, core_terrain.getTerrainHeight(normalTip))
        newDataMap[node.id] = normalTip - node.pos
@/lua/ge/extensions/editor/roadArchitect.lua
              if nodes[1] then
                nodes[1].p.z = core_terrain.getTerrainHeight(nodes[1].p)
              end
              if nodes[2] then
                nodes[2].p.z = core_terrain.getTerrainHeight(nodes[2].p)
              end
                if nodes[1] then
                  nodes[1].p.z = core_terrain.getTerrainHeight(nodes[1].p)
                end
                if nodes[2] then
                  nodes[2].p.z = core_terrain.getTerrainHeight(nodes[2].p)
                end
@/lua/ge/extensions/editor/gen/utils.lua
		local r = rma * math.sqrt((p - core_camera.getPosition()):length())
--        p.z = core_terrain.getTerrainHeight(U.proj2D(p))
		debugDrawer:drawSphere(p + plus, r, clr, false)
--                    out.avedit[#out.avedit + 1] = nxt
--                    out.avedit[#out.avedit].z = core_terrain.getTerrainHeight(nxt)
		end
--                    out.avedit[#out.avedit + 1] = nxt
--                    out.avedit[#out.avedit].z = core_terrain.getTerrainHeight(nxt)
		end
@/lua/ge/extensions/editor/gen/decal.lua
                                            end
--                                            adec[rsrc].list[n].z = core_terrain.getTerrainHeight(adec[rsrc].list[n])
        for k,n in pairs(r.list) do
            adec[i].list[k].z = core_terrain.getTerrainHeight(adec[i].list[k])
        end
    for _,p in pairs(out.avedit) do
        p.z = core_terrain.getTerrainHeight(p)
    end
local function forZ(p)
    return core_terrain.getTerrainHeight(p)
end
    if not mask[ijs] or fix == 0 then
        local shight = mask[ijs] and mask[ijs][1] or core_terrain.getTerrainHeight(p)
        mask[ijs] = {shight, h, fix or 1, ij}
    if not mask[ijs] then
        mask[ijs] = {core_terrain.getTerrainHeight(p), h, 1, ij}
    elseif fix then
            --                                lo('?? for_r:'..r)
            --                        pc = pc + vec3(0,0,core_terrain.getTerrainHeight(pc))
                                    if r > pinext then
                                    r = pc:distance(D.epos(rd.body, d.dir==-1 and rd.body:getEdgeCount()-1 or 0, d.dir==-1 and 'right' or 'left'))
            --                        pc = pc + vec3(0,0,core_terrain.getTerrainHeight(pc))
            --                            out.avedit = {c + forZ(c)} -- vec3(0,0,core_terrain.getTerrainHeight(c))}
            --                        pc = pc + vec3(0,0,core_terrain.getTerrainHeight(pc))
            --                            out.avedit = {c + forZ(c)} -- vec3(0,0,core_terrain.getTerrainHeight(c))}
                                    if r > pinext then
        --        U.dump(bcross, '?? road2ter:'..ind..':'..adec[ind].id)
        --            U.dump(rd.across, '?? for_rdcross:'..#rd.across..':'..core_terrain.getTerrainHeight(rd.across[1])..':'..core_terrain.getTerrainHeight(rd.across[3]))
            for i=2,#rd.across do
        --        U.dump(bcross, '?? road2ter:'..ind..':'..adec[ind].id)
        --            U.dump(rd.across, '?? for_rdcross:'..#rd.across..':'..core_terrain.getTerrainHeight(rd.across[1])..':'..core_terrain.getTerrainHeight(rd.across[3]))
            for i=2,#rd.across do
        --            U.dump(rd.across[i], '?? forAC:')
        --            lo('?? for_DH:'..(core_terrain.getTerrainHeight(rd.across[i][2])-core_terrain.getTerrainHeight(rd.across[i-1][2])))
                if math.abs((core_terrain.getTerrainHeight(rd.across[i].p)-core_terrain.getTerrainHeight(rd.across[i-1].p))/(andist[rd.across[i].inode]-andist[rd.across[i-1].inode])) > math.tan(maxslope) then
        --            U.dump(rd.across[i], '?? forAC:')
        --            lo('?? for_DH:'..(core_terrain.getTerrainHeight(rd.across[i][2])-core_terrain.getTerrainHeight(rd.across[i-1][2])))
                if math.abs((core_terrain.getTerrainHeight(rd.across[i].p)-core_terrain.getTerrainHeight(rd.across[i-1].p))/(andist[rd.across[i].inode]-andist[rd.across[i-1].inode])) > math.tan(maxslope) then
        --            lo('?? for_DH:'..(core_terrain.getTerrainHeight(rd.across[i][2])-core_terrain.getTerrainHeight(rd.across[i-1][2])))
                if math.abs((core_terrain.getTerrainHeight(rd.across[i].p)-core_terrain.getTerrainHeight(rd.across[i-1].p))/(andist[rd.across[i].inode]-andist[rd.across[i-1].inode])) > math.tan(maxslope) then
                    lo('!! high_SLOPE:'..ind..':'..rd.id)
        --            lo('?? for_DH:'..(core_terrain.getTerrainHeight(rd.across[i][2])-core_terrain.getTerrainHeight(rd.across[i-1][2])))
                if math.abs((core_terrain.getTerrainHeight(rd.across[i].p)-core_terrain.getTerrainHeight(rd.across[i-1].p))/(andist[rd.across[i].inode]-andist[rd.across[i-1].inode])) > math.tan(maxslope) then
                    lo('!! high_SLOPE:'..ind..':'..rd.id)
local function hmapChange(p, h, yes)
--    if hsave == nil then hsave = core_terrain.getTerrainHeight(p) end
    local hsave = core_terrain.getTerrainHeight(p)
--    if hsave == nil then hsave = core_terrain.getTerrainHeight(p) end
    local hsave = core_terrain.getTerrainHeight(p)
--    shmap[p.x..'_'..p.y] = core_terrain.getTerrainHeight(p)
    local hsave = core_terrain.getTerrainHeight(p)
--    shmap[p.x..'_'..p.y] = core_terrain.getTerrainHeight(p)
--    if not out.inconform then
    cint = 1
    local cheight = core_terrain.getTerrainHeight(vec3(anode[1].pos.x,anode[1].pos.y))
--            aepin = {{1, cheight}}
--            aepin = {{1, cheight}}
--    local cheight = core_terrain.getTerrainHeight(vec3(anode[acp[cint]].pos.x,anode[acp[cint]].pos.y))
    local inswitch = false
                inswitch = true
                cheight = core_terrain.getTerrainHeight(vec3(anode[acp[cint]].pos.x,anode[acp[cint]].pos.y))
                cdist = aeinfo[i+1].d
                    local p = croad:getMiddleEdgePosition(i)
                    aepin[#aepin+1] = {i+1, core_terrain.getTerrainHeight(vec3(p.x,p.y))}
    --                aepin[i+1] = core_terrain.getTerrainHeight(vec3(p.x,p.y))
                    aepin[#aepin+1] = {i+1, core_terrain.getTerrainHeight(vec3(p.x,p.y))}
    --                aepin[i+1] = core_terrain.getTerrainHeight(vec3(p.x,p.y))
                    cdist = aeinfo[i+1].d
            local p = croad:getMiddleEdgePosition(nsec-1)
            aepin[#aepin + 1] = {nsec, core_terrain.getTerrainHeight(vec3(p.x,p.y))}
        end
                        local t = vec3(x,y)
                        t.z = core_terrain.getTerrainHeight(t)
                        --                                        lo('?? for_dist:'..aeinfo[pin1].d..':'..aeinfo[imi].d..':'..aeinfo[pin2].d..' c:'..c..' h:'..hbase..' d:'..ap[y][x][1]..':'..dmi..' w:'..rwidth)
                        --                                    local hter = t.z -- core_terrain.getTerrainHeight(p)
                out.avedit = {us1, us2, them1, them2}
                out.apick = {vec3(x,y,core_terrain.getTerrainHeight(vec3(x,y)))}
--                lo('?? fr_to:'..ifr..'>'..ito..'/'..nsec..':'..jfr..'>'..jto..'/'..nsecthem)
            local p = vec3(x,y) + (u + v):normalized()*margin/math.sin(ang)
            p.z = core_terrain.getTerrainHeight(p)
            local ie = atEdge(p, rdobj)
--                    out.avedit[#out.avedit + 1] = nxt
--                    out.avedit[#out.avedit].z = core_terrain.getTerrainHeight(nxt)
        end
--                    out.avedit[#out.avedit + 1] = nxt
--                    out.avedit[#out.avedit].z = core_terrain.getTerrainHeight(nxt)
        end
--            veh:setPositionNoPhysicsReset(rayCast.pos)
--            scenetree.findObject("thePlayer"):setPosition(vec3(x, y, core_terrain.getTerrainHeight(vec3(x,y))))
--        elseif editor.keyModifiers.ctrl then -- and out.injunction then --not indrag and U._MODE ~= 'conf' then
@/lua/ge/extensions/editor/roadUtils.lua
    newPos.y = newPos.y + (math.random() - 0.5) * factor
    newPos.z = core_terrain.getTerrainHeight(newPos)
@/lua/ge/extensions/freeroam/facilities.lua
      pos = vec3((aabb.xMin + aabb.xMax)/2, (aabb.yMin + aabb.yMax)/2, (aabb.zMin + aabb.zMax)/2)
      pos.z = core_terrain.getTerrainHeight(pos) or pos.z
      radius = math.sqrt(((aabb.xMax - aabb.xMin)/2) * ((aabb.xMax - aabb.xMin)/2) + ((aabb.yMax - aabb.yMin)/2) * ((aabb.yMax - aabb.yMin)/2))
@/lua/ge/extensions/flowgraph/nodes/gameplay/decalLine.lua
    -- if self.data.snapToTerrain and core_terrain and core_terrain.getTerrain() then
    --   data.position.z = core_terrain.getTerrainHeight(data.position)
    -- end
@/lua/ge/extensions/core/multiSpawn.lua
  elseif core_terrain.getTerrain() then
    pos.z = core_terrain.getTerrainHeight(pos)
  end
@/lua/ge/extensions/editor/raceEditor/pacenotes.lua
        editor.history:commitAction("Drop Note to Ground",
          {index = self.index, old = note.pos,self = self, new = vec3(pacenotePosition[0], pacenotePosition[1], core_terrain.getTerrainHeight(note.pos)), field = 'pos'},
          setFieldUndo, setFieldRedo)
        local normalTip = note.pos + note.normal*note.radius
        normalTip = vec3(normalTip.x, normalTip.y, core_terrain.getTerrainHeight(normalTip))
        editor.history:commitAction("Align Normal with Terrain",
@/lua/ge/extensions/flowgraph/nodes/types/transform.lua
      if scenetree.findClassObjects("TerrainBlock") then
        self.position.z = core_terrain.getTerrainHeight(self.position)
        self:updateTransform()
@/lua/ge/extensions/flowgraph/nodes/math/math.lua
  env.smoothmin = smoothmin
  env.terrainHeight = function(v) return core_terrain and (core_terrain.getTerrainHeight(v) or v.z) or v.z end
  env.case = case
@/lua/ge/extensions/editor/raceEditor/startPositions.lua
        local old = sp:onSerialize()
        sp.pos = vec3(spPosition[0], spPosition[1], core_terrain.getTerrainHeight(sp.pos))
        self:updateTransform(self.index)
        local normalTip = sp.pos + sp.rot*vec3(0,-4.5, 0)
        normalTip = vec3(normalTip.x, normalTip.y, core_terrain.getTerrainHeight(normalTip))
        sp.rot = quatFromDir((sp.pos - normalTip):normalized(), vec3(0,0,1))
@/lua/ge/extensions/gameplay/missions/missionManager.lua
    local pos = core_camera.getPosition()
    pos.z = core_terrain.getTerrainHeight(pos)+0.5
    local options = {config = "kc6x_360_A", pos = pos}
@/lua/ge/extensions/editor/roadDecorations.lua

  local height = core_terrain.getTerrainHeight(vec3(pos.x, pos.y, pos.z))
  if height then
@/lua/ge/extensions/core/terrain.lua

local function getTerrainHeight(point)
  local terrain = getTerrain()
@/lua/ge/extensions/gameplay/traffic/vehicle.lua
      local isDaytime = self:checkTimeOfDay()
      local terrainHeight = core_terrain.getTerrain() and core_terrain.getTerrainHeight(self.pos) or 0
      local terrainHeightDefault = core_terrain.getTerrain() and core_terrain.getTerrain():getPosition().z or 0
@/lua/ge/extensions/ui/apps/minimap/topomap.lua
  log("I", "", string.format("Test heights: origin=%.1f, (100,0)=%.1f, (0,100)=%.1f",
    core_terrain.getTerrainHeight(vec3(0,0,0)) or 0,
    core_terrain.getTerrainHeight(vec3(100,0,0)) or 0,
    core_terrain.getTerrainHeight(vec3(0,0,0)) or 0,
    core_terrain.getTerrainHeight(vec3(100,0,0)) or 0,
    core_terrain.getTerrainHeight(vec3(0,100,0)) or 0))
    core_terrain.getTerrainHeight(vec3(100,0,0)) or 0,
    core_terrain.getTerrainHeight(vec3(0,100,0)) or 0))
      -- Get terrain height at this position
      local terrainHeight = core_terrain.getTerrainHeight(scanPos)
      if terrainHeight and terrainHeight > 0 then