The big refactor
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 acrosssource
,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 childbase.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
- behaves similarly to
- Completely refactored
branch_script
detection- only
file_magic
&bsp_version
matter (unless.d3dbsp
) load_bsp
now only accepts abranch_script
as it's optional argument
- only
- RespawnBsp
.ent
file headers moved toRespawnBsp.entity_headers
- RespawnBsp
.bsp_lump
moved tobsp.external
- Uses the
respawn.ExternalLumpManager
.bsp_lump
are only opened when accesed viabsp.external.LUMP_NAME
- Uses the
- "MegaTest" RAM usage significantly reduced
ArkaneBsp
has been rolled intoValveBsp
LumpHeader
now usebsp.branch.LumpHeader
instead ofcollections.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
- @r-ex made their first contribution in #18
- @BobTheBob9 made their first contribution in #22
Full Changelog: v0.3.1...v0.4.0