Skip to content

Latest commit

 

History

History
282 lines (241 loc) · 14 KB

changelog.rst

File metadata and controls

282 lines (241 loc) · 14 KB

Changelog

Version 2.3.11

  • Include the docs and tests in the source distribution.
  • Add support for detecting and packing weapon scripts.
  • Make custom model gibs inherit skinset when packing.
  • Add :pysrctools.bsp.BModel.clear_physics(), to delete physics data for a brush model.
  • Add :pysrctools.Keyvalues.LeafKeyvalueError, raised when block-only operations are attempted on leaf keyvalues. This improves the messages raised and makes them consistent.
  • Fix :pysrctools.vtf.Frame indexing behaviour. It would access totally incorrect pixels.
  • Correctly read/write L4D2's BSP format.

Version 2.3.10

  • Fix :pysrctools.vtf.Frame.copy_from() not clearing cached unparsed file data. If the VTF was parsed from a file, this could case changes to be overwritten with the original data.
  • Add :pysrctools.vtf.Frame.fill(), for filling a frame with a constant colour.
  • Add support for Chaos non-uniform static prop scaling (by @ozxybox).
  • Correctly handle non-float numeric values being passed to various :pysrctools.math operations.
  • Compute the total vertex count for parsed models.

Version 2.3.9

  • Fix Cython version of :pyVec.join() <srctools.math.VecBase.join> using a default of {x} {y} {z}, not {x}, {y}, {z}.
  • Added support for the Chaos BSP format (by @ozxybox).
  • Improve internal FGD database format to allow parsing entities as they are required. For best efficiency, use :pyEntityDef.engine_def() <srctools.fgd.EntityDef.engine_def> instead of :pyFGD.engine_dbase() <srctools.fgd.FGD.engine_dbase()> if possible.
  • Fix a few bugs with instance collapsing.

Version 2.3.8

  • Fix :pysrctools.logger discarding :external:pyMultiError (or its backport) if it bubbles up to the toplevel.
  • Tweak VMF localise() and translate() type hints to allow :py~srctools.math.FrozenVec as the origin.
  • Make movement and rotation of displacements work correctly.
  • Handle pitch keyvalues correctly when instancing, only rotating if it is a specific type.
  • Changed :pysrctools.instancing.collapse_one() to use the entclass database directly, deprecating the fgd parameter as a result.
  • Fix :pyBSP.surfedges <srctools.bsp.BSP.surfedges> incorrectly using edge 0, which may cause a single invisible triangle in maps.

Version 2.3.7

  • Removed some unusable constructor parameters from :pysrctools.vmf.VMF, since they required passing in an object which requires the not-yet-constructed :py~srctools.vmf.VMF as a parameter.
  • Renamed srctools.fgd.KeyValues to KVDef, so it is not confused with KV1 trees.
  • Replace on_error callback in :pysrctools.logger.init_logging() with error, which now takes just an :external:pyBaseException.
  • :py~srctools.surfaceprop.SurfaceProp has been rewritten to use attrs to simplify code.
  • Add :pysrctools.run.send_engine_command(), which executes console commands in a running Source game.
  • :py~srctools.math.Vec and :py~srctools.math.FrozenVec no longer inherits from :external:pytyping.SupportsRound, since typeshed updated the overloads for :external:pyround() to permit zero-arg calls to return a non-:external:pyint type.
  • Permit VMFs to accept frozen math classes directly as keyvalues.
  • Fix multiplying vectors and :pyVec.norm_mask() <srctools.math.VecBase.norm_mask()> not producing :py~srctools.math.FrozenVec.
  • Parse errors in BSP.ents are more informative and verbose.
  • Add an additional callback parameter to :pyPackList.pack_into_zip() <srctools.packlist.PackList.pack_into_zip()> to finely control which files are packed.
  • Implement vector and angle stringification manually, to ensure .0 prefixes are always removed.
  • Use :py~srctools.math.FrozenVec and :py~srctools.math.FrozenAngle in the :py~srctools.dmx module instead of :external:py~collections.namedtuple subclasses.
  • Upgrade :pysrctools.dmx.Time to a full class instead of a :external:pytyping.NewType.
  • Fix packlist logic inadvertently discarding skinset keyvalue hints when packing models.
  • Change behaviour of DMX name and id attributes to match game logic. name is actually a regular attribute, but the uuid has a unique type and so can coexist with an attribute of the same name.
  • Add support for Black Mesa's static prop format.
  • Support integer values for soundscript channels, instead of just CHAN_ constants.
  • Add a distinct exception (:py~srctools.filesys.RootEscapeError) for when ../ paths go above the root of a filesystem.

Version 2.3.6

  • Add ability to specify resources used in entities to the FGD file, move internal class resource definitions to the Hammer Addons repository.
  • Added new :pysrctools.fgd.EntityDef.get_resources() method, replacing fgd.entclass_*() methods.
  • When parsing VMF outputs, assume extraneous commas are part of the parameter.
  • Add :py~srctools.math.FrozenVec, :py~srctools.math.FrozenAngle and :py~srctools.math.FrozenMatrix - immutable versions of the existing classes. This is a far better version of Vec_tuple, which is now deprecated.
  • Build Python 3.11 wheels.
  • Drop dependency on atomicwrites, it is no longer being maintained.

Version 2.3.5

  • Expand on documentation, build into explicit docs files.
  • Fix :py!srctools.logging.LoggerAdapter.log being invalid in Python 3.7.
  • Make :pysrctools.fgd work when reloaded.
  • Remove blank srctools.choreo module.
  • Disable iterating on :pysrctools.math.Matrix, this is not useful.
  • Add iterable parameter to :pysrctools.dmx.Attribute.array(), for constructing arrays with values.
  • Fix DMX :external:pybool to :external:pyfloat conversions mistakenly returning :external:pyint instead.
  • Remove useless header_len attribute from :pysrctools.vpk.VPK.
  • Rename srctools.property_parser.Property to :pysrctools.keyvalues.Keyvalues, as well as :py~srctools.keyvalues.NoKeyError and :py~srctools.keyvalues.KeyValError.
  • Allow parsing :pysrctools.fgd.IODef types which normally are not allowed for I/O. This will be substituted when exporting.
  • Use __class__.__name__ in reprs, to better support subclasses.
  • Issue #14: Disable some size checks on LZMA decompression, so more TF2 maps can be parsed.

Version 2.3.4

  • Add public submodules to __all__.
  • Disable escapes when parsing gameinfo files.
  • Add unprefixed vtx files to :pysrctools.mdl.MDL_EXTS.
  • Skip empty folder/extension dicts when writing VPK files.
  • Clean up VPK fileinfo dicts when deleting files.
  • Default :pysrctools.fgd.IODef to :pysrctools.fgd.ValueTypes.VOID.
  • Sort tags when exporting FGDs, to make it determinstic.

Version 2.3.3

  • Writing out soundscript/particle cache can be non-atomic.
  • Vendor code from deprecated chunk.Chunk standard library class.
  • Fix bad use of builtin generics.

Version 2.3.2

  • Make particle systems use a cache file for the manifest too.
  • Make :pysrctools.fgd.FGD.engine_db() actually cache and copy the database.
  • Automatically add the update folder to searchpath precedence, fixing TeamSpen210/HammerAddons#164.
  • Make DMX scalar type deduction more strict (removing iterable -> vec support), making it typesafe.
  • Add :pysrctools.filesys.CACHE_KEY_INVALID.
  • Add :pysrctools.math.Matrix.from_angstr().

Version 2.3.1

  • Fix :pysrctools.vmf.Output.combine not handling times correctly.
  • :pysrctools.math.quickhull() is now public.
  • Add :pysrctools.bsp.BSP.is_cordoned_heuristic().
  • Restrict :pysrctools.bsp.Overlay.min_cpu, :py~srctools.bsp.Overlay.max_cpu, :py~srctools.bsp.Overlay.min_gpu and :py~srctools.bsp.Overlay.max_gpu to valid values.
  • Test against Python 3.11.
  • Read/write the :py~srctools.bsp.BSP_LUMPS.LEAFMINDISTTOWATER lump data into :pysrctools.bsp.VisLeaf.min_water_dist.
  • Read/write the :py~srctools.bsp.BSP_LUMPS.LEAFWATERDATA lump.
  • Copy flags when copying :pysrctools.bsp.TexInfo from an existing source.
  • :pysrctools.tokenizer.Tokenizer now handles universal newlines conversion.
  • Disallow newlines in keyvalues keys when parsing by default. This catches syntax errors earlier.
  • More :pysrctools.game.Game gameinfo.txt fields are now optional.

Version 2.3.0

  • Postcompiler code has been moved to HammerAddons.
  • Fix raw sound filenames not stripping special characters from the start when packing.
  • Allow :pysrctools.dmx.Color to omit alpha when parsed from strings, and roound/clamp values.
  • Handle INFRA's altered :pysrctools.bsp.Primitive lump.
  • Read soundscripts and breakable chunk files with code page 1252.
  • Handle TF2's LZMA compressed lumps.
  • Detect various alternate versions of :pysrctools.bsp.StaticProp lumps, and parse them.
  • :pysrctools.vmf.Entity now directly implements :external:pycollections.abc.MutableMapping. Direct access to the Entity.keys :external:pydict is deprecated.
  • Correctly handle proxy blocks in :py~srctools.vmt.VMT patch shaders.
  • DMX stub and null elements use an immutable subclass, instead of having elements be None-able.
  • Disallow entities to have a blank classname.
  • Elide long arrays in element reprs.
  • Add some additional logs when finding propcombine models fails.
  • Clean up :py!srctools.Property.build() API.
  • Make error messages more clear when :pysrctools.tokenizer.Tokenizer.error() is used directly with a :py~srctools.tokenizer.Token.
  • Include potential variables in :external:pyKeyError from :pysrctools.vmf.EntityFixup.substitute().
  • Remove support for deprecated imghdr module.
  • Upgrade plugin finding logic to ensure each source is mounted under a persistent ID.
  • Add missing :pysrctools.bsp.Primitive.dynamic_shadows.
  • Deprecate :pysrctools.AtomicWriter, use the atomicwrites module.
  • :pysrctools._class_resources is now only imported when required.
  • Use Cython when building, instead of including sources.
  • :pysrctools.vmf.Entity.fixup will instantiate the :py~srctools.vmf.EntityFixup object only when actually required.

Version 2.2.5

  • Restore :pysrctools.dmx.Attribute.iter_str() etc method's ability to iterate scalars.
  • Suppress warnings in :pysrctools.Property.copy().

Version 2.2.4

  • Fix behaviour of :pyProperty.__getitem__() <srctools.keyvalues.Keyvalues.__getitem__()> and :pyProperty.__setitem__() <srctools.keyvalues.Keyvalues.__setitem__()>.
  • Improve performance of :py~srctools.vpk.VPK parsing.
  • Add support for Portal Revolution's :py~srctools.fgd.FGD helper tweaks.
  • Add option to collapse and remove IO proxies entirely.
  • Fix ModelCompiler creating directories with relative paths.
  • Pass through unknown model flag bits unchanged.
  • Fix VPK ascii check.
  • Handle VMF groups correctly.
  • Add :pysrctools.math.Vec.bbox_intersect.
  • Allow indexing :py~srctools.vmf.PrismFace objects by a normal to get a :py~srctools.vmf.Side.
  • Add :pysrctools.dmx.Attribute.iter_str() etc methods for iterating converted values. Directly iterating the :py~srctools.dmx.Attribute is deprecated.
  • Add :pysrctools.dmx.Attribute.append(), :py~srctools.dmx.Attribute.extend() and :py~srctools.dmx.Attribute.clear_array() methods.
  • Fix corruption from mistaken deduplication of :pysrctools.bsp.VisLeaf and :py~srctools.bsp.Primitive lumps.

Version 2.2.3

  • Fix use of builtin generics.

Version 2.2.2

  • Document some known particle manifest paths.
  • Handle double-spacing in animation particle options.
  • Improve type hints in :pysrctools.smd.

Version 2.2.1

  • Missing particles is now an warning, not an error.
  • Particles are now case-insensitive.
  • pysrctools.vmf.EntityFixup.keys(), :py~srctools.vmf.EntityFixup.values() and :py~srctools.vmf.EntityFixup.items() are now full mapping views.
  • Fix incompatibility with some Python versions.

Version 2.2.0

  • Make srctools.compiler.mdl_compiler generic, to allow typechecking results.
  • Add :pysrctools.particles.
  • DMX attributes may now be copied using the :external:pycopy module, and also tested for equality.
  • :pysrctools.sndscript.Sound now lazily creates operator stack keyvalue objects.
  • :pysrctools.packlist.Packlist now can pack particle systems, and generate particle manifests.
  • Animation events which spawn particles are also detected.

Version 2.1.0

  • Fix %-formatted logs breaking when :pysrctools.logger is used.
  • Add :pyProperty.extend(), instead of using + or :pyProperty.append() with a block. That usage is deprecated.
  • Deprecate creating root properties with name=None.
  • :pysrctools.filesys.FileSystemChain is no longer generic, this is not useful.
  • Add functions which embed a Keyvalues1 tree in a DMX tree.