Coder Social home page Coder Social logo

opencage / cathodelib Goto Github PK

View Code? Open in Web Editor NEW
26.0 5.0 0.0 5.11 MB

A C# library supporting a wide range of conventions and file formats for Alien: Isolation.

Home Page: https://www.nuget.org/packages/CathodeLib/

License: MIT License

C# 100.00% Batchfile 0.01%
alien-isolation modding cathode-engine unity

cathodelib's Introduction

CathodeLib - Alien: Isolation C# Library

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 supports CREATE, LOAD, and/or SAVE 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 the SAVE 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...

For scripting:

  • CATHODE.Commands handles COMMANDS.PAK files
    • The file consists of Composite scripts which hold various Entity types for logic
      • FunctionEntity = functions which execute functionality, with parameters and links to child Entity objects
      • VariableEntity = variables which can be used externally as parameters on an instanced Composite via a FunctionEntity
      • ProxyEntity = a proxy of a FunctionEntity within another Composite, useful for acting on events in another composite
      • OverrideEntity = an override of a parameter value on an entity within an instanced Composite in this Composite

Check out a full overview of the Commands structure on the Wiki, and follow this handy guide to create your first script!

For assets:

  • CATHODE.PAK2 handles UI.PAK and ANIMATIONS.PAK files
  • CATHODE.Models handles LEVEL_MODELS.PAK files, paired with a MODELS_LEVEL.BIN
  • CATHODE.Textures handles LEVEL_TEXTURES.ALL.PAK files, paired with a LEVEL_TEXTURE_HEADERS.ALL.BIN
  • CATHODE.LEGACY.Assets.Shaders handles various SHADERS PAK files (WIP)

For level data and mappings:

  • CATHODE.Movers handles MODELS.MVR files
  • CATHODE.RenderableElements handles REDS.BIN files
  • CATHODE.Resources handles RESOURCES.BIN files
  • CATHODE.Materials handles MODELS.MTL files
  • CATHODE.MaterialMappings handles MATERIAL_MAPPINGS.PAK files
  • CATHODE.EnvironmentMaps handles ENVIRONMENTMAP.BIN files
  • CATHODE.EnvironmentAnimations handles ENVIRONMENT_ANIMATION.DAT files
  • CATHODE.PathBarrierResources handles PATH_BARRIER_RESOURCES files
  • CATHODE.PhysicsMaps handles PHYSICS.MAP files
  • CATHODE.Lights handles LIGHTS.BIN files
  • CATHODE.Collisions handles COLLISION.BIN files
  • CATHODE.CollisionMaps handles COLLISION.MAP files
  • CATHODE.AnimationStrings handles ANIM_STRING_DB.BIN and ANIM_STRING_DB_DEBUG.BIN files
  • CATHODE.EXPERIMENTAL.NavigationMesh handles NAV_MESH files (experimental)
  • CATHODE.SoundNodeNetwork handles SNDNODENETWORK.DAT files
  • CATHODE.SoundLoadZones handles SOUNDLOADZONES.DAT files
  • CATHODE.SoundFlashModels handles SOUNDFLASHMODELS.DAT files
  • CATHODE.SoundEventData handles SOUNDEVENTDATA.DAT files
  • CATHODE.SoundEnvironmentData handles SOUNDENVIRONMENTDATA.DAT files
  • CATHODE.SoundDialogueLookups handles SOUNDDIALOGUELOOKUPS.DAT files
  • CATHODE.SoundBankData handles SOUNDBANKDATA.DAT files
  • CATHODE.CharacterAccessorySets handles CHARACTERACCESSORYSETS.BIN files
  • CATHODE.CustomCharacterInfo handles CUSTOMCHARACTERINFO.BIN files
  • CATHODE.CustomCharacterConstrainedComponents handles CUSTOMCHARACTERCONSTRAINEDCOMPONENTS.BIN files
  • CATHODE.Strings handles *.TXT files

For configurations:

  • CATHODE.BML handles any .BML files
    • Get/set content as an XmlDocument via BML.Content

For saves:

  • CATHODE.ProgressionSave handles PROGRESSION.AIS files
  • CATHODE.EXPERIMENTAL.MissionSave handles *.AIS files (experimental)

CathodeLib is in no way related to (or endorsed by) Creative Assembly or SEGA.

cathodelib's People

Contributors

mattfiler avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.