Skip to content

The big refactor

Latest
Compare
Choose a tag to compare
@snake-biscuits snake-biscuits released this 28 Mar 09:55
· 456 commits to master since this release

After almost 2 years, I finally got a fresh release out.
Hopefully the next release won't take as long

TL;DR

Totally changed how LumpClasses work (SpecialLumpClasses are next)
Rebuilt branch script detection (still incomplete)
Split handles for internal & external lumps (can see both at once)
Massively reduced RAM consumption (more reductions to come)
Added branch scripts for pretty much every game/engine I want to support

New

  • Added support for Ritual Entertainment's Ubertools (Quake III Engine Branch)
  • If autoload cannot find the specified .bsp file a UserWarning is issued
  • Support for ValveBsp & RespawnBsp Xbox360 formats (.360.bsp)

Changed

  • Moved physics SpecialLumpClasses to branches/shared/physics.py
  • Fixed up GAME_LUMP.sprp errors across source, left4dead & source_2013
  • Updated both base.Struct & base.MappedArray
    • built in asserts to verify accurate definitions
    • rebuilt __init__ method, can now generate blank
    • added _bitfields attr, defines child base.BitFields
    • added _classes attr, overrides class of named attr
    • added as_bytes method
    • added as_cpp method
    • added from_bytes method
    • added from_stream method
    • added from_tuple method (replaces old __init__ behaviour)
  • Added base.BitField for more reliable bitfield mapping
    • behaves similarly to base.MappedArray
  • Completely refactored branch_script detection
    • only file_magic & bsp_version matter (unless .d3dbsp)
    • load_bsp now only accepts a branch_script as it's optional argument
  • RespawnBsp .ent file headers moved to RespawnBsp.entity_headers
  • RespawnBsp .bsp_lump moved to bsp.external
    • Uses the respawn.ExternalLumpManager
    • .bsp_lump are only opened when accesed via bsp.external.LUMP_NAME
  • "MegaTest" RAM usage significantly reduced
  • ArkaneBsp has been rolled into ValveBsp
  • LumpHeader now use bsp.branch.LumpHeader instead of collections.namedtuple
  • Support for ValveBsp & RespawnBsp x360 (big-endian) formats
  • Caught some unexpected behaviour with GAME_LUMP_CLASS dict deepcopies

Newly Supported Branches

  • Infinity Ward Engine
    • Call of Duty 2
    • Call of Duty 4: Modern Warfare
  • Ion Storm IdTech
    • Daikatana
  • Respawn Engine
    • Titanfall (Xbox360)
  • Source Engine
    • Half-Life 2 (Xbox)
    • Infra
    • Momentum Mod
    • Orange Box (Xbox360)
    • Portal 2 (Xbox360)
    • Tactical Intervention
    • Vampire the Masquerade: Bloodlines
  • Ubertools

Updated Support

  • Id Tech 3
    • Quake III Arena
    • Raven Software Titles
  • Infinity Ward Engine
    • Call of Duty
  • Quake Engine
    • Hexen II
  • Source Engine
  • Titanfall Engine

Merged Pull Requests

  • Added missing slot for apex_legends VertexLitBump by @r-ex in #18
  • add plane to CM_BRUSHES by @BobTheBob9 in #22

New Contributors

Full Changelog: v0.3.1...v0.4.0