Created
November 30, 2020 18:55
-
-
Save kduske/452e1de52bb7ddd89bd5f1be055f221b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| I[19:53:45.495] clangd version 11.0.0 (https://github.com/llvm/llvm-project 176249bd6732a8044d457092ed932768724a6f06) | |
| I[19:53:45.495] PID: 53116 | |
| I[19:53:45.495] Working directory: /Users/kristian/Documents/Code/TrenchBroom | |
| I[19:53:45.495] argv[0]: /Users/kristian/.bin/clangd_11.0.0/bin/clangd | |
| I[19:53:45.495] argv[1]: --log=verbose | |
| V[19:53:45.495] User config file is /Users/kristian/Library/Preferences/clangd/config.yaml | |
| I[19:53:45.495] Starting LSP over stdin/stdout | |
| V[19:53:45.496] <<< {"id":0,"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"textDocument":{"callHierarchy":{"dynamicRegistration":true},"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dynamicRegistration":true,"isPreferredSupport":true},"codeLens":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"completion":{"completionItem":{"commitCharactersSupport":true,"deprecatedSupport":true,"documentationFormat":["markdown","plaintext"],"insertReplaceSupport":true,"preselectSupport":true,"resolveAdditionalTextEditsSupport":true,"snippetSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]},"contextSupport":true,"dynamicRegistration":true,"editsNearCursor":true},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"documentHighlight":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true,"tooltipSupport":true},"documentSymbol":{"dynamicRegistration":true,"hierarchicalDocumentSymbolSupport":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"foldingRange":{"dynamicRegistration":true,"lineFoldingOnly":true,"rangeLimit":5000},"formatting":{"dynamicRegistration":true},"hover":{"contentFormat":["markdown","plaintext"],"dynamicRegistration":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"onTypeFormatting":{"dynamicRegistration":true},"publishDiagnostics":{"complexDiagnosticCodeSupport":true,"relatedInformation":true,"tagSupport":{"valueSet":[1,2]},"versionSupport":false},"rangeFormatting":{"dynamicRegistration":true},"references":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true},"selectionRange":{"dynamicRegistration":true},"semanticHighlightingCapabilities":{"semanticHighlighting":true},"semanticTokens":{"dynamicRegistration":true,"formats":["relative"],"requests":{"full":{"delta":true},"range":true},"tokenModifiers":["declaration","definition","readonly","static","deprecated","abstract","async","modification","documentation","defaultLibrary"],"tokenTypes":["namespace","type","class","enum","interface","struct","typeParameter","parameter","variable","property","enumMember","event","function","member","macro","keyword","modifier","comment","string","number","regexp","operator"]},"signatureHelp":{"contextSupport":true,"dynamicRegistration":true,"signatureInformation":{"activeParameterSupport":true,"documentationFormat":["markdown","plaintext"],"parameterInformation":{"labelOffsetSupport":true}}},"synchronization":{"didSave":true,"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true}},"window":{"workDoneProgress":true},"workspace":{"applyEdit":true,"configuration":true,"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true},"executeCommand":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"workspaceEdit":{"documentChanges":true,"failureHandling":"textOnlyTransactional","resourceOperations":["create","rename","delete"]},"workspaceFolders":true}},"clientInfo":{"name":"vscode","version":"1.51.1"},"initializationOptions":{"clangdFileStatus":true,"fallbackFlags":[]},"processId":53081,"rootPath":"/Users/kristian/Documents/Code/TrenchBroom","rootUri":"file:///Users/kristian/Documents/Code/TrenchBroom","trace":"off","workspaceFolders":[{"name":"TrenchBroom","uri":"file:///Users/kristian/Documents/Code/TrenchBroom"}]}} | |
| I[19:53:45.496] <-- initialize(0) | |
| I[19:53:45.496] Client supports legacy semanticHighlights notification and standard semanticTokens request, choosing the latter (no notifications). | |
| V[19:53:45.496] Invoking /usr/bin/xcrun to find clang installation | |
| V[19:53:45.502] Invoking /usr/bin/xcrun to find clang installation | |
| I[19:53:45.508] --> reply:initialize(0) 12 ms | |
| V[19:53:45.508] >>> {"id":0,"jsonrpc":"2.0","result":{"capabilities":{"codeActionProvider":{"codeActionKinds":["quickfix","refactor","info"]},"completionProvider":{"allCommitCharacters":[" ","\t","(",")","[","]","{","}","<",">",":",";",",","+","-","/","*","%","^","&","#","?",".","=","\"","'","|"],"resolveProvider":false,"triggerCharacters":[".","<",">",":","\"","/"]},"declarationProvider":true,"definitionProvider":true,"documentFormattingProvider":true,"documentHighlightProvider":true,"documentLinkProvider":{"resolveProvider":false},"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"\n","moreTriggerCharacter":[]},"documentRangeFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["clangd.applyFix","clangd.applyTweak"]},"hoverProvider":true,"referencesProvider":true,"renameProvider":{"prepareProvider":true},"selectionRangeProvider":true,"semanticTokensProvider":{"full":{"delta":true},"legend":{"tokenModifiers":[],"tokenTypes":["variable","variable","parameter","function","member","function","member","variable","class","enum","enumConstant","type","dependent","dependent","namespace","typeParameter","concept","type","macro","comment"]},"range":false},"signatureHelpProvider":{"triggerCharacters":["(",","]},"textDocumentSync":{"change":2,"openClose":true,"save":true},"typeHierarchyProvider":true,"workspaceSymbolProvider":true},"serverInfo":{"name":"clangd","version":"clangd version 11.0.0 (https://github.com/llvm/llvm-project 176249bd6732a8044d457092ed932768724a6f06)"}}} | |
| V[19:53:45.522] <<< {"jsonrpc":"2.0","method":"initialized","params":{}} | |
| I[19:53:45.522] <-- initialized | |
| V[19:53:45.523] <<< {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"cpp","text":"/*\n Copyright (C) 2010-2017 Kristian Duske\n\n This file is part of TrenchBroom.\n\n TrenchBroom is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n TrenchBroom is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with TrenchBroom. If not, see <http://www.gnu.org/licenses/>.\n */\n\n#include \"GameImpl.h\"\n\n#include \"Ensure.h\"\n#include \"Exceptions.h\"\n#include \"Logger.h\"\n#include \"Macros.h\"\n#include \"Assets/Palette.h\"\n#include \"Assets/EntityModel.h\"\n#include \"Assets/EntityDefinitionFileSpec.h\"\n#include \"IO/AseParser.h\"\n#include \"IO/BrushFaceReader.h\"\n#include \"IO/Bsp29Parser.h\"\n#include \"IO/DefParser.h\"\n#include \"IO/DiskIO.h\"\n#include \"IO/DkmParser.h\"\n#include \"IO/DiskFileSystem.h\"\n#include \"IO/EntParser.h\"\n#include \"IO/FgdParser.h\"\n#include \"IO/File.h\"\n#include \"IO/FileMatcher.h\"\n#include \"IO/GameConfigParser.h\"\n#include \"IO/IOUtils.h\"\n#include \"IO/MdlParser.h\"\n#include \"IO/Md2Parser.h\"\n#include \"IO/Md3Parser.h\"\n#include \"IO/MdxParser.h\"\n#include \"IO/NodeReader.h\"\n#include \"IO/NodeWriter.h\"\n#include \"IO/ObjParser.h\"\n#include \"IO/ObjSerializer.h\"\n#include \"IO/WorldReader.h\"\n#include \"IO/SimpleParserStatus.h\"\n#include \"IO/SystemPaths.h\"\n#include \"IO/TextureLoader.h\"\n#include \"Model/BrushBuilder.h\"\n#include \"Model/BrushError.h\"\n#include \"Model/BrushNode.h\"\n#include \"Model/Entity.h\"\n#include \"Model/EntityAttributes.h\"\n#include \"Model/ExportFormat.h\"\n#include \"Model/GameConfig.h\"\n#include \"Model/LayerNode.h\"\n#include \"Model/WorldNode.h\"\n\n#include <kdl/overload.h>\n#include <kdl/result.h>\n#include <kdl/string_compare.h>\n#include <kdl/string_format.h>\n#include <kdl/string_utils.h>\n#include <kdl/vector_utils.h>\n\n#include <vecmath/vec_io.h>\n\n#include <fstream>\n#include <string>\n#include <vector>\n\nnamespace TrenchBroom {\n namespace Model {\n GameImpl::GameImpl(GameConfig& config, const IO::Path& gamePath, Logger& logger) :\n m_config(config),\n m_gamePath(gamePath) {\n initializeFileSystem(logger);\n }\n\n void GameImpl::initializeFileSystem(Logger& logger) {\n m_fs.initialize(m_config, m_gamePath, m_additionalSearchPaths, logger);\n }\n\n const std::string& GameImpl::doGameName() const {\n return m_config.name();\n }\n\n IO::Path GameImpl::doGamePath() const {\n return m_gamePath;\n }\n\n void GameImpl::doSetGamePath(const IO::Path& gamePath, Logger& logger) {\n if (gamePath != m_gamePath) {\n m_gamePath = gamePath;\n initializeFileSystem(logger);\n }\n }\n\n void GameImpl::doSetAdditionalSearchPaths(const std::vector<IO::Path>& searchPaths, Logger& logger) {\n if (searchPaths != m_additionalSearchPaths) {\n m_additionalSearchPaths = searchPaths;\n initializeFileSystem(logger);\n }\n }\n\n Game::PathErrors GameImpl::doCheckAdditionalSearchPaths(const std::vector<IO::Path>& searchPaths) const {\n PathErrors result;\n for (const auto& searchPath : searchPaths) {\n const auto absPath = m_gamePath + searchPath;\n if (!absPath.isAbsolute() || !IO::Disk::directoryExists(absPath)) {\n result.insert(std::make_pair(searchPath, \"Directory not found: '\" + searchPath.asString() + \"'\"));\n }\n }\n return result;\n }\n\n const CompilationConfig& GameImpl::doCompilationConfig() {\n return m_config.compilationConfig();\n }\n\n size_t GameImpl::doMaxPropertyLength() const {\n return m_config.maxPropertyLength();\n }\n\n std::optional<vm::bbox3> GameImpl::doSoftMapBounds() const {\n return m_config.softMapBounds();\n }\n\n Game::SoftMapBounds GameImpl::doExtractSoftMapBounds(const AttributableNode& node) const {\n if (!node.entity().hasAttribute(AttributeNames::SoftMapBounds)) {\n // Not set in map -> use Game value\n return {SoftMapBoundsType::Game, doSoftMapBounds()};\n }\n\n if (const auto* mapValue = node.entity().attribute(AttributeNames::SoftMapBounds); mapValue && *mapValue != AttributeValues::NoSoftMapBounds) {\n return {SoftMapBoundsType::Map, IO::parseSoftMapBoundsString(*mapValue)};\n } else {\n return {SoftMapBoundsType::Map, std::nullopt};\n }\n }\n\n const std::vector<SmartTag>& GameImpl::doSmartTags() const {\n return m_config.smartTags();\n }\n\n std::unique_ptr<WorldNode> GameImpl::doNewMap(const MapFormat format, const vm::bbox3& worldBounds, Logger& logger) const {\n const auto initialMapFilePath = m_config.findInitialMap(formatName(format));\n if (!initialMapFilePath.isEmpty() && IO::Disk::fileExists(initialMapFilePath)) {\n return doLoadMap(format, worldBounds, initialMapFilePath, logger);\n } else {\n auto worldEntity = Model::Entity();\n if (format == MapFormat::Valve || format == MapFormat::Quake2_Valve || format == MapFormat::Quake3_Valve) {\n worldEntity.addOrUpdateAttribute(AttributeNames::ValveVersion, \"220\");\n }\n\n auto worldNode = std::make_unique<WorldNode>(std::move(worldEntity), format);\n\n const Model::BrushBuilder builder(worldNode.get(), worldBounds, defaultFaceAttribs());\n builder.createCuboid(vm::vec3(128.0, 128.0, 32.0), Model::BrushFaceAttributes::NoTextureName).\n visit(kdl::overload(\n [&](Brush&& b) {\n worldNode->defaultLayer()->addChild(worldNode->createBrush(std::move(b)));\n },\n [&](const Model::BrushError e) {\n logger.error() << \"Could not create default brush: \" << e;\n }\n ));\n\n return worldNode;\n }\n }\n\n std::unique_ptr<WorldNode> GameImpl::doLoadMap(const MapFormat format, const vm::bbox3& worldBounds, const IO::Path& path, Logger& logger) const {\n IO::SimpleParserStatus parserStatus(logger);\n auto file = IO::Disk::openFile(IO::Disk::fixPath(path));\n auto fileReader = file->reader().buffer();\n IO::WorldReader worldReader(fileReader.stringView());\n return worldReader.read(format, worldBounds, parserStatus);\n }\n\n void GameImpl::doWriteMap(WorldNode& world, const IO::Path& path, const bool exporting) const {\n const auto mapFormatName = formatName(world.format());\n\n std::ofstream file = openPathAsOutputStream(path);\n if (!file) {\n throw FileSystemException(\"Cannot open file: \" + path.asString());\n }\n IO::writeGameComment(file, gameName(), mapFormatName);\n\n IO::NodeWriter writer(world, file);\n writer.setExporting(exporting);\n writer.writeMap();\n }\n\n void GameImpl::doWriteMap(WorldNode& world, const IO::Path& path) const {\n doWriteMap(world, path, false);\n }\n\n void GameImpl::doExportMap(WorldNode& world, const Model::ExportFormat format, const IO::Path& path) const {\n switch (format) {\n case Model::ExportFormat::WavefrontObj: {\n IO::NodeWriter writer(world, std::make_unique<IO::ObjFileSerializer>(path));\n writer.setExporting(true);\n writer.writeMap();\n break;\n }\n case Model::ExportFormat::Map:\n doWriteMap(world, path, true);\n break;\n }\n }\n\n std::vector<Node*> GameImpl::doParseNodes(const std::string& str, WorldNode& world, const vm::bbox3& worldBounds, Logger& logger) const {\n IO::SimpleParserStatus parserStatus(logger);\n return IO::NodeReader::read(str, world, worldBounds, parserStatus);\n }\n\n std::vector<BrushFace> GameImpl::doParseBrushFaces(const std::string& str, WorldNode& world, const vm::bbox3& worldBounds, Logger& logger) const {\n IO::SimpleParserStatus parserStatus(logger);\n IO::BrushFaceReader reader(str, world);\n return reader.read(worldBounds, parserStatus);\n }\n\n void GameImpl::doWriteNodesToStream(WorldNode& world, const std::vector<Node*>& nodes, std::ostream& stream) const {\n IO::NodeWriter writer(world, stream);\n writer.writeNodes(nodes);\n }\n\n void GameImpl::doWriteBrushFacesToStream(WorldNode& world, const std::vector<BrushFace>& faces, std::ostream& stream) const {\n IO::NodeWriter writer(world, stream);\n writer.writeBrushFaces(faces);\n }\n\n Game::TexturePackageType GameImpl::doTexturePackageType() const {\n using Model::GameConfig;\n switch (m_config.textureConfig().package.type) {\n case TexturePackageConfig::PT_File:\n return TexturePackageType::File;\n case TexturePackageConfig::PT_Directory:\n return TexturePackageType::Directory;\n case TexturePackageConfig::PT_Unset:\n throw GameException(\"Texture package type is not set in game configuration\");\n switchDefault()\n }\n }\n\n void GameImpl::doLoadTextureCollections(AttributableNode& node, const IO::Path& documentPath, Assets::TextureManager& textureManager, Logger& logger) const {\n const auto paths = extractTextureCollections(node);\n\n const auto fileSearchPaths = textureCollectionSearchPaths(documentPath);\n IO::TextureLoader textureLoader(m_fs, fileSearchPaths, m_config.textureConfig(), logger);\n textureLoader.loadTextures(paths, textureManager);\n }\n\n std::vector<IO::Path> GameImpl::textureCollectionSearchPaths(const IO::Path& documentPath) const {\n std::vector<IO::Path> result;\n\n // Search for assets relative to the map file.\n result.push_back(documentPath);\n\n // Search for assets relative to the location of the game.\n result.push_back(m_gamePath);\n\n // Search for assets relative to the application itself.\n result.push_back(IO::SystemPaths::appDirectory());\n\n return result;\n }\n\n bool GameImpl::doIsTextureCollection(const IO::Path& path) const {\n const auto& packageConfig = m_config.textureConfig().package;\n switch (packageConfig.type) {\n case TexturePackageConfig::PT_File:\n return path.hasExtension(packageConfig.fileFormat.extensions, false);\n case TexturePackageConfig::PT_Directory:\n case TexturePackageConfig::PT_Unset:\n return false;\n switchDefault()\n }\n }\n\n std::vector<IO::Path> GameImpl::doFindTextureCollections() const {\n try {\n const auto& searchPath = m_config.textureConfig().package.rootDirectory;\n if (!searchPath.isEmpty() && m_fs.directoryExists(searchPath)) {\n return kdl::vec_concat(std::vector<IO::Path>({searchPath}), m_fs.findItemsRecursively(searchPath, IO::FileTypeMatcher(false, true)));\n }\n return std::vector<IO::Path>();\n } catch (FileSystemException& e) {\n throw GameException(\"Could not find texture collections: \" + std::string(e.what()));\n }\n }\n\n std::vector<std::string> GameImpl::doFileTextureCollectionExtensions() const {\n return m_config.textureConfig().package.fileFormat.extensions;\n }\n\n std::vector<IO::Path> GameImpl::doExtractTextureCollections(const AttributableNode& node) const {\n const auto& property = m_config.textureConfig().attribute;\n if (property.empty()) {\n return {};\n }\n\n const auto* pathsValue = node.entity().attribute(property);\n if (!pathsValue) {\n return {};\n }\n \n return IO::Path::asPaths(kdl::str_split(*pathsValue, \";\"));\n }\n\n void GameImpl::doUpdateTextureCollections(AttributableNode& node, const std::vector<IO::Path>& paths) const {\n const auto& attribute = m_config.textureConfig().attribute;\n if (attribute.empty()) {\n return;\n }\n\n const auto value = kdl::str_join(IO::Path::asStrings(paths, \"/\"), \";\");\n auto entity = node.entity();\n entity.addOrUpdateAttribute(attribute, value);\n node.setEntity(std::move(entity));\n }\n\n void GameImpl::doReloadShaders() {\n m_fs.reloadShaders();\n }\n\n bool GameImpl::doIsEntityDefinitionFile(const IO::Path& path) const {\n const auto extension = path.extension();\n if (kdl::ci::str_is_equal(\"fgd\", extension)) {\n return true;\n } else if (kdl::ci::str_is_equal(\"def\", extension)) {\n return true;\n } else if (kdl::ci::str_is_equal(\"ent\", extension)) {\n return true;\n } else {\n return false;\n }\n }\n\n std::vector<Assets::EntityDefinition*> GameImpl::doLoadEntityDefinitions(IO::ParserStatus& status, const IO::Path& path) const {\n const auto extension = path.extension();\n const auto& defaultColor = m_config.entityConfig().defaultColor;\n\n if (kdl::ci::str_is_equal(\"fgd\", extension)) {\n auto file = IO::Disk::openFile(IO::Disk::fixPath(path));\n auto reader = file->reader().buffer();\n IO::FgdParser parser(reader.stringView(), defaultColor, file->path());\n return parser.parseDefinitions(status);\n } else if (kdl::ci::str_is_equal(\"def\", extension)) {\n auto file = IO::Disk::openFile(IO::Disk::fixPath(path));\n auto reader = file->reader().buffer();\n IO::DefParser parser(reader.stringView(), defaultColor);\n return parser.parseDefinitions(status);\n } else if (kdl::ci::str_is_equal(\"ent\", extension)) {\n auto file = IO::Disk::openFile(IO::Disk::fixPath(path));\n auto reader = file->reader().buffer();\n IO::EntParser parser(reader.stringView(), defaultColor);\n return parser.parseDefinitions(status);\n } else {\n throw GameException(\"Unknown entity definition format: '\" + path.asString() + \"'\");\n }\n }\n\n std::vector<Assets::EntityDefinitionFileSpec> GameImpl::doAllEntityDefinitionFiles() const {\n const auto paths = m_config.entityConfig().defFilePaths;\n const auto count = paths.size();\n\n std::vector<Assets::EntityDefinitionFileSpec> result;\n result.reserve(count);\n\n for (const auto& path : paths) {\n result.push_back(Assets::EntityDefinitionFileSpec::builtin(path));\n }\n\n return result;\n }\n\n Assets::EntityDefinitionFileSpec GameImpl::doExtractEntityDefinitionFile(const AttributableNode& node) const {\n if (const auto* defValue = node.entity().attribute(AttributeNames::EntityDefinitions)) {\n return Assets::EntityDefinitionFileSpec::parse(*defValue);\n } else {\n return defaultEntityDefinitionFile();\n }\n }\n\n Assets::EntityDefinitionFileSpec GameImpl::defaultEntityDefinitionFile() const {\n const auto paths = m_config.entityConfig().defFilePaths;\n if (paths.empty()) {\n throw GameException(\"No entity definition files found for game '\" + gameName() + \"'\");\n }\n\n const auto& path = paths.front();\n return Assets::EntityDefinitionFileSpec::builtin(path);\n }\n\n IO::Path GameImpl::doFindEntityDefinitionFile(const Assets::EntityDefinitionFileSpec& spec, const std::vector<IO::Path>& searchPaths) const {\n if (!spec.valid()) {\n throw GameException(\"Invalid entity definition file spec\");\n }\n\n const auto& path = spec.path();\n if (spec.builtin()) {\n return m_config.findConfigFile(path);\n } else {\n if (path.isAbsolute()) {\n return path;\n } else {\n return IO::Disk::resolvePath(searchPaths, path);\n }\n }\n }\n\n std::unique_ptr<Assets::EntityModel> GameImpl::doInitializeModel(const IO::Path& path, Logger& logger) const {\n try {\n auto file = m_fs.openFile(path);\n ensure(file != nullptr, \"file is null\");\n\n const auto modelName = path.lastComponent().asString();\n const auto extension = kdl::str_to_lower(path.extension());\n const auto supported = m_config.entityConfig().modelFormats;\n\n if (extension == \"mdl\" && kdl::vec_contains(supported, \"mdl\")) {\n const auto palette = loadTexturePalette();\n auto reader = file->reader().buffer();\n IO::MdlParser parser(modelName, std::begin(reader), std::end(reader), palette);\n return parser.initializeModel(logger);\n } else if (extension == \"md2\" && kdl::vec_contains(supported, \"md2\")) {\n const auto palette = loadTexturePalette();\n auto reader = file->reader().buffer();\n IO::Md2Parser parser(modelName, std::begin(reader), std::end(reader), palette, m_fs);\n return parser.initializeModel(logger);\n } else if (extension == \"md3\" && kdl::vec_contains(supported, \"md3\")) {\n auto reader = file->reader().buffer();\n IO::Md3Parser parser(modelName, std::begin(reader), std::end(reader), m_fs);\n return parser.initializeModel(logger);\n } else if (extension == \"mdx\" && kdl::vec_contains(supported, \"mdx\")) {\n auto reader = file->reader().buffer();\n IO::MdxParser parser(modelName, std::begin(reader), std::end(reader), m_fs);\n return parser.initializeModel(logger);\n } else if (extension == \"bsp\" && kdl::vec_contains(supported, \"bsp\")) {\n const auto palette = loadTexturePalette();\n auto reader = file->reader().buffer();\n IO::Bsp29Parser parser(modelName, std::begin(reader), std::end(reader), palette, m_fs);\n return parser.initializeModel(logger);\n } else if (extension == \"dkm\" && kdl::vec_contains(supported, \"dkm\")) {\n auto reader = file->reader().buffer();\n IO::DkmParser parser(modelName, std::begin(reader), std::end(reader), m_fs);\n return parser.initializeModel(logger);\n } else if (extension == \"ase\" && kdl::vec_contains(supported, \"ase\")) {\n auto reader = file->reader().buffer();\n IO::AseParser parser(modelName, reader.stringView(), m_fs);\n return parser.initializeModel(logger);\n } else if (extension == \"obj\" && kdl::vec_contains(supported, \"obj_neverball\")) {\n auto reader = file->reader().buffer();\n // has to be the whole path for implicit textures!\n IO::NvObjParser parser(path, std::begin(reader), std::end(reader), m_fs);\n return parser.initializeModel(logger);\n } else {\n throw GameException(\"Unsupported model format '\" + path.asString() + \"'\");\n }\n } catch (const FileSystemException& e) {\n throw GameException(\"Could not load model \" + path.asString() + \": \" + std::string(e.what()));\n } catch (const AssetException& e) {\n throw GameException(\"Could not load model \" + path.asString() + \": \" + std::string(e.what()));\n } catch (const ParserException& e) {\n throw GameException(\"Could not load model \" + path.asString() + \": \" + std::string(e.what()));\n }\n }\n\n void GameImpl::doLoadFrame(const IO::Path& path, size_t frameIndex, Assets::EntityModel& model, Logger& logger) const {\n try {\n ensure(model.frame(frameIndex) != nullptr, \"invalid frame index\");\n ensure(!model.frame(frameIndex)->loaded(), \"frame already loaded\");\n\n const auto file = m_fs.openFile(path);\n ensure(file != nullptr, \"file is null\");\n\n const auto modelName = path.lastComponent().asString();\n const auto extension = kdl::str_to_lower(path.extension());\n const auto supported = m_config.entityConfig().modelFormats;\n\n if (extension == \"mdl\" && kdl::vec_contains(supported, \"mdl\")) {\n const auto palette = loadTexturePalette();\n auto reader = file->reader().buffer();\n IO::MdlParser parser(modelName, std::begin(reader), std::end(reader), palette);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"md2\" && kdl::vec_contains(supported, \"md2\")) {\n const auto palette = loadTexturePalette();\n auto reader = file->reader().buffer();\n IO::Md2Parser parser(modelName, std::begin(reader), std::end(reader), palette, m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"md3\" && kdl::vec_contains(supported, \"md3\")) {\n auto reader = file->reader().buffer();\n IO::Md3Parser parser(modelName, std::begin(reader), std::end(reader), m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"mdx\" && kdl::vec_contains(supported, \"mdx\")) {\n auto reader = file->reader().buffer();\n IO::MdxParser parser(modelName, std::begin(reader), std::end(reader), m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"bsp\" && kdl::vec_contains(supported, \"bsp\")) {\n const auto palette = loadTexturePalette();\n auto reader = file->reader().buffer();\n IO::Bsp29Parser parser(modelName, std::begin(reader), std::end(reader), palette, m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"dkm\" && kdl::vec_contains(supported, \"dkm\")) {\n auto reader = file->reader().buffer();\n IO::DkmParser parser(modelName, std::begin(reader), std::end(reader), m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"ase\" && kdl::vec_contains(supported, \"ase\")) {\n auto reader = file->reader().buffer();\n IO::AseParser parser(modelName, reader.stringView(), m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"obj\" && kdl::vec_contains(supported, \"obj_neverball\")) {\n auto reader = file->reader().buffer();\n // has to be the whole path for implicit textures!\n IO::NvObjParser parser(path, std::begin(reader), std::end(reader), m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else {\n throw GameException(\"Unsupported model format '\" + path.asString() + \"'\");\n }\n } catch (FileSystemException& e) {\n throw GameException(\"Could not load model \" + path.asString() + \": \" + std::string(e.what()));\n } catch (AssetException& e) {\n throw GameException(\"Could not load model \" + path.asString() + \": \" + std::string(e.what()));\n }\n }\n\n Assets::Palette GameImpl::loadTexturePalette() const {\n const auto& path = m_config.textureConfig().palette;\n return Assets::Palette::loadFile(m_fs, path);\n }\n\n std::vector<std::string> GameImpl::doAvailableMods() const {\n std::vector<std::string> result;\n if (m_gamePath.isEmpty() || !IO::Disk::directoryExists(m_gamePath)) {\n return result;\n }\n\n const auto& defaultMod = m_config.fileSystemConfig().searchPath.lastComponent().asString();\n const IO::DiskFileSystem fs(m_gamePath);\n const auto subDirs = fs.findItems(IO::Path(\"\"), IO::FileTypeMatcher(false, true));\n for (size_t i = 0; i < subDirs.size(); ++i) {\n const std::string mod = subDirs[i].lastComponent().asString();\n if (!kdl::ci::str_is_equal(mod, defaultMod)) {\n result.push_back(mod);\n }\n }\n return result;\n }\n\n std::vector<std::string> GameImpl::doExtractEnabledMods(const AttributableNode& node) const {\n if (const auto* modStr = node.entity().attribute(AttributeNames::Mods)) {\n return kdl::str_split(*modStr, \";\");\n } else {\n return {};\n }\n }\n\n std::string GameImpl::doDefaultMod() const {\n return m_config.fileSystemConfig().searchPath.asString();\n }\n\n const FlagsConfig& GameImpl::doSurfaceFlags() const {\n return m_config.faceAttribsConfig().surfaceFlags;\n }\n\n const FlagsConfig& GameImpl::doContentFlags() const {\n return m_config.faceAttribsConfig().contentFlags;\n }\n\n const BrushFaceAttributes& GameImpl::doDefaultFaceAttribs() const {\n return m_config.faceAttribsConfig().defaults;\n }\n\n const std::vector<CompilationTool>& GameImpl::doCompilationTools() const {\n return m_config.compilationTools();\n }\n\n void GameImpl::writeLongAttribute(AttributableNode& node, const std::string& baseName, const std::string& value, const size_t maxLength) const {\n auto entity = node.entity();\n entity.removeNumberedAttribute(baseName);\n\n std::stringstream nameStr;\n for (size_t i = 0; i <= value.size() / maxLength; ++i) {\n nameStr.str(\"\");\n nameStr << baseName << i+1;\n entity.addOrUpdateAttribute(nameStr.str(), value.substr(i * maxLength, maxLength));\n }\n\n node.setEntity(std::move(entity));\n }\n\n std::string GameImpl::readLongAttribute(const AttributableNode& node, const std::string& baseName) const {\n size_t index = 1;\n std::stringstream nameStr;\n std::stringstream valueStr;\n nameStr << baseName << index;\n\n const auto& entity = node.entity();\n while (entity.hasAttribute(nameStr.str())) {\n if (const auto* value = entity.attribute(nameStr.str())) {\n valueStr << *value;\n }\n nameStr.str(\"\");\n nameStr << baseName << ++index;\n }\n\n return valueStr.str();\n }\n }\n}\n","uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp","version":1}}} | |
| I[19:53:45.534] <-- textDocument/didOpen | |
| I[19:53:45.538] Loaded compilation database from /Users/kristian/Documents/Code/TrenchBroom | |
| I[19:53:45.541] Loaded compilation database from /Users/kristian/Documents/Code/TrenchBroom/build | |
| I[19:53:45.542] --> window/workDoneProgress/create(0) | |
| V[19:53:45.542] >>> {"id":0,"jsonrpc":"2.0","method":"window/workDoneProgress/create","params":{"token":"backgroundIndexProgress"}} | |
| I[19:53:45.543] Enqueueing 609 commands for indexing | |
| I[19:53:45.543] ASTWorker building file /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp version 1 with command | |
| [/Users/kristian/Documents/Code/TrenchBroom/build] | |
| /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ --driver-mode=g++ -DFMT_LOCALE -DGLEW_STATIC -DGL_SILENCE_DEPRECATION -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SVG_LIB -DQT_WIDGETS_LIB -Icommon/common_autogen/include -I../common/src -Icommon -I../lib/kdl/include -I../lib/vecmath/include -I../lib/fmt/include -isystem ../lib/tinyxml2/include -isystem ../lib/glew/include -isystem ../lib/miniz/include -isystem ../lib/BinaryLibs/freeimage/include/win32 -isystem ../lib/freetype/include -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks -iframework /opt/local/libexec/qt5/lib -isystem /opt/local/libexec/qt5/lib/QtWidgets.framework/Headers -isystem /opt/local/libexec/qt5/lib/QtGui.framework/Headers -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks/OpenGL.framework/Headers -isystem /opt/local/libexec/qt5/lib/QtCore.framework/Headers -isystem /opt/local/libexec/qt5/./mkspecs/macx-clang -isystem /opt/local/libexec/qt5/lib/QtSvg.framework/Headers -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk -mmacosx-version-min=10.14 -Wall -Wextra -Wconversion -Wshadow-all -pedantic -Wno-global-constructors -Wno-exit-time-destructors -Wno-padded -Wno-format-nonliteral -Wno-used-but-marked-unused -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-c++98-compat-bind-to-temporary-copy -Wno-weak-vtables -Wno-weak-template-vtables -Wno-missing-braces -Wno-redundant-parens -Wno-pragma-system-header-outside-header -Wno-float-equal -fPIC -std=gnu++17 -Winvalid-pch -Xclang -include-pch -Xclang /Users/kristian/Documents/Code/TrenchBroom/build/common/CMakeFiles/common.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /Users/kristian/Documents/Code/TrenchBroom/build/common/CMakeFiles/common.dir/cmake_pch.hxx -o common/CMakeFiles/common.dir/src/Model/GameImpl.cpp.o -c /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp -fsyntax-only -resource-dir=/Users/kristian/.bin/clangd_11.0.0/lib/clang/11.0.0 | |
| V[19:53:45.544] Driver produced command: cc1 -cc1 -triple x86_64-apple-macosx10.14.0 -Wundef-prefix=TARGET_OS_ -Werror=undef-prefix -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -fsyntax-only -disable-free -disable-llvm-verifier -discard-value-names -main-file-name GameImpl.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=all -fno-rounding-math -munwind-tables -target-sdk-version=11.0 -fcompatibility-qualified-id-block-type-checking -target-cpu penryn -debug-info-kind=standalone -dwarf-version=4 -debugger-tuning=lldb -target-linker-version 609 -resource-dir /Users/kristian/.bin/clangd_11.0.0/lib/clang/11.0.0 -isystem ../lib/tinyxml2/include -isystem ../lib/glew/include -isystem ../lib/miniz/include -isystem ../lib/BinaryLibs/freeimage/include/win32 -isystem ../lib/freetype/include -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks -iframework /opt/local/libexec/qt5/lib -isystem /opt/local/libexec/qt5/lib/QtWidgets.framework/Headers -isystem /opt/local/libexec/qt5/lib/QtGui.framework/Headers -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks/OpenGL.framework/Headers -isystem /opt/local/libexec/qt5/lib/QtCore.framework/Headers -isystem /opt/local/libexec/qt5/./mkspecs/macx-clang -isystem /opt/local/libexec/qt5/lib/QtSvg.framework/Headers -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk -D FMT_LOCALE -D GLEW_STATIC -D GL_SILENCE_DEPRECATION -D QT_CORE_LIB -D QT_GUI_LIB -D QT_SVG_LIB -D QT_WIDGETS_LIB -I common/common_autogen/include -I ../common/src -I common -I ../lib/kdl/include -I ../lib/vecmath/include -I ../lib/fmt/include -stdlib=libc++ -internal-isystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1 -internal-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/usr/include/c++/v1 -internal-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/usr/local/include -internal-isystem /Users/kristian/.bin/clangd_11.0.0/lib/clang/11.0.0/include -internal-externc-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/usr/include -Wall -Wextra -Wconversion -Wshadow-all -Wno-global-constructors -Wno-exit-time-destructors -Wno-padded -Wno-format-nonliteral -Wno-used-but-marked-unused -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-c++98-compat-bind-to-temporary-copy -Wno-weak-vtables -Wno-weak-template-vtables -Wno-missing-braces -Wno-redundant-parens -Wno-pragma-system-header-outside-header -Wno-float-equal -Winvalid-pch -pedantic -std=gnu++17 -fdeprecated-macro -fdebug-compilation-dir /Users/kristian/Documents/Code/TrenchBroom/build -ferror-limit 19 -stack-protector 1 -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -fmax-type-align=16 -include-pch /Users/kristian/Documents/Code/TrenchBroom/build/common/CMakeFiles/common.dir/cmake_pch.hxx.pch -include /Users/kristian/Documents/Code/TrenchBroom/build/common/CMakeFiles/common.dir/cmake_pch.hxx -x c++ /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp | |
| I[19:53:45.544] --> textDocument/clangd.fileStatus | |
| V[19:53:45.544] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"parsing includes,running Update (1)","uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp"}} | |
| V[19:53:45.544] Building first preamble for /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp version 1 | |
| V[19:53:45.582] <<< {"id":0,"jsonrpc":"2.0","result":null} | |
| I[19:53:45.582] <-- reply(0) | |
| I[19:53:45.582] --> $/progress | |
| V[19:53:45.582] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"begin","percentage":0,"title":"indexing"}}} | |
| I[19:53:45.582] --> $/progress | |
| V[19:53:45.582] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/1","percentage":0}}} | |
| V[19:53:45.627] <<< {"id":1,"jsonrpc":"2.0","method":"textDocument/codeAction","params":{"context":{"diagnostics":[]},"range":{"end":{"character":60,"line":252},"start":{"character":59,"line":252}},"textDocument":{"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp"}}} | |
| I[19:53:45.627] <-- textDocument/codeAction(1) | |
| V[19:53:45.627] <<< {"id":2,"jsonrpc":"2.0","method":"textDocument/documentLink","params":{"textDocument":{"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp"}}} | |
| I[19:53:45.627] <-- textDocument/documentLink(2) | |
| V[19:53:45.915] BackgroundIndex: building version 1 after loading index from disk | |
| V[19:53:45.944] <<< {"id":3,"jsonrpc":"2.0","method":"textDocument/semanticTokens/full","params":{"textDocument":{"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp"}}} | |
| I[19:53:45.944] <-- textDocument/semanticTokens/full(3) | |
| V[19:53:46.530] BackgroundIndex: serving version 1 (85154579 bytes) | |
| E[19:53:46.535] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/ChangeBrushFaceAttributesCommand.h to validate stored index: No such file or directory | |
| E[19:53:46.545] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/CopyTexCoordSystemFromFaceCommand.h to validate stored index: No such file or directory | |
| E[19:53:46.547] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/RotateTexturesCommand.h to validate stored index: No such file or directory | |
| E[19:53:46.551] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/ChangeEntityAttributesCommand.h to validate stored index: No such file or directory | |
| E[19:53:46.552] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/ShearTexturesCommand.h to validate stored index: No such file or directory | |
| E[19:53:46.568] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/ResizeBrushesCommand.h to validate stored index: No such file or directory | |
| E[19:53:46.569] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/ConvertEntityColorCommand.h to validate stored index: No such file or directory | |
| V[19:53:46.571] <<< {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":1}} | |
| I[19:53:46.571] <-- $/cancelRequest | |
| V[19:53:46.571] <<< {"id":4,"jsonrpc":"2.0","method":"textDocument/codeAction","params":{"context":{"diagnostics":[]},"range":{"end":{"character":60,"line":252},"start":{"character":59,"line":252}},"textDocument":{"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp"}}} | |
| I[19:53:46.571] <-- textDocument/codeAction(4) | |
| V[19:53:46.572] <<< {"id":5,"jsonrpc":"2.0","method":"textDocument/documentLink","params":{"textDocument":{"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp"}}} | |
| I[19:53:46.572] <-- textDocument/documentLink(5) | |
| E[19:53:46.573] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/TransformObjectsCommand.h to validate stored index: No such file or directory | |
| E[19:53:46.575] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MoveTexturesCommand.h to validate stored index: No such file or directory | |
| E[19:53:46.584] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/UpdateEntitySpawnflagCommand.h to validate stored index: No such file or directory | |
| I[19:53:46.592] --> $/progress | |
| V[19:53:46.592] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/28","percentage":0}}} | |
| I[19:53:46.592] --> $/progress | |
| V[19:53:46.592] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/28","percentage":0}}} | |
| I[19:53:46.592] --> $/progress | |
| V[19:53:46.592] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/28","percentage":0}}} | |
| I[19:53:46.592] --> $/progress | |
| V[19:53:46.593] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/28","percentage":0}}} | |
| I[19:53:46.593] --> $/progress | |
| V[19:53:46.593] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/28","percentage":0}}} | |
| I[19:53:46.593] --> $/progress | |
| V[19:53:46.593] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/28","percentage":0}}} | |
| I[19:53:46.593] --> $/progress | |
| V[19:53:46.593] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/28","percentage":0}}} | |
| I[19:53:46.593] --> $/progress | |
| V[19:53:46.593] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/28","percentage":3.5714285714285716}}} | |
| I[19:53:46.593] --> $/progress | |
| V[19:53:46.593] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/28","percentage":3.5714285714285716}}} | |
| I[19:53:46.593] --> $/progress | |
| V[19:53:46.593] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/28","percentage":3.5714285714285716}}} | |
| I[19:53:46.593] --> $/progress | |
| V[19:53:46.593] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/28","percentage":3.5714285714285716}}} | |
| I[19:53:46.593] --> $/progress | |
| V[19:53:46.593] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/28","percentage":3.5714285714285716}}} | |
| V[19:53:46.593] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/NodeCollection.cpp (digest:=26AACABCF8C65FF2) | |
| V[19:53:46.593] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.cpp (digest:=B602EF7B4016021F) | |
| V[19:53:46.594] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameConfig.cpp (digest:=962D90B0F8FC18A9) | |
| V[19:53:46.594] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Preferences.cpp (digest:=B3D000225E81ACCD) | |
| V[19:53:46.594] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/test/src/IO/GameConfigParserTest.cpp (digest:=53B179D017E091E0) | |
| V[19:53:46.594] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapDocument.cpp (digest:=7D0912E625854F38) | |
| V[19:53:46.595] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/Game.cpp (digest:=FB4B0A92B3AB7F69) | |
| V[19:53:46.595] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GroupNode.cpp (digest:=09CBA9B7CD9ED044) | |
| V[19:53:46.595] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/LayerNode.cpp (digest:=EAE9AAF9548B6BB7) | |
| V[19:53:46.596] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapDocumentCommandFacade.cpp (digest:=7363A6F578FD620A) | |
| V[19:53:47.515] <<< {"id":6,"jsonrpc":"2.0","method":"shutdown"} | |
| I[19:53:47.515] <-- shutdown(6) | |
| I[19:53:47.515] --> reply:shutdown(6) 0 ms | |
| V[19:53:47.515] >>> {"id":6,"jsonrpc":"2.0","result":null} | |
| [Error - 7:53:47 PM] Request textDocument/codeAction failed. | |
| Error: Connection got disposed. | |
| at Object.dispose (/Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-jsonrpc/lib/common/connection.js:1009:27) | |
| at Object.dispose (/Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-languageclient/lib/common/client.js:71:35) | |
| at /Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-languageclient/lib/common/client.js:2211:28 | |
| at runNextTicks (internal/process/task_queues.js:59:5) | |
| at processImmediate (internal/timers.js:412:9) | |
| [Error - 7:53:47 PM] Request textDocument/documentLink failed. | |
| Error: Connection got disposed. | |
| at Object.dispose (/Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-jsonrpc/lib/common/connection.js:1009:27) | |
| at Object.dispose (/Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-languageclient/lib/common/client.js:71:35) | |
| at /Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-languageclient/lib/common/client.js:2211:28 | |
| at runNextTicks (internal/process/task_queues.js:59:5) | |
| at processImmediate (internal/timers.js:412:9) | |
| [Error - 7:53:47 PM] Request textDocument/semanticTokens/full failed. | |
| Error: Connection got disposed. | |
| at Object.dispose (/Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-jsonrpc/lib/common/connection.js:1009:27) | |
| at Object.dispose (/Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-languageclient/lib/common/client.js:71:35) | |
| at /Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-languageclient/lib/common/client.js:2211:28 | |
| at runNextTicks (internal/process/task_queues.js:59:5) | |
| at processImmediate (internal/timers.js:412:9) | |
| [Error - 7:53:47 PM] Request textDocument/codeAction failed. | |
| Error: Connection got disposed. | |
| at Object.dispose (/Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-jsonrpc/lib/common/connection.js:1009:27) | |
| at Object.dispose (/Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-languageclient/lib/common/client.js:71:35) | |
| at /Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-languageclient/lib/common/client.js:2211:28 | |
| at runNextTicks (internal/process/task_queues.js:59:5) | |
| at processImmediate (internal/timers.js:412:9) | |
| [Error - 7:53:47 PM] Request textDocument/documentLink failed. | |
| Error: Connection got disposed. | |
| at Object.dispose (/Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-jsonrpc/lib/common/connection.js:1009:27) | |
| at Object.dispose (/Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-languageclient/lib/common/client.js:71:35) | |
| at /Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-languageclient/lib/common/client.js:2211:28 | |
| at runNextTicks (internal/process/task_queues.js:59:5) | |
| at processImmediate (internal/timers.js:412:9) | |
| V[19:53:47.532] <<< {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":4}} | |
| I[19:53:47.532] <-- $/cancelRequest | |
| V[19:53:47.532] <<< {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":5}} | |
| I[19:53:47.532] <-- $/cancelRequest | |
| I[19:53:47.528] clangd version 11.0.0 (https://github.com/llvm/llvm-project 176249bd6732a8044d457092ed932768724a6f06) | |
| I[19:53:47.529] PID: 53217 | |
| I[19:53:47.529] Working directory: /Users/kristian/Documents/Code/TrenchBroom | |
| I[19:53:47.529] argv[0]: /Users/kristian/.bin/clangd_11.0.0/bin/clangd | |
| I[19:53:47.529] argv[1]: --log=verbose | |
| V[19:53:47.529] User config file is /Users/kristian/Library/Preferences/clangd/config.yaml | |
| I[19:53:47.529] Starting LSP over stdin/stdout | |
| V[19:53:47.529] <<< {"id":0,"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"textDocument":{"callHierarchy":{"dynamicRegistration":true},"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dynamicRegistration":true,"isPreferredSupport":true},"codeLens":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"completion":{"completionItem":{"commitCharactersSupport":true,"deprecatedSupport":true,"documentationFormat":["markdown","plaintext"],"insertReplaceSupport":true,"preselectSupport":true,"resolveAdditionalTextEditsSupport":true,"snippetSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]},"contextSupport":true,"dynamicRegistration":true,"editsNearCursor":true},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"documentHighlight":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true,"tooltipSupport":true},"documentSymbol":{"dynamicRegistration":true,"hierarchicalDocumentSymbolSupport":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"foldingRange":{"dynamicRegistration":true,"lineFoldingOnly":true,"rangeLimit":5000},"formatting":{"dynamicRegistration":true},"hover":{"contentFormat":["markdown","plaintext"],"dynamicRegistration":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"onTypeFormatting":{"dynamicRegistration":true},"publishDiagnostics":{"complexDiagnosticCodeSupport":true,"relatedInformation":true,"tagSupport":{"valueSet":[1,2]},"versionSupport":false},"rangeFormatting":{"dynamicRegistration":true},"references":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true},"selectionRange":{"dynamicRegistration":true},"semanticHighlightingCapabilities":{"semanticHighlighting":true},"semanticTokens":{"dynamicRegistration":true,"formats":["relative"],"requests":{"full":{"delta":true},"range":true},"tokenModifiers":["declaration","definition","readonly","static","deprecated","abstract","async","modification","documentation","defaultLibrary"],"tokenTypes":["namespace","type","class","enum","interface","struct","typeParameter","parameter","variable","property","enumMember","event","function","member","macro","keyword","modifier","comment","string","number","regexp","operator"]},"signatureHelp":{"contextSupport":true,"dynamicRegistration":true,"signatureInformation":{"activeParameterSupport":true,"documentationFormat":["markdown","plaintext"],"parameterInformation":{"labelOffsetSupport":true}}},"synchronization":{"didSave":true,"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true}},"window":{"workDoneProgress":true},"workspace":{"applyEdit":true,"configuration":true,"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true},"executeCommand":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"workspaceEdit":{"documentChanges":true,"failureHandling":"textOnlyTransactional","resourceOperations":["create","rename","delete"]},"workspaceFolders":true}},"clientInfo":{"name":"vscode","version":"1.51.1"},"initializationOptions":{"clangdFileStatus":true,"fallbackFlags":[]},"processId":53081,"rootPath":"/Users/kristian/Documents/Code/TrenchBroom","rootUri":"file:///Users/kristian/Documents/Code/TrenchBroom","trace":"off","workspaceFolders":[{"name":"TrenchBroom","uri":"file:///Users/kristian/Documents/Code/TrenchBroom"}]}} | |
| I[19:53:47.529] <-- initialize(0) | |
| I[19:53:47.529] Client supports legacy semanticHighlights notification and standard semanticTokens request, choosing the latter (no notifications). | |
| V[19:53:47.530] Invoking /usr/bin/xcrun to find clang installation | |
| V[19:53:47.532] <<< {"jsonrpc":"2.0","method":"exit"} | |
| I[19:53:47.532] <-- exit | |
| I[19:53:47.532] LSP finished, exiting with status 0 | |
| I[19:53:47.532] --> reply:textDocument/codeAction(1) 1905 ms, error: Task was cancelled. | |
| V[19:53:47.532] >>> {"error":{"code":-32800,"message":"Request cancelled"},"id":1,"jsonrpc":"2.0"} | |
| V[19:53:47.533] ASTWorker rebuilding evicted AST to run DocumentLinks: /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp version 1 | |
| V[19:53:47.536] Invoking /usr/bin/xcrun to find clang installation | |
| I[19:53:47.544] --> reply:initialize(0) 14 ms | |
| V[19:53:47.544] >>> {"id":0,"jsonrpc":"2.0","result":{"capabilities":{"codeActionProvider":{"codeActionKinds":["quickfix","refactor","info"]},"completionProvider":{"allCommitCharacters":[" ","\t","(",")","[","]","{","}","<",">",":",";",",","+","-","/","*","%","^","&","#","?",".","=","\"","'","|"],"resolveProvider":false,"triggerCharacters":[".","<",">",":","\"","/"]},"declarationProvider":true,"definitionProvider":true,"documentFormattingProvider":true,"documentHighlightProvider":true,"documentLinkProvider":{"resolveProvider":false},"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"\n","moreTriggerCharacter":[]},"documentRangeFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["clangd.applyFix","clangd.applyTweak"]},"hoverProvider":true,"referencesProvider":true,"renameProvider":{"prepareProvider":true},"selectionRangeProvider":true,"semanticTokensProvider":{"full":{"delta":true},"legend":{"tokenModifiers":[],"tokenTypes":["variable","variable","parameter","function","member","function","member","variable","class","enum","enumConstant","type","dependent","dependent","namespace","typeParameter","concept","type","macro","comment"]},"range":false},"signatureHelpProvider":{"triggerCharacters":["(",","]},"textDocumentSync":{"change":2,"openClose":true,"save":true},"typeHierarchyProvider":true,"workspaceSymbolProvider":true},"serverInfo":{"name":"clangd","version":"clangd version 11.0.0 (https://github.com/llvm/llvm-project 176249bd6732a8044d457092ed932768724a6f06)"}}} | |
| V[19:53:47.709] <<< {"jsonrpc":"2.0","method":"initialized","params":{}} | |
| I[19:53:47.709] <-- initialized | |
| V[19:53:47.710] <<< {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"cpp","text":"/*\n Copyright (C) 2010-2017 Kristian Duske\n\n This file is part of TrenchBroom.\n\n TrenchBroom is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n TrenchBroom is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with TrenchBroom. If not, see <http://www.gnu.org/licenses/>.\n */\n\n#include \"GameImpl.h\"\n\n#include \"Ensure.h\"\n#include \"Exceptions.h\"\n#include \"Logger.h\"\n#include \"Macros.h\"\n#include \"Assets/Palette.h\"\n#include \"Assets/EntityModel.h\"\n#include \"Assets/EntityDefinitionFileSpec.h\"\n#include \"IO/AseParser.h\"\n#include \"IO/BrushFaceReader.h\"\n#include \"IO/Bsp29Parser.h\"\n#include \"IO/DefParser.h\"\n#include \"IO/DiskIO.h\"\n#include \"IO/DkmParser.h\"\n#include \"IO/DiskFileSystem.h\"\n#include \"IO/EntParser.h\"\n#include \"IO/FgdParser.h\"\n#include \"IO/File.h\"\n#include \"IO/FileMatcher.h\"\n#include \"IO/GameConfigParser.h\"\n#include \"IO/IOUtils.h\"\n#include \"IO/MdlParser.h\"\n#include \"IO/Md2Parser.h\"\n#include \"IO/Md3Parser.h\"\n#include \"IO/MdxParser.h\"\n#include \"IO/NodeReader.h\"\n#include \"IO/NodeWriter.h\"\n#include \"IO/ObjParser.h\"\n#include \"IO/ObjSerializer.h\"\n#include \"IO/WorldReader.h\"\n#include \"IO/SimpleParserStatus.h\"\n#include \"IO/SystemPaths.h\"\n#include \"IO/TextureLoader.h\"\n#include \"Model/BrushBuilder.h\"\n#include \"Model/BrushError.h\"\n#include \"Model/BrushNode.h\"\n#include \"Model/Entity.h\"\n#include \"Model/EntityAttributes.h\"\n#include \"Model/ExportFormat.h\"\n#include \"Model/GameConfig.h\"\n#include \"Model/LayerNode.h\"\n#include \"Model/WorldNode.h\"\n\n#include <kdl/overload.h>\n#include <kdl/result.h>\n#include <kdl/string_compare.h>\n#include <kdl/string_format.h>\n#include <kdl/string_utils.h>\n#include <kdl/vector_utils.h>\n\n#include <vecmath/vec_io.h>\n\n#include <fstream>\n#include <string>\n#include <vector>\n\nnamespace TrenchBroom {\n namespace Model {\n GameImpl::GameImpl(GameConfig& config, const IO::Path& gamePath, Logger& logger) :\n m_config(config),\n m_gamePath(gamePath) {\n initializeFileSystem(logger);\n }\n\n void GameImpl::initializeFileSystem(Logger& logger) {\n m_fs.initialize(m_config, m_gamePath, m_additionalSearchPaths, logger);\n }\n\n const std::string& GameImpl::doGameName() const {\n return m_config.name();\n }\n\n IO::Path GameImpl::doGamePath() const {\n return m_gamePath;\n }\n\n void GameImpl::doSetGamePath(const IO::Path& gamePath, Logger& logger) {\n if (gamePath != m_gamePath) {\n m_gamePath = gamePath;\n initializeFileSystem(logger);\n }\n }\n\n void GameImpl::doSetAdditionalSearchPaths(const std::vector<IO::Path>& searchPaths, Logger& logger) {\n if (searchPaths != m_additionalSearchPaths) {\n m_additionalSearchPaths = searchPaths;\n initializeFileSystem(logger);\n }\n }\n\n Game::PathErrors GameImpl::doCheckAdditionalSearchPaths(const std::vector<IO::Path>& searchPaths) const {\n PathErrors result;\n for (const auto& searchPath : searchPaths) {\n const auto absPath = m_gamePath + searchPath;\n if (!absPath.isAbsolute() || !IO::Disk::directoryExists(absPath)) {\n result.insert(std::make_pair(searchPath, \"Directory not found: '\" + searchPath.asString() + \"'\"));\n }\n }\n return result;\n }\n\n const CompilationConfig& GameImpl::doCompilationConfig() {\n return m_config.compilationConfig();\n }\n\n size_t GameImpl::doMaxPropertyLength() const {\n return m_config.maxPropertyLength();\n }\n\n std::optional<vm::bbox3> GameImpl::doSoftMapBounds() const {\n return m_config.softMapBounds();\n }\n\n Game::SoftMapBounds GameImpl::doExtractSoftMapBounds(const AttributableNode& node) const {\n if (!node.entity().hasAttribute(AttributeNames::SoftMapBounds)) {\n // Not set in map -> use Game value\n return {SoftMapBoundsType::Game, doSoftMapBounds()};\n }\n\n if (const auto* mapValue = node.entity().attribute(AttributeNames::SoftMapBounds); mapValue && *mapValue != AttributeValues::NoSoftMapBounds) {\n return {SoftMapBoundsType::Map, IO::parseSoftMapBoundsString(*mapValue)};\n } else {\n return {SoftMapBoundsType::Map, std::nullopt};\n }\n }\n\n const std::vector<SmartTag>& GameImpl::doSmartTags() const {\n return m_config.smartTags();\n }\n\n std::unique_ptr<WorldNode> GameImpl::doNewMap(const MapFormat format, const vm::bbox3& worldBounds, Logger& logger) const {\n const auto initialMapFilePath = m_config.findInitialMap(formatName(format));\n if (!initialMapFilePath.isEmpty() && IO::Disk::fileExists(initialMapFilePath)) {\n return doLoadMap(format, worldBounds, initialMapFilePath, logger);\n } else {\n auto worldEntity = Model::Entity();\n if (format == MapFormat::Valve || format == MapFormat::Quake2_Valve || format == MapFormat::Quake3_Valve) {\n worldEntity.addOrUpdateAttribute(AttributeNames::ValveVersion, \"220\");\n }\n\n auto worldNode = std::make_unique<WorldNode>(std::move(worldEntity), format);\n\n const Model::BrushBuilder builder(worldNode.get(), worldBounds, defaultFaceAttribs());\n builder.createCuboid(vm::vec3(128.0, 128.0, 32.0), Model::BrushFaceAttributes::NoTextureName).\n visit(kdl::overload(\n [&](Brush&& b) {\n worldNode->defaultLayer()->addChild(worldNode->createBrush(std::move(b)));\n },\n [&](const Model::BrushError e) {\n logger.error() << \"Could not create default brush: \" << e;\n }\n ));\n\n return worldNode;\n }\n }\n\n std::unique_ptr<WorldNode> GameImpl::doLoadMap(const MapFormat format, const vm::bbox3& worldBounds, const IO::Path& path, Logger& logger) const {\n IO::SimpleParserStatus parserStatus(logger);\n auto file = IO::Disk::openFile(IO::Disk::fixPath(path));\n auto fileReader = file->reader().buffer();\n IO::WorldReader worldReader(fileReader.stringView());\n return worldReader.read(format, worldBounds, parserStatus);\n }\n\n void GameImpl::doWriteMap(WorldNode& world, const IO::Path& path, const bool exporting) const {\n const auto mapFormatName = formatName(world.format());\n\n std::ofstream file = openPathAsOutputStream(path);\n if (!file) {\n throw FileSystemException(\"Cannot open file: \" + path.asString());\n }\n IO::writeGameComment(file, gameName(), mapFormatName);\n\n IO::NodeWriter writer(world, file);\n writer.setExporting(exporting);\n writer.writeMap();\n }\n\n void GameImpl::doWriteMap(WorldNode& world, const IO::Path& path) const {\n doWriteMap(world, path, false);\n }\n\n void GameImpl::doExportMap(WorldNode& world, const Model::ExportFormat format, const IO::Path& path) const {\n switch (format) {\n case Model::ExportFormat::WavefrontObj: {\n IO::NodeWriter writer(world, std::make_unique<IO::ObjFileSerializer>(path));\n writer.setExporting(true);\n writer.writeMap();\n break;\n }\n case Model::ExportFormat::Map:\n doWriteMap(world, path, true);\n break;\n }\n }\n\n std::vector<Node*> GameImpl::doParseNodes(const std::string& str, WorldNode& world, const vm::bbox3& worldBounds, Logger& logger) const {\n IO::SimpleParserStatus parserStatus(logger);\n return IO::NodeReader::read(str, world, worldBounds, parserStatus);\n }\n\n std::vector<BrushFace> GameImpl::doParseBrushFaces(const std::string& str, WorldNode& world, const vm::bbox3& worldBounds, Logger& logger) const {\n IO::SimpleParserStatus parserStatus(logger);\n IO::BrushFaceReader reader(str, world);\n return reader.read(worldBounds, parserStatus);\n }\n\n void GameImpl::doWriteNodesToStream(WorldNode& world, const std::vector<Node*>& nodes, std::ostream& stream) const {\n IO::NodeWriter writer(world, stream);\n writer.writeNodes(nodes);\n }\n\n void GameImpl::doWriteBrushFacesToStream(WorldNode& world, const std::vector<BrushFace>& faces, std::ostream& stream) const {\n IO::NodeWriter writer(world, stream);\n writer.writeBrushFaces(faces);\n }\n\n Game::TexturePackageType GameImpl::doTexturePackageType() const {\n using Model::GameConfig;\n switch (m_config.textureConfig().package.type) {\n case TexturePackageConfig::PT_File:\n return TexturePackageType::File;\n case TexturePackageConfig::PT_Directory:\n return TexturePackageType::Directory;\n case TexturePackageConfig::PT_Unset:\n throw GameException(\"Texture package type is not set in game configuration\");\n switchDefault()\n }\n }\n\n void GameImpl::doLoadTextureCollections(AttributableNode& node, const IO::Path& documentPath, Assets::TextureManager& textureManager, Logger& logger) const {\n const auto paths = extractTextureCollections(node);\n\n const auto fileSearchPaths = textureCollectionSearchPaths(documentPath);\n IO::TextureLoader textureLoader(m_fs, fileSearchPaths, m_config.textureConfig(), logger);\n textureLoader.loadTextures(paths, textureManager);\n }\n\n std::vector<IO::Path> GameImpl::textureCollectionSearchPaths(const IO::Path& documentPath) const {\n std::vector<IO::Path> result;\n\n // Search for assets relative to the map file.\n result.push_back(documentPath);\n\n // Search for assets relative to the location of the game.\n result.push_back(m_gamePath);\n\n // Search for assets relative to the application itself.\n result.push_back(IO::SystemPaths::appDirectory());\n\n return result;\n }\n\n bool GameImpl::doIsTextureCollection(const IO::Path& path) const {\n const auto& packageConfig = m_config.textureConfig().package;\n switch (packageConfig.type) {\n case TexturePackageConfig::PT_File:\n return path.hasExtension(packageConfig.fileFormat.extensions, false);\n case TexturePackageConfig::PT_Directory:\n case TexturePackageConfig::PT_Unset:\n return false;\n switchDefault()\n }\n }\n\n std::vector<IO::Path> GameImpl::doFindTextureCollections() const {\n try {\n const auto& searchPath = m_config.textureConfig().package.rootDirectory;\n if (!searchPath.isEmpty() && m_fs.directoryExists(searchPath)) {\n return kdl::vec_concat(std::vector<IO::Path>({searchPath}), m_fs.findItemsRecursively(searchPath, IO::FileTypeMatcher(false, true)));\n }\n return std::vector<IO::Path>();\n } catch (FileSystemException& e) {\n throw GameException(\"Could not find texture collections: \" + std::string(e.what()));\n }\n }\n\n std::vector<std::string> GameImpl::doFileTextureCollectionExtensions() const {\n return m_config.textureConfig().package.fileFormat.extensions;\n }\n\n std::vector<IO::Path> GameImpl::doExtractTextureCollections(const AttributableNode& node) const {\n const auto& property = m_config.textureConfig().attribute;\n if (property.empty()) {\n return {};\n }\n\n const auto* pathsValue = node.entity().attribute(property);\n if (!pathsValue) {\n return {};\n }\n \n return IO::Path::asPaths(kdl::str_split(*pathsValue, \";\"));\n }\n\n void GameImpl::doUpdateTextureCollections(AttributableNode& node, const std::vector<IO::Path>& paths) const {\n const auto& attribute = m_config.textureConfig().attribute;\n if (attribute.empty()) {\n return;\n }\n\n const auto value = kdl::str_join(IO::Path::asStrings(paths, \"/\"), \";\");\n auto entity = node.entity();\n entity.addOrUpdateAttribute(attribute, value);\n node.setEntity(std::move(entity));\n }\n\n void GameImpl::doReloadShaders() {\n m_fs.reloadShaders();\n }\n\n bool GameImpl::doIsEntityDefinitionFile(const IO::Path& path) const {\n const auto extension = path.extension();\n if (kdl::ci::str_is_equal(\"fgd\", extension)) {\n return true;\n } else if (kdl::ci::str_is_equal(\"def\", extension)) {\n return true;\n } else if (kdl::ci::str_is_equal(\"ent\", extension)) {\n return true;\n } else {\n return false;\n }\n }\n\n std::vector<Assets::EntityDefinition*> GameImpl::doLoadEntityDefinitions(IO::ParserStatus& status, const IO::Path& path) const {\n const auto extension = path.extension();\n const auto& defaultColor = m_config.entityConfig().defaultColor;\n\n if (kdl::ci::str_is_equal(\"fgd\", extension)) {\n auto file = IO::Disk::openFile(IO::Disk::fixPath(path));\n auto reader = file->reader().buffer();\n IO::FgdParser parser(reader.stringView(), defaultColor, file->path());\n return parser.parseDefinitions(status);\n } else if (kdl::ci::str_is_equal(\"def\", extension)) {\n auto file = IO::Disk::openFile(IO::Disk::fixPath(path));\n auto reader = file->reader().buffer();\n IO::DefParser parser(reader.stringView(), defaultColor);\n return parser.parseDefinitions(status);\n } else if (kdl::ci::str_is_equal(\"ent\", extension)) {\n auto file = IO::Disk::openFile(IO::Disk::fixPath(path));\n auto reader = file->reader().buffer();\n IO::EntParser parser(reader.stringView(), defaultColor);\n return parser.parseDefinitions(status);\n } else {\n throw GameException(\"Unknown entity definition format: '\" + path.asString() + \"'\");\n }\n }\n\n std::vector<Assets::EntityDefinitionFileSpec> GameImpl::doAllEntityDefinitionFiles() const {\n const auto paths = m_config.entityConfig().defFilePaths;\n const auto count = paths.size();\n\n std::vector<Assets::EntityDefinitionFileSpec> result;\n result.reserve(count);\n\n for (const auto& path : paths) {\n result.push_back(Assets::EntityDefinitionFileSpec::builtin(path));\n }\n\n return result;\n }\n\n Assets::EntityDefinitionFileSpec GameImpl::doExtractEntityDefinitionFile(const AttributableNode& node) const {\n if (const auto* defValue = node.entity().attribute(AttributeNames::EntityDefinitions)) {\n return Assets::EntityDefinitionFileSpec::parse(*defValue);\n } else {\n return defaultEntityDefinitionFile();\n }\n }\n\n Assets::EntityDefinitionFileSpec GameImpl::defaultEntityDefinitionFile() const {\n const auto paths = m_config.entityConfig().defFilePaths;\n if (paths.empty()) {\n throw GameException(\"No entity definition files found for game '\" + gameName() + \"'\");\n }\n\n const auto& path = paths.front();\n return Assets::EntityDefinitionFileSpec::builtin(path);\n }\n\n IO::Path GameImpl::doFindEntityDefinitionFile(const Assets::EntityDefinitionFileSpec& spec, const std::vector<IO::Path>& searchPaths) const {\n if (!spec.valid()) {\n throw GameException(\"Invalid entity definition file spec\");\n }\n\n const auto& path = spec.path();\n if (spec.builtin()) {\n return m_config.findConfigFile(path);\n } else {\n if (path.isAbsolute()) {\n return path;\n } else {\n return IO::Disk::resolvePath(searchPaths, path);\n }\n }\n }\n\n std::unique_ptr<Assets::EntityModel> GameImpl::doInitializeModel(const IO::Path& path, Logger& logger) const {\n try {\n auto file = m_fs.openFile(path);\n ensure(file != nullptr, \"file is null\");\n\n const auto modelName = path.lastComponent().asString();\n const auto extension = kdl::str_to_lower(path.extension());\n const auto supported = m_config.entityConfig().modelFormats;\n\n if (extension == \"mdl\" && kdl::vec_contains(supported, \"mdl\")) {\n const auto palette = loadTexturePalette();\n auto reader = file->reader().buffer();\n IO::MdlParser parser(modelName, std::begin(reader), std::end(reader), palette);\n return parser.initializeModel(logger);\n } else if (extension == \"md2\" && kdl::vec_contains(supported, \"md2\")) {\n const auto palette = loadTexturePalette();\n auto reader = file->reader().buffer();\n IO::Md2Parser parser(modelName, std::begin(reader), std::end(reader), palette, m_fs);\n return parser.initializeModel(logger);\n } else if (extension == \"md3\" && kdl::vec_contains(supported, \"md3\")) {\n auto reader = file->reader().buffer();\n IO::Md3Parser parser(modelName, std::begin(reader), std::end(reader), m_fs);\n return parser.initializeModel(logger);\n } else if (extension == \"mdx\" && kdl::vec_contains(supported, \"mdx\")) {\n auto reader = file->reader().buffer();\n IO::MdxParser parser(modelName, std::begin(reader), std::end(reader), m_fs);\n return parser.initializeModel(logger);\n } else if (extension == \"bsp\" && kdl::vec_contains(supported, \"bsp\")) {\n const auto palette = loadTexturePalette();\n auto reader = file->reader().buffer();\n IO::Bsp29Parser parser(modelName, std::begin(reader), std::end(reader), palette, m_fs);\n return parser.initializeModel(logger);\n } else if (extension == \"dkm\" && kdl::vec_contains(supported, \"dkm\")) {\n auto reader = file->reader().buffer();\n IO::DkmParser parser(modelName, std::begin(reader), std::end(reader), m_fs);\n return parser.initializeModel(logger);\n } else if (extension == \"ase\" && kdl::vec_contains(supported, \"ase\")) {\n auto reader = file->reader().buffer();\n IO::AseParser parser(modelName, reader.stringView(), m_fs);\n return parser.initializeModel(logger);\n } else if (extension == \"obj\" && kdl::vec_contains(supported, \"obj_neverball\")) {\n auto reader = file->reader().buffer();\n // has to be the whole path for implicit textures!\n IO::NvObjParser parser(path, std::begin(reader), std::end(reader), m_fs);\n return parser.initializeModel(logger);\n } else {\n throw GameException(\"Unsupported model format '\" + path.asString() + \"'\");\n }\n } catch (const FileSystemException& e) {\n throw GameException(\"Could not load model \" + path.asString() + \": \" + std::string(e.what()));\n } catch (const AssetException& e) {\n throw GameException(\"Could not load model \" + path.asString() + \": \" + std::string(e.what()));\n } catch (const ParserException& e) {\n throw GameException(\"Could not load model \" + path.asString() + \": \" + std::string(e.what()));\n }\n }\n\n void GameImpl::doLoadFrame(const IO::Path& path, size_t frameIndex, Assets::EntityModel& model, Logger& logger) const {\n try {\n ensure(model.frame(frameIndex) != nullptr, \"invalid frame index\");\n ensure(!model.frame(frameIndex)->loaded(), \"frame already loaded\");\n\n const auto file = m_fs.openFile(path);\n ensure(file != nullptr, \"file is null\");\n\n const auto modelName = path.lastComponent().asString();\n const auto extension = kdl::str_to_lower(path.extension());\n const auto supported = m_config.entityConfig().modelFormats;\n\n if (extension == \"mdl\" && kdl::vec_contains(supported, \"mdl\")) {\n const auto palette = loadTexturePalette();\n auto reader = file->reader().buffer();\n IO::MdlParser parser(modelName, std::begin(reader), std::end(reader), palette);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"md2\" && kdl::vec_contains(supported, \"md2\")) {\n const auto palette = loadTexturePalette();\n auto reader = file->reader().buffer();\n IO::Md2Parser parser(modelName, std::begin(reader), std::end(reader), palette, m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"md3\" && kdl::vec_contains(supported, \"md3\")) {\n auto reader = file->reader().buffer();\n IO::Md3Parser parser(modelName, std::begin(reader), std::end(reader), m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"mdx\" && kdl::vec_contains(supported, \"mdx\")) {\n auto reader = file->reader().buffer();\n IO::MdxParser parser(modelName, std::begin(reader), std::end(reader), m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"bsp\" && kdl::vec_contains(supported, \"bsp\")) {\n const auto palette = loadTexturePalette();\n auto reader = file->reader().buffer();\n IO::Bsp29Parser parser(modelName, std::begin(reader), std::end(reader), palette, m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"dkm\" && kdl::vec_contains(supported, \"dkm\")) {\n auto reader = file->reader().buffer();\n IO::DkmParser parser(modelName, std::begin(reader), std::end(reader), m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"ase\" && kdl::vec_contains(supported, \"ase\")) {\n auto reader = file->reader().buffer();\n IO::AseParser parser(modelName, reader.stringView(), m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"obj\" && kdl::vec_contains(supported, \"obj_neverball\")) {\n auto reader = file->reader().buffer();\n // has to be the whole path for implicit textures!\n IO::NvObjParser parser(path, std::begin(reader), std::end(reader), m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else {\n throw GameException(\"Unsupported model format '\" + path.asString() + \"'\");\n }\n } catch (FileSystemException& e) {\n throw GameException(\"Could not load model \" + path.asString() + \": \" + std::string(e.what()));\n } catch (AssetException& e) {\n throw GameException(\"Could not load model \" + path.asString() + \": \" + std::string(e.what()));\n }\n }\n\n Assets::Palette GameImpl::loadTexturePalette() const {\n const auto& path = m_config.textureConfig().palette;\n return Assets::Palette::loadFile(m_fs, path);\n }\n\n std::vector<std::string> GameImpl::doAvailableMods() const {\n std::vector<std::string> result;\n if (m_gamePath.isEmpty() || !IO::Disk::directoryExists(m_gamePath)) {\n return result;\n }\n\n const auto& defaultMod = m_config.fileSystemConfig().searchPath.lastComponent().asString();\n const IO::DiskFileSystem fs(m_gamePath);\n const auto subDirs = fs.findItems(IO::Path(\"\"), IO::FileTypeMatcher(false, true));\n for (size_t i = 0; i < subDirs.size(); ++i) {\n const std::string mod = subDirs[i].lastComponent().asString();\n if (!kdl::ci::str_is_equal(mod, defaultMod)) {\n result.push_back(mod);\n }\n }\n return result;\n }\n\n std::vector<std::string> GameImpl::doExtractEnabledMods(const AttributableNode& node) const {\n if (const auto* modStr = node.entity().attribute(AttributeNames::Mods)) {\n return kdl::str_split(*modStr, \";\");\n } else {\n return {};\n }\n }\n\n std::string GameImpl::doDefaultMod() const {\n return m_config.fileSystemConfig().searchPath.asString();\n }\n\n const FlagsConfig& GameImpl::doSurfaceFlags() const {\n return m_config.faceAttribsConfig().surfaceFlags;\n }\n\n const FlagsConfig& GameImpl::doContentFlags() const {\n return m_config.faceAttribsConfig().contentFlags;\n }\n\n const BrushFaceAttributes& GameImpl::doDefaultFaceAttribs() const {\n return m_config.faceAttribsConfig().defaults;\n }\n\n const std::vector<CompilationTool>& GameImpl::doCompilationTools() const {\n return m_config.compilationTools();\n }\n\n void GameImpl::writeLongAttribute(AttributableNode& node, const std::string& baseName, const std::string& value, const size_t maxLength) const {\n auto entity = node.entity();\n entity.removeNumberedAttribute(baseName);\n\n std::stringstream nameStr;\n for (size_t i = 0; i <= value.size() / maxLength; ++i) {\n nameStr.str(\"\");\n nameStr << baseName << i+1;\n entity.addOrUpdateAttribute(nameStr.str(), value.substr(i * maxLength, maxLength));\n }\n\n node.setEntity(std::move(entity));\n }\n\n std::string GameImpl::readLongAttribute(const AttributableNode& node, const std::string& baseName) const {\n size_t index = 1;\n std::stringstream nameStr;\n std::stringstream valueStr;\n nameStr << baseName << index;\n\n const auto& entity = node.entity();\n while (entity.hasAttribute(nameStr.str())) {\n if (const auto* value = entity.attribute(nameStr.str())) {\n valueStr << *value;\n }\n nameStr.str(\"\");\n nameStr << baseName << ++index;\n }\n\n return valueStr.str();\n }\n }\n}\n","uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp","version":1}}} | |
| I[19:53:47.711] <-- textDocument/didOpen | |
| V[19:53:47.713] <<< {"id":1,"jsonrpc":"2.0","method":"textDocument/codeAction","params":{"context":{"diagnostics":[]},"range":{"end":{"character":60,"line":252},"start":{"character":59,"line":252}},"textDocument":{"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp"}}} | |
| I[19:53:47.713] <-- textDocument/codeAction(1) | |
| V[19:53:47.713] <<< {"id":2,"jsonrpc":"2.0","method":"textDocument/documentLink","params":{"textDocument":{"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp"}}} | |
| I[19:53:47.713] <-- textDocument/documentLink(2) | |
| I[19:53:47.716] Loaded compilation database from /Users/kristian/Documents/Code/TrenchBroom | |
| I[19:53:47.721] Loaded compilation database from /Users/kristian/Documents/Code/TrenchBroom/build | |
| I[19:53:47.723] --> window/workDoneProgress/create(0) | |
| V[19:53:47.723] >>> {"id":0,"jsonrpc":"2.0","method":"window/workDoneProgress/create","params":{"token":"backgroundIndexProgress"}} | |
| I[19:53:47.723] Enqueueing 609 commands for indexing | |
| I[19:53:47.724] ASTWorker building file /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp version 1 with command | |
| [/Users/kristian/Documents/Code/TrenchBroom/build] | |
| /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ --driver-mode=g++ -DFMT_LOCALE -DGLEW_STATIC -DGL_SILENCE_DEPRECATION -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SVG_LIB -DQT_WIDGETS_LIB -Icommon/common_autogen/include -I../common/src -Icommon -I../lib/kdl/include -I../lib/vecmath/include -I../lib/fmt/include -isystem ../lib/tinyxml2/include -isystem ../lib/glew/include -isystem ../lib/miniz/include -isystem ../lib/BinaryLibs/freeimage/include/win32 -isystem ../lib/freetype/include -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks -iframework /opt/local/libexec/qt5/lib -isystem /opt/local/libexec/qt5/lib/QtWidgets.framework/Headers -isystem /opt/local/libexec/qt5/lib/QtGui.framework/Headers -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks/OpenGL.framework/Headers -isystem /opt/local/libexec/qt5/lib/QtCore.framework/Headers -isystem /opt/local/libexec/qt5/./mkspecs/macx-clang -isystem /opt/local/libexec/qt5/lib/QtSvg.framework/Headers -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk -mmacosx-version-min=10.14 -Wall -Wextra -Wconversion -Wshadow-all -pedantic -Wno-global-constructors -Wno-exit-time-destructors -Wno-padded -Wno-format-nonliteral -Wno-used-but-marked-unused -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-c++98-compat-bind-to-temporary-copy -Wno-weak-vtables -Wno-weak-template-vtables -Wno-missing-braces -Wno-redundant-parens -Wno-pragma-system-header-outside-header -Wno-float-equal -fPIC -std=gnu++17 -Winvalid-pch -Xclang -include-pch -Xclang /Users/kristian/Documents/Code/TrenchBroom/build/common/CMakeFiles/common.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /Users/kristian/Documents/Code/TrenchBroom/build/common/CMakeFiles/common.dir/cmake_pch.hxx -o common/CMakeFiles/common.dir/src/Model/GameImpl.cpp.o -c /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp -fsyntax-only -resource-dir=/Users/kristian/.bin/clangd_11.0.0/lib/clang/11.0.0 | |
| V[19:53:47.724] <<< {"id":0,"jsonrpc":"2.0","result":null} | |
| I[19:53:47.724] <-- reply(0) | |
| I[19:53:47.724] --> $/progress | |
| V[19:53:47.724] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"begin","percentage":0,"title":"indexing"}}} | |
| I[19:53:47.724] --> $/progress | |
| V[19:53:47.724] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/1","percentage":0}}} | |
| V[19:53:47.726] Driver produced command: cc1 -cc1 -triple x86_64-apple-macosx10.14.0 -Wundef-prefix=TARGET_OS_ -Werror=undef-prefix -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -fsyntax-only -disable-free -disable-llvm-verifier -discard-value-names -main-file-name GameImpl.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=all -fno-rounding-math -munwind-tables -target-sdk-version=11.0 -fcompatibility-qualified-id-block-type-checking -target-cpu penryn -debug-info-kind=standalone -dwarf-version=4 -debugger-tuning=lldb -target-linker-version 609 -resource-dir /Users/kristian/.bin/clangd_11.0.0/lib/clang/11.0.0 -isystem ../lib/tinyxml2/include -isystem ../lib/glew/include -isystem ../lib/miniz/include -isystem ../lib/BinaryLibs/freeimage/include/win32 -isystem ../lib/freetype/include -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks -iframework /opt/local/libexec/qt5/lib -isystem /opt/local/libexec/qt5/lib/QtWidgets.framework/Headers -isystem /opt/local/libexec/qt5/lib/QtGui.framework/Headers -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks/OpenGL.framework/Headers -isystem /opt/local/libexec/qt5/lib/QtCore.framework/Headers -isystem /opt/local/libexec/qt5/./mkspecs/macx-clang -isystem /opt/local/libexec/qt5/lib/QtSvg.framework/Headers -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk -D FMT_LOCALE -D GLEW_STATIC -D GL_SILENCE_DEPRECATION -D QT_CORE_LIB -D QT_GUI_LIB -D QT_SVG_LIB -D QT_WIDGETS_LIB -I common/common_autogen/include -I ../common/src -I common -I ../lib/kdl/include -I ../lib/vecmath/include -I ../lib/fmt/include -stdlib=libc++ -internal-isystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1 -internal-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/usr/include/c++/v1 -internal-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/usr/local/include -internal-isystem /Users/kristian/.bin/clangd_11.0.0/lib/clang/11.0.0/include -internal-externc-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/usr/include -Wall -Wextra -Wconversion -Wshadow-all -Wno-global-constructors -Wno-exit-time-destructors -Wno-padded -Wno-format-nonliteral -Wno-used-but-marked-unused -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-c++98-compat-bind-to-temporary-copy -Wno-weak-vtables -Wno-weak-template-vtables -Wno-missing-braces -Wno-redundant-parens -Wno-pragma-system-header-outside-header -Wno-float-equal -Winvalid-pch -pedantic -std=gnu++17 -fdeprecated-macro -fdebug-compilation-dir /Users/kristian/Documents/Code/TrenchBroom/build -ferror-limit 19 -stack-protector 1 -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -fmax-type-align=16 -include-pch /Users/kristian/Documents/Code/TrenchBroom/build/common/CMakeFiles/common.dir/cmake_pch.hxx.pch -include /Users/kristian/Documents/Code/TrenchBroom/build/common/CMakeFiles/common.dir/cmake_pch.hxx -x c++ /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp | |
| I[19:53:47.726] --> textDocument/clangd.fileStatus | |
| V[19:53:47.726] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"parsing includes,running Update (1)","uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp"}} | |
| V[19:53:47.726] Building first preamble for /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp version 1 | |
| V[19:53:47.894] indexed preamble AST for /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp version 1: | |
| symbol slab: 53207 symbols, 13818712 bytes | |
| ref slab: 0 symbols, 0 refs, 136 bytes | |
| relations slab: 873 relations, 17432 bytes | |
| V[19:53:48.013] <<< {"id":3,"jsonrpc":"2.0","method":"textDocument/semanticTokens/full","params":{"textDocument":{"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp"}}} | |
| I[19:53:48.013] <-- textDocument/semanticTokens/full(3) | |
| V[19:53:48.119] BackgroundIndex: building version 1 after loading index from disk | |
| V[19:53:48.285] <<< {"id":4,"jsonrpc":"2.0","method":"shutdown"} | |
| I[19:53:48.285] <-- shutdown(4) | |
| I[19:53:48.285] --> reply:shutdown(4) 0 ms | |
| V[19:53:48.285] >>> {"id":4,"jsonrpc":"2.0","result":null} | |
| [Error - 7:53:48 PM] Request textDocument/codeAction failed. | |
| Error: Connection got disposed. | |
| at Object.dispose (/Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-jsonrpc/lib/common/connection.js:1009:27) | |
| at Object.dispose (/Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-languageclient/lib/common/client.js:71:35) | |
| at /Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-languageclient/lib/common/client.js:2211:28 | |
| [Error - 7:53:48 PM] Request textDocument/documentLink failed. | |
| Error: Connection got disposed. | |
| at Object.dispose (/Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-jsonrpc/lib/common/connection.js:1009:27) | |
| at Object.dispose (/Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-languageclient/lib/common/client.js:71:35) | |
| at /Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-languageclient/lib/common/client.js:2211:28 | |
| [Error - 7:53:48 PM] Request textDocument/semanticTokens/full failed. | |
| Error: Connection got disposed. | |
| at Object.dispose (/Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-jsonrpc/lib/common/connection.js:1009:27) | |
| at Object.dispose (/Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-languageclient/lib/common/client.js:71:35) | |
| at /Users/kristian/.vscode/extensions/llvm-vs-code-extensions.vscode-clangd-0.1.8/node_modules/vscode-languageclient/lib/common/client.js:2211:28 | |
| V[19:53:48.312] <<< {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":1}} | |
| I[19:53:48.312] <-- $/cancelRequest | |
| V[19:53:48.312] <<< {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":2}} | |
| I[19:53:48.312] <-- $/cancelRequest | |
| V[19:53:48.316] <<< {"jsonrpc":"2.0","method":"exit"} | |
| I[19:53:48.316] <-- exit | |
| I[19:53:48.316] LSP finished, exiting with status 0 | |
| I[19:53:48.314] clangd version 11.0.0 (https://github.com/llvm/llvm-project 176249bd6732a8044d457092ed932768724a6f06) | |
| I[19:53:48.314] PID: 53221 | |
| I[19:53:48.315] Working directory: /Users/kristian/Documents/Code/TrenchBroom | |
| I[19:53:48.315] argv[0]: /Users/kristian/.bin/clangd_11.0.0/bin/clangd | |
| I[19:53:48.315] argv[1]: --log=verbose | |
| V[19:53:48.315] User config file is /Users/kristian/Library/Preferences/clangd/config.yaml | |
| I[19:53:48.315] Starting LSP over stdin/stdout | |
| V[19:53:48.315] <<< {"id":0,"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"textDocument":{"callHierarchy":{"dynamicRegistration":true},"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dynamicRegistration":true,"isPreferredSupport":true},"codeLens":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"completion":{"completionItem":{"commitCharactersSupport":true,"deprecatedSupport":true,"documentationFormat":["markdown","plaintext"],"insertReplaceSupport":true,"preselectSupport":true,"resolveAdditionalTextEditsSupport":true,"snippetSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]},"contextSupport":true,"dynamicRegistration":true,"editsNearCursor":true},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"documentHighlight":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true,"tooltipSupport":true},"documentSymbol":{"dynamicRegistration":true,"hierarchicalDocumentSymbolSupport":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"foldingRange":{"dynamicRegistration":true,"lineFoldingOnly":true,"rangeLimit":5000},"formatting":{"dynamicRegistration":true},"hover":{"contentFormat":["markdown","plaintext"],"dynamicRegistration":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"onTypeFormatting":{"dynamicRegistration":true},"publishDiagnostics":{"complexDiagnosticCodeSupport":true,"relatedInformation":true,"tagSupport":{"valueSet":[1,2]},"versionSupport":false},"rangeFormatting":{"dynamicRegistration":true},"references":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true},"selectionRange":{"dynamicRegistration":true},"semanticHighlightingCapabilities":{"semanticHighlighting":true},"semanticTokens":{"dynamicRegistration":true,"formats":["relative"],"requests":{"full":{"delta":true},"range":true},"tokenModifiers":["declaration","definition","readonly","static","deprecated","abstract","async","modification","documentation","defaultLibrary"],"tokenTypes":["namespace","type","class","enum","interface","struct","typeParameter","parameter","variable","property","enumMember","event","function","member","macro","keyword","modifier","comment","string","number","regexp","operator"]},"signatureHelp":{"contextSupport":true,"dynamicRegistration":true,"signatureInformation":{"activeParameterSupport":true,"documentationFormat":["markdown","plaintext"],"parameterInformation":{"labelOffsetSupport":true}}},"synchronization":{"didSave":true,"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true}},"window":{"workDoneProgress":true},"workspace":{"applyEdit":true,"configuration":true,"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true},"executeCommand":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"workspaceEdit":{"documentChanges":true,"failureHandling":"textOnlyTransactional","resourceOperations":["create","rename","delete"]},"workspaceFolders":true}},"clientInfo":{"name":"vscode","version":"1.51.1"},"initializationOptions":{"clangdFileStatus":true,"fallbackFlags":[]},"processId":53081,"rootPath":"/Users/kristian/Documents/Code/TrenchBroom","rootUri":"file:///Users/kristian/Documents/Code/TrenchBroom","trace":"off","workspaceFolders":[{"name":"TrenchBroom","uri":"file:///Users/kristian/Documents/Code/TrenchBroom"}]}} | |
| I[19:53:48.315] <-- initialize(0) | |
| I[19:53:48.315] Client supports legacy semanticHighlights notification and standard semanticTokens request, choosing the latter (no notifications). | |
| V[19:53:48.315] Invoking /usr/bin/xcrun to find clang installation | |
| I[19:53:48.316] --> reply:textDocument/codeAction(1) 602 ms, error: Task was cancelled. | |
| V[19:53:48.316] >>> {"error":{"code":-32800,"message":"Request cancelled"},"id":1,"jsonrpc":"2.0"} | |
| I[19:53:48.316] --> reply:textDocument/documentLink(2) 602 ms, error: Task was cancelled. | |
| V[19:53:48.316] >>> {"error":{"code":-32800,"message":"Request cancelled"},"id":2,"jsonrpc":"2.0"} | |
| V[19:53:48.317] ASTWorker rebuilding evicted AST to run SemanticHighlights: /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp version 1 | |
| V[19:53:48.324] Invoking /usr/bin/xcrun to find clang installation | |
| I[19:53:48.332] --> reply:initialize(0) 16 ms | |
| V[19:53:48.332] >>> {"id":0,"jsonrpc":"2.0","result":{"capabilities":{"codeActionProvider":{"codeActionKinds":["quickfix","refactor","info"]},"completionProvider":{"allCommitCharacters":[" ","\t","(",")","[","]","{","}","<",">",":",";",",","+","-","/","*","%","^","&","#","?",".","=","\"","'","|"],"resolveProvider":false,"triggerCharacters":[".","<",">",":","\"","/"]},"declarationProvider":true,"definitionProvider":true,"documentFormattingProvider":true,"documentHighlightProvider":true,"documentLinkProvider":{"resolveProvider":false},"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"\n","moreTriggerCharacter":[]},"documentRangeFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["clangd.applyFix","clangd.applyTweak"]},"hoverProvider":true,"referencesProvider":true,"renameProvider":{"prepareProvider":true},"selectionRangeProvider":true,"semanticTokensProvider":{"full":{"delta":true},"legend":{"tokenModifiers":[],"tokenTypes":["variable","variable","parameter","function","member","function","member","variable","class","enum","enumConstant","type","dependent","dependent","namespace","typeParameter","concept","type","macro","comment"]},"range":false},"signatureHelpProvider":{"triggerCharacters":["(",","]},"textDocumentSync":{"change":2,"openClose":true,"save":true},"typeHierarchyProvider":true,"workspaceSymbolProvider":true},"serverInfo":{"name":"clangd","version":"clangd version 11.0.0 (https://github.com/llvm/llvm-project 176249bd6732a8044d457092ed932768724a6f06)"}}} | |
| V[19:53:48.334] <<< {"jsonrpc":"2.0","method":"initialized","params":{}} | |
| I[19:53:48.334] <-- initialized | |
| V[19:53:48.335] <<< {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"cpp","text":"/*\n Copyright (C) 2010-2017 Kristian Duske\n\n This file is part of TrenchBroom.\n\n TrenchBroom is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n TrenchBroom is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with TrenchBroom. If not, see <http://www.gnu.org/licenses/>.\n */\n\n#include \"GameImpl.h\"\n\n#include \"Ensure.h\"\n#include \"Exceptions.h\"\n#include \"Logger.h\"\n#include \"Macros.h\"\n#include \"Assets/Palette.h\"\n#include \"Assets/EntityModel.h\"\n#include \"Assets/EntityDefinitionFileSpec.h\"\n#include \"IO/AseParser.h\"\n#include \"IO/BrushFaceReader.h\"\n#include \"IO/Bsp29Parser.h\"\n#include \"IO/DefParser.h\"\n#include \"IO/DiskIO.h\"\n#include \"IO/DkmParser.h\"\n#include \"IO/DiskFileSystem.h\"\n#include \"IO/EntParser.h\"\n#include \"IO/FgdParser.h\"\n#include \"IO/File.h\"\n#include \"IO/FileMatcher.h\"\n#include \"IO/GameConfigParser.h\"\n#include \"IO/IOUtils.h\"\n#include \"IO/MdlParser.h\"\n#include \"IO/Md2Parser.h\"\n#include \"IO/Md3Parser.h\"\n#include \"IO/MdxParser.h\"\n#include \"IO/NodeReader.h\"\n#include \"IO/NodeWriter.h\"\n#include \"IO/ObjParser.h\"\n#include \"IO/ObjSerializer.h\"\n#include \"IO/WorldReader.h\"\n#include \"IO/SimpleParserStatus.h\"\n#include \"IO/SystemPaths.h\"\n#include \"IO/TextureLoader.h\"\n#include \"Model/BrushBuilder.h\"\n#include \"Model/BrushError.h\"\n#include \"Model/BrushNode.h\"\n#include \"Model/Entity.h\"\n#include \"Model/EntityAttributes.h\"\n#include \"Model/ExportFormat.h\"\n#include \"Model/GameConfig.h\"\n#include \"Model/LayerNode.h\"\n#include \"Model/WorldNode.h\"\n\n#include <kdl/overload.h>\n#include <kdl/result.h>\n#include <kdl/string_compare.h>\n#include <kdl/string_format.h>\n#include <kdl/string_utils.h>\n#include <kdl/vector_utils.h>\n\n#include <vecmath/vec_io.h>\n\n#include <fstream>\n#include <string>\n#include <vector>\n\nnamespace TrenchBroom {\n namespace Model {\n GameImpl::GameImpl(GameConfig& config, const IO::Path& gamePath, Logger& logger) :\n m_config(config),\n m_gamePath(gamePath) {\n initializeFileSystem(logger);\n }\n\n void GameImpl::initializeFileSystem(Logger& logger) {\n m_fs.initialize(m_config, m_gamePath, m_additionalSearchPaths, logger);\n }\n\n const std::string& GameImpl::doGameName() const {\n return m_config.name();\n }\n\n IO::Path GameImpl::doGamePath() const {\n return m_gamePath;\n }\n\n void GameImpl::doSetGamePath(const IO::Path& gamePath, Logger& logger) {\n if (gamePath != m_gamePath) {\n m_gamePath = gamePath;\n initializeFileSystem(logger);\n }\n }\n\n void GameImpl::doSetAdditionalSearchPaths(const std::vector<IO::Path>& searchPaths, Logger& logger) {\n if (searchPaths != m_additionalSearchPaths) {\n m_additionalSearchPaths = searchPaths;\n initializeFileSystem(logger);\n }\n }\n\n Game::PathErrors GameImpl::doCheckAdditionalSearchPaths(const std::vector<IO::Path>& searchPaths) const {\n PathErrors result;\n for (const auto& searchPath : searchPaths) {\n const auto absPath = m_gamePath + searchPath;\n if (!absPath.isAbsolute() || !IO::Disk::directoryExists(absPath)) {\n result.insert(std::make_pair(searchPath, \"Directory not found: '\" + searchPath.asString() + \"'\"));\n }\n }\n return result;\n }\n\n const CompilationConfig& GameImpl::doCompilationConfig() {\n return m_config.compilationConfig();\n }\n\n size_t GameImpl::doMaxPropertyLength() const {\n return m_config.maxPropertyLength();\n }\n\n std::optional<vm::bbox3> GameImpl::doSoftMapBounds() const {\n return m_config.softMapBounds();\n }\n\n Game::SoftMapBounds GameImpl::doExtractSoftMapBounds(const AttributableNode& node) const {\n if (!node.entity().hasAttribute(AttributeNames::SoftMapBounds)) {\n // Not set in map -> use Game value\n return {SoftMapBoundsType::Game, doSoftMapBounds()};\n }\n\n if (const auto* mapValue = node.entity().attribute(AttributeNames::SoftMapBounds); mapValue && *mapValue != AttributeValues::NoSoftMapBounds) {\n return {SoftMapBoundsType::Map, IO::parseSoftMapBoundsString(*mapValue)};\n } else {\n return {SoftMapBoundsType::Map, std::nullopt};\n }\n }\n\n const std::vector<SmartTag>& GameImpl::doSmartTags() const {\n return m_config.smartTags();\n }\n\n std::unique_ptr<WorldNode> GameImpl::doNewMap(const MapFormat format, const vm::bbox3& worldBounds, Logger& logger) const {\n const auto initialMapFilePath = m_config.findInitialMap(formatName(format));\n if (!initialMapFilePath.isEmpty() && IO::Disk::fileExists(initialMapFilePath)) {\n return doLoadMap(format, worldBounds, initialMapFilePath, logger);\n } else {\n auto worldEntity = Model::Entity();\n if (format == MapFormat::Valve || format == MapFormat::Quake2_Valve || format == MapFormat::Quake3_Valve) {\n worldEntity.addOrUpdateAttribute(AttributeNames::ValveVersion, \"220\");\n }\n\n auto worldNode = std::make_unique<WorldNode>(std::move(worldEntity), format);\n\n const Model::BrushBuilder builder(worldNode.get(), worldBounds, defaultFaceAttribs());\n builder.createCuboid(vm::vec3(128.0, 128.0, 32.0), Model::BrushFaceAttributes::NoTextureName).\n visit(kdl::overload(\n [&](Brush&& b) {\n worldNode->defaultLayer()->addChild(worldNode->createBrush(std::move(b)));\n },\n [&](const Model::BrushError e) {\n logger.error() << \"Could not create default brush: \" << e;\n }\n ));\n\n return worldNode;\n }\n }\n\n std::unique_ptr<WorldNode> GameImpl::doLoadMap(const MapFormat format, const vm::bbox3& worldBounds, const IO::Path& path, Logger& logger) const {\n IO::SimpleParserStatus parserStatus(logger);\n auto file = IO::Disk::openFile(IO::Disk::fixPath(path));\n auto fileReader = file->reader().buffer();\n IO::WorldReader worldReader(fileReader.stringView());\n return worldReader.read(format, worldBounds, parserStatus);\n }\n\n void GameImpl::doWriteMap(WorldNode& world, const IO::Path& path, const bool exporting) const {\n const auto mapFormatName = formatName(world.format());\n\n std::ofstream file = openPathAsOutputStream(path);\n if (!file) {\n throw FileSystemException(\"Cannot open file: \" + path.asString());\n }\n IO::writeGameComment(file, gameName(), mapFormatName);\n\n IO::NodeWriter writer(world, file);\n writer.setExporting(exporting);\n writer.writeMap();\n }\n\n void GameImpl::doWriteMap(WorldNode& world, const IO::Path& path) const {\n doWriteMap(world, path, false);\n }\n\n void GameImpl::doExportMap(WorldNode& world, const Model::ExportFormat format, const IO::Path& path) const {\n switch (format) {\n case Model::ExportFormat::WavefrontObj: {\n IO::NodeWriter writer(world, std::make_unique<IO::ObjFileSerializer>(path));\n writer.setExporting(true);\n writer.writeMap();\n break;\n }\n case Model::ExportFormat::Map:\n doWriteMap(world, path, true);\n break;\n }\n }\n\n std::vector<Node*> GameImpl::doParseNodes(const std::string& str, WorldNode& world, const vm::bbox3& worldBounds, Logger& logger) const {\n IO::SimpleParserStatus parserStatus(logger);\n return IO::NodeReader::read(str, world, worldBounds, parserStatus);\n }\n\n std::vector<BrushFace> GameImpl::doParseBrushFaces(const std::string& str, WorldNode& world, const vm::bbox3& worldBounds, Logger& logger) const {\n IO::SimpleParserStatus parserStatus(logger);\n IO::BrushFaceReader reader(str, world);\n return reader.read(worldBounds, parserStatus);\n }\n\n void GameImpl::doWriteNodesToStream(WorldNode& world, const std::vector<Node*>& nodes, std::ostream& stream) const {\n IO::NodeWriter writer(world, stream);\n writer.writeNodes(nodes);\n }\n\n void GameImpl::doWriteBrushFacesToStream(WorldNode& world, const std::vector<BrushFace>& faces, std::ostream& stream) const {\n IO::NodeWriter writer(world, stream);\n writer.writeBrushFaces(faces);\n }\n\n Game::TexturePackageType GameImpl::doTexturePackageType() const {\n using Model::GameConfig;\n switch (m_config.textureConfig().package.type) {\n case TexturePackageConfig::PT_File:\n return TexturePackageType::File;\n case TexturePackageConfig::PT_Directory:\n return TexturePackageType::Directory;\n case TexturePackageConfig::PT_Unset:\n throw GameException(\"Texture package type is not set in game configuration\");\n switchDefault()\n }\n }\n\n void GameImpl::doLoadTextureCollections(AttributableNode& node, const IO::Path& documentPath, Assets::TextureManager& textureManager, Logger& logger) const {\n const auto paths = extractTextureCollections(node);\n\n const auto fileSearchPaths = textureCollectionSearchPaths(documentPath);\n IO::TextureLoader textureLoader(m_fs, fileSearchPaths, m_config.textureConfig(), logger);\n textureLoader.loadTextures(paths, textureManager);\n }\n\n std::vector<IO::Path> GameImpl::textureCollectionSearchPaths(const IO::Path& documentPath) const {\n std::vector<IO::Path> result;\n\n // Search for assets relative to the map file.\n result.push_back(documentPath);\n\n // Search for assets relative to the location of the game.\n result.push_back(m_gamePath);\n\n // Search for assets relative to the application itself.\n result.push_back(IO::SystemPaths::appDirectory());\n\n return result;\n }\n\n bool GameImpl::doIsTextureCollection(const IO::Path& path) const {\n const auto& packageConfig = m_config.textureConfig().package;\n switch (packageConfig.type) {\n case TexturePackageConfig::PT_File:\n return path.hasExtension(packageConfig.fileFormat.extensions, false);\n case TexturePackageConfig::PT_Directory:\n case TexturePackageConfig::PT_Unset:\n return false;\n switchDefault()\n }\n }\n\n std::vector<IO::Path> GameImpl::doFindTextureCollections() const {\n try {\n const auto& searchPath = m_config.textureConfig().package.rootDirectory;\n if (!searchPath.isEmpty() && m_fs.directoryExists(searchPath)) {\n return kdl::vec_concat(std::vector<IO::Path>({searchPath}), m_fs.findItemsRecursively(searchPath, IO::FileTypeMatcher(false, true)));\n }\n return std::vector<IO::Path>();\n } catch (FileSystemException& e) {\n throw GameException(\"Could not find texture collections: \" + std::string(e.what()));\n }\n }\n\n std::vector<std::string> GameImpl::doFileTextureCollectionExtensions() const {\n return m_config.textureConfig().package.fileFormat.extensions;\n }\n\n std::vector<IO::Path> GameImpl::doExtractTextureCollections(const AttributableNode& node) const {\n const auto& property = m_config.textureConfig().attribute;\n if (property.empty()) {\n return {};\n }\n\n const auto* pathsValue = node.entity().attribute(property);\n if (!pathsValue) {\n return {};\n }\n \n return IO::Path::asPaths(kdl::str_split(*pathsValue, \";\"));\n }\n\n void GameImpl::doUpdateTextureCollections(AttributableNode& node, const std::vector<IO::Path>& paths) const {\n const auto& attribute = m_config.textureConfig().attribute;\n if (attribute.empty()) {\n return;\n }\n\n const auto value = kdl::str_join(IO::Path::asStrings(paths, \"/\"), \";\");\n auto entity = node.entity();\n entity.addOrUpdateAttribute(attribute, value);\n node.setEntity(std::move(entity));\n }\n\n void GameImpl::doReloadShaders() {\n m_fs.reloadShaders();\n }\n\n bool GameImpl::doIsEntityDefinitionFile(const IO::Path& path) const {\n const auto extension = path.extension();\n if (kdl::ci::str_is_equal(\"fgd\", extension)) {\n return true;\n } else if (kdl::ci::str_is_equal(\"def\", extension)) {\n return true;\n } else if (kdl::ci::str_is_equal(\"ent\", extension)) {\n return true;\n } else {\n return false;\n }\n }\n\n std::vector<Assets::EntityDefinition*> GameImpl::doLoadEntityDefinitions(IO::ParserStatus& status, const IO::Path& path) const {\n const auto extension = path.extension();\n const auto& defaultColor = m_config.entityConfig().defaultColor;\n\n if (kdl::ci::str_is_equal(\"fgd\", extension)) {\n auto file = IO::Disk::openFile(IO::Disk::fixPath(path));\n auto reader = file->reader().buffer();\n IO::FgdParser parser(reader.stringView(), defaultColor, file->path());\n return parser.parseDefinitions(status);\n } else if (kdl::ci::str_is_equal(\"def\", extension)) {\n auto file = IO::Disk::openFile(IO::Disk::fixPath(path));\n auto reader = file->reader().buffer();\n IO::DefParser parser(reader.stringView(), defaultColor);\n return parser.parseDefinitions(status);\n } else if (kdl::ci::str_is_equal(\"ent\", extension)) {\n auto file = IO::Disk::openFile(IO::Disk::fixPath(path));\n auto reader = file->reader().buffer();\n IO::EntParser parser(reader.stringView(), defaultColor);\n return parser.parseDefinitions(status);\n } else {\n throw GameException(\"Unknown entity definition format: '\" + path.asString() + \"'\");\n }\n }\n\n std::vector<Assets::EntityDefinitionFileSpec> GameImpl::doAllEntityDefinitionFiles() const {\n const auto paths = m_config.entityConfig().defFilePaths;\n const auto count = paths.size();\n\n std::vector<Assets::EntityDefinitionFileSpec> result;\n result.reserve(count);\n\n for (const auto& path : paths) {\n result.push_back(Assets::EntityDefinitionFileSpec::builtin(path));\n }\n\n return result;\n }\n\n Assets::EntityDefinitionFileSpec GameImpl::doExtractEntityDefinitionFile(const AttributableNode& node) const {\n if (const auto* defValue = node.entity().attribute(AttributeNames::EntityDefinitions)) {\n return Assets::EntityDefinitionFileSpec::parse(*defValue);\n } else {\n return defaultEntityDefinitionFile();\n }\n }\n\n Assets::EntityDefinitionFileSpec GameImpl::defaultEntityDefinitionFile() const {\n const auto paths = m_config.entityConfig().defFilePaths;\n if (paths.empty()) {\n throw GameException(\"No entity definition files found for game '\" + gameName() + \"'\");\n }\n\n const auto& path = paths.front();\n return Assets::EntityDefinitionFileSpec::builtin(path);\n }\n\n IO::Path GameImpl::doFindEntityDefinitionFile(const Assets::EntityDefinitionFileSpec& spec, const std::vector<IO::Path>& searchPaths) const {\n if (!spec.valid()) {\n throw GameException(\"Invalid entity definition file spec\");\n }\n\n const auto& path = spec.path();\n if (spec.builtin()) {\n return m_config.findConfigFile(path);\n } else {\n if (path.isAbsolute()) {\n return path;\n } else {\n return IO::Disk::resolvePath(searchPaths, path);\n }\n }\n }\n\n std::unique_ptr<Assets::EntityModel> GameImpl::doInitializeModel(const IO::Path& path, Logger& logger) const {\n try {\n auto file = m_fs.openFile(path);\n ensure(file != nullptr, \"file is null\");\n\n const auto modelName = path.lastComponent().asString();\n const auto extension = kdl::str_to_lower(path.extension());\n const auto supported = m_config.entityConfig().modelFormats;\n\n if (extension == \"mdl\" && kdl::vec_contains(supported, \"mdl\")) {\n const auto palette = loadTexturePalette();\n auto reader = file->reader().buffer();\n IO::MdlParser parser(modelName, std::begin(reader), std::end(reader), palette);\n return parser.initializeModel(logger);\n } else if (extension == \"md2\" && kdl::vec_contains(supported, \"md2\")) {\n const auto palette = loadTexturePalette();\n auto reader = file->reader().buffer();\n IO::Md2Parser parser(modelName, std::begin(reader), std::end(reader), palette, m_fs);\n return parser.initializeModel(logger);\n } else if (extension == \"md3\" && kdl::vec_contains(supported, \"md3\")) {\n auto reader = file->reader().buffer();\n IO::Md3Parser parser(modelName, std::begin(reader), std::end(reader), m_fs);\n return parser.initializeModel(logger);\n } else if (extension == \"mdx\" && kdl::vec_contains(supported, \"mdx\")) {\n auto reader = file->reader().buffer();\n IO::MdxParser parser(modelName, std::begin(reader), std::end(reader), m_fs);\n return parser.initializeModel(logger);\n } else if (extension == \"bsp\" && kdl::vec_contains(supported, \"bsp\")) {\n const auto palette = loadTexturePalette();\n auto reader = file->reader().buffer();\n IO::Bsp29Parser parser(modelName, std::begin(reader), std::end(reader), palette, m_fs);\n return parser.initializeModel(logger);\n } else if (extension == \"dkm\" && kdl::vec_contains(supported, \"dkm\")) {\n auto reader = file->reader().buffer();\n IO::DkmParser parser(modelName, std::begin(reader), std::end(reader), m_fs);\n return parser.initializeModel(logger);\n } else if (extension == \"ase\" && kdl::vec_contains(supported, \"ase\")) {\n auto reader = file->reader().buffer();\n IO::AseParser parser(modelName, reader.stringView(), m_fs);\n return parser.initializeModel(logger);\n } else if (extension == \"obj\" && kdl::vec_contains(supported, \"obj_neverball\")) {\n auto reader = file->reader().buffer();\n // has to be the whole path for implicit textures!\n IO::NvObjParser parser(path, std::begin(reader), std::end(reader), m_fs);\n return parser.initializeModel(logger);\n } else {\n throw GameException(\"Unsupported model format '\" + path.asString() + \"'\");\n }\n } catch (const FileSystemException& e) {\n throw GameException(\"Could not load model \" + path.asString() + \": \" + std::string(e.what()));\n } catch (const AssetException& e) {\n throw GameException(\"Could not load model \" + path.asString() + \": \" + std::string(e.what()));\n } catch (const ParserException& e) {\n throw GameException(\"Could not load model \" + path.asString() + \": \" + std::string(e.what()));\n }\n }\n\n void GameImpl::doLoadFrame(const IO::Path& path, size_t frameIndex, Assets::EntityModel& model, Logger& logger) const {\n try {\n ensure(model.frame(frameIndex) != nullptr, \"invalid frame index\");\n ensure(!model.frame(frameIndex)->loaded(), \"frame already loaded\");\n\n const auto file = m_fs.openFile(path);\n ensure(file != nullptr, \"file is null\");\n\n const auto modelName = path.lastComponent().asString();\n const auto extension = kdl::str_to_lower(path.extension());\n const auto supported = m_config.entityConfig().modelFormats;\n\n if (extension == \"mdl\" && kdl::vec_contains(supported, \"mdl\")) {\n const auto palette = loadTexturePalette();\n auto reader = file->reader().buffer();\n IO::MdlParser parser(modelName, std::begin(reader), std::end(reader), palette);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"md2\" && kdl::vec_contains(supported, \"md2\")) {\n const auto palette = loadTexturePalette();\n auto reader = file->reader().buffer();\n IO::Md2Parser parser(modelName, std::begin(reader), std::end(reader), palette, m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"md3\" && kdl::vec_contains(supported, \"md3\")) {\n auto reader = file->reader().buffer();\n IO::Md3Parser parser(modelName, std::begin(reader), std::end(reader), m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"mdx\" && kdl::vec_contains(supported, \"mdx\")) {\n auto reader = file->reader().buffer();\n IO::MdxParser parser(modelName, std::begin(reader), std::end(reader), m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"bsp\" && kdl::vec_contains(supported, \"bsp\")) {\n const auto palette = loadTexturePalette();\n auto reader = file->reader().buffer();\n IO::Bsp29Parser parser(modelName, std::begin(reader), std::end(reader), palette, m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"dkm\" && kdl::vec_contains(supported, \"dkm\")) {\n auto reader = file->reader().buffer();\n IO::DkmParser parser(modelName, std::begin(reader), std::end(reader), m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"ase\" && kdl::vec_contains(supported, \"ase\")) {\n auto reader = file->reader().buffer();\n IO::AseParser parser(modelName, reader.stringView(), m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else if (extension == \"obj\" && kdl::vec_contains(supported, \"obj_neverball\")) {\n auto reader = file->reader().buffer();\n // has to be the whole path for implicit textures!\n IO::NvObjParser parser(path, std::begin(reader), std::end(reader), m_fs);\n parser.loadFrame(frameIndex, model, logger);\n } else {\n throw GameException(\"Unsupported model format '\" + path.asString() + \"'\");\n }\n } catch (FileSystemException& e) {\n throw GameException(\"Could not load model \" + path.asString() + \": \" + std::string(e.what()));\n } catch (AssetException& e) {\n throw GameException(\"Could not load model \" + path.asString() + \": \" + std::string(e.what()));\n }\n }\n\n Assets::Palette GameImpl::loadTexturePalette() const {\n const auto& path = m_config.textureConfig().palette;\n return Assets::Palette::loadFile(m_fs, path);\n }\n\n std::vector<std::string> GameImpl::doAvailableMods() const {\n std::vector<std::string> result;\n if (m_gamePath.isEmpty() || !IO::Disk::directoryExists(m_gamePath)) {\n return result;\n }\n\n const auto& defaultMod = m_config.fileSystemConfig().searchPath.lastComponent().asString();\n const IO::DiskFileSystem fs(m_gamePath);\n const auto subDirs = fs.findItems(IO::Path(\"\"), IO::FileTypeMatcher(false, true));\n for (size_t i = 0; i < subDirs.size(); ++i) {\n const std::string mod = subDirs[i].lastComponent().asString();\n if (!kdl::ci::str_is_equal(mod, defaultMod)) {\n result.push_back(mod);\n }\n }\n return result;\n }\n\n std::vector<std::string> GameImpl::doExtractEnabledMods(const AttributableNode& node) const {\n if (const auto* modStr = node.entity().attribute(AttributeNames::Mods)) {\n return kdl::str_split(*modStr, \";\");\n } else {\n return {};\n }\n }\n\n std::string GameImpl::doDefaultMod() const {\n return m_config.fileSystemConfig().searchPath.asString();\n }\n\n const FlagsConfig& GameImpl::doSurfaceFlags() const {\n return m_config.faceAttribsConfig().surfaceFlags;\n }\n\n const FlagsConfig& GameImpl::doContentFlags() const {\n return m_config.faceAttribsConfig().contentFlags;\n }\n\n const BrushFaceAttributes& GameImpl::doDefaultFaceAttribs() const {\n return m_config.faceAttribsConfig().defaults;\n }\n\n const std::vector<CompilationTool>& GameImpl::doCompilationTools() const {\n return m_config.compilationTools();\n }\n\n void GameImpl::writeLongAttribute(AttributableNode& node, const std::string& baseName, const std::string& value, const size_t maxLength) const {\n auto entity = node.entity();\n entity.removeNumberedAttribute(baseName);\n\n std::stringstream nameStr;\n for (size_t i = 0; i <= value.size() / maxLength; ++i) {\n nameStr.str(\"\");\n nameStr << baseName << i+1;\n entity.addOrUpdateAttribute(nameStr.str(), value.substr(i * maxLength, maxLength));\n }\n\n node.setEntity(std::move(entity));\n }\n\n std::string GameImpl::readLongAttribute(const AttributableNode& node, const std::string& baseName) const {\n size_t index = 1;\n std::stringstream nameStr;\n std::stringstream valueStr;\n nameStr << baseName << index;\n\n const auto& entity = node.entity();\n while (entity.hasAttribute(nameStr.str())) {\n if (const auto* value = entity.attribute(nameStr.str())) {\n valueStr << *value;\n }\n nameStr.str(\"\");\n nameStr << baseName << ++index;\n }\n\n return valueStr.str();\n }\n }\n}\n","uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp","version":1}}} | |
| I[19:53:48.335] <-- textDocument/didOpen | |
| V[19:53:48.339] <<< {"id":1,"jsonrpc":"2.0","method":"textDocument/codeAction","params":{"context":{"diagnostics":[]},"range":{"end":{"character":60,"line":252},"start":{"character":59,"line":252}},"textDocument":{"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp"}}} | |
| I[19:53:48.339] <-- textDocument/codeAction(1) | |
| V[19:53:48.339] <<< {"id":2,"jsonrpc":"2.0","method":"textDocument/documentLink","params":{"textDocument":{"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp"}}} | |
| I[19:53:48.339] <-- textDocument/documentLink(2) | |
| I[19:53:48.341] Loaded compilation database from /Users/kristian/Documents/Code/TrenchBroom | |
| I[19:53:48.346] Loaded compilation database from /Users/kristian/Documents/Code/TrenchBroom/build | |
| I[19:53:48.348] --> window/workDoneProgress/create(0) | |
| V[19:53:48.348] >>> {"id":0,"jsonrpc":"2.0","method":"window/workDoneProgress/create","params":{"token":"backgroundIndexProgress"}} | |
| I[19:53:48.348] Enqueueing 609 commands for indexing | |
| V[19:53:48.348] <<< {"id":0,"jsonrpc":"2.0","result":null} | |
| I[19:53:48.348] <-- reply(0) | |
| I[19:53:48.348] ASTWorker building file /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp version 1 with command | |
| [/Users/kristian/Documents/Code/TrenchBroom/build] | |
| /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ --driver-mode=g++ -DFMT_LOCALE -DGLEW_STATIC -DGL_SILENCE_DEPRECATION -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SVG_LIB -DQT_WIDGETS_LIB -Icommon/common_autogen/include -I../common/src -Icommon -I../lib/kdl/include -I../lib/vecmath/include -I../lib/fmt/include -isystem ../lib/tinyxml2/include -isystem ../lib/glew/include -isystem ../lib/miniz/include -isystem ../lib/BinaryLibs/freeimage/include/win32 -isystem ../lib/freetype/include -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks -iframework /opt/local/libexec/qt5/lib -isystem /opt/local/libexec/qt5/lib/QtWidgets.framework/Headers -isystem /opt/local/libexec/qt5/lib/QtGui.framework/Headers -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks/OpenGL.framework/Headers -isystem /opt/local/libexec/qt5/lib/QtCore.framework/Headers -isystem /opt/local/libexec/qt5/./mkspecs/macx-clang -isystem /opt/local/libexec/qt5/lib/QtSvg.framework/Headers -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk -mmacosx-version-min=10.14 -Wall -Wextra -Wconversion -Wshadow-all -pedantic -Wno-global-constructors -Wno-exit-time-destructors -Wno-padded -Wno-format-nonliteral -Wno-used-but-marked-unused -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-c++98-compat-bind-to-temporary-copy -Wno-weak-vtables -Wno-weak-template-vtables -Wno-missing-braces -Wno-redundant-parens -Wno-pragma-system-header-outside-header -Wno-float-equal -fPIC -std=gnu++17 -Winvalid-pch -Xclang -include-pch -Xclang /Users/kristian/Documents/Code/TrenchBroom/build/common/CMakeFiles/common.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /Users/kristian/Documents/Code/TrenchBroom/build/common/CMakeFiles/common.dir/cmake_pch.hxx -o common/CMakeFiles/common.dir/src/Model/GameImpl.cpp.o -c /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp -fsyntax-only -resource-dir=/Users/kristian/.bin/clangd_11.0.0/lib/clang/11.0.0 | |
| I[19:53:48.348] --> $/progress | |
| V[19:53:48.348] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"begin","percentage":0,"title":"indexing"}}} | |
| I[19:53:48.348] --> $/progress | |
| V[19:53:48.348] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/1","percentage":0}}} | |
| V[19:53:48.350] Driver produced command: cc1 -cc1 -triple x86_64-apple-macosx10.14.0 -Wundef-prefix=TARGET_OS_ -Werror=undef-prefix -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -fsyntax-only -disable-free -disable-llvm-verifier -discard-value-names -main-file-name GameImpl.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=all -fno-rounding-math -munwind-tables -target-sdk-version=11.0 -fcompatibility-qualified-id-block-type-checking -target-cpu penryn -debug-info-kind=standalone -dwarf-version=4 -debugger-tuning=lldb -target-linker-version 609 -resource-dir /Users/kristian/.bin/clangd_11.0.0/lib/clang/11.0.0 -isystem ../lib/tinyxml2/include -isystem ../lib/glew/include -isystem ../lib/miniz/include -isystem ../lib/BinaryLibs/freeimage/include/win32 -isystem ../lib/freetype/include -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks -iframework /opt/local/libexec/qt5/lib -isystem /opt/local/libexec/qt5/lib/QtWidgets.framework/Headers -isystem /opt/local/libexec/qt5/lib/QtGui.framework/Headers -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/Library/Frameworks/OpenGL.framework/Headers -isystem /opt/local/libexec/qt5/lib/QtCore.framework/Headers -isystem /opt/local/libexec/qt5/./mkspecs/macx-clang -isystem /opt/local/libexec/qt5/lib/QtSvg.framework/Headers -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk -D FMT_LOCALE -D GLEW_STATIC -D GL_SILENCE_DEPRECATION -D QT_CORE_LIB -D QT_GUI_LIB -D QT_SVG_LIB -D QT_WIDGETS_LIB -I common/common_autogen/include -I ../common/src -I common -I ../lib/kdl/include -I ../lib/vecmath/include -I ../lib/fmt/include -stdlib=libc++ -internal-isystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1 -internal-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/usr/include/c++/v1 -internal-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/usr/local/include -internal-isystem /Users/kristian/.bin/clangd_11.0.0/lib/clang/11.0.0/include -internal-externc-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/usr/include -Wall -Wextra -Wconversion -Wshadow-all -Wno-global-constructors -Wno-exit-time-destructors -Wno-padded -Wno-format-nonliteral -Wno-used-but-marked-unused -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-c++98-compat-bind-to-temporary-copy -Wno-weak-vtables -Wno-weak-template-vtables -Wno-missing-braces -Wno-redundant-parens -Wno-pragma-system-header-outside-header -Wno-float-equal -Winvalid-pch -pedantic -std=gnu++17 -fdeprecated-macro -fdebug-compilation-dir /Users/kristian/Documents/Code/TrenchBroom/build -ferror-limit 19 -stack-protector 1 -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -fmax-type-align=16 -include-pch /Users/kristian/Documents/Code/TrenchBroom/build/common/CMakeFiles/common.dir/cmake_pch.hxx.pch -include /Users/kristian/Documents/Code/TrenchBroom/build/common/CMakeFiles/common.dir/cmake_pch.hxx -x c++ /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp | |
| I[19:53:48.350] --> textDocument/clangd.fileStatus | |
| V[19:53:48.350] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"parsing includes,running Update (1)","uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp"}} | |
| V[19:53:48.350] Building first preamble for /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp version 1 | |
| V[19:53:48.441] Build dynamic index for header symbols with estimated memory usage of 28555434 bytes | |
| V[19:53:48.462] Built preamble of size 29003900 for file /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp version 1 | |
| I[19:53:48.535] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/Preferences.cpp (15384 symbols, 69325 refs, 389 files) | |
| I[19:53:48.572] --> $/progress | |
| V[19:53:48.572] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"2/28","percentage":7.1428571428571432}}} | |
| I[19:53:48.572] --> $/progress | |
| V[19:53:48.572] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"2/28","percentage":7.1428571428571432}}} | |
| V[19:53:48.573] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp (digest:=D42E9E635B364083) | |
| I[19:53:48.632] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameConfig.cpp (15368 symbols, 69054 refs, 403 files) | |
| V[19:53:48.640] <<< {"id":3,"jsonrpc":"2.0","method":"textDocument/semanticTokens/full","params":{"textDocument":{"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp"}}} | |
| I[19:53:48.640] <-- textDocument/semanticTokens/full(3) | |
| I[19:53:48.658] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GroupNode.cpp (15576 symbols, 69189 refs, 427 files) | |
| I[19:53:48.663] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/Game.cpp (15603 symbols, 69350 refs, 421 files) | |
| I[19:53:48.670] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/LayerNode.cpp (15610 symbols, 69231 refs, 422 files) | |
| I[19:53:48.675] --> $/progress | |
| V[19:53:48.675] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"3/28","percentage":10.714285714285714}}} | |
| I[19:53:48.675] --> $/progress | |
| V[19:53:48.675] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"3/28","percentage":10.714285714285714}}} | |
| V[19:53:48.676] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/Object.cpp (digest:=4539BC560723084D) | |
| I[19:53:48.682] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/NodeCollection.cpp (15607 symbols, 69155 refs, 417 files) | |
| I[19:53:48.701] --> $/progress | |
| V[19:53:48.702] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"4/28","percentage":14.285714285714286}}} | |
| I[19:53:48.702] --> $/progress | |
| V[19:53:48.702] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"4/28","percentage":14.285714285714286}}} | |
| V[19:53:48.702] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/IO/NodeSerializer.cpp (digest:=A8AAE9B654C75BC3) | |
| I[19:53:48.704] --> $/progress | |
| V[19:53:48.704] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"5/28","percentage":17.857142857142858}}} | |
| I[19:53:48.704] --> $/progress | |
| V[19:53:48.704] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"5/28","percentage":17.857142857142858}}} | |
| V[19:53:48.705] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/IO/GameConfigParser.cpp (digest:=F02BC135E846223D) | |
| I[19:53:48.712] --> $/progress | |
| V[19:53:48.712] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"6/28","percentage":21.428571428571427}}} | |
| I[19:53:48.712] --> $/progress | |
| V[19:53:48.712] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"6/28","percentage":21.428571428571427}}} | |
| V[19:53:48.713] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/View/GetVersion.cpp (digest:=D3D5E8340836AC8F) | |
| I[19:53:48.727] --> $/progress | |
| V[19:53:48.727] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"7/28","percentage":25}}} | |
| I[19:53:48.727] --> $/progress | |
| V[19:53:48.728] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"7/28","percentage":25}}} | |
| V[19:53:48.728] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameFactory.cpp (digest:=A5BD4890D7AF279B) | |
| V[19:53:48.788] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.h:53:92:non-virtual member function marked 'override' hides virtual member function | |
| V[19:53:48.788] Ignored diagnostic. ../common/src/Model/Game.h:144:35:hidden overloaded virtual function 'TrenchBroom::Model::Game::doExtractSoftMapBounds' declared here: type mismatch at 1st parameter ('const TrenchBroom::Model::Entity &' vs 'const TrenchBroom::Model::AttributableNode &') | |
| V[19:53:48.789] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.h:73:159:non-virtual member function marked 'override' hides virtual member function | |
| V[19:53:48.789] Ignored diagnostic. ../common/src/Model/Game.h:159:26:hidden overloaded virtual function 'TrenchBroom::Model::Game::doLoadTextureCollections' declared here: type mismatch at 1st parameter ('const TrenchBroom::Model::Entity &' vs 'TrenchBroom::Model::AttributableNode &') | |
| V[19:53:48.789] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.h:77:99:non-virtual member function marked 'override' hides virtual member function | |
| V[19:53:48.789] Ignored diagnostic. ../common/src/Model/Game.h:163:43:hidden overloaded virtual function 'TrenchBroom::Model::Game::doExtractTextureCollections' declared here: type mismatch at 1st parameter ('const TrenchBroom::Model::Entity &' vs 'const TrenchBroom::Model::AttributableNode &') | |
| V[19:53:48.789] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.h:78:111:non-virtual member function marked 'override' hides virtual member function | |
| V[19:53:48.789] Ignored diagnostic. ../common/src/Model/Game.h:164:26:hidden overloaded virtual function 'TrenchBroom::Model::Game::doUpdateTextureCollections' declared here: type mismatch at 1st parameter ('TrenchBroom::Model::Entity &' vs 'TrenchBroom::Model::AttributableNode &') | |
| V[19:53:48.789] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.h:83:112:non-virtual member function marked 'override' hides virtual member function | |
| V[19:53:48.789] Ignored diagnostic. ../common/src/Model/Game.h:169:54:hidden overloaded virtual function 'TrenchBroom::Model::Game::doExtractEntityDefinitionFile' declared here: type mismatch at 1st parameter ('const TrenchBroom::Model::Entity &' vs 'const TrenchBroom::Model::AttributableNode &') | |
| V[19:53:48.789] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.h:87:95:non-virtual member function marked 'override' hides virtual member function | |
| V[19:53:48.789] Ignored diagnostic. ../common/src/Model/Game.h:173:46:hidden overloaded virtual function 'TrenchBroom::Model::Game::doExtractEnabledMods' declared here: type mismatch at 1st parameter ('const TrenchBroom::Model::Entity &' vs 'const TrenchBroom::Model::AttributableNode &') | |
| V[19:53:48.809] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.cpp:144:75:no viable conversion from 'TrenchBroom::Model::AttributableNode' to 'const TrenchBroom::Model::Entity' | |
| V[19:53:48.809] Ignored diagnostic. ../common/src/Model/Entity.h:88:13:candidate constructor not viable: no known conversion from 'TrenchBroom::Model::AttributableNode' to 'const TrenchBroom::Model::Entity &' for 1st argument | |
| V[19:53:48.809] Ignored diagnostic. ../common/src/Model/Entity.h:89:13:candidate constructor not viable: no known conversion from 'TrenchBroom::Model::AttributableNode' to 'TrenchBroom::Model::Entity &&' for 1st argument | |
| V[19:53:48.809] Ignored diagnostic. ../common/src/Model/Entity.h:85:22:explicit constructor is not a candidate | |
| V[19:53:48.809] Ignored diagnostic. ../common/src/Model/Entity.h:86:22:explicit constructor is not a candidate | |
| V[19:53:48.809] Ignored diagnostic. ../common/src/Model/Game.h:116:75:passing argument to parameter 'entity' here | |
| V[19:53:48.822] BackgroundIndex: building version 1 after loading index from disk | |
| V[19:53:48.842] BackgroundIndex: serving version 1 (85154579 bytes) | |
| E[19:53:48.847] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/ChangeBrushFaceAttributesCommand.h to validate stored index: No such file or directory | |
| E[19:53:48.860] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/CopyTexCoordSystemFromFaceCommand.h to validate stored index: No such file or directory | |
| E[19:53:48.863] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/RotateTexturesCommand.h to validate stored index: No such file or directory | |
| E[19:53:48.869] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/ChangeEntityAttributesCommand.h to validate stored index: No such file or directory | |
| E[19:53:48.871] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/ShearTexturesCommand.h to validate stored index: No such file or directory | |
| E[19:53:48.892] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/ResizeBrushesCommand.h to validate stored index: No such file or directory | |
| E[19:53:48.893] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/ConvertEntityColorCommand.h to validate stored index: No such file or directory | |
| E[19:53:48.896] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/TransformObjectsCommand.h to validate stored index: No such file or directory | |
| E[19:53:48.898] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MoveTexturesCommand.h to validate stored index: No such file or directory | |
| E[19:53:48.907] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/UpdateEntitySpawnflagCommand.h to validate stored index: No such file or directory | |
| I[19:53:48.916] --> $/progress | |
| V[19:53:48.916] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/28","percentage":0}}} | |
| I[19:53:48.916] --> $/progress | |
| V[19:53:48.916] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/28","percentage":0}}} | |
| I[19:53:48.916] --> $/progress | |
| V[19:53:48.916] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/28","percentage":0}}} | |
| I[19:53:48.916] --> $/progress | |
| V[19:53:48.916] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/28","percentage":0}}} | |
| I[19:53:48.916] --> $/progress | |
| V[19:53:48.916] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/28","percentage":0}}} | |
| I[19:53:48.916] --> $/progress | |
| V[19:53:48.916] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/28","percentage":0}}} | |
| I[19:53:48.916] --> $/progress | |
| V[19:53:48.916] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/28","percentage":0}}} | |
| I[19:53:48.916] --> $/progress | |
| V[19:53:48.916] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/28","percentage":0}}} | |
| I[19:53:48.916] --> $/progress | |
| V[19:53:48.916] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/28","percentage":0}}} | |
| I[19:53:48.916] --> $/progress | |
| V[19:53:48.916] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/28","percentage":3.5714285714285716}}} | |
| I[19:53:48.916] --> $/progress | |
| V[19:53:48.916] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/28","percentage":3.5714285714285716}}} | |
| I[19:53:48.916] --> $/progress | |
| V[19:53:48.916] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/28","percentage":3.5714285714285716}}} | |
| V[19:53:48.917] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/LayerNode.cpp (digest:=EAE9AAF9548B6BB7) | |
| V[19:53:48.917] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/test/src/IO/EntityModelTest.cpp (digest:=FBDEA38537A9C654) | |
| V[19:53:48.918] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/View/CompilationVariables.cpp (digest:=8DC6F90222B98358) | |
| V[19:53:48.918] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/EditorContext.cpp (digest:=D6A3313B19B843C0) | |
| V[19:53:48.918] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Preferences.cpp (digest:=B3D000225E81ACCD) | |
| V[19:53:48.920] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapDocumentCommandFacade.cpp (digest:=7363A6F578FD620A) | |
| V[19:53:48.920] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameFactory.cpp (digest:=A5BD4890D7AF279B) | |
| V[19:53:48.921] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/ModelUtils.cpp (digest:=77D95B991459BB26) | |
| V[19:53:48.922] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapViewBase.cpp (digest:=AFDD0DF8795B2235) | |
| V[19:53:48.924] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.cpp (digest:=B602EF7B4016021F) | |
| I[19:53:49.174] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/test/src/IO/GameConfigParserTest.cpp (15415 symbols, 87675 refs, 437 files) | |
| V[19:53:49.240] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapDocumentCommandFacade.cpp:642:46:non-const lvalue reference to type 'TrenchBroom::Model::Entity' cannot bind to a value of unrelated type 'TrenchBroom::Model::WorldNode' | |
| V[19:53:49.240] Ignored diagnostic. ../common/src/Model/Game.h:117:51:passing argument to parameter 'entity' here | |
| I[19:53:49.251] --> $/progress | |
| V[19:53:49.251] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"8/28","percentage":28.571428571428573}}} | |
| I[19:53:49.251] --> $/progress | |
| V[19:53:49.251] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"8/28","percentage":28.571428571428573}}} | |
| V[19:53:49.252] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/AttributableNode.cpp (digest:=18C24A71B3B49097) | |
| I[19:53:49.254] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.cpp (15652 symbols, 88377 refs, 475 files) | |
| I[19:53:49.254] Failed to compile /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.cpp, index may be incomplete | |
| I[19:53:49.318] --> $/progress | |
| V[19:53:49.318] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"9/28","percentage":32.142857142857146}}} | |
| I[19:53:49.318] --> $/progress | |
| V[19:53:49.318] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"9/28","percentage":32.142857142857146}}} | |
| V[19:53:49.319] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/View/FaceAttribsEditor.cpp (digest:=DDD3C085D2281F0C) | |
| V[19:53:49.670] BackgroundIndex: serving version 1 (85157967 bytes) | |
| E[19:53:49.673] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/ChangeBrushFaceAttributesCommand.h to validate stored index: No such file or directory | |
| E[19:53:49.681] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/CopyTexCoordSystemFromFaceCommand.h to validate stored index: No such file or directory | |
| E[19:53:49.683] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/RotateTexturesCommand.h to validate stored index: No such file or directory | |
| E[19:53:49.686] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/ChangeEntityAttributesCommand.h to validate stored index: No such file or directory | |
| E[19:53:49.687] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/ShearTexturesCommand.h to validate stored index: No such file or directory | |
| E[19:53:49.701] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/ResizeBrushesCommand.h to validate stored index: No such file or directory | |
| E[19:53:49.702] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/ConvertEntityColorCommand.h to validate stored index: No such file or directory | |
| E[19:53:49.704] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/TransformObjectsCommand.h to validate stored index: No such file or directory | |
| E[19:53:49.705] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MoveTexturesCommand.h to validate stored index: No such file or directory | |
| E[19:53:49.712] Background-index: Couldn't read /Users/kristian/Documents/Code/TrenchBroom/common/src/View/UpdateEntitySpawnflagCommand.h to validate stored index: No such file or directory | |
| I[19:53:49.719] --> $/progress | |
| V[19:53:49.719] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/25","percentage":0}}} | |
| I[19:53:49.719] --> $/progress | |
| V[19:53:49.719] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/25","percentage":0}}} | |
| I[19:53:49.719] --> $/progress | |
| V[19:53:49.719] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/25","percentage":0}}} | |
| I[19:53:49.719] --> $/progress | |
| V[19:53:49.719] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/25","percentage":0}}} | |
| I[19:53:49.719] --> $/progress | |
| V[19:53:49.719] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/25","percentage":0}}} | |
| I[19:53:49.719] --> $/progress | |
| V[19:53:49.719] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/25","percentage":0}}} | |
| I[19:53:49.719] --> $/progress | |
| V[19:53:49.719] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/25","percentage":4}}} | |
| I[19:53:49.719] --> $/progress | |
| V[19:53:49.719] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/25","percentage":4}}} | |
| I[19:53:49.719] --> $/progress | |
| V[19:53:49.719] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/25","percentage":4}}} | |
| I[19:53:49.719] --> $/progress | |
| V[19:53:49.719] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/25","percentage":4}}} | |
| I[19:53:49.719] --> $/progress | |
| V[19:53:49.719] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/25","percentage":4}}} | |
| I[19:53:49.719] --> $/progress | |
| V[19:53:49.719] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/25","percentage":4}}} | |
| V[19:53:49.719] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/Object.cpp (digest:=4539BC560723084D) | |
| V[19:53:49.720] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/View/GetVersion.cpp (digest:=D3D5E8340836AC8F) | |
| V[19:53:49.720] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/BrushNode.cpp (digest:=294292753B168721) | |
| V[19:53:49.720] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp (digest:=D42E9E635B364083) | |
| V[19:53:49.721] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/View/FaceAttribsEditor.cpp (digest:=DDD3C085D2281F0C) | |
| V[19:53:49.721] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/Game.cpp (digest:=FB4B0A92B3AB7F69) | |
| V[19:53:49.721] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.cpp (digest:=B602EF7B4016021F) | |
| V[19:53:49.722] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/IO/NodeSerializer.cpp (digest:=A8AAE9B654C75BC3) | |
| V[19:53:49.722] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapViewBase.cpp (digest:=AFDD0DF8795B2235) | |
| V[19:53:49.722] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapDocument.cpp (digest:=7D0912E625854F38) | |
| V[19:53:51.123] indexed preamble AST for /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp version 1: | |
| symbol slab: 53207 symbols, 13818712 bytes | |
| ref slab: 0 symbols, 0 refs, 136 bytes | |
| relations slab: 873 relations, 17432 bytes | |
| I[19:53:51.421] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/View/GetVersion.cpp (15249 symbols, 68133 refs, 375 files) | |
| I[19:53:51.444] --> $/progress | |
| V[19:53:51.444] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"2/25","percentage":8}}} | |
| I[19:53:51.444] --> $/progress | |
| V[19:53:51.444] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"2/25","percentage":8}}} | |
| V[19:53:51.445] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/WorldNode.cpp (digest:=BCC01F4346E11E01) | |
| I[19:53:51.496] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/Object.cpp (15463 symbols, 68730 refs, 402 files) | |
| I[19:53:51.523] --> $/progress | |
| V[19:53:51.523] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"3/25","percentage":12}}} | |
| I[19:53:51.523] --> $/progress | |
| V[19:53:51.523] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"3/25","percentage":12}}} | |
| V[19:53:51.523] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameConfig.cpp (digest:=962D90B0F8FC18A9) | |
| V[19:53:51.589] Build dynamic index for header symbols with estimated memory usage of 28553002 bytes | |
| I[19:53:51.589] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/Game.cpp (15603 symbols, 69350 refs, 421 files) | |
| V[19:53:51.607] Built preamble of size 29003900 for file /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp version 1 | |
| I[19:53:51.619] --> $/progress | |
| V[19:53:51.619] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"4/25","percentage":16}}} | |
| I[19:53:51.619] --> $/progress | |
| V[19:53:51.619] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"4/25","percentage":16}}} | |
| V[19:53:51.620] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/NodeTest.cpp (digest:=35CDB320A4A46658) | |
| I[19:53:51.649] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/IO/NodeSerializer.cpp (15557 symbols, 69236 refs, 424 files) | |
| V[19:53:51.663] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.h:53:92:non-virtual member function marked 'override' hides virtual member function | |
| V[19:53:51.663] Ignored diagnostic. ../common/src/Model/Game.h:144:35:hidden overloaded virtual function 'TrenchBroom::Model::Game::doExtractSoftMapBounds' declared here: type mismatch at 1st parameter ('const TrenchBroom::Model::Entity &' vs 'const TrenchBroom::Model::AttributableNode &') | |
| V[19:53:51.664] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.h:73:159:non-virtual member function marked 'override' hides virtual member function | |
| V[19:53:51.664] Ignored diagnostic. ../common/src/Model/Game.h:159:26:hidden overloaded virtual function 'TrenchBroom::Model::Game::doLoadTextureCollections' declared here: type mismatch at 1st parameter ('const TrenchBroom::Model::Entity &' vs 'TrenchBroom::Model::AttributableNode &') | |
| V[19:53:51.664] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.h:77:99:non-virtual member function marked 'override' hides virtual member function | |
| V[19:53:51.664] Ignored diagnostic. ../common/src/Model/Game.h:163:43:hidden overloaded virtual function 'TrenchBroom::Model::Game::doExtractTextureCollections' declared here: type mismatch at 1st parameter ('const TrenchBroom::Model::Entity &' vs 'const TrenchBroom::Model::AttributableNode &') | |
| V[19:53:51.664] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.h:78:111:non-virtual member function marked 'override' hides virtual member function | |
| V[19:53:51.664] Ignored diagnostic. ../common/src/Model/Game.h:164:26:hidden overloaded virtual function 'TrenchBroom::Model::Game::doUpdateTextureCollections' declared here: type mismatch at 1st parameter ('TrenchBroom::Model::Entity &' vs 'TrenchBroom::Model::AttributableNode &') | |
| V[19:53:51.664] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.h:83:112:non-virtual member function marked 'override' hides virtual member function | |
| V[19:53:51.664] Ignored diagnostic. ../common/src/Model/Game.h:169:54:hidden overloaded virtual function 'TrenchBroom::Model::Game::doExtractEntityDefinitionFile' declared here: type mismatch at 1st parameter ('const TrenchBroom::Model::Entity &' vs 'const TrenchBroom::Model::AttributableNode &') | |
| V[19:53:51.665] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.h:87:95:non-virtual member function marked 'override' hides virtual member function | |
| V[19:53:51.665] Ignored diagnostic. ../common/src/Model/Game.h:173:46:hidden overloaded virtual function 'TrenchBroom::Model::Game::doExtractEnabledMods' declared here: type mismatch at 1st parameter ('const TrenchBroom::Model::Entity &' vs 'const TrenchBroom::Model::AttributableNode &') | |
| V[19:53:51.680] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.cpp:144:75:no viable conversion from 'TrenchBroom::Model::AttributableNode' to 'const TrenchBroom::Model::Entity' | |
| V[19:53:51.680] Ignored diagnostic. ../common/src/Model/Entity.h:88:13:candidate constructor not viable: no known conversion from 'TrenchBroom::Model::AttributableNode' to 'const TrenchBroom::Model::Entity &' for 1st argument | |
| V[19:53:51.680] Ignored diagnostic. ../common/src/Model/Entity.h:89:13:candidate constructor not viable: no known conversion from 'TrenchBroom::Model::AttributableNode' to 'TrenchBroom::Model::Entity &&' for 1st argument | |
| V[19:53:51.680] Ignored diagnostic. ../common/src/Model/Entity.h:85:22:explicit constructor is not a candidate | |
| V[19:53:51.680] Ignored diagnostic. ../common/src/Model/Entity.h:86:22:explicit constructor is not a candidate | |
| V[19:53:51.680] Ignored diagnostic. ../common/src/Model/Game.h:116:75:passing argument to parameter 'entity' here | |
| I[19:53:51.681] --> $/progress | |
| V[19:53:51.681] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"5/25","percentage":20}}} | |
| I[19:53:51.681] --> $/progress | |
| V[19:53:51.681] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"5/25","percentage":20}}} | |
| V[19:53:51.682] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/IO/GameConfigParser.cpp (digest:=F02BC135E846223D) | |
| V[19:53:51.781] indexed file AST for /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp version 1: | |
| symbol slab: 50 symbols, 15824 bytes | |
| ref slab: 305 symbols, 937 refs, 37000 bytes | |
| relations slab: 0 relations, 24 bytes | |
| V[19:53:51.782] Build dynamic index for main-file symbols with estimated memory usage of 101272 bytes | |
| I[19:53:51.782] --> textDocument/publishDiagnostics | |
| V[19:53:51.782] >>> {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"code":"member_decl_does_not_match","message":"Out-of-line definition of 'doExtractSoftMapBounds' does not match any declaration in 'TrenchBroom::Model::GameImpl'","range":{"end":{"character":60,"line":133},"start":{"character":38,"line":133}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"member_decl_does_not_match","message":"Out-of-line definition of 'doLoadTextureCollections' does not match any declaration in 'TrenchBroom::Model::GameImpl'","range":{"end":{"character":47,"line":251},"start":{"character":23,"line":251}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"typecheck_nonviable_condition","message":"No viable conversion from 'TrenchBroom::Model::AttributableNode' to 'const TrenchBroom::Model::Entity'","range":{"end":{"character":61,"line":252},"start":{"character":57,"line":252}},"relatedInformation":[{"location":{"range":{"end":{"character":18,"line":87},"start":{"character":12,"line":87}},"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/Entity.h"},"message":"Candidate constructor not viable: no known conversion from 'TrenchBroom::Model::AttributableNode' to 'const TrenchBroom::Model::Entity &' for 1st argument"},{"location":{"range":{"end":{"character":18,"line":88},"start":{"character":12,"line":88}},"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/Entity.h"},"message":"Candidate constructor not viable: no known conversion from 'TrenchBroom::Model::AttributableNode' to 'TrenchBroom::Model::Entity &&' for 1st argument"},{"location":{"range":{"end":{"character":27,"line":84},"start":{"character":21,"line":84}},"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/Entity.h"},"message":"Explicit constructor is not a candidate"},{"location":{"range":{"end":{"character":27,"line":85},"start":{"character":21,"line":85}},"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/Entity.h"},"message":"Explicit constructor is not a candidate"},{"location":{"range":{"end":{"character":80,"line":115},"start":{"character":74,"line":115}},"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/Game.h"},"message":"Passing argument to parameter 'entity' here"}],"severity":1,"source":"clang"},{"code":"member_decl_does_not_match","message":"Out-of-line definition of 'doExtractTextureCollections' does not match any declaration in 'TrenchBroom::Model::GameImpl'","range":{"end":{"character":67,"line":302},"start":{"character":40,"line":302}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"member_decl_does_not_match","message":"Out-of-line definition of 'doUpdateTextureCollections' does not match any declaration in 'TrenchBroom::Model::GameImpl'","range":{"end":{"character":49,"line":316},"start":{"character":23,"line":316}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"member_decl_does_not_match","message":"Out-of-line definition of 'doExtractEntityDefinitionFile' does not match any declaration in 'TrenchBroom::Model::GameImpl'","range":{"end":{"character":80,"line":383},"start":{"character":51,"line":383}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"member_decl_does_not_match","message":"Out-of-line definition of 'doExtractEnabledMods' does not match any declaration in 'TrenchBroom::Model::GameImpl'","range":{"end":{"character":63,"line":556},"start":{"character":43,"line":556}},"relatedInformation":[],"severity":1,"source":"clang"}],"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp","version":1}} | |
| V[19:53:51.782] ASTWorker running EnumerateTweaks on version 1 of /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp | |
| I[19:53:51.782] --> reply:textDocument/codeAction(1) 3443 ms | |
| V[19:53:51.782] >>> {"id":1,"jsonrpc":"2.0","result":[]} | |
| V[19:53:51.782] ASTWorker running DocumentLinks on version 1 of /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp | |
| I[19:53:51.782] --> reply:textDocument/documentLink(2) 3443 ms | |
| V[19:53:51.784] >>> {"id":2,"jsonrpc":"2.0","result":[{"range":{"end":{"character":21,"line":19},"start":{"character":9,"line":19}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.h"},{"range":{"end":{"character":19,"line":21},"start":{"character":9,"line":21}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Ensure.h"},{"range":{"end":{"character":23,"line":22},"start":{"character":9,"line":22}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Exceptions.h"},{"range":{"end":{"character":19,"line":23},"start":{"character":9,"line":23}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Logger.h"},{"range":{"end":{"character":19,"line":24},"start":{"character":9,"line":24}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Macros.h"},{"range":{"end":{"character":27,"line":25},"start":{"character":9,"line":25}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Assets/Palette.h"},{"range":{"end":{"character":31,"line":26},"start":{"character":9,"line":26}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Assets/EntityModel.h"},{"range":{"end":{"character":44,"line":27},"start":{"character":9,"line":27}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Assets/EntityDefinitionFileSpec.h"},{"range":{"end":{"character":25,"line":28},"start":{"character":9,"line":28}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/AseParser.h"},{"range":{"end":{"character":31,"line":29},"start":{"character":9,"line":29}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/BrushFaceReader.h"},{"range":{"end":{"character":27,"line":30},"start":{"character":9,"line":30}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/Bsp29Parser.h"},{"range":{"end":{"character":25,"line":31},"start":{"character":9,"line":31}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/DefParser.h"},{"range":{"end":{"character":22,"line":32},"start":{"character":9,"line":32}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/DiskIO.h"},{"range":{"end":{"character":25,"line":33},"start":{"character":9,"line":33}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/DkmParser.h"},{"range":{"end":{"character":30,"line":34},"start":{"character":9,"line":34}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/DiskFileSystem.h"},{"range":{"end":{"character":25,"line":35},"start":{"character":9,"line":35}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/EntParser.h"},{"range":{"end":{"character":25,"line":36},"start":{"character":9,"line":36}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/FgdParser.h"},{"range":{"end":{"character":20,"line":37},"start":{"character":9,"line":37}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/File.h"},{"range":{"end":{"character":27,"line":38},"start":{"character":9,"line":38}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/FileMatcher.h"},{"range":{"end":{"character":32,"line":39},"start":{"character":9,"line":39}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/GameConfigParser.h"},{"range":{"end":{"character":23,"line":40},"start":{"character":9,"line":40}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/IOUtils.h"},{"range":{"end":{"character":25,"line":41},"start":{"character":9,"line":41}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/MdlParser.h"},{"range":{"end":{"character":25,"line":42},"start":{"character":9,"line":42}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/Md2Parser.h"},{"range":{"end":{"character":25,"line":43},"start":{"character":9,"line":43}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/Md3Parser.h"},{"range":{"end":{"character":25,"line":44},"start":{"character":9,"line":44}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/MdxParser.h"},{"range":{"end":{"character":26,"line":45},"start":{"character":9,"line":45}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/NodeReader.h"},{"range":{"end":{"character":26,"line":46},"start":{"character":9,"line":46}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/NodeWriter.h"},{"range":{"end":{"character":25,"line":47},"start":{"character":9,"line":47}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/ObjParser.h"},{"range":{"end":{"character":29,"line":48},"start":{"character":9,"line":48}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/ObjSerializer.h"},{"range":{"end":{"character":27,"line":49},"start":{"character":9,"line":49}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/WorldReader.h"},{"range":{"end":{"character":34,"line":50},"start":{"character":9,"line":50}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/SimpleParserStatus.h"},{"range":{"end":{"character":27,"line":51},"start":{"character":9,"line":51}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/SystemPaths.h"},{"range":{"end":{"character":29,"line":52},"start":{"character":9,"line":52}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/IO/TextureLoader.h"},{"range":{"end":{"character":31,"line":53},"start":{"character":9,"line":53}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/BrushBuilder.h"},{"range":{"end":{"character":29,"line":54},"start":{"character":9,"line":54}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/BrushError.h"},{"range":{"end":{"character":28,"line":55},"start":{"character":9,"line":55}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/BrushNode.h"},{"range":{"end":{"character":25,"line":56},"start":{"character":9,"line":56}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/Entity.h"},{"range":{"end":{"character":35,"line":57},"start":{"character":9,"line":57}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/EntityAttributes.h"},{"range":{"end":{"character":31,"line":58},"start":{"character":9,"line":58}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/ExportFormat.h"},{"range":{"end":{"character":29,"line":59},"start":{"character":9,"line":59}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameConfig.h"},{"range":{"end":{"character":28,"line":60},"start":{"character":9,"line":60}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/LayerNode.h"},{"range":{"end":{"character":28,"line":61},"start":{"character":9,"line":61}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/WorldNode.h"},{"range":{"end":{"character":25,"line":63},"start":{"character":9,"line":63}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/lib/kdl/include/kdl/overload.h"},{"range":{"end":{"character":23,"line":64},"start":{"character":9,"line":64}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/lib/kdl/include/kdl/result.h"},{"range":{"end":{"character":31,"line":65},"start":{"character":9,"line":65}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/lib/kdl/include/kdl/string_compare.h"},{"range":{"end":{"character":30,"line":66},"start":{"character":9,"line":66}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/lib/kdl/include/kdl/string_format.h"},{"range":{"end":{"character":29,"line":67},"start":{"character":9,"line":67}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/lib/kdl/include/kdl/string_utils.h"},{"range":{"end":{"character":29,"line":68},"start":{"character":9,"line":68}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/lib/kdl/include/kdl/vector_utils.h"},{"range":{"end":{"character":27,"line":70},"start":{"character":9,"line":70}},"target":"file:///Users/kristian/Documents/Code/TrenchBroom/lib/vecmath/include/vecmath/vec_io.h"},{"range":{"end":{"character":18,"line":72},"start":{"character":9,"line":72}},"target":"file:///Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c%2B%2B/v1/fstream"},{"range":{"end":{"character":17,"line":73},"start":{"character":9,"line":73}},"target":"file:///Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c%2B%2B/v1/string"},{"range":{"end":{"character":17,"line":74},"start":{"character":9,"line":74}},"target":"file:///Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c%2B%2B/v1/vector"}]} | |
| V[19:53:51.784] ASTWorker running SemanticHighlights on version 1 of /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp | |
| I[19:53:51.785] --> reply:textDocument/semanticTokens/full(3) 3145 ms | |
| V[19:53:51.786] >>> {"id":3,"jsonrpc":"2.0","result":{"data":[76,10,11,14,0,1,14,5,14,0,1,8,8,8,0,0,10,8,8,0,0,9,10,8,0,0,12,6,2,0,0,14,2,14,0,0,4,4,8,0,0,6,8,2,0,0,10,6,8,0,0,8,6,2,0,1,8,8,6,0,0,9,6,2,0,1,8,10,6,0,0,11,8,2,0,1,12,20,4,0,0,21,6,2,0,3,13,8,8,0,0,10,20,4,0,0,21,6,8,0,0,8,6,2,0,1,12,4,6,0,0,5,10,4,0,0,11,8,6,0,0,10,10,6,0,0,12,23,6,0,0,25,6,2,0,3,14,3,14,0,0,5,6,8,0,0,8,8,8,0,0,10,10,4,0,1,19,8,6,0,0,9,4,4,0,3,8,2,14,0,0,4,4,8,0,0,5,8,8,0,0,10,10,4,0,1,19,10,6,0,3,13,8,8,0,0,10,13,4,0,0,20,2,14,0,0,4,4,8,0,0,6,8,2,0,0,10,6,8,0,0,8,6,2,0,1,16,8,2,0,0,12,10,6,0,1,16,10,6,0,0,13,8,2,0,1,16,20,4,0,0,21,6,2,0,4,13,8,8,0,0,10,26,4,0,0,33,3,14,0,0,5,6,8,0,0,7,2,14,0,0,4,4,8,0,0,7,11,2,0,0,13,6,8,0,0,8,6,2,0,1,16,11,2,0,0,15,23,6,0,1,16,23,6,0,0,26,11,2,0,1,16,20,4,0,0,21,6,2,0,4,8,4,8,0,0,6,10,8,0,0,11,8,8,0,0,10,28,4,0,0,35,3,14,0,0,5,6,8,0,0,7,2,14,0,0,4,4,8,0,0,7,11,2,0,1,12,10,8,0,0,11,6,1,0,1,23,4,8,0,0,6,10,1,0,0,13,11,2,0,1,22,4,8,0,0,5,7,1,0,0,10,10,6,0,0,13,10,1,0,1,21,7,1,0,0,8,10,4,0,0,17,2,14,0,0,4,4,14,0,0,6,15,3,0,0,16,7,1,0,1,20,6,1,0,0,7,6,4,0,0,7,3,14,0,0,5,9,3,0,0,10,10,1,0,0,39,10,1,0,0,11,8,4,0,3,19,6,1,0,3,14,17,8,0,0,19,8,8,0,0,10,19,4,0,1,19,8,6,0,0,9,17,4,0,3,8,6,17,0,0,7,8,8,0,0,10,19,4,0,1,19,8,6,0,0,9,17,4,0,3,8,3,14,0,0,5,8,8,0,0,9,2,14,0,0,4,5,8,0,0,7,8,8,0,0,10,15,4,0,1,19,8,6,0,0,9,13,4,0,3,8,4,8,0,0,6,13,8,0,0,14,8,8,0,0,10,22,4,0,0,29,16,8,0,0,18,4,2,0,1,17,4,2,0,0,5,6,4,0,0,9,12,4,0,0,13,14,14,0,0,16,13,0,0,2,24,17,9,0,0,19,4,10,0,0,6,15,4,0,3,22,4,8,0,0,6,8,1,0,0,11,4,2,0,0,5,6,4,0,0,9,9,4,0,0,10,14,14,0,0,16,13,0,0,0,16,8,1,0,0,13,8,1,0,0,12,15,14,0,0,17,15,0,0,1,24,17,9,0,0,19,3,10,0,0,5,2,14,0,0,4,24,3,0,0,26,8,1,0,2,24,17,9,0,0,19,3,10,0,0,5,3,14,0,0,5,7,0,0,4,14,3,14,0,0,5,6,8,0,0,7,8,8,0,0,11,8,8,0,0,10,11,4,0,1,19,8,6,0,0,9,9,4,0,3,8,3,14,0,0,5,10,8,0,0,11,9,8,0,0,11,8,8,0,0,10,8,4,0,0,15,9,9,0,0,10,6,2,0,0,14,2,14,0,0,4,5,8,0,0,7,11,2,0,0,13,6,8,0,0,8,6,2,0,1,18,4,8,0,0,5,18,1,0,0,21,8,6,0,0,9,14,4,0,0,15,10,3,0,0,11,6,2,0,1,17,18,1,0,0,19,7,4,0,0,13,2,14,0,0,4,4,14,0,0,6,10,3,0,0,11,18,1,0,1,23,9,4,0,0,10,6,2,0,0,8,11,2,0,0,13,18,1,0,0,20,6,2,0,2,16,4,8,0,0,5,11,1,0,0,14,5,14,0,0,7,6,8,0,1,20,6,2,0,0,10,9,9,0,0,11,5,10,0,0,9,6,2,0,0,10,9,9,0,0,11,12,10,0,0,16,6,2,0,0,10,9,9,0,0,11,12,10,0,1,20,11,1,0,0,12,20,4,0,0,21,14,14,0,0,16,12,0,0,3,16,4,8,0,0,5,9,1,0,0,12,3,14,0,0,5,11,3,0,0,12,9,8,0,0,11,3,14,0,0,5,4,3,0,0,5,11,1,0,0,14,6,2,0,2,22,5,14,0,0,7,12,8,0,0,13,7,1,0,0,8,9,1,0,0,10,3,4,0,0,7,11,2,0,0,13,18,4,0,1,16,7,1,0,0,8,12,4,0,0,13,2,14,0,0,4,4,8,0,0,26,5,14,0,0,7,19,8,0,0,21,13,7,0,1,20,5,4,0,0,6,3,14,0,0,5,8,3,0,1,28,5,8,0,0,8,1,2,0,1,28,9,1,0,0,11,12,4,0,0,16,8,4,0,0,9,9,1,0,0,11,11,4,0,0,12,3,14,0,0,5,4,3,0,0,5,1,2,0,2,34,5,14,0,0,7,10,9,0,0,11,1,2,0,1,28,6,2,0,0,7,5,4,0,0,49,1,2,0,4,23,9,1,0,4,8,3,14,0,0,5,10,8,0,0,11,9,8,0,0,11,8,8,0,0,10,9,4,0,0,16,9,9,0,0,10,6,2,0,0,14,2,14,0,0,4,5,8,0,0,7,11,2,0,0,19,2,14,0,0,4,4,8,0,0,6,4,2,0,0,6,6,8,0,0,8,6,2,0,1,12,2,14,0,0,4,18,8,0,0,19,12,1,0,0,13,6,2,0,1,12,4,8,0,0,5,4,1,0,0,7,2,14,0,0,4,4,14,0,0,6,8,3,0,0,9,2,14,0,0,4,4,14,0,0,6,7,3,0,0,8,4,2,0,1,12,4,8,0,0,5,10,1,0,0,13,4,1,0,0,6,6,4,0,0,9,6,4,0,1,12,2,14,0,0,4,11,8,0,0,12,11,1,0,0,12,10,1,0,0,11,10,4,0,1,19,11,1,0,0,12,4,4,0,0,5,6,2,0,0,8,11,2,0,0,13,12,1,0,3,13,8,8,0,0,10,10,4,0,0,11,9,8,0,0,11,5,2,0,0,13,2,14,0,0,4,4,8,0,0,6,4,2,0,0,17,9,2,0,1,18,4,8,0,0,5,13,1,0,0,16,10,3,0,0,11,5,2,0,0,6,6,4,0,2,12,3,14,0,0,5,8,8,0,0,9,4,1,0,0,7,22,3,0,0,23,4,2,0,1,17,4,1,0,1,22,19,8,0,0,43,4,2,0,0,5,8,4,0,2,12,2,14,0,0,4,16,3,0,0,17,4,1,0,0,6,8,4,0,0,12,13,1,0,2,12,2,14,0,0,4,10,8,0,0,11,6,1,0,0,7,5,2,0,0,7,4,1,0,1,12,6,1,0,0,7,12,4,0,0,13,9,2,0,1,12,6,1,0,0,7,8,4,0,3,13,8,8,0,0,10,10,4,0,0,11,9,8,0,0,11,5,2,0,0,13,2,14,0,0,4,4,8,0,0,6,4,2,0,1,12,10,4,0,0,11,5,2,0,0,7,4,2,0,3,13,8,8,0,0,10,11,4,0,0,12,9,8,0,0,11,5,2,0,0,13,5,14,0,0,7,12,9,0,0,13,6,2,0,0,14,2,14,0,0,4,4,8,0,0,6,4,2,0,1,20,6,2,0,1,21,5,14,0,0,7,12,9,0,0,14,12,10,0,1,20,2,14,0,0,4,10,8,0,0,11,6,1,0,0,7,5,2,0,0,7,3,14,0,0,5,11,3,0,0,12,2,14,0,0,4,17,8,0,0,19,4,2,0,1,20,6,1,0,0,7,12,4,0,1,20,6,1,0,0,7,8,4,0,3,21,5,14,0,0,7,12,9,0,0,14,3,10,0,1,20,10,4,0,0,11,5,2,0,0,7,4,2,0,5,8,3,14,0,0,5,6,8,0,0,7,4,8,0,0,7,8,8,0,0,10,12,4,0,0,19,3,14,0,0,5,6,8,0,0,8,3,2,0,0,5,9,8,0,0,11,5,2,0,0,13,2,14,0,0,4,5,8,0,0,7,11,2,0,0,13,6,8,0,0,8,6,2,0,1,12,2,14,0,0,4,18,8,0,0,19,12,1,0,0,13,6,2,0,1,19,2,14,0,0,4,10,8,0,0,12,4,5,0,0,5,3,2,0,0,5,5,2,0,0,7,11,2,0,0,13,12,1,0,3,8,3,14,0,0,5,6,8,0,0,7,9,8,0,0,11,8,8,0,0,10,17,4,0,0,24,3,14,0,0,5,6,8,0,0,8,3,2,0,0,5,9,8,0,0,11,5,2,0,0,13,2,14,0,0,4,5,8,0,0,7,11,2,0,0,13,6,8,0,0,8,6,2,0,1,12,2,14,0,0,4,18,8,0,0,19,12,1,0,0,13,6,2,0,1,12,2,14,0,0,4,15,8,0,0,16,6,1,0,0,7,3,2,0,0,5,5,2,0,1,19,6,1,0,0,7,4,4,0,0,5,11,2,0,0,13,12,1,0,3,13,8,8,0,0,10,20,4,0,0,21,9,8,0,0,11,5,2,0,0,13,3,14,0,0,5,6,8,0,0,7,4,8,0,0,8,5,2,0,0,7,3,14,0,0,5,7,8,0,0,9,6,2,0,1,12,2,14,0,0,4,10,8,0,0,11,6,1,0,0,7,5,2,0,0,7,6,2,0,1,12,6,1,0,0,7,10,4,0,0,11,5,2,0,3,13,8,8,0,0,10,25,4,0,0,26,9,8,0,0,11,5,2,0,0,13,3,14,0,0,5,6,8,0,0,7,9,8,0,0,12,5,2,0,0,7,3,14,0,0,5,7,8,0,0,9,6,2,0,1,12,2,14,0,0,4,10,8,0,0,11,6,1,0,0,7,5,2,0,0,7,6,2,0,1,12,6,1,0,0,7,15,4,0,0,16,5,2,0,3,8,4,8,0,0,6,18,9,0,0,19,8,8,0,0,10,20,4,0,1,18,5,14,0,0,7,10,8,0,1,20,8,6,0,0,9,13,4,0,0,16,7,6,0,0,8,4,6,0,1,21,20,8,0,0,22,7,10,0,1,27,18,9,0,0,20,4,10,0,1,21,20,8,0,0,22,12,10,0,1,27,18,9,0,0,20,9,10,0,1,21,20,8,0,0,22,8,10,0,1,26,13,8,0,1,16,13,18,0,4,13,8,8,0,0,10,24,4,0,0,25,16,8,0,0,18,4,2,0,0,12,2,14,0,0,4,4,8,0,0,6,12,2,0,0,14,6,14,0,0,8,14,8,0,0,16,14,2,0,0,16,6,8,0,0,8,6,2,0,1,23,5,1,0,0,8,25,4,0,0,26,4,2,0,2,18,4,8,0,0,5,15,1,0,0,18,28,4,0,0,29,12,2,0,1,12,2,14,0,0,4,13,8,0,0,14,13,1,0,0,14,4,6,0,0,6,15,1,0,0,17,8,6,0,0,9,13,4,0,0,17,6,2,0,4,8,3,14,0,0,5,6,8,0,0,7,2,14,0,0,4,4,8,0,0,6,8,8,0,0,10,28,4,0,0,35,2,14,0,0,4,4,8,0,0,6,12,2,0,1,12,3,14,0,0,5,6,8,0,0,7,2,14,0,0,4,4,8,0,0,6,6,1,0,3,12,6,1,0,0,7,9,4,0,0,10,12,2,0,3,12,6,1,0,0,7,9,4,0,0,10,10,6,0,3,12,6,1,0,0,7,9,4,0,0,10,2,14,0,0,4,11,14,0,0,13,12,3,0,2,19,6,1,0,3,13,8,8,0,0,10,21,4,0,0,28,2,14,0,0,4,4,8,0,0,6,4,2,0,1,18,4,8,0,0,6,13,1,0,0,16,8,6,0,0,9,13,4,0,0,16,7,6,0,1,20,13,1,0,0,14,4,6,0,1,21,20,8,0,0,22,7,10,0,1,27,4,2,0,0,5,12,4,0,0,13,13,1,0,0,14,10,6,0,0,11,10,6,0,1,21,20,8,0,0,22,12,10,0,1,21,20,8,0,0,22,8,10,0,2,16,13,18,0,4,8,3,14,0,0,5,6,8,0,0,7,2,14,0,0,4,4,8,0,0,6,8,8,0,0,10,24,4,0,2,22,4,8,0,0,6,10,1,0,0,13,8,6,0,0,9,13,4,0,0,16,7,6,0,0,8,13,6,0,1,21,10,1,0,0,11,7,4,0,0,13,4,6,0,0,5,15,4,0,0,16,10,1,0,1,27,3,14,0,0,5,10,3,0,0,11,3,14,0,0,5,6,8,0,0,7,2,14,0,0,4,4,8,0,0,7,10,1,0,0,14,4,6,0,0,5,20,4,0,0,21,10,1,0,0,12,2,14,0,0,4,15,8,0,2,23,3,14,0,0,5,6,8,0,0,7,2,14,0,0,4,4,8,0,1,21,19,8,0,0,21,1,1,0,1,22,13,8,0,0,55,3,14,0,0,5,6,8,0,0,7,1,1,0,0,2,4,4,0,4,8,3,14,0,0,5,6,8,0,0,7,3,14,0,0,5,6,8,0,0,8,8,8,0,0,10,33,4,0,1,19,8,6,0,0,9,13,4,0,0,16,7,6,0,0,8,10,6,0,0,11,10,6,0,3,8,3,14,0,0,5,6,8,0,0,7,2,14,0,0,4,4,8,0,0,6,8,8,0,0,10,27,4,0,0,34,16,8,0,0,18,4,2,0,1,18,4,8,0,0,6,8,1,0,0,11,8,6,0,0,9,13,4,0,0,16,9,6,0,1,16,8,1,0,0,9,5,4,0,4,18,4,8,0,0,6,10,1,0,0,13,4,2,0,0,5,6,4,0,0,9,9,4,0,0,10,8,1,0,1,17,10,1,0,4,19,2,14,0,0,4,4,8,0,0,6,7,5,0,0,8,3,14,0,0,5,9,3,0,0,11,10,1,0,3,13,8,8,0,0,10,26,4,0,0,27,16,8,0,0,18,4,2,0,0,12,3,14,0,0,5,6,8,0,0,7,2,14,0,0,4,4,8,0,0,7,5,2,0,1,18,4,8,0,0,6,9,1,0,0,12,8,6,0,0,9,13,4,0,0,16,9,6,0,1,16,9,1,0,0,10,5,4,0,4,18,4,8,0,0,5,5,1,0,0,8,3,14,0,0,5,8,3,0,0,9,2,14,0,0,4,4,8,0,0,6,9,5,0,0,10,5,2,0,1,12,4,8,0,0,5,6,1,0,0,9,4,2,0,0,5,6,4,0,1,12,6,1,0,0,7,20,4,0,0,21,9,1,0,0,11,5,1,0,1,12,4,2,0,0,5,9,4,0,0,10,3,14,0,0,5,4,3,0,0,5,6,1,0,3,13,8,8,0,0,10,15,4,0,1,12,4,6,0,0,5,13,4,0,3,13,8,8,0,0,10,24,4,0,0,31,2,14,0,0,4,4,8,0,0,6,4,2,0,1,18,4,8,0,0,5,9,1,0,0,12,4,2,0,0,5,9,4,0,1,16,3,14,0,0,5,2,14,0,0,4,12,3,0,0,20,9,1,0,2,23,3,14,0,0,5,2,14,0,0,4,12,3,0,0,20,9,1,0,2,23,3,14,0,0,5,2,14,0,0,4,12,3,0,0,20,9,1,0,7,8,3,14,0,0,5,6,8,0,0,7,6,14,0,0,8,16,8,0,0,19,8,8,0,0,10,23,4,0,0,24,2,14,0,0,4,12,8,0,0,14,6,2,0,0,14,2,14,0,0,4,4,8,0,0,6,4,2,0,1,18,4,8,0,0,5,9,1,0,0,12,4,2,0,0,5,9,4,0,1,18,4,8,0,0,6,12,1,0,0,15,8,6,0,0,9,12,4,0,0,15,12,6,0,2,16,3,14,0,0,5,2,14,0,0,4,12,3,0,0,20,9,1,0,1,16,4,8,0,0,5,4,1,0,0,7,2,14,0,0,4,4,14,0,0,6,8,3,0,0,9,2,14,0,0,4,4,14,0,0,6,7,3,0,0,8,4,2,0,1,16,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,1,16,2,14,0,0,4,9,8,0,0,10,6,1,0,0,7,6,1,0,0,7,10,4,0,0,14,12,1,0,0,14,4,1,0,0,6,4,4,0,1,23,6,1,0,0,7,16,4,0,0,17,6,2,0,1,23,3,14,0,0,5,2,14,0,0,4,12,3,0,0,20,9,1,0,1,16,4,8,0,0,5,4,1,0,0,7,2,14,0,0,4,4,14,0,0,6,8,3,0,0,9,2,14,0,0,4,4,14,0,0,6,7,3,0,0,8,4,2,0,1,16,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,1,16,2,14,0,0,4,9,8,0,0,10,6,1,0,0,7,6,1,0,0,7,10,4,0,0,14,12,1,0,1,23,6,1,0,0,7,16,4,0,0,17,6,2,0,1,23,3,14,0,0,5,2,14,0,0,4,12,3,0,0,20,9,1,0,1,16,4,8,0,0,5,4,1,0,0,7,2,14,0,0,4,4,14,0,0,6,8,3,0,0,9,2,14,0,0,4,4,14,0,0,6,7,3,0,0,8,4,2,0,1,16,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,1,16,2,14,0,0,4,9,8,0,0,10,6,1,0,0,7,6,1,0,0,7,10,4,0,0,14,12,1,0,1,23,6,1,0,0,7,16,4,0,0,17,6,2,0,2,22,13,8,0,0,54,4,2,0,0,5,8,4,0,4,8,3,14,0,0,5,6,8,0,0,7,6,14,0,0,8,24,8,0,0,26,8,8,0,0,10,26,4,0,1,18,4,8,0,0,5,5,1,0,0,8,8,6,0,0,9,12,4,0,0,15,12,6,0,1,18,4,17,0,0,5,5,1,0,0,8,5,1,0,0,6,4,4,0,2,12,3,14,0,0,5,6,8,0,0,7,6,14,0,0,8,24,8,0,0,26,6,1,0,1,12,6,1,0,0,7,7,4,0,0,8,5,1,0,2,23,4,8,0,0,6,4,1,0,0,7,5,1,0,1,16,6,1,0,0,7,9,4,0,0,10,6,14,0,0,8,24,8,0,0,26,7,5,0,0,8,4,1,0,3,19,6,1,0,3,8,6,14,0,0,8,24,8,0,0,25,8,8,0,0,10,29,4,0,0,36,16,8,0,0,18,4,2,0,1,22,4,8,0,0,6,8,1,0,0,11,4,2,0,0,5,6,4,0,0,9,9,4,0,0,10,14,14,0,0,16,17,0,0,1,23,6,14,0,0,8,24,8,0,0,26,5,5,0,0,7,8,1,0,2,23,27,4,0,4,8,6,14,0,0,8,24,8,0,0,25,8,8,0,0,10,27,4,0,1,18,4,8,0,0,5,5,1,0,0,8,8,6,0,0,9,12,4,0,0,15,12,6,0,1,16,5,1,0,0,6,5,4,0,1,22,13,8,0,0,62,8,4,0,3,18,4,8,0,0,6,4,1,0,0,7,5,1,0,0,6,5,4,0,1,19,6,14,0,0,8,24,8,0,0,26,7,5,0,0,8,4,1,0,3,8,2,14,0,0,4,4,8,0,0,5,8,8,0,0,10,26,4,0,0,33,6,14,0,0,8,24,8,0,0,26,4,2,0,0,12,3,14,0,0,5,6,8,0,0,7,2,14,0,0,4,4,8,0,0,7,11,2,0,1,17,4,2,0,0,5,5,4,0,1,22,13,8,0,3,18,4,8,0,0,6,4,1,0,0,7,4,2,0,0,5,4,4,0,1,16,4,2,0,0,5,7,4,0,1,23,8,6,0,0,9,14,4,0,0,15,4,1,0,2,20,4,1,0,0,5,10,4,0,1,27,4,1,0,2,27,2,14,0,0,4,4,14,0,0,6,11,3,0,0,12,11,2,0,0,13,4,1,0,5,8,3,14,0,0,5,10,8,0,0,11,6,14,0,0,8,11,8,0,0,13,8,8,0,0,10,17,4,0,0,24,2,14,0,0,4,4,8,0,0,6,4,2,0,0,6,6,8,0,0,8,6,2,0,2,16,4,8,0,0,5,4,1,0,0,7,4,6,0,0,5,8,4,0,0,9,4,2,0,1,16,6,18,0,0,7,4,1,0,2,22,4,8,0,0,5,9,1,0,0,12,4,2,0,0,5,13,4,0,0,16,8,4,0,1,22,4,8,0,0,5,9,1,0,0,12,3,14,0,0,5,12,3,0,0,13,4,2,0,0,5,9,4,0,1,22,4,8,0,0,5,9,1,0,0,12,8,6,0,0,9,12,4,0,0,15,12,6,0,2,20,9,1,0,0,22,3,14,0,0,5,12,3,0,0,13,9,1,0,1,26,4,8,0,0,5,7,1,0,0,10,18,4,0,1,20,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,1,20,2,14,0,0,4,9,8,0,0,10,6,1,0,0,7,9,1,0,0,11,3,14,0,0,5,5,3,0,0,6,6,1,0,0,9,3,14,0,0,5,3,3,0,0,4,6,1,0,0,9,7,1,0,1,27,6,1,0,0,7,15,4,0,0,16,6,2,0,1,27,9,1,0,0,22,3,14,0,0,5,12,3,0,0,13,9,1,0,1,26,4,8,0,0,5,7,1,0,0,10,18,4,0,1,20,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,1,20,2,14,0,0,4,9,8,0,0,10,6,1,0,0,7,9,1,0,0,11,3,14,0,0,5,5,3,0,0,6,6,1,0,0,9,3,14,0,0,5,3,3,0,0,4,6,1,0,0,9,7,1,0,0,9,4,6,0,1,27,6,1,0,0,7,15,4,0,0,16,6,2,0,1,27,9,1,0,0,22,3,14,0,0,5,12,3,0,0,13,9,1,0,1,20,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,1,20,2,14,0,0,4,9,8,0,0,10,6,1,0,0,7,9,1,0,0,11,3,14,0,0,5,5,3,0,0,6,6,1,0,0,9,3,14,0,0,5,3,3,0,0,4,6,1,0,0,9,4,6,0,1,27,6,1,0,0,7,15,4,0,0,16,6,2,0,1,27,9,1,0,0,22,3,14,0,0,5,12,3,0,0,13,9,1,0,1,20,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,1,20,2,14,0,0,4,9,8,0,0,10,6,1,0,0,7,9,1,0,0,11,3,14,0,0,5,5,3,0,0,6,6,1,0,0,9,3,14,0,0,5,3,3,0,0,4,6,1,0,0,9,4,6,0,1,27,6,1,0,0,7,15,4,0,0,16,6,2,0,1,27,9,1,0,0,22,3,14,0,0,5,12,3,0,0,13,9,1,0,1,26,4,8,0,0,5,7,1,0,0,10,18,4,0,1,20,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,1,20,2,14,0,0,4,11,8,0,0,12,6,1,0,0,7,9,1,0,0,11,3,14,0,0,5,5,3,0,0,6,6,1,0,0,9,3,14,0,0,5,3,3,0,0,4,6,1,0,0,9,7,1,0,0,9,4,6,0,1,27,6,1,0,0,7,15,4,0,0,16,6,2,0,1,27,9,1,0,0,22,3,14,0,0,5,12,3,0,0,13,9,1,0,1,20,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,1,20,2,14,0,0,4,9,8,0,0,10,6,1,0,0,7,9,1,0,0,11,3,14,0,0,5,5,3,0,0,6,6,1,0,0,9,3,14,0,0,5,3,3,0,0,4,6,1,0,0,9,4,6,0,1,27,6,1,0,0,7,15,4,0,0,16,6,2,0,1,27,9,1,0,0,22,3,14,0,0,5,12,3,0,0,13,9,1,0,1,20,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,1,20,2,14,0,0,4,9,8,0,0,10,6,1,0,0,7,9,1,0,0,11,6,1,0,0,7,10,4,0,0,14,4,6,0,1,27,6,1,0,0,7,15,4,0,0,16,6,2,0,1,27,9,1,0,0,22,3,14,0,0,5,12,3,0,0,13,9,1,0,1,20,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,2,20,2,14,0,0,4,11,8,0,0,12,6,1,0,0,7,4,2,0,0,6,3,14,0,0,5,5,3,0,0,6,6,1,0,0,9,3,14,0,0,5,3,3,0,0,4,6,1,0,0,9,4,6,0,1,27,6,1,0,0,7,15,4,0,0,16,6,2,0,2,26,13,8,0,0,45,4,2,0,0,5,8,4,0,2,27,19,8,0,0,21,1,1,0,1,22,13,8,0,0,40,4,2,0,0,5,8,4,0,0,20,3,14,0,0,5,6,8,0,0,7,1,1,0,0,2,4,4,0,1,27,14,8,0,0,16,1,1,0,1,22,13,8,0,0,40,4,2,0,0,5,8,4,0,0,20,3,14,0,0,5,6,8,0,0,7,1,1,0,0,2,4,4,0,1,27,15,8,0,0,17,1,1,0,1,22,13,8,0,0,40,4,2,0,0,5,8,4,0,0,20,3,14,0,0,5,6,8,0,0,7,1,1,0,0,2,4,4,0,4,13,8,8,0,0,10,11,4,0,0,18,2,14,0,0,4,4,8,0,0,6,4,2,0,0,6,6,17,0,0,7,10,2,0,0,12,6,14,0,0,8,11,8,0,0,13,5,2,0,0,7,6,8,0,0,8,6,2,0,2,16,6,18,0,0,7,5,2,0,0,6,5,4,0,0,6,10,2,0,1,16,6,18,0,0,8,5,2,0,0,6,5,4,0,0,6,10,2,0,0,13,6,4,0,2,22,4,8,0,0,5,4,1,0,0,7,4,6,0,0,5,8,4,0,0,9,4,2,0,1,16,6,18,0,0,7,4,1,0,2,22,4,8,0,0,5,9,1,0,0,12,4,2,0,0,5,13,4,0,0,16,8,4,0,1,22,4,8,0,0,5,9,1,0,0,12,3,14,0,0,5,12,3,0,0,13,4,2,0,0,5,9,4,0,1,22,4,8,0,0,5,9,1,0,0,12,8,6,0,0,9,12,4,0,0,15,12,6,0,2,20,9,1,0,0,22,3,14,0,0,5,12,3,0,0,13,9,1,0,1,26,4,8,0,0,5,7,1,0,0,10,18,4,0,1,20,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,1,20,2,14,0,0,4,9,8,0,0,10,6,1,0,0,7,9,1,0,0,11,3,14,0,0,5,5,3,0,0,6,6,1,0,0,9,3,14,0,0,5,3,3,0,0,4,6,1,0,0,9,7,1,0,1,20,6,1,0,0,7,9,4,0,0,10,10,2,0,0,12,5,2,0,0,7,6,2,0,1,27,9,1,0,0,22,3,14,0,0,5,12,3,0,0,13,9,1,0,1,26,4,8,0,0,5,7,1,0,0,10,18,4,0,1,20,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,1,20,2,14,0,0,4,9,8,0,0,10,6,1,0,0,7,9,1,0,0,11,3,14,0,0,5,5,3,0,0,6,6,1,0,0,9,3,14,0,0,5,3,3,0,0,4,6,1,0,0,9,7,1,0,0,9,4,6,0,1,20,6,1,0,0,7,9,4,0,0,10,10,2,0,0,12,5,2,0,0,7,6,2,0,1,27,9,1,0,0,22,3,14,0,0,5,12,3,0,0,13,9,1,0,1,20,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,1,20,2,14,0,0,4,9,8,0,0,10,6,1,0,0,7,9,1,0,0,11,3,14,0,0,5,5,3,0,0,6,6,1,0,0,9,3,14,0,0,5,3,3,0,0,4,6,1,0,0,9,4,6,0,1,20,6,1,0,0,7,9,4,0,0,10,10,2,0,0,12,5,2,0,0,7,6,2,0,1,27,9,1,0,0,22,3,14,0,0,5,12,3,0,0,13,9,1,0,1,20,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,1,20,2,14,0,0,4,9,8,0,0,10,6,1,0,0,7,9,1,0,0,11,3,14,0,0,5,5,3,0,0,6,6,1,0,0,9,3,14,0,0,5,3,3,0,0,4,6,1,0,0,9,4,6,0,1,20,6,1,0,0,7,9,4,0,0,10,10,2,0,0,12,5,2,0,0,7,6,2,0,1,27,9,1,0,0,22,3,14,0,0,5,12,3,0,0,13,9,1,0,1,26,4,8,0,0,5,7,1,0,0,10,18,4,0,1,20,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,1,20,2,14,0,0,4,11,8,0,0,12,6,1,0,0,7,9,1,0,0,11,3,14,0,0,5,5,3,0,0,6,6,1,0,0,9,3,14,0,0,5,3,3,0,0,4,6,1,0,0,9,7,1,0,0,9,4,6,0,1,20,6,1,0,0,7,9,4,0,0,10,10,2,0,0,12,5,2,0,0,7,6,2,0,1,27,9,1,0,0,22,3,14,0,0,5,12,3,0,0,13,9,1,0,1,20,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,1,20,2,14,0,0,4,9,8,0,0,10,6,1,0,0,7,9,1,0,0,11,3,14,0,0,5,5,3,0,0,6,6,1,0,0,9,3,14,0,0,5,3,3,0,0,4,6,1,0,0,9,4,6,0,1,20,6,1,0,0,7,9,4,0,0,10,10,2,0,0,12,5,2,0,0,7,6,2,0,1,27,9,1,0,0,22,3,14,0,0,5,12,3,0,0,13,9,1,0,1,20,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,1,20,2,14,0,0,4,9,8,0,0,10,6,1,0,0,7,9,1,0,0,11,6,1,0,0,7,10,4,0,0,14,4,6,0,1,20,6,1,0,0,7,9,4,0,0,10,10,2,0,0,12,5,2,0,0,7,6,2,0,1,27,9,1,0,0,22,3,14,0,0,5,12,3,0,0,13,9,1,0,1,20,4,8,0,0,5,6,1,0,0,9,4,1,0,0,6,6,4,0,0,9,6,4,0,2,20,2,14,0,0,4,11,8,0,0,12,6,1,0,0,7,4,2,0,0,6,3,14,0,0,5,5,3,0,0,6,6,1,0,0,9,3,14,0,0,5,3,3,0,0,4,6,1,0,0,9,4,6,0,1,20,6,1,0,0,7,9,4,0,0,10,10,2,0,0,12,5,2,0,0,7,6,2,0,2,26,13,8,0,0,45,4,2,0,0,5,8,4,0,2,21,19,8,0,0,21,1,1,0,1,22,13,8,0,0,40,4,2,0,0,5,8,4,0,0,20,3,14,0,0,5,6,8,0,0,7,1,1,0,0,2,4,4,0,1,21,14,8,0,0,16,1,1,0,1,22,13,8,0,0,40,4,2,0,0,5,8,4,0,0,20,3,14,0,0,5,6,8,0,0,7,1,1,0,0,2,4,4,0,4,8,6,14,0,0,8,7,8,0,0,8,8,8,0,0,10,18,4,0,1,18,4,8,0,0,6,4,1,0,0,7,8,6,0,0,9,13,4,0,0,16,7,6,0,1,19,6,14,0,0,8,7,8,0,0,9,8,5,0,0,9,4,6,0,0,6,4,1,0,3,8,3,14,0,0,5,6,8,0,0,7,3,14,0,0,5,6,8,0,0,8,8,8,0,0,10,15,4,0,1,12,3,14,0,0,5,6,8,0,0,7,3,14,0,0,5,6,8,0,0,8,6,1,0,1,16,10,6,0,0,11,7,4,0,0,14,2,14,0,0,4,4,14,0,0,6,15,3,0,0,16,10,6,0,1,23,6,1,0,3,18,4,8,0,0,6,10,1,0,0,13,8,6,0,0,9,16,4,0,0,19,10,6,0,0,11,13,4,0,0,16,8,4,0,1,18,2,14,0,0,4,14,8,0,0,15,2,1,0,0,3,10,6,0,1,18,4,8,0,0,5,7,1,0,0,10,2,1,0,0,3,9,4,0,0,10,2,14,0,0,4,4,8,0,0,10,2,14,0,0,4,15,8,0,1,17,6,17,0,0,7,1,1,0,0,7,1,1,0,0,4,7,1,0,0,8,4,4,0,0,10,1,1,0,1,22,3,14,0,0,5,6,8,0,0,7,3,1,0,0,6,7,1,0,0,8,1,1,0,0,3,13,4,0,0,16,8,4,0,1,21,3,14,0,0,5,2,14,0,0,4,12,3,0,0,13,3,1,0,0,5,10,1,0,1,20,6,1,0,0,7,9,4,0,0,10,3,1,0,3,19,6,1,0,3,8,3,14,0,0,5,6,8,0,0,7,3,14,0,0,5,6,8,0,0,8,8,8,0,0,10,20,4,0,0,27,16,8,0,0,18,4,2,0,1,22,4,8,0,0,6,6,1,0,0,9,4,2,0,0,5,6,4,0,0,9,9,4,0,0,10,14,14,0,0,16,4,0,0,1,23,3,14,0,0,5,9,3,0,0,11,6,1,0,6,8,3,14,0,0,5,6,8,0,0,7,8,8,0,0,10,12,4,0,1,19,8,6,0,0,9,16,4,0,0,19,10,6,0,0,11,8,4,0,3,14,11,8,0,0,13,8,8,0,0,10,14,4,0,1,19,8,6,0,0,9,17,4,0,0,20,12,6,0,3,14,11,8,0,0,13,8,8,0,0,10,14,4,0,1,19,8,6,0,0,9,17,4,0,0,20,12,6,0,3,14,19,8,0,0,21,8,8,0,0,10,20,4,0,1,19,8,6,0,0,9,17,4,0,0,20,8,6,0,3,14,3,14,0,0,5,6,8,0,0,7,15,8,0,0,18,8,8,0,0,10,18,4,0,1,19,8,6,0,0,9,16,4,0,3,13,8,8,0,0,10,18,4,0,0,19,16,8,0,0,18,4,2,0,0,12,3,14,0,0,5,6,8,0,0,8,8,2,0,0,16,3,14,0,0,5,6,8,0,0,8,5,2,0,0,13,6,17,0,0,7,9,2,0,1,12,4,8,0,0,5,6,1,0,0,9,4,2,0,0,5,6,4,0,1,12,6,1,0,0,7,23,4,0,0,24,8,2,0,2,12,3,14,0,0,5,12,8,0,0,13,7,1,0,1,17,6,17,0,0,7,1,1,0,0,7,1,1,0,0,5,5,2,0,0,6,4,4,0,0,9,9,2,0,0,13,1,1,0,1,16,7,1,0,0,8,3,4,0,1,16,7,1,0,0,11,8,2,0,0,12,1,1,0,1,16,6,1,0,0,7,20,4,0,0,21,7,1,0,0,8,3,4,0,0,7,5,2,0,0,6,6,4,0,0,7,1,1,0,0,4,9,2,0,0,11,9,2,0,3,12,4,2,0,0,5,9,4,0,0,10,3,14,0,0,5,4,3,0,0,5,6,1,0,3,8,3,14,0,0,5,6,8,0,0,7,8,8,0,0,10,17,4,0,0,24,16,8,0,0,18,4,2,0,0,12,3,14,0,0,5,6,8,0,0,8,8,2,0,1,12,6,17,0,0,7,5,1,0,1,12,3,14,0,0,5,12,8,0,0,13,7,1,0,1,12,3,14,0,0,5,12,8,0,0,13,8,1,0,1,12,7,1,0,0,11,8,2,0,0,12,5,1,0,2,18,4,8,0,0,6,6,1,0,0,9,4,2,0,0,5,6,4,0,1,19,6,1,0,0,7,12,4,0,0,13,7,1,0,0,8,3,4,0,1,26,4,8,0,0,6,5,1,0,0,8,6,1,0,0,7,9,4,0,0,10,7,1,0,0,8,3,4,0,1,20,8,1,0,0,13,5,1,0,2,16,7,1,0,0,8,3,4,0,1,16,7,1,0,0,11,8,2,0,0,14,5,1,0,3,19,8,1,0,0,9,3,4,0],"resultId":"1"}} | |
| I[19:53:51.786] --> textDocument/clangd.fileStatus | |
| V[19:53:51.786] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp"}} | |
| V[19:53:51.795] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp:134:39:out-of-line definition of 'doExtractSoftMapBounds' does not match any declaration in 'TrenchBroom::Model::GameImpl' | |
| V[19:53:51.826] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp:252:24:out-of-line definition of 'doLoadTextureCollections' does not match any declaration in 'TrenchBroom::Model::GameImpl' | |
| V[19:53:51.826] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp:253:58:no viable conversion from 'TrenchBroom::Model::AttributableNode' to 'const TrenchBroom::Model::Entity' | |
| V[19:53:51.826] Ignored diagnostic. ../common/src/Model/Entity.h:88:13:candidate constructor not viable: no known conversion from 'TrenchBroom::Model::AttributableNode' to 'const TrenchBroom::Model::Entity &' for 1st argument | |
| V[19:53:51.826] Ignored diagnostic. ../common/src/Model/Entity.h:89:13:candidate constructor not viable: no known conversion from 'TrenchBroom::Model::AttributableNode' to 'TrenchBroom::Model::Entity &&' for 1st argument | |
| V[19:53:51.826] Ignored diagnostic. ../common/src/Model/Entity.h:85:22:explicit constructor is not a candidate | |
| V[19:53:51.826] Ignored diagnostic. ../common/src/Model/Entity.h:86:22:explicit constructor is not a candidate | |
| V[19:53:51.826] Ignored diagnostic. ../common/src/Model/Game.h:116:75:passing argument to parameter 'entity' here | |
| V[19:53:51.827] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp:303:41:out-of-line definition of 'doExtractTextureCollections' does not match any declaration in 'TrenchBroom::Model::GameImpl' | |
| V[19:53:51.828] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp:317:24:out-of-line definition of 'doUpdateTextureCollections' does not match any declaration in 'TrenchBroom::Model::GameImpl' | |
| V[19:53:51.838] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp:384:52:out-of-line definition of 'doExtractEntityDefinitionFile' does not match any declaration in 'TrenchBroom::Model::GameImpl' | |
| I[19:53:51.872] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/View/FaceAttribsEditor.cpp (16255 symbols, 88370 refs, 468 files) | |
| V[19:53:51.874] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp:557:44:out-of-line definition of 'doExtractEnabledMods' does not match any declaration in 'TrenchBroom::Model::GameImpl' | |
| I[19:53:51.888] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/BrushNode.cpp (15576 symbols, 86563 refs, 464 files) | |
| I[19:53:51.949] --> $/progress | |
| V[19:53:51.949] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"6/25","percentage":24}}} | |
| I[19:53:51.949] --> $/progress | |
| V[19:53:51.949] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"6/25","percentage":24}}} | |
| V[19:53:51.951] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/View/CompilationVariables.cpp (digest:=8DC6F90222B98358) | |
| I[19:53:51.962] --> $/progress | |
| V[19:53:51.963] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"7/25","percentage":28}}} | |
| I[19:53:51.963] --> $/progress | |
| V[19:53:51.963] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"7/25","percentage":28}}} | |
| V[19:53:51.964] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/AttributableNode.cpp (digest:=18C24A71B3B49097) | |
| I[19:53:52.018] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.cpp (15652 symbols, 88377 refs, 475 files) | |
| I[19:53:52.018] Failed to compile /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/TestGame.cpp, index may be incomplete | |
| V[19:53:52.043] <<< {"id":4,"jsonrpc":"2.0","method":"textDocument/codeAction","params":{"context":{"diagnostics":[{"code":"typecheck_nonviable_condition","message":"No viable conversion from 'TrenchBroom::Model::AttributableNode' to 'const TrenchBroom::Model::Entity'","range":{"end":{"character":61,"line":252},"start":{"character":57,"line":252}},"relatedInformation":[{"location":{"range":{"end":{"character":18,"line":87},"start":{"character":12,"line":87}},"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/Entity.h"},"message":"Candidate constructor not viable: no known conversion from 'TrenchBroom::Model::AttributableNode' to 'const TrenchBroom::Model::Entity &' for 1st argument"},{"location":{"range":{"end":{"character":18,"line":88},"start":{"character":12,"line":88}},"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/Entity.h"},"message":"Candidate constructor not viable: no known conversion from 'TrenchBroom::Model::AttributableNode' to 'TrenchBroom::Model::Entity &&' for 1st argument"},{"location":{"range":{"end":{"character":27,"line":84},"start":{"character":21,"line":84}},"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/Entity.h"},"message":"Explicit constructor is not a candidate"},{"location":{"range":{"end":{"character":27,"line":85},"start":{"character":21,"line":85}},"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/Entity.h"},"message":"Explicit constructor is not a candidate"},{"location":{"range":{"end":{"character":80,"line":115},"start":{"character":74,"line":115}},"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/Game.h"},"message":"Passing argument to parameter 'entity' here"}],"severity":1,"source":"clang"}]},"range":{"end":{"character":60,"line":252},"start":{"character":59,"line":252}},"textDocument":{"uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp"}}} | |
| I[19:53:52.043] <-- textDocument/codeAction(4) | |
| V[19:53:52.043] ASTWorker running EnumerateTweaks on version 1 of /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp | |
| I[19:53:52.043] --> reply:textDocument/codeAction(4) 0 ms | |
| V[19:53:52.043] >>> {"id":4,"jsonrpc":"2.0","result":[]} | |
| I[19:53:52.043] --> textDocument/clangd.fileStatus | |
| V[19:53:52.043] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp"}} | |
| I[19:53:52.087] --> $/progress | |
| V[19:53:52.087] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"8/25","percentage":32}}} | |
| I[19:53:52.087] --> $/progress | |
| V[19:53:52.087] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"8/25","percentage":32}}} | |
| V[19:53:52.088] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/ModelUtils.cpp (digest:=77D95B991459BB26) | |
| I[19:53:52.367] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp (15773 symbols, 88387 refs, 511 files) | |
| I[19:53:52.367] Failed to compile /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameImpl.cpp, index may be incomplete | |
| I[19:53:52.469] --> $/progress | |
| V[19:53:52.469] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"9/25","percentage":36}}} | |
| I[19:53:52.469] --> $/progress | |
| V[19:53:52.469] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"9/25","percentage":36}}} | |
| V[19:53:52.470] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapDocumentCommandFacade.cpp (digest:=7363A6F578FD620A) | |
| I[19:53:52.920] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapViewBase.cpp (16757 symbols, 92024 refs, 581 files) | |
| V[19:53:52.936] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapDocument.cpp:2199:60:no viable conversion from 'TrenchBroom::Model::WorldNode' to 'const TrenchBroom::Model::Entity' | |
| V[19:53:52.936] Ignored diagnostic. ../common/src/Model/Entity.h:88:13:candidate constructor not viable: no known conversion from 'TrenchBroom::Model::WorldNode' to 'const TrenchBroom::Model::Entity &' for 1st argument | |
| V[19:53:52.936] Ignored diagnostic. ../common/src/Model/Entity.h:89:13:candidate constructor not viable: no known conversion from 'TrenchBroom::Model::WorldNode' to 'TrenchBroom::Model::Entity &&' for 1st argument | |
| V[19:53:52.936] Ignored diagnostic. ../common/src/Model/Entity.h:85:22:explicit constructor is not a candidate | |
| V[19:53:52.936] Ignored diagnostic. ../common/src/Model/Entity.h:86:22:explicit constructor is not a candidate | |
| V[19:53:52.936] Ignored diagnostic. ../common/src/Model/Game.h:122:88:passing argument to parameter 'entity' here | |
| V[19:53:52.949] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapDocument.cpp:2218:54:no viable conversion from 'TrenchBroom::Model::WorldNode' to 'const TrenchBroom::Model::Entity' | |
| V[19:53:52.949] Ignored diagnostic. ../common/src/Model/Entity.h:88:13:candidate constructor not viable: no known conversion from 'TrenchBroom::Model::WorldNode' to 'const TrenchBroom::Model::Entity &' for 1st argument | |
| V[19:53:52.949] Ignored diagnostic. ../common/src/Model/Entity.h:89:13:candidate constructor not viable: no known conversion from 'TrenchBroom::Model::WorldNode' to 'TrenchBroom::Model::Entity &&' for 1st argument | |
| V[19:53:52.949] Ignored diagnostic. ../common/src/Model/Entity.h:85:22:explicit constructor is not a candidate | |
| V[19:53:52.949] Ignored diagnostic. ../common/src/Model/Entity.h:86:22:explicit constructor is not a candidate | |
| V[19:53:52.949] Ignored diagnostic. ../common/src/Model/Game.h:116:75:passing argument to parameter 'entity' here | |
| V[19:53:52.981] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapDocument.cpp:2302:48:no viable conversion from 'TrenchBroom::Model::WorldNode' to 'const TrenchBroom::Model::Entity' | |
| V[19:53:52.981] Ignored diagnostic. ../common/src/Model/Entity.h:88:13:candidate constructor not viable: no known conversion from 'TrenchBroom::Model::WorldNode' to 'const TrenchBroom::Model::Entity &' for 1st argument | |
| V[19:53:52.981] Ignored diagnostic. ../common/src/Model/Entity.h:89:13:candidate constructor not viable: no known conversion from 'TrenchBroom::Model::WorldNode' to 'TrenchBroom::Model::Entity &&' for 1st argument | |
| V[19:53:52.981] Ignored diagnostic. ../common/src/Model/Entity.h:85:22:explicit constructor is not a candidate | |
| V[19:53:52.981] Ignored diagnostic. ../common/src/Model/Entity.h:86:22:explicit constructor is not a candidate | |
| V[19:53:52.981] Ignored diagnostic. ../common/src/Model/Game.h:111:55:passing argument to parameter 'entity' here | |
| V[19:53:53.010] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapDocument.cpp:2493:47:no viable conversion from 'TrenchBroom::Model::WorldNode' to 'const TrenchBroom::Model::Entity' | |
| V[19:53:53.010] Ignored diagnostic. ../common/src/Model/Entity.h:88:13:candidate constructor not viable: no known conversion from 'TrenchBroom::Model::WorldNode' to 'const TrenchBroom::Model::Entity &' for 1st argument | |
| V[19:53:53.010] Ignored diagnostic. ../common/src/Model/Entity.h:89:13:candidate constructor not viable: no known conversion from 'TrenchBroom::Model::WorldNode' to 'TrenchBroom::Model::Entity &&' for 1st argument | |
| V[19:53:53.010] Ignored diagnostic. ../common/src/Model/Entity.h:85:22:explicit constructor is not a candidate | |
| V[19:53:53.010] Ignored diagnostic. ../common/src/Model/Entity.h:86:22:explicit constructor is not a candidate | |
| V[19:53:53.010] Ignored diagnostic. ../common/src/Model/Game.h:126:71:passing argument to parameter 'entity' here | |
| I[19:53:53.011] --> $/progress | |
| V[19:53:53.011] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"10/25","percentage":40}}} | |
| I[19:53:53.011] --> $/progress | |
| V[19:53:53.011] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"10/25","percentage":40}}} | |
| V[19:53:53.011] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/GameTest.cpp (digest:=CE227B5E56DFDB01) | |
| V[19:53:53.014] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapDocument.cpp:2532:49:no viable conversion from 'TrenchBroom::Model::WorldNode' to 'const TrenchBroom::Model::Entity' | |
| V[19:53:53.014] Ignored diagnostic. ../common/src/Model/Entity.h:88:13:candidate constructor not viable: no known conversion from 'TrenchBroom::Model::WorldNode' to 'const TrenchBroom::Model::Entity &' for 1st argument | |
| V[19:53:53.014] Ignored diagnostic. ../common/src/Model/Entity.h:89:13:candidate constructor not viable: no known conversion from 'TrenchBroom::Model::WorldNode' to 'TrenchBroom::Model::Entity &&' for 1st argument | |
| V[19:53:53.014] Ignored diagnostic. ../common/src/Model/Entity.h:85:22:explicit constructor is not a candidate | |
| V[19:53:53.014] Ignored diagnostic. ../common/src/Model/Entity.h:86:22:explicit constructor is not a candidate | |
| V[19:53:53.014] Ignored diagnostic. ../common/src/Model/Game.h:97:62:passing argument to parameter 'entity' here | |
| I[19:53:53.931] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapDocument.cpp (16218 symbols, 92191 refs, 575 files) | |
| I[19:53:53.931] Failed to compile /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapDocument.cpp, index may be incomplete | |
| I[19:53:54.044] --> $/progress | |
| V[19:53:54.044] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"11/25","percentage":44}}} | |
| I[19:53:54.044] --> $/progress | |
| V[19:53:54.044] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"11/25","percentage":44}}} | |
| V[19:53:54.045] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/test/src/IO/EntityModelTest.cpp (digest:=FBDEA38537A9C654) | |
| I[19:53:54.877] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameConfig.cpp (15368 symbols, 69054 refs, 403 files) | |
| I[19:53:54.933] --> $/progress | |
| V[19:53:54.933] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"12/25","percentage":48}}} | |
| I[19:53:54.933] --> $/progress | |
| V[19:53:54.933] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"12/25","percentage":48}}} | |
| V[19:53:54.934] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/NodeCollection.cpp (digest:=26AACABCF8C65FF2) | |
| I[19:53:54.976] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/WorldNode.cpp (15632 symbols, 69565 refs, 438 files) | |
| I[19:53:55.047] --> $/progress | |
| V[19:53:55.047] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"13/25","percentage":52}}} | |
| I[19:53:55.047] --> $/progress | |
| V[19:53:55.047] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"13/25","percentage":52}}} | |
| V[19:53:55.048] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameFactory.cpp (digest:=A5BD4890D7AF279B) | |
| I[19:53:55.426] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/IO/GameConfigParser.cpp (15403 symbols, 86109 refs, 422 files) | |
| I[19:53:55.457] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/NodeTest.cpp (15667 symbols, 72741 refs, 446 files) | |
| I[19:53:55.497] --> $/progress | |
| V[19:53:55.497] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"14/25","percentage":56}}} | |
| I[19:53:55.497] --> $/progress | |
| V[19:53:55.497] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"14/25","percentage":56}}} | |
| V[19:53:55.498] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/EditorContext.cpp (digest:=D6A3313B19B843C0) | |
| I[19:53:55.518] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/AttributableNode.cpp (15391 symbols, 69328 refs, 410 files) | |
| I[19:53:55.519] --> $/progress | |
| V[19:53:55.519] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"15/25","percentage":60}}} | |
| I[19:53:55.519] --> $/progress | |
| V[19:53:55.519] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"15/25","percentage":60}}} | |
| V[19:53:55.519] Indexing /Users/kristian/Documents/Code/TrenchBroom/common/test/src/IO/GameConfigParserTest.cpp (digest:=53B179D017E091E0) | |
| I[19:53:55.550] --> $/progress | |
| V[19:53:55.550] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"16/25","percentage":64}}} | |
| I[19:53:55.593] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/View/CompilationVariables.cpp (15865 symbols, 69996 refs, 430 files) | |
| I[19:53:55.633] --> $/progress | |
| V[19:53:55.633] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"17/25","percentage":68}}} | |
| I[19:53:55.780] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/ModelUtils.cpp (15598 symbols, 69771 refs, 432 files) | |
| I[19:53:55.841] --> $/progress | |
| V[19:53:55.841] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"18/25","percentage":72}}} | |
| V[19:53:56.481] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapDocumentCommandFacade.cpp:642:46:non-const lvalue reference to type 'TrenchBroom::Model::Entity' cannot bind to a value of unrelated type 'TrenchBroom::Model::WorldNode' | |
| V[19:53:56.481] Ignored diagnostic. ../common/src/Model/Game.h:117:51:passing argument to parameter 'entity' here | |
| V[19:53:56.489] Ignored diagnostic. /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/GameTest.cpp:123:41:no viable conversion from 'TrenchBroom::Model::EntityNode' to 'const TrenchBroom::Model::Entity' | |
| V[19:53:56.489] Ignored diagnostic. ../common/src/Model/Entity.h:88:13:candidate constructor not viable: no known conversion from 'TrenchBroom::Model::EntityNode' to 'const TrenchBroom::Model::Entity &' for 1st argument | |
| V[19:53:56.489] Ignored diagnostic. ../common/src/Model/Entity.h:89:13:candidate constructor not viable: no known conversion from 'TrenchBroom::Model::EntityNode' to 'TrenchBroom::Model::Entity &&' for 1st argument | |
| V[19:53:56.489] Ignored diagnostic. ../common/src/Model/Entity.h:85:22:explicit constructor is not a candidate | |
| V[19:53:56.489] Ignored diagnostic. ../common/src/Model/Entity.h:86:22:explicit constructor is not a candidate | |
| V[19:53:56.489] Ignored diagnostic. ../common/src/Model/Game.h:111:55:passing argument to parameter 'entity' here | |
| I[19:53:57.014] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/GameTest.cpp (15763 symbols, 88640 refs, 461 files) | |
| I[19:53:57.014] Failed to compile /Users/kristian/Documents/Code/TrenchBroom/common/test/src/Model/GameTest.cpp, index may be incomplete | |
| I[19:53:57.039] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapDocumentCommandFacade.cpp (16231 symbols, 89058 refs, 489 files) | |
| I[19:53:57.039] Failed to compile /Users/kristian/Documents/Code/TrenchBroom/common/src/View/MapDocumentCommandFacade.cpp, index may be incomplete | |
| I[19:53:57.102] --> $/progress | |
| V[19:53:57.102] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"19/25","percentage":76}}} | |
| I[19:53:57.124] --> $/progress | |
| V[19:53:57.124] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"20/25","percentage":80}}} | |
| I[19:53:57.730] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/test/src/IO/EntityModelTest.cpp (15552 symbols, 86867 refs, 448 files) | |
| I[19:53:57.803] --> $/progress | |
| V[19:53:57.804] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"21/25","percentage":84}}} | |
| I[19:53:58.142] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/NodeCollection.cpp (15607 symbols, 69155 refs, 417 files) | |
| I[19:53:58.218] --> $/progress | |
| V[19:53:58.218] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"22/25","percentage":88}}} | |
| I[19:53:58.675] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/GameFactory.cpp (15580 symbols, 71170 refs, 456 files) | |
| I[19:53:58.752] --> $/progress | |
| V[19:53:58.752] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"23/25","percentage":92}}} | |
| I[19:53:59.054] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/src/Model/EditorContext.cpp (15614 symbols, 69714 refs, 447 files) | |
| I[19:53:59.111] --> $/progress | |
| V[19:53:59.111] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"24/25","percentage":96}}} | |
| I[19:53:59.382] Indexed /Users/kristian/Documents/Code/TrenchBroom/common/test/src/IO/GameConfigParserTest.cpp (15415 symbols, 87675 refs, 437 files) | |
| V[19:53:59.465] BackgroundIndex: building version 2 when background indexer is idle | |
| V[19:53:59.949] BackgroundIndex: serving version 2 (85134823 bytes) | |
| I[19:53:59.957] --> $/progress | |
| V[19:53:59.957] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"end"}}} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment