do variable substitution in bgfx_path #2201

This commit is contained in:
Vas Crabb 2017-04-23 16:48:52 +10:00
parent b2fda77d30
commit 2e14f39a07
3 changed files with 21 additions and 12 deletions

View File

@ -61,7 +61,9 @@ void chain_manager::refresh_available_chains()
m_available_chains.clear();
m_available_chains.push_back(chain_desc("none", ""));
find_available_chains(std::string(m_options.bgfx_path()) + "/chains", "");
std::string chains_path;
osd_subst_env(chains_path, util::string_format("%s" PATH_SEPARATOR "chains", m_options.bgfx_path()));
find_available_chains(chains_path, "");
destroy_unloaded_chains();
}
@ -133,11 +135,13 @@ void chain_manager::find_available_chains(std::string root, std::string path)
bgfx_chain* chain_manager::load_chain(std::string name, uint32_t screen_index)
{
if (name.length() < 5 || (name.compare(name.length() - 5, 5, ".json")!= 0))
if (name.length() < 5 || (name.compare(name.length() - 5, 5, ".json") != 0))
{
name = name + ".json";
}
std::string path = std::string(m_options.bgfx_path()) + "/chains/" + name;
std::string path;
osd_subst_env(path, util::string_format("%s" PATH_SEPARATOR "chains" PATH_SEPARATOR, m_options.bgfx_path()));
path += name;
bx::CrtFileReader reader;
if (!bx::open(&reader, path.c_str()))

View File

@ -51,7 +51,9 @@ bgfx_effect* effect_manager::load_effect(std::string name)
if (full_name.length() < 5 || (full_name.compare(full_name.length() - 5, 5, ".json") != 0)) {
full_name = full_name + ".json";
}
std::string path = std::string(m_options.bgfx_path()) + "/effects/" + full_name;
std::string path;
osd_subst_env(path, util::string_format("%s" PATH_SEPARATOR "effects" PATH_SEPARATOR, m_options.bgfx_path()));
path += full_name;
bx::CrtFileReader reader;
if (!bx::open(&reader, path.c_str()))

View File

@ -41,42 +41,45 @@ bgfx::ShaderHandle shader_manager::shader(std::string name)
bgfx::ShaderHandle shader_manager::load_shader(std::string name)
{
std::string shader_path;
std::string shader_path(m_options.bgfx_path());
shader_path += PATH_SEPARATOR "shaders" PATH_SEPARATOR;
switch (bgfx::getRendererType())
{
case bgfx::RendererType::Noop:
case bgfx::RendererType::Direct3D9:
shader_path = m_options.bgfx_path() + std::string("/shaders/dx9/");
shader_path += "dx9";
break;
case bgfx::RendererType::Direct3D11:
case bgfx::RendererType::Direct3D12:
shader_path = m_options.bgfx_path() + std::string("/shaders/dx11/");
shader_path += "dx11";
break;
case bgfx::RendererType::Gnm:
shader_path = m_options.bgfx_path() + std::string("/shaders/pssl/");
shader_path += "pssl";
break;
case bgfx::RendererType::Metal:
shader_path = m_options.bgfx_path() + std::string("/shaders/metal/");
shader_path += "metal";
break;
case bgfx::RendererType::OpenGL:
shader_path = m_options.bgfx_path() + std::string("/shaders/glsl/");
shader_path += "glsl";
break;
case bgfx::RendererType::OpenGLES:
shader_path = m_options.bgfx_path() + std::string("/shaders/essl/");
shader_path += "essl";
break;
case bgfx::RendererType::Vulkan:
shader_path = m_options.bgfx_path() + std::string("/shaders/spirv/");
shader_path += "spirv";
break;
default:
fatalerror("Unknown BGFX renderer type %d", bgfx::getRendererType());
}
shader_path += PATH_SEPARATOR;
osd_subst_env(shader_path, shader_path);
const bgfx::Memory* mem = load_mem(shader_path + name + ".bin");
if (mem != nullptr)