1. 23 Nov, 2019 1 commit
  2. 18 Sep, 2019 1 commit
  3. 23 Apr, 2019 4 commits
  4. 02 Dec, 2018 1 commit
    • jonwd7's avatar
      Initial BSStream 155 commit · 02799d81
      jonwd7 authored
      Renamed BSLightingShaderPropertyShaderType and its associated name field ("Skyrim Shader Type" -> "Shader Type").
      
      BSDistantObjectInstancedNode is mostly undecoded but fully readable.
      
      Treatment of shader flags is preliminary and will change over time.
      02799d81
  5. 02 Nov, 2018 1 commit
  6. 02 Sep, 2018 1 commit
    • jonwd7's avatar
      Misc decoding, custom blocks for WorldShift, Guild 2 · 63609e69
      jonwd7 authored
      Decoded some unknown fields and blocks for WorldShift and Guild 2.
      
      NiSourceTexture is now correctly decoded.  The unknown byte actually controls whether the image data Ref gets serialized or not, but it was always 1.  The addition of another conditional value increases the complexity for Pixel Data to 3 rows, all exclusive by version or condition.
      63609e69
  7. 01 Sep, 2018 1 commit
    • jonwd7's avatar
      Legacy NiParticle decoding · fdcba77f
      jonwd7 authored
      NetImmerse NiParticle (called NiOldParticle after Gamebryo 1.1) was severely undecoded.  This affects several NetImmerse games like Morrowind and Freedom Force.
      
      The per-particle info in NiOldParticle actually remained identical to the class in NiParticle, which is named "NiParticleInfo".  It did however have a different name in NetImmerse which was "NiPerParticleData".  Since they were the same data, the two compounds were merged and NiPSysData was updated.
      fdcba77f
  8. 31 Aug, 2018 2 commits
  9. 13 Aug, 2018 3 commits
    • jonwd7's avatar
      Add missing token for aa057174 · a8a425b5
      jonwd7 authored
      For #70 and #76
      a8a425b5
    • jonwd7's avatar
      Ranges Pass 1 · aa057174
      jonwd7 authored
      For #70 and #76
      
      Added tokens for range attribute strings.
      
      Did initial pass of ranges, many from Bethesda's official export scripts for FO4, which limit the values in the UI. Also have begun using data analysis to find implied min/max ranges (as well as sane defaults).
      aa057174
    • jonwd7's avatar
      Type, Name, Comment fixes · b0aafaa3
      jonwd7 authored
      BSGeometrySegmentData - Combined rows which did not be separated by version.  Adopted better naming from FO4.
      
      AspectFlags type for NiParticlesData for BS.
      
      Changed the unused W component of what should be a Vector4 for Vertex to 'Unused W' for all rows.  Should seriously consider making these all Vector4s for endian correctness.
      
      Misc comment cleanup.
      b0aafaa3
  10. 04 Aug, 2018 1 commit
    • jonwd7's avatar
      String type fixes · 87783585
      jonwd7 authored
      Specify SizedString vs NiFixedString where appropriate.  The compound type `string` is an extra level of indirection in many cases, where the block can never be used on versions less than 20.1.0.3 where the CString to NiFixedString transition happened.
      
      NiFixedString is a basic type, so using it where possible is recommended over the `string` compound type.
      
      `string` could NOT be changed when dealing with multiple rows with the same name but version exclusive, such as "Accum Root Name".
      
      Changed ShortString to ExportString as it was already documented as being exclusive to the Bethesda stream header.
      
      Added SizedString with ushort length type, for the SSF File path.
      87783585
  11. 01 Aug, 2018 1 commit
    • jonwd7's avatar
      Default Values Pass 3, Subclass Defaults · 0f0790f5
      jonwd7 authored
      For #76
      
      Implement initial subclass defaults.  Had to add additional attribute to deal with versioning of defaults, like block versioning.
      
      Added more defaults to normal fields.
      
      Added default to Vertex Color array, also enforcing that members with `arr1` can have a `default`.
      0f0790f5
  12. 27 Jul, 2018 1 commit
  13. 26 Jul, 2018 2 commits
    • jonwd7's avatar
      Mark custom modules · 46370f81
      jonwd7 authored
      For #72
      
      So that first party modules can be singled out if needed.
      46370f81
    • jonwd7's avatar
      Initial Module commit · b22220b9
      jonwd7 authored
      For #72
      
      Renamed modules from Gamebryo:  NiParticle, NiPSParticle.
      
      As of Gamebryo 2.5, old NiParticle was renamed NiParticleOld and the new NiMesh-based particle system was named NiParticle.  I didn't like this naming scheme given NiParticleOld is more important to us.
      
      Ni Modules not in Gamebryo:  NiCustom, NiLegacy
      
      These are to handle third party blocks and blocks from NetImmerse (pre-Gamebryo).
      
      Ignored from Gamebryo:  NiCollision, NiPortal, NiPhysXParticle
      
      These were instead absorbed into other modules.
      
      Bethesda modules:  BSMain, BSAnimation, BSParticle, BSHavok, BSLegacy
      
      Animation, Particle, Havok, and Legacy are not modules used by Bethesda.  Legacy is for Morrowind-specific blocks (NetImmerse).  In addition,  BSShader is a module for all the shader related blocks and that has all been folded into BSMain.
      b22220b9
  14. 24 Jul, 2018 1 commit
    • jonwd7's avatar
      Default Values Pass 2 · 6091a899
      jonwd7 authored
      Second default values pass, plus some general changes to accommodate them.
      6091a899
  15. 19 Jul, 2018 2 commits
  16. 16 Jul, 2018 2 commits
    • jonwd7's avatar
      BSVertexDesc correct bitfield · 2954bb4a
      jonwd7 authored
      Made a correct bitfield using `uint64` as the underlying type, split into nibbles for the sizes and offsets of the vertex attributes.
      
      Changed VertexFlags to VertexAttributes and it no longer has the empty nibble in front.
      
      ARG passing of the BSVertexDesc is treated as the underlying numeric value of the bitfield, so that the attributes can be passed into BSVertexData using `#RSH# 44` instead of the member accessor syntax.
      
      This makes the first use of the basic `uint64` type, so (de)serialization now requires support of 64-bit values.
      2954bb4a
    • jonwd7's avatar
      Bethesda Havok major refactor · 111598d2
      jonwd7 authored
      Cleaned up class naming e.g. Descriptor->CInfo to match the engine and other classes already named that way.  Added hk/bhk to front of type names where appropriate.
      
      Changed Info/Property names to be consistent e.g.  "Rigid Body Info", "Entity Info" instead of CInfo.
      
      Changed all "Unused" fields to a consistent naming scheme, using byte array types and binary="true".
      
      Class hierarchy fixes.  Class documentation complete overhaul.
      
      Some existing naming collides with new naming of different fields, e.g. bhkMoppBvTreeShape "Scale" used to be "Shape Scale" and now "Scale" is  "MOPP Code" -> "Scale".
      111598d2
  17. 02 Jul, 2018 1 commit
  18. 01 Jul, 2018 1 commit
    • jonwd7's avatar
      BSWaterShaderProperty flags correction · 847607fa
      jonwd7 authored
      The previous decoding was all guesswork, though did align somewhat.  Enough to know that the decoding from FO4 applies to Skyrim as well.
      847607fa
  19. 29 Jun, 2018 4 commits
    • jonwd7's avatar
      Default Values Pass 1 · 7887f4ea
      jonwd7 authored
      Added `default` to a large number of members, as well as `calc` to a few members to enforce array sizes based on other data.
      
      Also fixed a few `type` issues.
      
      This is a first pass in a much larger effort,  using data analysis to gather the most commonly used values.
      7887f4ea
    • jonwd7's avatar
      FO4 skin instance and shader decoding · 20dab6b5
      jonwd7 authored
      FO4 changed the Color3 to a Color4 for Skin Tint.  Leaving as separate Alpha for now however.
      
      Also found out the point of the BSSkin::Instance array which is non-uniform scaling.
      20dab6b5
    • jonwd7's avatar
      NiBound naming consistency · 8d8a4aed
      jonwd7 authored
      For Name-based APIs, naming all NiBound fields consistently helps with generic treatment of NiBound getting and setting for any NiObject.
      8d8a4aed
    • jonwd7's avatar
      bhk Emulate Havok CInfo for World Obj, Entity, Rigid Body · 12e72861
      jonwd7 authored
      Split up the Rigid Body CInfo into multiple compounds for each Havok version (though left 550/660 combined).  Followed suit with bhkWorldObject and bhkEntity.
      
      Having each in their own CInfo simplifies both naming and versioning at the cost of repetition.
      
      The bhkRigidBodyCInfo variants will need some kind of shared parent, but compound inheritance is currently not part of the XML spec.  It would have to be done with custom types in niflib.  The shared parent will be needed for getting/setting the same info on different CInfo versions.
      12e72861
  20. 28 Jun, 2018 1 commit
  21. 26 Jun, 2018 1 commit
    • jonwd7's avatar
      NiGeometryData flags bitfield · 086024bc
      jonwd7 authored
      Use a correct bitfield for NiGeometryData flags now that we know what the unknown values are for Bethesda bhk data. (NiGeometryData that gets used in a bhk shape)
      086024bc
  22. 25 Jun, 2018 3 commits
    • jonwd7's avatar
      Explicit ver1/ver2 for BS 20.2 · 8d73ad09
      jonwd7 authored
      Specifying ver1/ver2 even for `vercond="#BS...` for FO3 and later allows early rejection of that member for any non-BS 20.2 NIFs.
      8d73ad09
    • jonwd7's avatar
      NiSkinPartition (Bethesda) decoding and cleanup · 61d2b796
      jonwd7 authored
      Unknown Short for FO3+ was two values, a byte and a bool.
      
      Renamed "Num Skin Partition Blocks" and "Skin Partition Blocks" and combined the Partitions array into one row, as having a row separate for SSE was unnecessary.
      61d2b796
    • jonwd7's avatar
      Replace `calculated` with `calc` · 121ba5f7
      jonwd7 authored
      For #76.  `calc` does not need to be supported and is only used for pre-serialization preparation of the data.  This can also be done by hand.
      
      Some revisions also need to be made for #70 and #73 to account for another attribute with its own expression grammar and tokens.
      
      However, the tokens introduced for `calc` will not be added to the tokens in the XML and will need to be explicitly supported if supporting `calc`.  They are:
      
      1D array size (uses regex): `#LEN[(.*?)]#`
      2D array size (uses regex): `#LEN2[(.*?)]#`
      
      Ternary `?`: `#THEN#`
      Ternary `:`: `#ELSE#`
      
      Also removes any unnecessary `calculated` without replacement.
      
      Additionally, `calc` is used to limit array size for the time being, though it's possible this should be done with its own attribute, such as `maxlen`.
      121ba5f7
  23. 19 Jun, 2018 2 commits
    • jonwd7's avatar
      BSLightingShader decoding · 639bea61
      jonwd7 authored
      FO4 DLC uses BSLightingShaderPropertyUShortController in 2 NIFs, but according to the CK it is not actually a functional block and spits out constant warnings. It is still needed in nif.xml for serialization though.
      
      FO4 also adds two booleans for Env Map shader type for SSR.  These were previously marked as an Unknown Short.  These booleans are *not* synced with their values in the BGSM files except for generated meshes such as SCOL and precombined.
      639bea61
    • jonwd7's avatar
      bhk block cleanup, decoding, inheritance fixes · 285b1cb4
      jonwd7 authored
      Havok serialization is separate from inheritance and so certain shapes that are actually convex were not considered such by nif.xml, which in turn excludes them from uses of `template="bhkConvexShape"`.
      
      Created a fake base class to fix these issues.  Also, bhkConvexTransformShape no longer inheriting bhkTransformShape was more correct anyway, as the Ref type could be made more specific (bhkConvexShape).
      
      Did some comment/description cleanup and some minor decoding.
      285b1cb4
  24. 17 Jun, 2018 2 commits
    • jonwd7's avatar
      Rename `binary`/`abstract` booleans from 1 to true · 7fb12339
      jonwd7 authored
      For #76
      
      For reduced ambiguity.  Adapting for this in Python is as easy as
      
      ```py
      # XML Booleans
      XML_TRUE = ["true", "1"]
      XML_FALSE = ["false", "0"]
      
      # Example
      self.is_abstract = get('abstract') in XML_TRUE
      ```
      
      Note "True" and "False" are not valid booleans in XML.  Only lowercase.
      7fb12339
    • jonwd7's avatar
      Add NiPhysXClothDesc · 34ae18eb
      jonwd7 authored
      34ae18eb