@/lua/ge/extensions/trackbuilder/trackBuilder.lua
if im.Button("|<",style.thinButtonSize) then tbFunctions.navigate('first') end
im.tooltip(translateLanguage("ui.trackBuilder.selection.first", "Select First Piece"))
im.SameLine()
if im.Button("<",style.thinButtonSize) then tbFunctions.navigate(-1) end
im.tooltip(translateLanguage("ui.trackBuilder.selection.previous", "Select Previous Piece"))
im.SameLine()
end
im.tooltip(translateLanguage("ui.trackBuilder.camera.focus", 'Focus camera on selected piece'))
im.SameLine()
if im.Button(">",style.thinButtonSize) then tbFunctions.navigate(1) end
im.tooltip(translateLanguage("ui.trackBuilder.selection.next", "Select Next Piece"))
im.SameLine()
if im.Button(">|",style.thinButtonSize) then tbFunctions.navigate('last') end
im.tooltip(translateLanguage("ui.trackBuilder.selection.last", "Select Last Piece"))
end
end
im.tooltip(translateLanguage("ui.trackBuilder.tooltip.modify", "Modify"))
im.SameLine()
end
im.tooltip(translateLanguage("ui.trackBuilder.tooltip.remove", "Remove"))
im.SameLine()
end
im.tooltip(translateLanguage("ui.trackBuilder.tooltip.reset", "Reset"))
if hasInterpolation then
im.SameLine()
if im.Checkbox(translateLanguage("ui.trackBuilder.modifier.inverted", "Inverted") .. "##"..name, modifierValues[name].inverted) then
tbFunctions.modifierChange(name)
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.matEditor.texture", 'Texture'))
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.matEditor.base", 'Base'))
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.matEditor.texture", 'Texture'))
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.matEditor.base", 'Base'))
if im.ImageButton("##imageButton1", materialSettings.base.texId, im.ImVec2(64,64), im.ImVec2Zero, im.ImVec2One, im.ImColorByRGB(0,0,0,0).Value, im.ImColorByRGB(255,255,255,255).Value) then end
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.matEditor.decal", "Decal"))
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.matEditor.center", "Center"))
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.matEditor.decal", "Decal"))
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.matEditor.center", "Center"))
if im.ImageButton("##imageButton2", materialSettings.center.texId, im.ImVec2(64,64), im.ImVec2Zero, im.ImVec2One, im.ImColorByRGB(255,0,0,0).Value, im.ImColorByRGB(255,255,255,255).Value) then end
im.TextColored(style.textColor,"")
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.matEditor.border", "Border"))
if im.ImageButton("##imageButton3", materialSettings.border.texId, im.ImVec2(64,64), im.ImVec2Zero, im.ImVec2One, im.ImColorByRGB(0,0,0,0).Value, im.ImColorByRGB(255,255,255,255).Value) then end
if im.TreeNode1(translateLanguage("ui.trackBuilder.matEditor.paint", 'Paint')) then
local changed = false
local changed = false
if im.SmallButton(translateLanguage("ui.trackBuilder.matEditor.selectAll", "Select All")) then setAllPaintModes(true) changed = true end
im.SameLine()
im.SameLine()
if im.SmallButton(translateLanguage("ui.trackBuilder.matEditor.deselectAll", "Deselect All")) then setAllPaintModes(false) changed = true end
if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawLeftBorder", "Draw Left Border"), materials.materialInfo.leftMesh.paint) then changed = true end
if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawCenter", "Draw Center"), materials.materialInfo.centerMesh.paint) then changed = true end
if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawLeftBorder", "Draw Left Border"), materials.materialInfo.leftMesh.paint) then changed = true end
if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawCenter", "Draw Center"), materials.materialInfo.centerMesh.paint) then changed = true end
if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawRightBorder", "Draw Right Border"), materials.materialInfo.rightMesh.paint) then changed = true end
if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawCenter", "Draw Center"), materials.materialInfo.centerMesh.paint) then changed = true end
if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawRightBorder", "Draw Right Border"), materials.materialInfo.rightMesh.paint) then changed = true end
if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawLeftWall", "Draw Left Wall"), materials.materialInfo.leftWall.paint) then changed = true end
if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawCeiling", "Draw Ceiling"), materials.materialInfo.ceilingMesh.paint) then changed = true end
if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawLeftWall", "Draw Left Wall"), materials.materialInfo.leftWall.paint) then changed = true end
if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawCeiling", "Draw Ceiling"), materials.materialInfo.ceilingMesh.paint) then changed = true end
if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawRightWall", "Draw Right Wall"), materials.materialInfo.rightWall.paint) then changed = true end
if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawCeiling", "Draw Ceiling"), materials.materialInfo.ceilingMesh.paint) then changed = true end
if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawRightWall", "Draw Right Wall"), materials.materialInfo.rightWall.paint) then changed = true end
if changed then
if im.TreeNode1(translateLanguage("ui.trackBuilder.matEditor.baseTextures", "Base Textures")) then
im.BeginChild1("baseTextureChild", im.ImVec2(-1,160))
if im.TreeNode1(translateLanguage("ui.trackBuilder.matEditor.decalTextures", "Decal Textures")) then
im.BeginChild1("decalTextureChild",im.ImVec2(-1,160))
local function bordersAndCenters()
borderDrawSelector(translateLanguage("ui.trackBuilder.borders.leftBorderShape", 'Left Border Shape'),'leftMesh',borders, bordersTbl, 130)
im.Separator()
im.Separator()
borderDrawSelector(translateLanguage("ui.trackBuilder.borders.rightBorderShape", 'Right Border Shape'),'rightMesh',borders, bordersTbl, 130)
im.Separator()
im.PushItemWidth(120)
im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.wallsCeiling.leftWall", "Left Wall"))
if im.Checkbox(translateLanguage("ui.trackBuilder.wallsCeiling.active", "Active") .. "##leftWall", modifierValues.leftWall.active) then
im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.wallsCeiling.leftWall", "Left Wall"))
if im.Checkbox(translateLanguage("ui.trackBuilder.wallsCeiling.active", "Active") .. "##leftWall", modifierValues.leftWall.active) then
tbFunctions.modifierChange("leftWall")
local x = im.GetCursorPosX()
if im.DragFloat(translateLanguage("ui.trackBuilder.wallsCeiling.height", "Height") .. "##left", modifierValues.leftWall.value,0.1) then
if modifierValues.leftWall.value[0] > 50 then
im.Separator()
im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.wallsCeiling.rightWall", "Right Wall"))
if im.Checkbox(translateLanguage("ui.trackBuilder.wallsCeiling.active", "Active") .. "##rightWall", modifierValues.rightWall.active) then
im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.wallsCeiling.rightWall", "Right Wall"))
if im.Checkbox(translateLanguage("ui.trackBuilder.wallsCeiling.active", "Active") .. "##rightWall", modifierValues.rightWall.active) then
tbFunctions.modifierChange("rightWall")
x = im.GetCursorPosX()
if im.DragFloat(translateLanguage("ui.trackBuilder.wallsCeiling.height", "Height") .. "##right", modifierValues.rightWall.value,0.1) then
if modifierValues.rightWall.value[0] > 50 then
im.Separator()
im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.wallsCeiling.ceiling", "Ceiling"))
if im.Checkbox(translateLanguage("ui.trackBuilder.wallsCeiling.active", "Active") .. "##ceilingMesh", modifierValues.ceilingMesh.active) then
im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.wallsCeiling.ceiling", "Ceiling"))
if im.Checkbox(translateLanguage("ui.trackBuilder.wallsCeiling.active", "Active") .. "##ceilingMesh", modifierValues.ceilingMesh.active) then
tbFunctions.modifierChange("ceilingMesh")
x = im.GetCursorPosX()
if im.DragFloat(translateLanguage("ui.trackBuilder.wallsCeiling.height", "Height") .. "##ceil", modifierValues.ceilingMesh.value,0.1) then
if modifierValues.ceilingMesh.value[0] > 50 then
im.TextColored(style.textColor,string.format(translateLanguage("ui.trackBuilder.base.banking", "Banking") .. ": %.1f°", modifierValues.bank.value[0]))
im.TextColored(style.textColor,string.format(translateLanguage("ui.trackBuilder.base.height", "Height") .. ": %.1fm", modifierValues.height.value[0]))
im.SameLine()
if im.Checkbox(translateLanguage("ui.trackBuilder.modifier.inverted", "Inverted") .. "##"..'height', modifierValues['height'].inverted) then
tbFunctions.modifierChange('height')
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.base.width", "Width") .. ": " .. modifierValues.width.value[0]..'m')
smallSetButtons("width",{0,1,2,5,10,15,20},im.ImVec2(30,0))
saveSettings.fogValue[0] = fog
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.environmentSettings", "Environment settings"))
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.time", 'Time'))
if im.SliderFloat(translateLanguage("ui.trackBuilder.trackSettings.time", "Time"),saveSettings.timeOfDay , 00, 1, "%.2f") then
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.time", 'Time'))
if im.SliderFloat(translateLanguage("ui.trackBuilder.trackSettings.time", "Time"),saveSettings.timeOfDay , 00, 1, "%.2f") then
tod.time = saveSettings.timeOfDay[0]
end
im.tooltip(translateLanguage("ui.trackBuilder.tooltip.morning", "Morning"))
end
im.tooltip(translateLanguage("ui.trackBuilder.tooltip.noon", "Noon"))
end
im.tooltip(translateLanguage("ui.trackBuilder.tooltip.night", "Night"))
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.azimuth", 'Azimuth'))
im.tooltip(translateLanguage("ui.trackBuilder.tooltip.night", "Night"))
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.azimuth", 'Azimuth'))
if im.SliderFloat(translateLanguage("ui.trackBuilder.trackSettings.azimuth", 'Azimuth'),saveSettings.azimuthValue,0,2*math.pi,"%.2f") then
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.azimuth", 'Azimuth'))
if im.SliderFloat(translateLanguage("ui.trackBuilder.trackSettings.azimuth", 'Azimuth'),saveSettings.azimuthValue,0,2*math.pi,"%.2f") then
if saveSettings.azimuthValue[0] ~=0 then
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.fog", 'Fog'))
if im.SliderFloat(translateLanguage("ui.trackBuilder.trackSettings.fog", 'Fog'),saveSettings.fogValue, 0, 0.5, "%.8f",6) then
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.fog", 'Fog'))
if im.SliderFloat(translateLanguage("ui.trackBuilder.trackSettings.fog", 'Fog'),saveSettings.fogValue, 0, 0.5, "%.8f",6) then
core_environment.setFogDensity(saveSettings.fogValue[0])
local function raceSettings()
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.raceSettings", 'Race Settings'))
if im.Checkbox(translateLanguage("ui.trackBuilder.trackSettings.reversible", "Reversible"),saveSettings.allowReverse) then
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.raceSettings", 'Race Settings'))
if im.Checkbox(translateLanguage("ui.trackBuilder.trackSettings.reversible", "Reversible"),saveSettings.allowReverse) then
tb.setReversible(saveSettings.allowReverse[0])
end
if im.InputInt(translateLanguage("ui.trackBuilder.trackSettings.defaultLaps", "Default Laps"),saveSettings.lapCount) then
if saveSettings.lapCount[0] < 1 then saveSettings.lapCount[0] = 1 end
local function trackPositionSettings()
im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.trackSettings.trackTransform", "Track Transform"))
if im.DragFloat3(translateLanguage("ui.trackBuilder.trackSettings.position", "Position"),trackPositionValues.position,0.1) then
tb.setTrackPosition(trackPositionValues.position[0],trackPositionValues.position[1],trackPositionValues.position[2],trackPositionValues.rotation[0])
end
if im.DragFloat(translateLanguage("ui.trackBuilder.trackSettings.rotation", "Rotation"),trackPositionValues.rotation) then
tb.setTrackPosition(trackPositionValues.position[0],trackPositionValues.position[1],trackPositionValues.position[2],trackPositionValues.rotation[0])
local size = im.ImVec2(im.GetWindowWidth()-2,24)
if im.Button(translateLanguage("ui.trackBuilder.trackSettings.alignTrackToCam", "Align Track to Camera"),size) then
tb.rotateTrackToCamera()
end
if im.Button(translateLanguage("ui.trackBuilder.trackSettings.positionTrackBeforeCam", "Position Track before Camera"),size) then
tb.positionTrackBeforeCamera()
im.Separator()
if im.Button(translateLanguage("ui.trackBuilder.trackSettings.alignTrackToVehicle", "Align Track to Vehicle"),size) then
tb.rotateTrackToTrackVehicle()
end
if im.Button(translateLanguage("ui.trackBuilder.trackSettings.positionTrackAboveVehicle", "Position Track above Vehicle"),size) then
tb.positionTrackAboveVehicle()
local function saveInputButtons()
im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.saveLoad.saveTrack", "Save Track"))
im.InputText(translateLanguage("ui.trackBuilder.saveLoad.filename", "Filename"),saveSettings.saveStr)
im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.saveLoad.saveTrack", "Save Track"))
im.InputText(translateLanguage("ui.trackBuilder.saveLoad.filename", "Filename"),saveSettings.saveStr)
local text = translateLanguage("ui.trackBuilder.saveLoad.save", "Save Track")
local previewText = translateLanguage("ui.trackBuilder.saveLoad.createPreview", "Create Preview")
local text = translateLanguage("ui.trackBuilder.saveLoad.save", "Save Track")
local previewText = translateLanguage("ui.trackBuilder.saveLoad.createPreview", "Create Preview")
local name = ffi.string(saveSettings.saveStr)
if file == name then
text = translateLanguage("ui.trackBuilder.saveLoad.overwrite", "Overwrite Track")
allowScreenshot = true
if preview == name then
previewText = translateLanguage("ui.trackBuilder.saveLoad.overwritePreview", "Overwrite Preview")
allowPacking = true
saveSettings.previewNames = tb.getPreviewNames()
saveSettings.infoText = translateLanguage("ui.trackBuilder.saveLoad.trackWrittenTo", "Successfully saved track to ") .."'/trackEditor/"..ffi.string(saveSettings.saveStr)..".json'!"
end
screenshotTaken = false
saveSettings.infoText = translateLanguage("ui.trackBuilder.saveLoad.previewCreated", "Successfully created preview ") .."'/trackEditor/".. ffi.string(saveSettings.saveStr)..".jpg'!"
end
if allowPacking then
if im.Button(translateLanguage("ui.trackBuilder.saveLoad.packToMod", "Pack to Mod"), im.ImVec2(264,20)) then
local modName = "mods/TrackBuilder_" .. ffi.string(saveSettings.saveStr)..".zip"
zip:close()
saveSettings.infoText = translateLanguage("ui.trackBuilder.saveLoad.modSaved", "Successfully packed track and preview to mod file ") .."'/"..modName.."'!"
end
local function additionalSaveSettings()
im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.saveLoad.description", "Description"))
im.InputTextMultiline("##description", saveSettings.description, im.GetLengthArrayCharPtr(saveSettings.description), im.ImVec2(-1.0, im.GetTextLineHeight() * 3))
im.InputTextMultiline("##description", saveSettings.description, im.GetLengthArrayCharPtr(saveSettings.description), im.ImVec2(-1.0, im.GetTextLineHeight() * 3))
im.Combo1(translateLanguage("ui.trackBuilder.saveLoad.difficulty", 'Difficulty'), saveSettings.difficulty, difficulty)
if not isOnGlowCity then
im.Checkbox(translateLanguage("ui.trackBuilder.saveLoad.saveTimeSettings", 'Save time settings'),saveSettings.saveEnvironment)
end
im.Checkbox(translateLanguage("ui.trackBuilder.saveLoad.saveOnThisMap", "Save on this map"),saveSettings.saveOnMap)
end
local function loadTrackList()
im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.saveLoad.loadTrack", "Load Track"))
if im.Button('X ') then im.ImGuiTextFilter_Clear(loadFilesFilter) end
im.SameLine()
im.ImGuiTextFilter_Draw(loadFilesFilter, translateLanguage("ui.trackBuilder.saveLoad.search", "Search"), 120)
im.BeginChild1("LoadBox")
ffi.copy(saveSettings.saveStr, file)
saveSettings.infoText = translateLanguage("ui.trackBuilder.saveLoad.trackLoaded", "Loaded track ") .."'"..ffi.string(saveSettings.saveStr).."'!"
end
end
im.tooltip(translateLanguage("ui.trackBuilder.tooltip.reset", "Reset"))
dimensions = obstacleInfo[name].dimensions or 3
end
im.tooltip(translateLanguage("ui.trackBuilder.tooltip.reset", "Reset"))
end
im.tooltip(translateLanguage("ui.trackBuilder.tooltip.reset", "Reset"))
if im.Button(translateLanguage("ui.trackBuilder.obstacles.remove", "Remove") .. "##o"..i) then
o.active = false
im.SameLine()
if im.Button(translateLanguage("ui.trackBuilder.obstacles.copy", "Copy") .. "##o"..i) then
copy = o
end
im.tooltip(translateLanguage("ui.trackBuilder.tooltip.addObstacle", "Add obstacle"))
end
local function checkPoints()
if im.Checkbox(translateLanguage("ui.trackBuilder.checkpoints.active", "Active") .. "##cp",modifierValues.checkpoint.active) then
if modifierValues.checkpoint.active[0] then
if #currentCheckpointList == 0 then
im.TextWrapped(translateLanguage("ui.trackBuilder.checkpoints.info", "If you don't add any checkpoints, they will be automatically created when playing this track through the Time Trials game mode."))
else
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]..'°')
end
im.tooltip(translateLanguage("ui.trackBuilder.advanced.splitPiece", "Split Piece"))
end
im.SetCursorPosX(xPositions[1])
im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.base.length", "Length") .. ": " .. (p.length[0]*4)..'m')
end
im.tooltip(translateLanguage("ui.trackBuilder.advanced.splitPiece", "Split Piece"))
im.tooltip("Split Piece")
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])
im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.base.radius", "Radius") .. ": " .. (p.radius[0]*4)..'m')
im.SameLine()
end
im.tooltip(translateLanguage("ui.trackBuilder.base.delete", "Delete Current Segment"))
end
end
im.tooltip(translateLanguage("ui.trackBuilder.base.closeTrack", "Close Track"))
end
-- im.SetNextWindowPos(im.ImVec2(style.displaySize.x/2 - style.fullToolbarsWidth/2,0))
im.Begin( translateLanguage("ui.trackBuilder.toolbar.title", "Toolbar"), nil, im.flags(im.WindowFlags_NoScrollbar, im.WindowFlags_NoResize, im.WindowFlags_NoCollapse, im.WindowFlags_NoDocking))
if driving then
if im.Button("<##"..name,style.slimButtonSize) then tbFunctions.modifierShift(name,-1) end
im.tooltip(translateLanguage("ui.trackBuilder.tooltip.shiftBack", "Shift Modifier Back"))
im.SameLine()
if im.Button(">##"..name,style.slimButtonSize) then tbFunctions.modifierShift(name,1) end
im.tooltip(translateLanguage("ui.trackBuilder.tooltip.shiftForward", "Shift Modifier Forward"))
im.SameLine()
im.SetCursorPosX(im.GetWindowWidth()/2 - 100)
if im.Button(translateLanguage("ui.trackbuilder.menus.openAdvancedPieces","Open Advanced Pieces"),im.ImVec2(200,50)) then
menuItems.advancedPieces.isOpen[0] = true
im.Spacing()
im.TextColored(style.textColor,string.format(translateLanguage("ui.trackbuilder.base.banking", "Banking") .. ": %.1f°", modifierValues.bank.value[0]))
mainModifiers('bank','tb_bank_left','tb_bank_right',15,1,60,-720,720)
im.TextColored(style.textColor,string.format(translateLanguage("ui.trackBuilder.base.height", "Height") .. ": %.1fm", modifierValues.height.value[0]))
mainModifiers('height','tb_height_lower','tb_height_higher',1,5,25,-50000,50000)
im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.base.width", "Width") .. ": " .. modifierValues.width.value[0]..'m')
mainModifiers('width','tb_width_slimmer','tb_width_wider',1,5,10,0,50)
im.SetCursorPosX(selectorPositions[1])
if im.Button(translateLanguage("ui.trackBuilder.base.drive","Drive"),im.ImVec2(100,24)) then
tbFunctions.drive()
im.SetCursorPosX(selectorPositions[2])
if im.Button(translateLanguage("ui.trackBuilder.base.test","Test"),im.ImVec2(100,24)) then
tbFunctions.drive(currentIndex-1)
end
im.tooltip(translateLanguage("ui.trackBuilder.base.testDrive",'Starts from the selected Piece'))
if im.BeginMenuBar() then
if im.BeginMenu(translateLanguage("ui.trackbuilder.menus.windows","Windows")) then
for k,v in pairs(menuItemsSorted) do
end
if im.BeginMenu(translateLanguage("ui.trackbuilder.menus.editorSettings", "Editor Settings")) then
if im.MenuItem1(translateLanguage("ui.trackbuilder.menus.removeTrack","Remove Track")) then
if im.BeginMenu(translateLanguage("ui.trackbuilder.menus.editorSettings", "Editor Settings")) then
if im.MenuItem1(translateLanguage("ui.trackbuilder.menus.removeTrack","Remove Track")) then
toggleTrackBuilder()
end
if im.MenuItem1(translateLanguage("ui.trackbuilder.menus.resetTrack", "Reset Track")) then
tb.removeTrack()
im.Separator()
if im.MenuItem2(translateLanguage("ui.trackbuilder.menus.onlyOnePiecesWindow","Only one Pieces Window"),"",menuSettings.hidePieces.value) then serializeSettings() end
if im.MenuItem2(translateLanguage("ui.trackbuilder.menus.onlyOneModifierWindow", "Only one Modifier Window"),"",menuSettings.hideModifiers.value) then serializeSettings() end
if im.MenuItem2(translateLanguage("ui.trackbuilder.menus.onlyOnePiecesWindow","Only one Pieces Window"),"",menuSettings.hidePieces.value) then serializeSettings() end
if im.MenuItem2(translateLanguage("ui.trackbuilder.menus.onlyOneModifierWindow", "Only one Modifier Window"),"",menuSettings.hideModifiers.value) then serializeSettings() end
if im.MenuItem2(translateLanguage("ui.trackBuilder.settings.cameraFollow", "Automatic camera follow"),"",menuSettings.camActivated.value) then
if im.MenuItem2(translateLanguage("ui.trackbuilder.menus.onlyOneModifierWindow", "Only one Modifier Window"),"",menuSettings.hideModifiers.value) then serializeSettings() end
if im.MenuItem2(translateLanguage("ui.trackBuilder.settings.cameraFollow", "Automatic camera follow"),"",menuSettings.camActivated.value) then
tb.camActivated = menuSettings.camActivated.value[0]
end
if editor.uiSliderFloat(translateLanguage("ui.trackBuilder.settings.cameraFollowDistance", "Follow Distance"),menuSettings.camDistance.value, 10, 200, "%.1f", nil, camDistanceChanged) then tb.camDistance = menuSettings.camDistance.value[0] end
if camDistanceChanged[0] == true then serializeSettings() end
if im.Begin(translateLanguage("ui.trackbuilder.menus.trackBuilder", "Track Builder"), open, flags) then
style.toolbarWidth = (#menuItemsSorted + #additionalMenuItemsSorted) * 44 + 16 + (#menuItemsSorted + #additionalMenuItemsSorted - 1) * 8 + (#paintModesSorted) * 44 + 16 + (#paintModesSorted - 1) * 8 - 4
if not trackSpawned then
if im.Button(translateLanguage("ui.trackbuilder.menus.startTrackBuilder", "Start Track Builder Here"), im.ImVec2(-1,0)) then
trackSpawned = true
end
if im.Button(translateLanguage("ui.trackbuilder.menus.startTrackBuilderOnGlowCity", "Switch to Glow City"), im.ImVec2(-1,0)) then
freeroam_freeroam.startTrackBuilder('glow_city',true)
paintModes = {
Select = {tooltip=translateLanguage("ui.trackBuilder.toolbar.select", "Select segment"), active=im.BoolPtr(true), icon=editor.icons.near_me},
Paint = {tooltip=translateLanguage("ui.trackBuilder.toolbar.paint", "Paint material"), active=im.BoolPtr(false), icon=editor.icons.brush},
Select = {tooltip=translateLanguage("ui.trackBuilder.toolbar.select", "Select segment"), active=im.BoolPtr(true), icon=editor.icons.near_me},
Paint = {tooltip=translateLanguage("ui.trackBuilder.toolbar.paint", "Paint material"), active=im.BoolPtr(false), icon=editor.icons.brush},
ChangeMesh = {tooltip=translateLanguage("ui.trackBuilder.toolbar.changeShape", "Change track shapes"), active=im.BoolPtr(false), icon=editor.icons['tb_shapes'] or editor.icons.stop},
Paint = {tooltip=translateLanguage("ui.trackBuilder.toolbar.paint", "Paint material"), active=im.BoolPtr(false), icon=editor.icons.brush},
ChangeMesh = {tooltip=translateLanguage("ui.trackBuilder.toolbar.changeShape", "Change track shapes"), active=im.BoolPtr(false), icon=editor.icons['tb_shapes'] or editor.icons.stop},
Merge = {tooltip=translateLanguage("ui.trackBuilder.toolbar.merge", "Merge"), active=im.BoolPtr(false), icon=editor.icons.extension},
ChangeMesh = {tooltip=translateLanguage("ui.trackBuilder.toolbar.changeShape", "Change track shapes"), active=im.BoolPtr(false), icon=editor.icons['tb_shapes'] or editor.icons.stop},
Merge = {tooltip=translateLanguage("ui.trackBuilder.toolbar.merge", "Merge"), active=im.BoolPtr(false), icon=editor.icons.extension},
}
advancedModifiers = {
name = translateLanguage("ui.trackBuilder.menus.advancedModifiers", "Advanced Modifiers"),
isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons.adjust
advancedPieces = {
name = translateLanguage("ui.trackBuilder.menus.advancedPieces", "Advanced Pieces"),
isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons['tb_loop'] or editor.icons.stop
borders = {
name = translateLanguage("ui.trackBuilder.menus.trackShape", "Track Shape"),
isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons['tb_shapes'] or editor.icons.stop,
sidewalls = {
name =translateLanguage("ui.trackBuilder.menus.wallsCeiling", "Walls and Ceiling"),
isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons['tb_tunnel'] or editor.icons.stop
obstacles = {
name = translateLanguage("ui.trackBuilder.menus.obstacles", "Obstacles"),
isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,504), icon = editor.icons.remove_circle_outline
materialEditor = {
name = translateLanguage("ui.trackBuilder.menus.materialEditor", "Material Editor"),
isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons.brush,
additionalMenuItems = {
checkpoints = {name = translateLanguage("ui.trackBuilder.menus.checkpoints", "CheckPoints"), isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons.flag},
postionrotation = {name = translateLanguage("ui.trackBuilder.menus.trackSettings", "Track Settings"), isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons.settings},
checkpoints = {name = translateLanguage("ui.trackBuilder.menus.checkpoints", "CheckPoints"), isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons.flag},
postionrotation = {name = translateLanguage("ui.trackBuilder.menus.trackSettings", "Track Settings"), isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons.settings},
saveload = {name= translateLanguage("ui.trackBuilder.menus.saveLoad", "Save and Load"),isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,420), icon = editor.icons.save},
postionrotation = {name = translateLanguage("ui.trackBuilder.menus.trackSettings", "Track Settings"), isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons.settings},
saveload = {name= translateLanguage("ui.trackBuilder.menus.saveLoad", "Save and Load"),isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,420), icon = editor.icons.save},
--debug = {name = 'debug', value = im.BoolPtr(false), icon = editor.icons.bug_report}