@@ -19,58 +19,94 @@ Most parsers provide access to the file's content via an `Entries` parameter, ho
1919
2020Note: in debug mode the parsers will all fail hard, however in release mode all load/save calls are wrapped in try/catch statements.
2121
22- ** Parsers currently available in CathodeLib...**
23-
24- ## For scripting:
25- - ` CATHODE.Commands ` handles ` COMMANDS.PAK ` files
26- - The file consists of ` Composite ` scripts which hold various ` Entity ` types for logic
22+ ## Parsers currently available in CathodeLib:
23+ - ` CATHODE.AlphaLightLevel ` handles level ` WORLD/ALPHALIGHT_LEVEL.BIN ` files
24+ - This is a A16B16G16R16F image with a specified resolution, baking alpha light data for the level
25+ - ` CATHODE.AnimationStrings ` handles ` ANIM_STRING_DB.BIN ` and ` ANIM_STRING_DB_DEBUG.BIN ` files within `ANIMATION.PAK
26+ - This is a database of hashed animation-related strings, and their associated hashes
27+ - ` CATHODE.AnimClipDB ` handles ` ANIM_CLIP_DB.BIN ` files within ` ANIMATION.PAK `
28+ - This is a database of animation clips available by character type (WIP)
29+ - ` CATHODE.BML ` handles any ` .BML ` files
30+ - Get/set content as an ` XmlDocument ` via ` BML.Content `
31+ - ` CATHODE.CharacterAccessorySets ` handles level ` WORLD/CHARACTERACCESSORYSETS.BIN ` files
32+ - This is a collection of metadata for Character entities within the level (e.g. gender, build, assets, etc)
33+ - ` CATHODE.CollisionMaps ` handles level ` WORLD/COLLISION.MAP ` files
34+ - This defines COLLISION_MAPPING resource data for collision barriers, including zone metadata
35+ - ` CATHODE.Collisions ` handles level ` WORLD/COLLISION.BIN ` files
36+ - This defines weighted collision data for character hitboxes
37+ - ` CATHODE.Commands ` handles level ` WORLD/COMMANDS.PAK ` and/or ` WORLD/COMMANDS.BIN ` files
38+ - This consists of ` Composite ` scripts which hold various ` Entity ` types for logic
2739 - `FunctionEntity` = functions which execute functionality, with parameters and links to child `Entity` objects
2840 - `VariableEntity` = variables which can be used externally as parameters on an instanced `Composite` via a `FunctionEntity`
2941 - `ProxyEntity` = a proxy of a `FunctionEntity` within another `Composite`, useful for acting on events in another composite
3042 - `OverrideEntity` = an override of a parameter value on an entity within an instanced `Composite` in this `Composite`
31-
32- Check out a full overview of the Commands structure [ on the Wiki] ( https://github.com/OpenCAGE/CathodeLib/wiki/Cathode-scripting-overview ) , and follow [ this handy guide] ( https://github.com/OpenCAGE/CathodeLib/wiki/Creating-your-first-Cathode-script ) to create your first script!
33-
34- ## For assets:
43+ - A `Utils` member provides various utilities for working with Commands data via data tables appended to the saved file
44+ - ` CATHODE.CustomCharacterAssetData ` handles the ` CHR_INFO/CUSTOMCHARACTERASSETDATA.BIN ` file
45+ - This defines the tints and decals that character asset types use
46+ - ` CATHODE.CustomCharacterConstrainedComponents ` handles the ` CHR_INFO/CUSTOMCHARACTERCONSTRAINEDCOMPONENTS.BIN ` file
47+ - This defines the character parameters that character component types use
48+ - ` CATHODE.CustomCharacterInfo ` handles the ` CHR_INFO/CUSTOMCHARACTERINFO.BIN ` file
49+ - This defines base character presets, including skeletons and accessories
50+ - ` CATHODE.EnvironmentAnimations ` handles level ` WORLD/ENVIRONMENT_ANIMATION.DAT ` files
51+ - This defines environmental animation data (WIP)
52+ - ` CATHODE.EnvironmentMaps ` handles level ` WORLD/ENVIRONMENTMAP.BIN ` files
53+ - This maps instanced entities with environment map textures
54+ - ` CATHODE.Lights ` handles level ` WORLD/LIGHTS.BIN ` files
55+ - This defines various lighting data for instanced entities (although, modifying it appears to have no visual impact)
56+ - ` CATHODE.MaterialMappings ` handles level ` WORLD/MATERIAL_MAPPINGS.PAK ` files
57+ - This defines material remappings, used for modifying materials on instanced entities (WIP)
58+ - ` CATHODE.Materials ` handles level ` RENDERABLE/LEVEL_MODELS.MTL ` & ` LEVEL_MODELS.CST ` files
59+ - This defines material data, including texture pointers and constant buffers (WIP)
60+ - ` CATHODE.EXPERIMENTAL.MissionSave ` handles ` *.AIS ` files
61+ - This handles save file data (WIP)
62+ - ` CATHODE.Models ` handles level ` RENDERABLE/LEVEL_MODELS.PAK ` & ` MODELS_LEVEL.BIN ` files
63+ - This contains model mesh data in a CS2 format
64+ - ` CATHODE.MorphTargets ` handles level ` WORLD/MORPH_TARGET_DB.BIN ` files
65+ - This defines morph data for faces (WIP)
66+ - ` CATHODE.Movers ` handles level ` WORLD/MODELS.MVR ` files
67+ - This defines instance specific info for entities, including constant buffers and renderables (WIP)
68+ - ` CATHODE.EXPERIMENTAL.NavigationMesh ` handles level ` WORLD/STATE_*/NAV_MESH ` files
69+ - This contains the navmesh for the level state, with associated properties (WIP)
3570- ` CATHODE.PAK2 ` handles ` UI.PAK ` and ` ANIMATIONS.PAK ` files
36- - ` CATHODE.Models ` handles ` LEVEL_MODELS.PAK ` files, paired with a ` MODELS_LEVEL.BIN `
37- - ` CATHODE.Textures ` handles ` LEVEL_TEXTURES.ALL.PAK ` files, paired with a ` LEVEL_TEXTURE_HEADERS.ALL.BIN `
38- - ` CATHODE.LEGACY.Assets.Shaders ` handles various ` SHADERS ` ` PAK ` files (WIP)
39-
40- ## For level data and mappings:
41- - ` CATHODE.Movers ` handles ` MODELS.MVR ` files
42- - ` CATHODE.RenderableElements ` handles ` REDS.BIN ` files
43- - ` CATHODE.Resources ` handles ` RESOURCES.BIN ` files
44- - ` CATHODE.Materials ` handles ` MODELS.MTL ` files
45- - ` CATHODE.MaterialMappings ` handles ` MATERIAL_MAPPINGS.PAK ` files
46- - ` CATHODE.EnvironmentMaps ` handles ` ENVIRONMENTMAP.BIN ` files
47- - ` CATHODE.EnvironmentAnimations ` handles ` ENVIRONMENT_ANIMATION.DAT ` files
48- - ` CATHODE.PathBarrierResources ` handles ` PATH_BARRIER_RESOURCES ` files
49- - ` CATHODE.PhysicsMaps ` handles ` PHYSICS.MAP ` files
50- - ` CATHODE.Lights ` handles ` LIGHTS.BIN ` files
51- - ` CATHODE.Collisions ` handles ` COLLISION.BIN ` files
52- - ` CATHODE.CollisionMaps ` handles ` COLLISION.MAP ` files
53- - ` CATHODE.AnimationStrings ` handles ` ANIM_STRING_DB.BIN ` and ` ANIM_STRING_DB_DEBUG.BIN ` files
54- - ` CATHODE.EXPERIMENTAL.NavigationMesh ` handles ` NAV_MESH ` files (experimental)
55- - ` CATHODE.SoundNodeNetwork ` handles ` SNDNODENETWORK.DAT ` files
56- - ` CATHODE.SoundLoadZones ` handles ` SOUNDLOADZONES.DAT ` files
57- - ` CATHODE.SoundFlashModels ` handles ` SOUNDFLASHMODELS.DAT ` files
58- - ` CATHODE.SoundEventData ` handles ` SOUNDEVENTDATA.DAT ` files
59- - ` CATHODE.SoundEnvironmentData ` handles ` SOUNDENVIRONMENTDATA.DAT ` files
60- - ` CATHODE.SoundDialogueLookups ` handles ` SOUNDDIALOGUELOOKUPS.DAT ` files
61- - ` CATHODE.SoundBankData ` handles ` SOUNDBANKDATA.DAT ` files
62- - ` CATHODE.CharacterAccessorySets ` handles ` CHARACTERACCESSORYSETS.BIN ` files
63- - ` CATHODE.CustomCharacterInfo ` handles ` CUSTOMCHARACTERINFO.BIN ` files
64- - ` CATHODE.CustomCharacterConstrainedComponents ` handles ` CUSTOMCHARACTERCONSTRAINEDCOMPONENTS.BIN ` files
65- - ` CATHODE.Strings ` handles ` *.TXT ` files
66-
67- ## For configurations:
68- - ` CATHODE.BML ` handles any ` .BML ` files
69- - Get/set content as an ` XmlDocument ` via ` BML.Content `
70-
71- ## For saves:
71+ - This allows parsing of the PAK2 archive format, containing embedded files
72+ - ` CATHODE.PathBarrierResources ` handles level ` WORLD/PATH_BARRIER_RESOURCES ` files
73+ - This defines the navmesh barrier resources (WIP)
74+ - ` CATHODE.PhysicsMaps ` handles level ` WORLD/PHYSICS.MAP ` files
75+ - This defines DYNAMIC_PHYSICS_SYSTEM resource data for composite instances with physics systems
7276- ` CATHODE.EXPERIMENTAL.ProgressionSave ` handles ` PROGRESSION.AIS ` files
73- - ` CATHODE.EXPERIMENTAL.MissionSave ` handles ` *.AIS ` files (experimental)
77+ - This handles progression save file data (WIP)
78+ - ` CATHODE.RadiosityInstanceMap ` handles level ` RENDERABLE/RADIOSITY_INSTANCE_MAP.TXT ` files
79+ - This contains mappings between lightmap transforms in RADIOSITY_RUNTIME to resource indexes
80+ - ` CATHODE.RenderableElements ` handles level ` WORLD/REDS.BIN ` files
81+ - This defines all renderable elements in a level - a model index with associated material index and count
82+ - ` CATHODE.Resources ` handles level ` WORLD/RESOURCES.BIN ` files
83+ - This defines all available resources within the level
84+ - ` CATHODE.Shaders ` handles level ` RENDERABLE/LEVEL_SHADERS_DX11.PAK ` & ` LEVEL_SHADERS_DX11_BIN.PAK ` & ` LEVEL_SHADERS_DX11_IDX_REMAP.PAK ` files
85+ - This defines all shaders within the level and additional metadata (WIP)
86+ - ` CATHODE.SkeleDB ` handles the ` ANIM_SYS/SKELE/DB.BIN ` file within ` ANIMATION.PAK `
87+ - This defines all available skeletons and mappings
88+ - ` CATHODE.SoundBankData ` handles level ` WORLD/SOUNDBANKDATA.DAT ` files
89+ - This defines all soundbanks available to be utilised within the game
90+ - ` CATHODE.SoundDialogueLookups ` handles level ` WORLD/SOUNDDIALOGUELOOKUPS.DAT ` files
91+ - This defines a lookup table for animation/sound hashes within soundbanks
92+ - ` CATHODE.SoundEnvironmentData ` handles level ` WORLD/SOUNDENVIRONMENTDATA.DAT ` files
93+ - This defines all reverb types that are used within the level
94+ - ` CATHODE.SoundEventData ` handles level ` WORLD/SOUNDEVENTDATA.DAT ` files
95+ - This defines all sound events available to be utilised within the game
96+ - ` CATHODE.SoundFlashModels ` handles level ` WORLD/SOUNDFLASHMODELS.DAT ` files
97+ - This maps flash texture resource IDs with the model IDs that use them within the level
98+ - ` CATHODE.SoundLoadZones ` handles level ` WORLD/SOUNDLOADZONES.DAT ` files
99+ - This specifies all soundbanks that are used within the level
100+ - ` CATHODE.SoundNodeNetwork ` handles level ` WORLD/SOUNDNODENETWORK.DAT ` files
101+ - This defines the layout of the sound node network within the level, used for sound propagation (WIP)
102+ - ` CATHODE.TextDB ` handles ` *.TXT ` files within ` TEXT ` directories
103+ - This defines a database of subtitles, which are saved per language
104+ - ` CATHODE.Textures ` handles level ` WORLD/LEVEL_TEXTURES.ALL.PAK ` & ` LEVEL_TEXTURE_HEADERS.ALL.BIN ` files
105+ - This contains all textures used within the level with additional metadata
106+ - ` CATHODE.EXPERIMENTAL.Traversals ` handles level ` WORLD/STATE_*/TRAVERSAL ` files
107+ - This contains traversal metadata for the level (WIP)
108+
109+ Check out a full overview of the Commands structure [ on the Wiki] ( https://github.com/OpenCAGE/CathodeLib/wiki/Cathode-scripting-overview ) , and follow [ this handy guide] ( https://github.com/OpenCAGE/CathodeLib/wiki/Creating-your-first-Cathode-script ) to create your first script!
74110
75111---
76112
0 commit comments