Feature Request:Data Folder
-
@Lindon Not sure I'm on the right way, but you can create the folders at install time before the plugin is launched for the first time, so you have the possibility to place the json with the installer
-
@ustk yes clearly I could do this in the installer. Im trying NOT to do that. The extensions folder is a solution though.
-
@Lindon You'll need to do a similar custom installer thing with expansions too since there is no in-built expansion installer.
-
@d-healey -- oh no! really? damn. OK @Christoph-Hart back to my original feature request then, can we have a way to ship , within the normal compile - ship process, a folder of "useful stuff" for a given product.
-
I was going to create a new topic but then saw this one so I thought I'd revive it.
I have some data files (jsons) that I don't want to include as script files and I don't want to put them in the user presets folder (because that's a weird place to put them).
These files are not part of an expansion.
Expansions have an additional source code folder where we can put arbitrary files which we can access at run-time. Could this be extended to the project's additional source code folder? Maybe a sub-folder called
data
or something. And we'd get a function likeEngine.listDataFiles()
like we have for expansions. -
@d-healey said in Feature Request:Data Folder:
I was going to create a new topic but then saw this one so I thought I'd revive it.
I have some data files (jsons) that I don't want to include as script files and I don't want to put them in the user presets folder (because that's a weird place to put them).
These files are not part of an expansion.
Expansions have an additional source code folder where we can put arbitrary files which we can access at run-time. Could this be extended to the project's additional source code folder? Maybe a sub-folder called
data
or something. And we'd get a function likeEngine.listDataFiles()
like we have for expansions.@d-healey can you not use the File API to get this?
-
@Lindon I can achieve the goal of loading a json file using the File API but it's not the same as what I'm asking for ;)
To use the FileAPI I would have to know the location of the file, using some post install script hackery I could probably add the files to the user's system where I want them, but that's not as straightforward as just using
Engine.loadDataFile();
- Which for some reason looks in the user presets folder. -
@d-healey true enough..add my vote(again)
-
What's wrong with
FileSystem.getFolder(FileSystem.AppData).goCrazy()
-
@Christoph-Hart Scroll up to my last post ;)
With the additional source code folder I add the file at the time I create my plugin. With the appdata method I have to run a separate post install script to add the files where I want them.
If I put the files inside the user presets folder are they automatically unpacked when the user runs the plugin?
-
Still don't understand the problem.
- If you don't want to include the files in your plugin, you need to copy them with the installer
- If you don't want to copy them in the installer, you need to include the files in your plugin (and extract them on the first startup when they are not there).
-
@Christoph-Hart said in Feature Request:Data Folder:
- If you don't want to copy them in the installer, you need to include the files in your plugin (and extract them on the first startup when they are not there).
This is what I want - are you saying if I put data files inside the userPresets folder then they will be extracted along with the user presets when the plugin is first launched? If I add new files in a future update will they also be extracted?
-
@d-healey No you need to implement this yourself.
const var dataFile = FileSystem.getFolder(FileSystem.AppData).getChildFile("MyData.json"); const var initialData = { "Something": true }; if(!dataFile.existsAsFile()) { dataFile.writeObject(initialData); }
-
@d-healey -yeah its a right pain to have to do every time you want some data shipping with you product ...
@Christoph-Hart - whats this?
.existsAsFile()
-
@Christoph-Hart If I put data files in the UserPresets folder I can access them with
Engine.loadFromJSON()
can't I? This has been here long before the File/FileSystem APIs. -
@Lindon sorry, meant
isFile()
.If I put data files in the UserPresets folder I can access them with Engine.loadDataFile() can't I?
Yes, but that's ancient and useless. :)
-
@Christoph-Hart lol How about redirecting the ancient and useless function to the
additionalSourceCode
folder so it works the same as it does for expansions? :) Then I don't have to mess about with post install scripts and the file/filesystem api. -
@d-healey no. AdditionalSourceCode is additional source code that gets compiled. Why would I include that folder into the binary?
-
@Christoph-Hart said in Feature Request:Data Folder:
@d-healey no. AdditionalSourceCode is additional source code that gets compiled. Why would I include that folder into the binary?
Hmm I'm thinking of how it works for expansions where we can put any files and access them with the
.loadDataFile
function. We don't have anything similar when not using expansions. -
@d-healey yes but this is because expansions can‘t contain scripts so it‘s a fallback solution.