<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://codresearch.dev/index.php?action=history&amp;feed=atom&amp;title=XModel_Asset_%28BO2%29</id>
	<title>XModel Asset (BO2) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://codresearch.dev/index.php?action=history&amp;feed=atom&amp;title=XModel_Asset_%28BO2%29"/>
	<link rel="alternate" type="text/html" href="https://codresearch.dev/index.php?title=XModel_Asset_(BO2)&amp;action=history"/>
	<updated>2026-07-28T09:20:20Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://codresearch.dev/index.php?title=XModel_Asset_(BO2)&amp;diff=698&amp;oldid=prev</id>
		<title>CraigChrist8239: Created page with &quot;__NOTOC__ Category:Assets Category:BO2 &lt;source lang=&quot;cpp&quot;&gt; struct DObjAnimMat {   vec4_t quat;   vec3_t trans;   float transWeight; };  struct XSurfaceVertexInfo {   _...&quot;</title>
		<link rel="alternate" type="text/html" href="https://codresearch.dev/index.php?title=XModel_Asset_(BO2)&amp;diff=698&amp;oldid=prev"/>
		<updated>2014-12-21T07:52:37Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;__NOTOC__ &lt;a href=&quot;/index.php/Category:Assets&quot; title=&quot;Category:Assets&quot;&gt;Category:Assets&lt;/a&gt; &lt;a href=&quot;/index.php?title=Category:BO2&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Category:BO2 (page does not exist)&quot;&gt;Category:BO2&lt;/a&gt; &amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt; struct DObjAnimMat {   vec4_t quat;   vec3_t trans;   float transWeight; };  struct XSurfaceVertexInfo {   _...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__NOTOC__&lt;br /&gt;
[[Category:Assets]]&lt;br /&gt;
[[Category:BO2]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
struct DObjAnimMat&lt;br /&gt;
{&lt;br /&gt;
  vec4_t quat;&lt;br /&gt;
  vec3_t trans;&lt;br /&gt;
  float transWeight;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct XSurfaceVertexInfo&lt;br /&gt;
{&lt;br /&gt;
  __int16 vertCount[4];&lt;br /&gt;
  unsigned __int16 *vertsBlend;		//Hope this is right, Size = ((((vertCount[2] + (vertCount[2] &amp;lt;&amp;lt; 2)) + ((vertCount[3] &amp;lt;&amp;lt; 3) - vertCount[3])) + ((vertCount[1] &amp;lt;&amp;lt; 1) + vertCount[1])) + vertCount[0]) &amp;lt;&amp;lt; 1&lt;br /&gt;
  float * tensionData;	//Count = unknownCount4 + unknownCount3 + unknownCount2 + unknownCount1&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
union unknownXModelStruct1Internal2&lt;br /&gt;
{&lt;br /&gt;
  GfxPackedVertex *verts0;&lt;br /&gt;
	char * unknownOption2;			//Size = ((parent struct::vertCount &amp;lt;&amp;lt; 1) + parent struct::vertCount) &amp;lt;&amp;lt; 3&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct XSurfaceCollisionAabb&lt;br /&gt;
{&lt;br /&gt;
  unsigned __int16 mins[3];&lt;br /&gt;
  unsigned __int16 maxs[3];&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct XSurfaceCollisionNode&lt;br /&gt;
{&lt;br /&gt;
  XSurfaceCollisionAabb aabb;&lt;br /&gt;
  unsigned __int16 childBeginIndex;&lt;br /&gt;
  unsigned __int16 childCount;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct XSurfaceCollisionLeaf&lt;br /&gt;
{&lt;br /&gt;
  unsigned __int16 triangleBeginIndex;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct XSurfaceCollisionTree&lt;br /&gt;
{&lt;br /&gt;
  vec3_t trans;&lt;br /&gt;
  vec3_t scale;&lt;br /&gt;
  unsigned int nodeCount;&lt;br /&gt;
  XSurfaceCollisionNode *nodes;&lt;br /&gt;
  unsigned int leafCount;&lt;br /&gt;
  XSurfaceCollisionLeaf *leafs;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct XRigidVertList&lt;br /&gt;
{&lt;br /&gt;
  unsigned __int16 boneOffset;&lt;br /&gt;
  unsigned __int16 vertCount;&lt;br /&gt;
  unsigned __int16 triOffset;&lt;br /&gt;
  unsigned __int16 triCount;&lt;br /&gt;
  XSurfaceCollisionTree *collisionTree;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct __declspec(align(16)) XSurface&lt;br /&gt;
{&lt;br /&gt;
	char unknownData1[0x10];&lt;br /&gt;
  char tileMode;&lt;br /&gt;
  char vertListCount;&lt;br /&gt;
  unsigned __int16 flags;&lt;br /&gt;
  unsigned __int16 vertCount;&lt;br /&gt;
  unsigned __int16 triCount;&lt;br /&gt;
  unsigned __int16 baseVertIndex;&lt;br /&gt;
  unsigned __int16 *triIndices;							//Loaded Last, size = ((triCount &amp;lt;&amp;lt; 1) + triCount) &amp;lt;&amp;lt; 1&lt;br /&gt;
  XSurfaceVertexInfo vertInfo;&lt;br /&gt;
	unknownXModelStruct1Internal2 unkInternal2;		//if flags &amp;amp; 1 then use option2 else use verts0&lt;br /&gt;
  D3DVertexBuffer vertexBuffer;&lt;br /&gt;
  union&lt;br /&gt;
  {&lt;br /&gt;
    XRigidVertList *vertList;&lt;br /&gt;
    XRigidVertList *vertListEA;&lt;br /&gt;
  };&lt;br /&gt;
  D3DIndexBuffer indexBuffer;&lt;br /&gt;
  int partBits[5];&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct cplane_s&lt;br /&gt;
{&lt;br /&gt;
  float normal[3];&lt;br /&gt;
  float dist;&lt;br /&gt;
  char type;&lt;br /&gt;
  char signbits;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct cbrushside_t&lt;br /&gt;
{&lt;br /&gt;
  cplane_s *plane;&lt;br /&gt;
  int cflags;&lt;br /&gt;
  int sflags;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct BrushWrapper&lt;br /&gt;
{&lt;br /&gt;
  vec3_t mins;&lt;br /&gt;
  int contents;&lt;br /&gt;
  vec3_t maxs;&lt;br /&gt;
  unsigned int numsides;&lt;br /&gt;
  cbrushside_t *sides;&lt;br /&gt;
  int axial_cflags[2][3];&lt;br /&gt;
  int axial_sflags[2][3];&lt;br /&gt;
  unsigned int numverts;&lt;br /&gt;
  vec3_t *verts;&lt;br /&gt;
  cplane_s *planes;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct PhysGeomInfo&lt;br /&gt;
{&lt;br /&gt;
  BrushWrapper *brush;&lt;br /&gt;
  int type;&lt;br /&gt;
  vec3_t orientation[3];&lt;br /&gt;
  vec3_t offset;&lt;br /&gt;
  vec3_t halfLengths;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct PhysGeomList&lt;br /&gt;
{&lt;br /&gt;
  unsigned int count;&lt;br /&gt;
  PhysGeomInfo *geoms;&lt;br /&gt;
  int contents;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct Collmap&lt;br /&gt;
{&lt;br /&gt;
  PhysGeomList *geomList;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct XModelLodInfo&lt;br /&gt;
{&lt;br /&gt;
  float dist;&lt;br /&gt;
  unsigned __int16 numsurfs;&lt;br /&gt;
  unsigned __int16 surfIndex;&lt;br /&gt;
  int partBits[5];&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct XModelCollSurf_s&lt;br /&gt;
{&lt;br /&gt;
  vec3_t mins;&lt;br /&gt;
  vec3_t maxs;&lt;br /&gt;
  int boneIdx;&lt;br /&gt;
  int contents;&lt;br /&gt;
  int surfFlags;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct XBoneInfo&lt;br /&gt;
{&lt;br /&gt;
  vec3_t bounds[2];&lt;br /&gt;
  vec3_t offset;&lt;br /&gt;
  float radiusSquared;&lt;br /&gt;
  char collmap;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct XModel&lt;br /&gt;
{&lt;br /&gt;
  const char *name;&lt;br /&gt;
  char numBones;&lt;br /&gt;
  char numRootBones;&lt;br /&gt;
  char numsurfs;&lt;br /&gt;
  char lodRampType;&lt;br /&gt;
  union&lt;br /&gt;
  {&lt;br /&gt;
    ScriptString * boneNames;&lt;br /&gt;
    ScriptString * localBoneNames;&lt;br /&gt;
  };&lt;br /&gt;
  union&lt;br /&gt;
  {&lt;br /&gt;
    char * parentList;  //size = numBones - numRootBones&lt;br /&gt;
    char * localParentList;  //size = numBones - numRootBones&lt;br /&gt;
  };&lt;br /&gt;
  union&lt;br /&gt;
  {&lt;br /&gt;
    unsigned short * quats;		//size = (numBones - numRootBones) &amp;lt;&amp;lt; 3&lt;br /&gt;
    unsigned short * localQuats;	//size = (numBones - numRootBones) &amp;lt;&amp;lt; 3&lt;br /&gt;
  };&lt;br /&gt;
  union&lt;br /&gt;
  {&lt;br /&gt;
    float * trans;							//size = (numBones - numRootBones) &amp;lt;&amp;lt; 4&lt;br /&gt;
    float * localTrans;							//size = (numBones - numRootBones) &amp;lt;&amp;lt; 4&lt;br /&gt;
  };&lt;br /&gt;
  char *partClassification;		//size = numBones&lt;br /&gt;
  DObjAnimMat *baseMat;					//size = numBones &amp;lt;&amp;lt; 5&lt;br /&gt;
  XSurface *surfs;	//count = numsurfs&lt;br /&gt;
  Material **materialHandles;		//count = numsurfs&lt;br /&gt;
  XModelLodInfo lodInfo[4];&lt;br /&gt;
  XModelCollSurf_s *collSurfs;&lt;br /&gt;
  int numCollSurfs;&lt;br /&gt;
  int contents;&lt;br /&gt;
  union&lt;br /&gt;
  {&lt;br /&gt;
    XBoneInfo *localBoneInfo;&lt;br /&gt;
    XBoneInfo *boneInfo;&lt;br /&gt;
  };&lt;br /&gt;
  float radius;&lt;br /&gt;
  vec3_t mins;&lt;br /&gt;
  vec3_t maxs;&lt;br /&gt;
  __int16 numLods;&lt;br /&gt;
  __int16 collLod;&lt;br /&gt;
  float *himipInvSqRadii;&lt;br /&gt;
  int memUsage;&lt;br /&gt;
  int flags;&lt;br /&gt;
  PhysPreset *physPreset;&lt;br /&gt;
  char numCollmaps;&lt;br /&gt;
  Collmap *collmaps;&lt;br /&gt;
  PhysConstraints *physConstraints;&lt;br /&gt;
  vec3_t lightingOriginOffset;&lt;br /&gt;
  float lightingOriginRange;&lt;br /&gt;
};&lt;br /&gt;
#pragma pack(pop)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>CraigChrist8239</name></author>
	</entry>
</feed>