Overview
TheResourceManager class handles low-level access to game resource data stored in CAS (Content Addressable Storage) archives. It manages catalog loading, encryption, and data decompression.
Constructor
constructor
Initialization
void
Initializes the resource manager and loads all catalogsThis method:
- Binds compression libraries (ZStd, Oodle)
- Loads all CAS catalogs from native_data and native_patch
- Loads encryption keys if required
- Sets up decompression dictionaries for specific games
Resource Data Access
Get Resource Data (Unpatched)
Stream
Loads resource data from CAS using SHA1 hashReturns: Decompressed and decrypted resource data stream, or
Sha1
required
SHA1 hash of the resource
null if not found or encrypted without keyGet Resource Data (Patched)
Stream
Get Resource Data (SuperBundle)
Stream
Get Resource Data (Cache)
Stream
Get Resource Data (Buffer)
Raw Data Access
The following methods return compressed/encrypted data without decompression:Stream
Gets raw (compressed/encrypted) resource dataUseful for:
- Extracting exact data as stored
- Custom decompression logic
- Data analysis
Utility Methods
Sha1
Gets the base SHA1 for a patched resourceReturns: Base SHA1, or the input SHA1 if not patched
Sha1
required
Potentially patched resource SHA1
Logging
void
Clears the current logger
Usage Examples
Resource Types
The ResourceManager handles various resource types defined inResourceType enum:
- Texture - Image/texture data
- MeshSet - 3D mesh geometry
- IShaderDatabase - Compiled shaders
- LocalizedStringResource - Localized text
- CompiledLuaResource - Lua scripts
- SwfMovie - UI Flash files
Data Locations
Resources can be stored in different locations:Performance Notes
Caching: The ResourceManager doesn’t cache decompressed data. For frequently accessed resources, cache the decompressed streams in your code.
See Also
- AssetManager API - Higher-level asset management
- FileSystem API - File system operations
- FrostySdk Namespace - Core SDK types