- Jun 17, 2018
-
-
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.
-
jonwd7 authored
-
jonwd7 authored
-
jonwd7 authored
Named the compounds correctly after the actual structs, separated the "Has Data" bool from the compound as it's not actually part of the struct, but before it in a for loop during (de)serialize. Combined NiAdditionalGeometryData and the BS version into one compound when possible. But the block can actually no longer be found in any official files, so the BS version is not very important.
-
jonwd7 authored
Try to use element text whenever possible, and remove any unnecessary XML comments. Soon the XML will be regenerated and so the XML comments need to be well formed and in predictable locations.
-
jonwd7 authored
Finally added bhkPlaneShape, used once in SSE. Added bhkCylinderShape which is possible to export from the official FO4 exporter. Cleaned up much of the class descriptions and also added `binary="true"` to the padding bytes.
-
- Jun 14, 2018
-
-
jonwd7 authored
For #3, #76 Replaces all Flags types with real enums (where there were only two options) or a new bitfield type. Bitfield mimics the bitfield syntax of C structs (Compounds), but also acts like Enum/Bitflags with the `storage` attribute in that the entire structure can simply be aliased to a basic type like `ushort`. The `type` on each Bitfield member does **NOT denote size**. Each member only takes up the bits that are defined by `width` and `pos`. The `type` information is for casting for getters and setters. That means for C structs, code generation would not use the type on each member, but the storage type instead.
-
jonwd7 authored
For #70 Their use was discussed as being useful for shifting and masking values before sending as an ARG.
-
- Jun 08, 2018
-
-
jonwd7 authored
For #74 Implemented thanks to changes done in #76 for differentiating integral and "countable" i.e. can be used for sizes. Marking types as boolean was also in #76, yet there were no errors for this lint; all the `cond` references that were not complex expressions were already boolean types.
-
jonwd7 authored
For #76 The signed integeral types were marked as countable even though they should not be used for array sizes. A negative value cannot be passed into an array size. They are still integral though, so countable was split into `countable` and `integral`. In addition, added `boolean` to designate types that can toggle the presence of another member. Also reordered items for `convertible` so that the referenced types come before the type referencing it, i.e. larger types first.
-
- Jun 07, 2018
- Jun 06, 2018
-
-
jonwd7 authored
Now that any usage of `User Version 2` was actually just a `#BSVER#` token, reorganized the header information for Bethesda NIFs into the correct layout, and renamed the member to a more appropriate BS Version. The global for #BSVER# uses the member of operator `\`, but as it is a token now it is free to be used however one wishes. I split #BSSTREAMHEADER# into its own token in case the expression is ever reused (it used to be on multiple members before this reorganization). Also put `Max Filepath` into BSStreamHeader where it belonged.
-
jonwd7 authored
For #70 Have not decided on the non-escaped entities such as `==`, `|`, `||`, etc. yet, as at least `==` is much more readable than `#EQ#`. Replaced all Version, User Version, etc. with their global tokens. Also cleaned up NiTexturingProperty in the process.
-
jonwd7 authored
Was completely unsupported and undocumented and unused by any software. Replaced with arithmetic even though the decoding is likely wrong anyway. For #76
-
- Jun 05, 2018
-
-
jonwd7 authored
For #76
-
jonwd7 authored
For #76 `bool` type is something that has to be dealt with as it changes size. Also it's marked as countable which should probably be analyzed... It shouldn't be used in array counts.
-
jonwd7 authored
The `cond` attribute was being overloaded with multiple functions. Conditions should be actual expressions, using local or inherited data. Type checking inside of `cond` would also mean that you could do both in one expression, such as `cond="NiParticleSystem && Num Vertices > 0"` which doesn't make any sense. So, `onlyT` and `excludeT` were made to serve that function. Two attributes also means not having to use the unary not (!) in order negate the meaning. Existing logic can simply alias the attributes to cond if need be.
-
jonwd7 authored
For #70
-
jonwd7 authored
For #70
-
jonwd7 authored
Using tokens from #70 it is now feasible to version the Bethesda blocks.
-
jonwd7 authored
Tokens are grouped by name and associated with a list of attributes. Only listed attributes should be processed for tokens of that name. Order of token groups matters. Token strings can themselves include tokens, so any token group used in other tokens needs to come after.
- Jun 04, 2018
-
-
jonwd7 authored
The `ver` attribute was never actually formalized and just meant as a shorcut for using both ver1/ver2 on the same version. `userver` was almost never used and `userver2` was becoming increasingly uncommon as most comparisons were switched to inequalities. To make things easier, these should just be part of the expression.
-
- Jun 02, 2018
-
-
jonwd7 authored
Hey look at that, linting helped immediately. Too bad I forgot to lint before committing the last commit.
-
jonwd7 authored
-
jonwd7 authored
Removed redundant descriptions for unknown values, removed incorrect descriptions for previously unknown values. Any custom extension unknowns were prefixed with their relevant game. Anything that was "Unk" was changed to "Unknown" for consistency. A few inherited duplicates were also fixed in the process.
-
jonwd7 authored
-
- Jun 01, 2018
-
-
jonwd7 authored
Fixed inherited duplicate names, as well as the layout of BSTriShape for Particle emitter geometry data in SSE. Left the name for Dynamic Data as "Vertices" though it is technically just called "Dynamic Data" in engine. It contains the vertices and bitangent X for any BSDynamicTriShape, so the naming is apt.
-
- May 31, 2018
-
-
jonwd7 authored
Added V10_2_0_0__1 and scoped NiFurSpringController to it since it is a custom block only for that game.
-
jonwd7 authored
Moved all the DEM specific stuff out of NiMesh and into compounds. Did some decoding while I was at it. There are many small customizations to other blocks for DEM, but I am not including them in this commit. Regardless, the existing XML only worked for DEM1 and now at least some DEM2 will load fully.
-
jonwd7 authored
First-pass implementation of `since`/`until` and `versions`. Avoided nearly all Bethesda blocks for now, as they require the token system or would become absurdly repetitious.
-
jonwd7 authored
First batch of fixed issues detected by the new linter. Also some slight cleanup, plus an interitance fix a Bethesda particle class.
-
- May 28, 2018
-
-
jonwd7 authored
-
- May 27, 2018
-
-
jonwd7 authored
A concise way of listing which versions are most important to each game. Each game should have only one set of `{{}}`. Note: In the case of Oblivion, there are two "primary" versions.. 20.0.0.4 (10) is used for KF and 20.0.0.5 is used for NIF. Thus I changed the "game name" to `{{Oblivion KF}}` for 20.0.0.4 (10).
-
jonwd7 authored
They were kept separate for clarity in actual code using the enumerations; clarity that doesn't transfer over to XML which is using the raw integers. ``` (A & X) != 0 && (A & Y) != 0 && (A & Z) == 0 ``` Is the same as ``` (A & (X|Y|Z)) == (X|Y) ``` Basically != 0 you want that particular bit on the RHS of the expression, and == 0 you do not. Anything tested you put on the LHS. Also switched the order of HalfVector3/Vector3 as the larger type should come first.
-
- May 18, 2018
-
-
jonwd7 authored
Formalization of what makes type and member name strings valid requires the removal of non-alphanumerics with the exception of the colon.
-
jonwd7 authored
The attempt here was to exclude Bethesda from several rows on NiBoneLODController, since in the XML it inherits from NiBoneLODController for its own custom block that does not have those rows. The reasoning is actually that it does *not* inherit from NiBoneLODController in the engine, but the inheritance will stay fudged here for now.
-
jonwd7 authored
Made `<version>` mean distinct combination of header values which produce identical block layouts. This meant splitting up several main Versions into many based on User Version or Bethesda Version. id = Used to uniquely identify this collection of NIF versions. Can also be used for enum generation, map/dictionary keys. user = List of User Versions which are functionally equivalent bsver = List of Bethesda Versions which are functionally equivalent custom = If user/bsver are default but the Version is actually specific to a developer and not an official Gamebryo version supported = Whether or not the XML fully supports reading/writing of this version. ext = List of custom file extensions associated with this version.
-