CathodeLib is an open source library providing functionality to handle formats from the Cathode game engine, for modding Alien: Isolation. Used to power OpenCAGE!
Available as a NuGet package, or alternatively just include this repo as a submodule in your project!
All parsers inherit from a base CathodeFile
class which provides:
- A static
Implementation
flag, defining if the parser supportsCREATE
,LOAD
, and/orSAVE
functionality for the file. Parsers which support all three have the ability to generate files from scratch. - A
Loaded
bool, which is true if the parser has populated its values from a pre-existing file that it has loaded. If false, the parser is creating a new file on save. - A
Filepath
string, which is the filepath that the parser is using to either load or save the file. - A
Save
function, which will save the file out if the parser has theSAVE
flag. This function can optionally be given a new filepath to save the file to. Returns false if saving fails. - Events for
OnLoadBegin
,OnLoadSuccess
,OnSaveBegin
,OnSaveSuccess
which fire at load/save start and successful completion respectively, with the appropriate filepath as an arg.
Most parsers provide access to the file's content via an Entries
parameter, however this can vary per implementation.
Note: in debug mode the parsers will all fail hard, however in release mode all load/save calls are wrapped in try/catch statements.
Parsers currently available in CathodeLib...
CATHODE.Commands
handlesCOMMANDS.PAK
files- The file consists of
Composite
scripts which hold variousEntity
types for logicFunctionEntity
= functions which execute functionality, with parameters and links to childEntity
objectsVariableEntity
= variables which can be used externally as parameters on an instancedComposite
via aFunctionEntity
ProxyEntity
= a proxy of aFunctionEntity
within anotherComposite
, useful for acting on events in another compositeOverrideEntity
= an override of a parameter value on an entity within an instancedComposite
in thisComposite
- The file consists of
Check out a full overview of the Commands structure on the Wiki, and follow this handy guide to create your first script!
CATHODE.PAK2
handlesUI.PAK
andANIMATIONS.PAK
filesCATHODE.Models
handlesLEVEL_MODELS.PAK
files, paired with aMODELS_LEVEL.BIN
CATHODE.Textures
handlesLEVEL_TEXTURES.ALL.PAK
files, paired with aLEVEL_TEXTURE_HEADERS.ALL.BIN
CATHODE.LEGACY.Assets.Shaders
handles variousSHADERS
PAK
files (WIP)
CATHODE.Movers
handlesMODELS.MVR
filesCATHODE.RenderableElements
handlesREDS.BIN
filesCATHODE.Resources
handlesRESOURCES.BIN
filesCATHODE.Materials
handlesMODELS.MTL
filesCATHODE.MaterialMappings
handlesMATERIAL_MAPPINGS.PAK
filesCATHODE.EnvironmentMaps
handlesENVIRONMENTMAP.BIN
filesCATHODE.EnvironmentAnimations
handlesENVIRONMENT_ANIMATION.DAT
filesCATHODE.PathBarrierResources
handlesPATH_BARRIER_RESOURCES
filesCATHODE.PhysicsMaps
handlesPHYSICS.MAP
filesCATHODE.Lights
handlesLIGHTS.BIN
filesCATHODE.Collisions
handlesCOLLISION.BIN
filesCATHODE.CollisionMaps
handlesCOLLISION.MAP
filesCATHODE.AnimationStrings
handlesANIM_STRING_DB.BIN
andANIM_STRING_DB_DEBUG.BIN
filesCATHODE.EXPERIMENTAL.NavigationMesh
handlesNAV_MESH
files (experimental)CATHODE.SoundNodeNetwork
handlesSNDNODENETWORK.DAT
filesCATHODE.SoundLoadZones
handlesSOUNDLOADZONES.DAT
filesCATHODE.SoundFlashModels
handlesSOUNDFLASHMODELS.DAT
filesCATHODE.SoundEventData
handlesSOUNDEVENTDATA.DAT
filesCATHODE.SoundEnvironmentData
handlesSOUNDENVIRONMENTDATA.DAT
filesCATHODE.SoundDialogueLookups
handlesSOUNDDIALOGUELOOKUPS.DAT
filesCATHODE.SoundBankData
handlesSOUNDBANKDATA.DAT
filesCATHODE.CharacterAccessorySets
handlesCHARACTERACCESSORYSETS.BIN
filesCATHODE.CustomCharacterInfo
handlesCUSTOMCHARACTERINFO.BIN
filesCATHODE.CustomCharacterConstrainedComponents
handlesCUSTOMCHARACTERCONSTRAINEDCOMPONENTS.BIN
filesCATHODE.Strings
handles*.TXT
files
CATHODE.BML
handles any.BML
files- Get/set content as an
XmlDocument
viaBML.Content
- Get/set content as an
CATHODE.ProgressionSave
handlesPROGRESSION.AIS
filesCATHODE.EXPERIMENTAL.MissionSave
handles*.AIS
files (experimental)
CathodeLib is in no way related to (or endorsed by) Creative Assembly or SEGA.