diff --git a/example/src/example.cpp b/example/src/example.cpp index 1577b56..4e836ac 100644 --- a/example/src/example.cpp +++ b/example/src/example.cpp @@ -8,7 +8,7 @@ #include "path.hpp" void app_main(prism::engine* engine) { - prism::set_domain_path(prism::domain::app, "data"); + prism::set_domain_path(prism::domain::app, "{resource_dir}/data"); prism::set_domain_path(prism::domain::internal, "{resource_dir}/shaders"); platform::open_window("Example", {-1, -1, 1280, 720}, WindowFlags::Resizable); @@ -30,8 +30,8 @@ void ExampleApp::initialize_render() { auto sphere_obj = scene->add_object(); auto& sphere_render = scene->add(sphere_obj); - sphere_render.mesh = assetm->get(prism::path("data/models/sphere.model")); - sphere_render.materials = { assetm->get(prism::path("data/materials/Material.material")) }; + sphere_render.mesh = assetm->get(prism::path(prism::app_domain / "models/sphere.model")); + sphere_render.materials = { assetm->get(prism::path(prism::app_domain / "materials/Material.material")) }; auto probe_obj = scene->add_object(); scene->add(probe_obj); diff --git a/platforms/sdl/CMakeLists.txt b/platforms/sdl/CMakeLists.txt index 788c264..7097698 100644 --- a/platforms/sdl/CMakeLists.txt +++ b/platforms/sdl/CMakeLists.txt @@ -15,7 +15,11 @@ add_platform( function(add_platform_commands target) if(NOT SKIP_DATA) - add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/data $/data) + if(ENABLE_MACOS) + add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/data $/../Resources/data) + else() + add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/data $/data) + endif() endif() # we HAVE to create this dummy target to convince CMake to properly copy over shader files. @@ -27,10 +31,18 @@ function(add_platform_commands target) add_custom_target(${DUMMY_NAME} ALL DEPENDS ${CMAKE_BINARY_DIR}/dummy) - add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/dummy - COMMAND ${CMAKE_COMMAND} -E make_directory $/shaders - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/shaders $/shaders - ) + if(ENABLE_MACOS) + add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/dummy + COMMAND ${CMAKE_COMMAND} -E make_directory $/../Resources/shaders + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/shaders $/../Resources/shaders + ) + else() + add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/dummy + COMMAND ${CMAKE_COMMAND} -E make_directory $/shaders + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/shaders $/shaders + ) + endif() + add_dependencies(${target} ${DUMMY_NAME}) endfunction() diff --git a/platforms/sdl/file.cpp b/platforms/sdl/file.cpp index e1ad9f2..3d18fbb 100644 --- a/platforms/sdl/file.cpp +++ b/platforms/sdl/file.cpp @@ -3,7 +3,11 @@ #include "string_utils.hpp" void prism::set_domain_path(const prism::domain domain, const prism::path path) { +#ifdef PLATFORM_MACOS + domain_data[(int)domain] = replace_substring(path.string(), "{resource_dir}/", "../Resources/"); +#else domain_data[(int)domain] = replace_substring(path.string(), "{resource_dir}/", ""); +#endif } prism::path prism::get_writeable_directory() {