Skip to content
Snippets Groups Projects
Commit 6a5c8665 authored by jonwd7's avatar jonwd7
Browse files

FO4/SSE changes

Split BSVertexData into two versions, one for FO4 and one for SSE.  This
uncomplicates some of the conditions and lowers the row count for each
vertex compound so will be faster to parse.

Also some misc name/type changes for FO4 blocks.
parent b941cffc
No related branches found
No related tags found
No related merge requests found
...@@ -1488,19 +1488,30 @@ ...@@ -1488,19 +1488,30 @@
</bitflags> </bitflags>
<compound name="BSVertexData"> <compound name="BSVertexData">
<add name="Vertex" type="Vector3" userver2="100" cond="((ARG &amp; 16) != 0)" /> <add name="Vertex" type="HalfVector3" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 16384) == 0)" />
<add name="Bitangent X" type="float" userver2="100" cond="((ARG &amp; 256) != 0)" /> <add name="Bitangent X" type="hfloat" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 256) != 0) &amp;&amp; ((ARG &amp; 16384) == 0)" />
<add name="Unknown Int" type="int" userver2="100" cond="(ARG &amp; 256) == 0" /> <add name="Unknown Short" type="ushort" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 256) == 0) &amp;&amp; ((ARG &amp; 16384) == 0)" />
<add name="Vertex" type="HalfVector3" userver2="130" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 16384) == 0)" /> <add name="Vertex" type="Vector3" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 16384) != 0)" />
<add name="Bitangent X" type="hfloat" userver2="130" cond="((ARG &amp; 256) != 0) &amp;&amp; ((ARG &amp; 16384) == 0)" /> <add name="Bitangent X" type="float" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 256) != 0) &amp;&amp; ((ARG &amp; 16384) != 0)" />
<add name="Unknown Short" type="ushort" userver2="130" cond="((ARG &amp; 256) == 0) &amp;&amp; ((ARG &amp; 16384) == 0)" /> <add name="Unknown Int" type="uint" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 256) == 0) &amp;&amp; ((ARG &amp; 16384) != 0)" />
<add name="Vertex" type="Vector3" userver2="130" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 16384) != 0)" /> <add name="UV" type="HalfTexCoord" cond="((ARG &amp; 32) != 0)" />
<add name="Bitangent X" type="float" userver2="130" cond="((ARG &amp; 256) != 0) &amp;&amp; ((ARG &amp; 16384) != 0)" /> <add name="Normal" type="ByteVector3" cond="(ARG &amp; 128) != 0" />
<add name="Unknown Int" type="uint" userver2="130" cond="((ARG &amp; 256) == 0) &amp;&amp; ((ARG &amp; 16384) != 0)" /> <add name="Bitangent Y" type="byte" cond="(ARG &amp; 128) != 0" />
<add name="Tangent" type="ByteVector3" cond="((ARG &amp; 128) != 0) &amp;&amp; ((ARG &amp; 256) != 0)" />
<add name="UV" type="HalfTexCoord" cond="(((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 32) != 0))" /> <add name="Bitangent Z" type="byte" cond="((ARG &amp; 128) != 0) &amp;&amp; ((ARG &amp; 256) != 0)" />
<add name="Vertex Colors" type="ByteColor4" cond="(ARG &amp; 512) != 0" />
<add name="Bone Weights" type="hfloat" arr1="4" cond="(ARG &amp; 1024) != 0" />
<add name="Bone Indices" type="byte" arr1="4" cond="(ARG &amp; 1024) != 0" />
<add name="Unknown Int 2" type="uint" cond="(ARG &amp; 4096) != 0" />
</compound>
<compound name="BSVertexDataSSE">
<add name="Vertex" type="Vector3" cond="((ARG &amp; 16) != 0)" />
<add name="Bitangent X" type="float" cond="((ARG &amp; 16) != 0) &amp;&amp; ((ARG &amp; 256) != 0)" />
<add name="Unknown Int" type="int" cond="((ARG &amp; 16) != 0) &amp;&amp; (ARG &amp; 256) == 0" />
<add name="UV" type="HalfTexCoord" cond="((ARG &amp; 32) != 0)" />
<add name="Normal" type="ByteVector3" cond="(ARG &amp; 128) != 0" /> <add name="Normal" type="ByteVector3" cond="(ARG &amp; 128) != 0" />
<add name="Bitangent Y" type="byte" cond="(ARG &amp; 128) != 0" /> <add name="Bitangent Y" type="byte" cond="(ARG &amp; 128) != 0" />
<add name="Tangent" type="ByteVector3" cond="((ARG &amp; 128) != 0) &amp;&amp; ((ARG &amp; 256) != 0)" /> <add name="Tangent" type="ByteVector3" cond="((ARG &amp; 128) != 0) &amp;&amp; ((ARG &amp; 256) != 0)" />
...@@ -4238,7 +4249,7 @@ ...@@ -4238,7 +4249,7 @@
<add name="VF5" type="byte" ver="20.2.0.7" userver2="100" /> <add name="VF5" type="byte" ver="20.2.0.7" userver2="100" />
<add name="VF" type="VertexFlags" ver="20.2.0.7" userver2="100" /> <add name="VF" type="VertexFlags" ver="20.2.0.7" userver2="100" />
<add name="VF8" type="byte" ver="20.2.0.7" userver2="100" /> <add name="VF8" type="byte" ver="20.2.0.7" userver2="100" />
<add name="Vertex Data" type="BSVertexData" arg="VF" arr1="Data Size / Vertex Size" cond="Data Size &gt; 0" ver="20.2.0.7" userver2="100" /> <add name="Vertex Data" type="BSVertexDataSSE" arg="VF" arr1="Data Size / Vertex Size" cond="Data Size &gt; 0" ver="20.2.0.7" userver2="100" />
<add name="Partition" type="SkinPartition" arr1="Num Skin Partition Blocks" ver="20.2.0.7" userver2="100" /> <add name="Partition" type="SkinPartition" arr1="Num Skin Partition Blocks" ver="20.2.0.7" userver2="100" />
</niobject> </niobject>
...@@ -6543,7 +6554,8 @@ ...@@ -6543,7 +6554,8 @@
<add name="Num Triangles" type="ushort" vercond="User Version 2 &lt; 130" /> <add name="Num Triangles" type="ushort" vercond="User Version 2 &lt; 130" />
<add name="Num Vertices" type="ushort" /> <add name="Num Vertices" type="ushort" />
<add name="Data Size" type="uint" /> <add name="Data Size" type="uint" />
<add name="Vertex Data" type="BSVertexData" arr1="Num Vertices" arg="VF" cond="Data Size &gt; 0" /> <add name="Vertex Data" type="BSVertexData" arr1="Num Vertices" arg="VF" cond="Data Size &gt; 0" userver2="130" />
<add name="Vertex Data" type="BSVertexDataSSE" arr1="Num Vertices" arg="VF" cond="Data Size &gt; 0" userver2="100" />
<add name="Triangles" type="Triangle" arr1="Num Triangles" cond="Data Size &gt; 0" /> <add name="Triangles" type="Triangle" arr1="Num Triangles" cond="Data Size &gt; 0" />
<add name="Particle Data Size" type="uint" userver2="100" /> <add name="Particle Data Size" type="uint" userver2="100" />
<add name="Vertices" type="Vector3" arr1="Num Vertices" cond="Particle Data Size &gt; 0" userver2="100" /> <add name="Vertices" type="Vector3" arr1="Num Vertices" cond="Particle Data Size &gt; 0" userver2="100" />
...@@ -6618,14 +6630,12 @@ ...@@ -6618,14 +6630,12 @@
<niobject name="bhkPhysicsSystem" inherit="bhkSystem"> <niobject name="bhkPhysicsSystem" inherit="bhkSystem">
Fallout 4 Collision System Fallout 4 Collision System
<add name="Size" type="uint" /> <add name="Binary Data" type="ByteArray" />
<add name="Data" type="byte" binary="1" arr1="Size" />
</niobject> </niobject>
<niobject name="bhkRagdollSystem" inherit="bhkSystem"> <niobject name="bhkRagdollSystem" inherit="bhkSystem">
Fallout 4 Ragdoll System Fallout 4 Ragdoll System
<add name="Size" type="uint" /> <add name="Binary Data" type="ByteArray" />
<add name="Data" type="byte" binary="1" arr1="Size" />
</niobject> </niobject>
<niobject name="BSExtraData" inherit="NiExtraData"> <niobject name="BSExtraData" inherit="NiExtraData">
...@@ -6634,8 +6644,7 @@ ...@@ -6634,8 +6644,7 @@
<niobject name="BSClothExtraData" inherit="BSExtraData"> <niobject name="BSClothExtraData" inherit="BSExtraData">
Fallout 4 Cloth data Fallout 4 Cloth data
<add name="Size" type="uint" /> <add name="Binary Data" type="ByteArray" />
<add name="Data" type="byte" binary="1" arr1="Size" />
</niobject> </niobject>
<!-- Fallout 4 Skeleton --> <!-- Fallout 4 Skeleton -->
...@@ -6650,8 +6659,8 @@ ...@@ -6650,8 +6659,8 @@
<niobject name="BSSkin::Instance" inherit="NiObject"> <niobject name="BSSkin::Instance" inherit="NiObject">
Fallout 4 Skin Instance Fallout 4 Skin Instance
<add name="Root Parent" type="Ptr" template="NiAVObject" /> <add name="Skeleton Root" type="Ptr" template="NiAVObject" />
<add name="Bone Data" type="Ref" template="BSSkin::BoneData" /> <add name="Data" type="Ref" template="BSSkin::BoneData" />
<add name="Num Bones" type="uint" /> <add name="Num Bones" type="uint" />
<add name="Bones" type="Ptr" arr1="Num Bones" /> <add name="Bones" type="Ptr" arr1="Num Bones" />
<add name="Num Unknown" type="uint" /> <add name="Num Unknown" type="uint" />
...@@ -6661,7 +6670,7 @@ ...@@ -6661,7 +6670,7 @@
<niobject name="BSSkin::BoneData" inherit="NiObject"> <niobject name="BSSkin::BoneData" inherit="NiObject">
Fallout 4 Bone Data Fallout 4 Bone Data
<add name="Num Bones" type="uint" /> <add name="Num Bones" type="uint" />
<add name="Bones" type="BSSkinBoneTrans" arr1="Num Bones" /> <add name="Bone List" type="BSSkinBoneTrans" arr1="Num Bones" />
</niobject> </niobject>
<niobject name="BSPositionData" inherit="NiExtraData"> <niobject name="BSPositionData" inherit="NiExtraData">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment