Pierre_Bultingaire Posted May 23, 2022 Posted May 23, 2022 Hello, I want to dynamically add in my project an external folder using a mountpoint in runtime (without creating a .umount file). I tried using Unigine::Filesystem::addMount, but it didn't seem to work. Can you provide an example of a use case in C++ for this use of mountpoints Thanks! Pierre
devrom Posted May 23, 2022 Posted May 23, 2022 Hello Pierre, you need to add a blob file with the desired path and the umount extension. Calling createMount on the desired path will work then without creating an additional file. 1. umount_filepath = virtual_path + ".umount" 2. FileSystem::addBlobFile(umount_filepath) 3. FileSystem::createMount(absolute_path, virtual_path, access) Best regards
Pierre_Bultingaire Posted May 23, 2022 Author Posted May 23, 2022 Hello Devrom, thanks for your answer! I tried using blob file, but I still can't get the result I want. In fact, I don't want to create a .umount file on disk, but dynamically load an external folder that is specified during runtime depending on the path I'm giving to my program. Thanks! Pierre
devrom Posted May 23, 2022 Posted May 23, 2022 Quote I tried using blob file, but I still can't get the result I want. Can you share a code sample? Quote In fact, I don't want to create a .umount file on disk, but dynamically load an external folder that is specified during runtime depending on the path I'm giving to my program. That is our use case, too. A blob file is a binary representation of a file in memory. If you add a blob file without a counterpart existing on disk the file will only exist in memory. As soon as you call createMount the engine will write to the specified path with blob files having a higher priority than files on disk. Therefore, no file will be written to disk. At least thats my understanding of the engine internals.
Pierre_Bultingaire Posted May 24, 2022 Author Posted May 24, 2022 Quote Can you share a code sample? std::string absolute_path = "D:/absolute/path"; auto virtual_path = folderName + "/"; auto umount_filepath = virtual_path + folderName + ".umount"; auto blob = Unigine::FileSystem::addBlobFile(umount_filepath.c_str()); auto mount = Unigine::FileSystem::createMount(absolute_path.c_str(), virtual_path.c_str(), Unigine::FileSystemMount::ACCESS_READONLY); According to your description of blob files, the .umount file will be created in memory and FileSystem::createMount will return nullptr because the "file" is already created. Is there is way to dynamically specify the content (json) of the umount blobFile? Thank you Pierre
devrom Posted May 24, 2022 Posted May 24, 2022 (edited) auto virtual_path = folderName + "/"; auto umount_filepath = virtual_path + folderName + ".umount"; These paths need to be identical except for the extension. The root of your mount starts from the umount file. I think your virtual_path should be: folderName + "/" + folderName Edited May 24, 2022 by devrom 1
Pierre_Bultingaire Posted May 24, 2022 Author Posted May 24, 2022 We found the issue, we just replaced the virtual_path by the umount_filepath to have the same path like you said. Thanks!
Recommended Posts