From 3ef1b8d51109af33872b4ebe4565440af80457f7 Mon Sep 17 00:00:00 2001 From: GPayne Date: Fri, 3 Jan 2020 12:31:20 -0700 Subject: [PATCH] Fixes to allow using temp directory for profile-to-asset conversion --- scripts/convertProfileToScene.lua | 7 +++---- src/engine/configuration.cpp | 2 +- src/engine/openspaceengine.cpp | 26 ++++++++++++++++---------- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/scripts/convertProfileToScene.lua b/scripts/convertProfileToScene.lua index e27dec9ad5..1321dd52a5 100644 --- a/scripts/convertProfileToScene.lua +++ b/scripts/convertProfileToScene.lua @@ -308,7 +308,7 @@ function generateAsset(T, fileOut) end --Asset section - AssetStr = AssetStr.."asset.require('./base');\n" + AssetStr = AssetStr.."asset.require('base');\n" AssetStr = AssetStr.."local assetHelper = asset.require('util/asset_helper')\n" AssetStr = AssetStr.."local propertyHelper = asset.require('util/property_helper')\n" AssetStr = AssetStr.."local sceneHelper = asset.require('util/scene_helper')\n" @@ -467,8 +467,7 @@ parsingSections = { profileFilename = openspace.profile.getFilename() profilePath = openspace.profile.getPath() -profileIn = profilePath.."\\"..profileFilename -assetOut = profilePath.."\\"..profileFilename:match("^.+%.").."scene" +assetOut = profilePath..".scene" -local resultTable = parseProfile(profileIn) +local resultTable = parseProfile(profilePath) generateAsset(resultTable, assetOut) diff --git a/src/engine/configuration.cpp b/src/engine/configuration.cpp index cbb6080af3..6c2b2fe043 100644 --- a/src/engine/configuration.cpp +++ b/src/engine/configuration.cpp @@ -362,7 +362,7 @@ Configuration loadConfigurationFromFile(const std::string& filename) { // created with that name, and also because the profile name will override // an asset name if both are provided. if (!result.profile.empty()) { - result.asset = result.profile; + result.asset = "../../temp/" + result.profile; } return result; diff --git a/src/engine/openspaceengine.cpp b/src/engine/openspaceengine.cpp index e393807bc2..4e858562ed 100644 --- a/src/engine/openspaceengine.cpp +++ b/src/engine/openspaceengine.cpp @@ -301,18 +301,24 @@ void OpenSpaceEngine::initialize() { global::configuration.profile)); ghoul::lua::LuaState lState; - // Get path where .scene files reside. Need to add extra escape slashes to - // accomodate lua parser. + // Generate path to temp dir where output .scene file will reside. + // Needs to handle either windows (which seems to require double back-slashes) + // or unix path slashes. std::string outputScenePath = absPath("${TEMPORARY}"); - std::string search = "\\"; - std::string replace = "\\\\"; - for (std::string::size_type i = outputScenePath.find(search); - i != std::string::npos; - i = outputScenePath.find(search, i)) - { - outputScenePath.replace(i, search.length(), replace); - i += replace.length(); + const std::string search = "\\"; + const std::string replace = "\\\\"; + if (outputScenePath.find(search) != std::string::npos) { + size_t start_pos = 0; + while((start_pos = outputScenePath.find(search, start_pos)) != std::string::npos) { + outputScenePath.replace(start_pos, search.length(), replace); + start_pos += replace.length(); + } + outputScenePath.append(replace); } + else { + outputScenePath.append("/"); + } + outputScenePath.append(global::configuration.profile); std::string setProfileFilenameInLuaState = fmt::format(R"( openspace = {{}}