Comments (4)
It looks like I have actually put some thought into this one previously, #771 😅
from stereokit.
This is actually the expected behavior! The "Assets folder path" is a trick used to help prevent needing different file names on different platforms, which is why file names behave fine for Assets. But for a function as generic as Platform.ReadFileBytes
, this trick could be problematic, so I didn't add it here.
The main thing here is that on Android, myfile.bin
is not exactly a file, it's an asset that's packed in your APK. I don't believe it's accessible by regular file IO functions! Instead, Android uses the AssetManager to read these, and they "aren't in a folder", which is why you just use the filename here instead of the "Assets/" path. Platform.ReadFileBytes
does include calls to the AssetManager to enable you to read these "assets, not files", but also calls to regular file IO functions to read those too.
It's definitely confusing, and I do believe Platform.ReadFileBytes is due for some revision. I just haven't decided exactly how to revise this in a way that isn't also confusing in other contexts! Maybe I'm overthinking it and the solution is not all that complicated 😅 I dunno! I'll try and take a look at this soon.
from stereokit.
The main thing here is that on Android,
myfile.bin
is not exactly a file, it's an asset that's packed in your APK. I don't believe it's accessible by regular file IO functions!
Right, I figured something like this 😄
It's definitely confusing, and I do believe Platform.ReadFileBytes is due for some revision. I just haven't decided exactly how to revise this in a way that isn't also confusing in other contexts!
Perhaps having a renamed/dedicated ReadAssetFileBytes(filename)
would be an option, to at least take away the confusion on what exactly can be read and how. This call would always only read the contents of a "file" directly under the Assets dir, so can't navigate to a higher relative path.
Apart from that could be a call to read a regular file, where filename is some form of platform-native path. That at least still provides an abstraction for file I/O over the underlying platform, which can be a nice thing.
from stereokit.
Related Issues (20)
- Unable to trigger sphere_point_contains and bounds_point_contains HOT 2
- Is there a built-in way to make a window follow you? HOT 1
- Add overload to Model Ray intersection to return the relevant ModelNode
- Texture formats on Quest
- Update partial rect of `Tex`
- OriginMode strange behavior on Quest HOT 6
- Why does Stereokit not have a gesture model on Snapdragon Spaces HOT 2
- Hyphens in directory name not handled well by dotnet new HOT 2
- `Renderer.RenderTo` results in y-inverted image with Android HOT 2
- How Stereokit interacts with Unity?
- Need some way of loading a GLSL shader directly instead of converting from HLSL, or a binding in skshaderc for GLSL samplerExternalOES HOT 4
- Unicode rendering missing character in Linux simulator HOT 2
- How to use Stereokit to develop overlay applications?How Stereokit interacts with OpenXL?
- UIButton:How to change the background color of a button to an custom image, and how to change the window background to transparent? HOT 1
- Hand tracking problems when piching to grab an object HOT 3
- Segfault when reading gltf using EXT_meshopt_compression / ... HOT 1
- Add Window UIMove mode: face user, but rotate around Y only HOT 3
- How to instantly switch between VST and VR modes
- Ready Player Me GLTFs pack data in a way SK doesn't recognize
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from stereokit.