This is an old revision of the document!
Nel files
This page is used to document all the different classes that can be serialized to/from a file.
For now only the Classes necessary to .shape file formats are documented, more Classes are in progress. — Sit Melai 2016/12/18 02:08
Basic Classes/Types
To start some base classes that will be reused a lot:
Click to display ⇲
Click to hide ⇱
Version
- 1 byte number, ver
if ver = 0xFF
- 4 bytes number, ver
Double
- 8 bytes number
Float
- 4 bytes number
Bool
- 1 byte number
String (Length encoded)
- 4 bytes number, len
- len bytes string
RGBA
- 1 byte number r (0 - 255)
- 1 byte number g (0 - 255)
- 1 byte nubmer b (0 - 255)
- 1 byte number a (0 - 255)
2DVector
- Float x
- Float y
3DVector
- Float x
- Float y
- Float z
4DVector
- Float a
- Float b
- Float c
- Float d
PolyPtr
- 8 bytes number, an id
- if id not in file yet
- String, classname
- classname
Enums
All enums used by the classes:
Click to display ⇲
Click to hide ⇱
TPreferredMemory: RAMPreferred, // A block of driver RAM memory is allocated for this buffer. The buffer is read/write. AGPPreferred, // A block of driver AGP memory is allocated for this buffer. The buffer is writeonly. StaticPreferred, // The buffer will not be modified. A block of driver AGP or VRAM memory is allocated for this buffer. The buffer is writeonly. RAMVolatile, // A block of temporary driver RAM memory will be returned by lock(). The buffer must be entirely filled after each swapBuffers(). The buffer is writeonly. AGPVolatile // A block of temporary driver AGP memory will be returned by lock(). The buffer must be entirely filled after each swapBuffers(). The buffer is writeonly. TCameraCollisionGenerate /** If AutoCameraCol, meshs will build the cameracollision mesh only if the mesh is lightmapped * if NoCameraCol, the cameracollision won't be generated * if ForceCameraCol, the cameracollision will be generated whether lightmaped or not (as long as possible) */ AutoCameraCol, NoCameraCol, ForceCameraCol TShader: /** * Normal shader: * - use simple multitexturing. see texEnv*() methods. * Bump: * - not implemented yet. * UserColor: * - UserColor (see setUserColor()) is blended with precomputed texture/textureAlpha. * - Alpha Blending ignore Alpha of texture (of course :) ), but use Alpha diffuse (vertex/material color). * LightMap: * - Texture of stage 0 is blended with sum of lightmaps (see setLightmap()). Vertex Color (or color, or lighting) * doesn't affect the final result (neither diffuse part nor specular part). * Blending is special. If enabled, Lightmap shader apply a standard transparency srcalpha/invsrcalpha. * - NB: if no texture in stage 0, undefined result. * - UV0 is the UV for decal Texture. UV1 is the UVs for all the lightmaps. * Specular: * - Texture of stage 0 is added to the multiplication of Texture Alpha of stage 0 and Texture of stage 1 * - This is done in 2 passes * PerPixelLighting : * - When not supported by the driver, this is equivalent to the normal shader. This can be querried from the driver * - When supported by the driver, the strongest light is rendered using per pixel lighting. The last tex coordinate must be the S vector * of the tangent space basis (oriented in the direction where the s texture coords grows). Other lights are rendered using gouraud shaing. The light setup is done in the driver. * PerPixelLighting : The same as PerPixelLighting but with no specular * Caustics: NOT IMPLEMENTED * Cloud : * - Alpha of texture in stage 0 is blended with alpha of texture in stage 1. Blend done with the alpha color of each * stage and the whole is multiplied by the alpha in color vertex [AT0*ADiffuseCol+AT1*(1-ADiffuseCol)]*AStage * - RGB still unchanged * Water : * - Water */ Normal, Bump, UserColor, LightMap, Specular, Caustics, PerPixelLighting, PerPixelLightingNoSpec, Cloud, Water TBlend /** Blend enums. see setSrcBlend()/setDstBlend()/setBlendFunc(). * blendConstant* enums are only valid if driver->supportBlendConstantColor(). * \see IDriver::supportBlendConstantColor() */ one, zero, srcalpha, invsrcalpha, srccolor, invsrccolor, blendConstantColor, blendConstantInvColor, blendConstantAlpha, blendConstantInvAlpha ZFunc always, never, equal, notequal, less, lessequal, greater, greaterequal TUploadFormat Auto= 0, RGBA8888, RGBA4444, RGBA5551, RGB888, RGB565, DXTC1, DXTC1Alpha, DXTC3, DXTC5, Luminance, Alpha, AlphaLuminance, DsDt TWrapMode Repeat, Clamp TMinFilter NearestMipMapOff, NearestMipMapNearest, NearestMipMapLinear, LinearMipMapOff, LinearMipMapNearest, LinearMipMapLinear TMagFilter Nearest, Linear
List
Here's a list with all serializable classes from 3d part of nel:
Click to display ⇲
Click to hide ⇱
CMaterialBase::CAnimatedTexture // done CMaterialBase // done V: 1 CMorphBase // done CBoneBase // done V: 2 CFlareShape CHLSColorDelta CHLSColorTexture::CMask CHLSColorTexture CHLSTextureBank CHLSTextureBank::CTextureInstance CIGSurfaceLight CIndexBuffer // done V: 2 CLodCharacterShapeBuild CLodCharacterShape::CAnim CLodCharacterShape::CBoneInfluence CLodCharacterShape CLodCharacterShapeBank CLodCharacterTexture // done V: 0 CLodCharacterTexture::CTUVQ // done V: - CMaterial // done V: 9 CMaterial::CLightMap(_old) // done V: 1 CMaterial::CTexEnv // done V: - CMeshGeom // done V: 4 CMesh::CCorner CMesh::CFace CMesh::CSkinWeight // done V: - // commented out: not used CMesh::CMeshBuild CMesh // done V: 6 CMeshBase::serialMeshBase // done (not standardized) V: 9 CMeshBase::CMeshBaseBuild CMeshMRMGeom::CLod // done V: 2 CMeshMRMGeom // done V: 5 (LodVertexData V: 1) CMeshMRM // done V: 0 CMeshMRMSkinnedGeom::CLod // done V: 0 CMeshMRMSkinnedGeom // done V: 0 CMeshMRMSkinned // done V: 0 CMeshMRMSkinnedGeom::CPackedVertexBuffer // done V: 0 CMeshMRMSkinnedGeom::CPackedVertexBuffer::CPackedVertex // done V: 0 CMeshMultiLod // done V: 0 CMeshMultiLod::CMeshSlot // done V: 0 CMeshVPPerPixelLight // done V: 0 CMeshVPWindTree // done V: 0 CBlendShape // done V: 1 CMeshMorpher // done V: 0 CPackedWorld CPackedZone32 CPackedZone16 CParticleSystem CParticleSystemProcess CParticleSystemShape CPatch CPointLight CPointLightNamed CPointLightNamedArray CPSAttribMakerMemory<uint32> CPSAttribMakerMemory<sint32> CPSAttribMakerMemory<float> CPSColorMemory CPSColorBinOp CPSDot CPSEmitter CPSEmitterOmni CPSEmitterDirectionnal CPSEmitterRectangle CPSEmitterConic CPSSphericalEmitter CPSRadialEmitter CPSFace CPSFaceLookAt CPSFanLight CPSFloatCurveFunctor CPSForce CPSForceIntensityHelper CPSDirectionnalForce CPSGravity CPSCentralGravity CPSSpring CPSCylindricVortex CPSMagneticForce CPSBrownianForce CPSLight CPSLocated CPSLocatedBindable CPSTargetLocatedBindable CPSMesh CPSConstraintMesh CPSConstraintMesh::CGlobalTexAnim CPSConstraintMesh::CGlobalTexAnims CSpinnerFunctor CPSQuad CPSRibbon CPSRibbonBase CPSRibbonLookAt CPSShockWave CPSSound CPSTailDot CPSZone CPSZonePlane CPSZoneSphere CPSZoneDisc CPSZoneCylinder CPSZoneRectangle CSegRemanenceShape CShapeStream // done V: - CSkeletonShape::CLod // done V: 0 CSkeletonShape // done V: 1 CSurfaceLightGrid ITexture // done V: 1 CTextureBlend CTextureBump CTextureCube // done V: 2 CTextureEmboss CTextureFile // done V: 1 CTextureGrouped CTextureMultiFile // done V: 0 CTileLand CTileBank CTile CTileSet CTileBorder CTileElement CTileFarBank::CTileFar CTileFarBank CTileLightInfluence CTileNoiseMap CTileVegetableDesc CTrackSampledCommon::CTimeBlock // done V: 0 CTrackSampledCommon::serialCommon // done (not standardized) V: 0 CTrackSampledQuat // done V: 1 CTrackSampledVector // done V: 0 CVegetable CVegetableShape CVertexBuffer // done V: 2 CVertexBuffer::Header // done (not standardized) V: 3 CVertexBuffer::Subset // done (not standardized V: 2 CPaletteSkin // done V: - CWaterHeightMap CWaterPoolManager CWaterShape CWaveMakerShape CBorderVertex CZone::CPatchConnect CPatchInfo::CBindInfo CZone CTexAnimTracks // done V: 0 CIGSurfaceLight CLodCharacterShapeBuild::CPixelInfo CLodCharacterShape::CVector3s CLodCharacterShape::CVertexInf CMeshGeom::CMatrixBlock // done V: 0 CMeshGeom::CRdrPass // done V: 0 CMeshBase::CMatStageV7 // done V: - CMeshBase::CLightInfoMapListV7 // done V: - CMeshBase::CLightMapInfoList // done V: 0 CMeshBase::CLightMapInfoList::CMatStage // done V: 0 CMeshMRMGeom::CRdrPass // done V: 0 CMeshMRMGeom::CVertexBlock // done V: - CMehsMRMGeom::CLodInfo // done V: 0 CMeshMRMSkinnedGeom::CRdrPass // done V: 0 CMeshMRMSkinnedGeom::CVertexBlock // done V: - CMRMWedgeGeom // done V: - CZoneInfo CZoneIndexList CPackedVertex CPackedTri CPackedTri16 CVector3s CPointLightNamedArray::CPointLightGroup CPointLightNamedArray::CPointLightGroupV0 CSnappedVector CPSAttrib<T> CPSInputType CPSAttribMaker CPSAttribMakerT CPSAttribMakerMemoryBase CPSValueBlendFunc CPSValueBlendSampleFunc CPSValueBlendFuncRGBA CPSValueBlendSampleFuncRGBA CPSValueGradientFuncRGBA CPSAttribMakerRGBA CCtrlPoint CPSForceIntensityHelper CIsotropicForceT CPSFluidFrictionFunctor CPSFluidFriction CPSTurbulForceFunc CPSTurbul CPSParticle CPlaneBasis CPSPlaneBasisFollowSpeed CRadiusPair CShadowVertex // done V: 0 CSurfaceLightGrid CTileColor CTileColorOldPatchVersion6 CQuatPack // done V: - ITrackKeyFramer (template) // done V: 0 CTrackKeyFramerLinearQuat // done V: - CTrackKeyFramerLinearVector // done V: - CTrackKeyFramerTCBQuat // done V: - CKey // done V: 0 CKeyTCB // done V: 0 CTrackDefaultVector // done V: - CTrackDefaultQuat // done V: - CTrackDefaultBlendable // done V: 0
And some of the serializable classes from other parts than 3d:
Click to display ⇲
Click to hide ⇱
CAABBox // done V: 0 CMatrix // done V: 0 CUV // done V: - CRGBAF // done V: -
The Documentation
And finally the documentation of all the types. In the list above you see which classes are documented for now and what Version they are in (if you want to write an exporter).
So here are the ones from 3d part:
Click to display ⇲
Click to hide ⇱
CMaterialBase::CAnimatedTexture
- PolyPtr (ITexture), Texture
CMaterialBase
- Version, ver (1)
- String, Name
- Version
- RGBA, Default Ambient
- Version
- RGBA, Default Diffuse
- Version
- RGBA, Default Specular
- Version
- Float, Shininess
- Version
- RGBA, Default Emissive
- Version
- Float, Default Opacity
- Version
- 4 bytes number, Default Texture
- 4 bytes number, Number Elements
0 to Number Elements
- 4 bytes number, key
- CMaterialBase::CAnimatedTexture, value
- map key to value
- ver greater 0
0 to IDRV_MAT_MAX_TEXTURES (4)
- CTexAnimTracks
CMorphBase
- String, Name
CBoneBase
- Version, ver (2)
- String, Name
- CMatrix, Inv Bind Position
- 4 bytes number, Father Id
- Bool, Unherit Scale
- ver greater/equal to 1
- Float, Lod Disable Distance
- Version
- 3DVector, Default Position
- Version
- 3DVector, Default Rot Euler
- Version
- 4DVector, Default Rot Quat
- Version
- 3DVector, Default Scale
- Version
- 3DVector, Default Pivot
- ver greater/equal to 2
- 3DVector, Skin Scale
CIndexBuffer
- Version, ver (2)
- ver smaller 1
- 4 bytes number, Number
- 4 bytes number, Capacity
- 4 bytes number, Number Indexes
0 to Number Indexes
- 4 bytes number, Index
- 4 bytes number, Number
- 4 bytes number, Capacity
- 4 bytes number, Number nonResidentIndexes
0 to Number nonResidentIndexes
- 4 bytes number, nonResidentIndex
- 4 bytes number, Number
- 4 bytes number, Capacity
- 4 bytes number, Number Indexes
0 to Number Indexes
- 4 bytes number, Index
- ver greater/equal 1
- 4 bytes number, Number Indexes
- 4 bytes number, Capacity
- 4 bytes number, Number nonResidentIndexes
0 to Number nonResidentIndexes
- 4 bytes number, nonResidentIndex
- 4 bytes number, index
index in TPreferredMemory
- ver equal to 1
0 to PreferredCount (5)
- Bool, old Format Memory Preference
CLodCharacterTexture
- Version (0)
- 4 bytes number, Width // must be equal to NL3D_CLOD_TEXT_WIDTH
- 4 bytes number, Height // must be equal to NL3D_CLOD_TEXT_HEIGHT
- 4 bytes number, Number Points
0 to Number Points
- CTUVQ
CTUVQ
- 1 byte number, T // This is an index on the material in the Mesh. The stage0 texture is taken from this material.
- 1 byte number, U // This is the compressed UV which index the pixel in the
- 1 byte number, V // texture. NB: Ignored if the material is not textured.
- 1 byte number, Q // The lower, the better. This said how near this pixel is from the shape vertex.
CMaterial
- Version (9)
- 4 bytes number, index
index in TShader:
- 4 bytes number, flags
- 4 bytes number, index
index in TBlend, Source Blenders
- 4 bytes number, index
index in TBlend, Destination Blenders
- 4 bytes number, index
index in ZFunc
- Float, ZBias
- RGBA, Color
- RGBA, Emissive
- RGBA, Ambient
- RGBA, Diffuse
- RGBA, Specular
- ver greater/equal to 2
- Float, Shininess
- ver greater/equal to 5
- Float, AlphaTestThreshold
- ver greater/equal to 8
- 2 bytes number, Texture Coordinate Generation Mode
0 to IDRV_MAT_MAXTEXTURES (4)
- PolyPtr (ITexture), Texture
- ver greater/equal to 1
- CMaterial::CTexEnv (ver greater/equal 9 -> 1 , otherwise 0)
- ver greater/equal to 3
- ver greater/equal to 7
- 4 bytes number, Number of Light Maps
0 to Number of Light Maps
- CMaterial::CLightMap_old
- Bool // multiply x 2 mode to burn colors (used with lightmaps 8 bits)
- ver smaller 7
- 4 bytes number, Number of Light Maps
0 to Number of Light Maps
- CMaterial::CLightMap
- ver greater/equal to 4
- flags bit 11 set
0 to Max Textures (4)
- 1 byte number, Texture Address Mode
- ver greater/equal to 6
0 to Max Textures (4), i
- flags bit 21+i set
- CMatrix, Texture User Mat
CMaterial::CLightMap_old
- RGBA, Factor
- PolyPtr (ITexture), Texture
CMaterial::CLightMap
- Version, ver (1)
- RGBA, Factor
- RGBA, LMCDiffuse
- ver greater/equal to 1
- RGBA, LMCAmbient
- PolyPtr (ITexture), Texture
CMaterial::CTexEnv ver
- 1 byte number, Color Operand
- 1 byte number, Color Argument 0
- 1 byte number, Color Operand 0
- 1 byte number, Color Argument 1
- 1 byte number, Color Operand 1
- ver greater 0
- 1 byte number, Color Argument 2
- 1 byte number, Color Operand 2
- 1 byte number, Alpha Operand
- 1 byte number, Alpha Argument 0
- 1 byte number, Alpha Operand 0
- 1 byte number, Alpha Argument 1
- 1 byte number, Alpha Operand 1
- ver greater 0
- 1 byte number, Alpha Argument 2
- 1 byte number, Alpha Operand 2
- RGBA, Constant Color
CMeshGeom
- Version, ver (4)
- ver bigger/equal to 4
- 4 bytes number, Number Bone Names
0 to Number Bone Names
- String, Bone Name
- ver bigger/equal to 3
- PolyPtr (IMeshVertexProgram = CMeshVPWindTree/CMeshVPPerPixelLight), Mesh Vertex Program
- ver bigger/equal to 1
- CMeshMorpher, Mesh Morpher
- CVertexBuffer, VBuffer
- 4 bytes number, Number Matrix Blocks
0 to Number Matrix Blocks
- CMeshGeom::CMatrixBlock
- CAABBox, BBox
- Bool, Skinned
CMesh::CSkinWeight
0 to NL3D_MESH_SKINNING_MAX_MATRIX (4), i
- 4 bytes number, MatrixId[i]
- Float, Weights[i] // sum of all 4 must be 1
CMesh
- Version, ver (6)
- ver greater/equal to 6
- CMeshBase
- CMeshGeom
- ver smaller 6
- too old
CMeshBase
- Version, ver (9)
- ver greater/equal to 2
- 4 bytes number, Number Animated Morphs
0 to Number Animated Morphs
- String, Material Name
- ver bigger than 1
- Version
- 3DVector, Default Position
- Version
- 3DVector, Default Pivot
- Version
- 3DVector, Default Rotation Euler
- Version
- 4DVector, Default Rotation Quat
- Version
- 3DVector, Default Scale
- 4 bytes number, Number Materials
0 to Number Materials
- CMaterial
- 4 bytes number, Number Elements
0 to Number Elements
- 4 bytes number, key
- CMaterialBase, value
- map key to value
- ver bigger/equal to 8 // Map m maps light name to map p
// Map p maps index to matnumber and stage number
- 4 bytes number, Number Lights
0 to Number Lights
- CMeshBase::CLightMapInfoList
- ver smaller than 8 // Map m maps light name to map p
// Map p maps index to matnumber and stage number
- 4 bytes number, Number Lights
0 to Number Lights
- String, key
- 4 bytes number, num
0 to num, i
- 1 byte number, value[i]["MatNumber"]
- 1 byte number, value[i]["StageNumber"]
- map key to value[][]
- ver bigger/equal to 3
- Bool, Lightable
- ver bigger/equal to 4
- Bool, Use Lighting Local Attenuation
- ver bigger/equal to 5
- Bool, Auto Anim
- ver bigger/equal to 6
- Float, Max Distance
- ver bigger/equal to 7
- 8 bytes number, id
- if id not read yet
- CLodCharacterTexture
- ver bigger/equal to 9
- 4 bytes number, index
index in CameraCollisionGenerate
CMeshMRMGeom::CLod
- Version, ver (2)
- 4 bytes number, Number Wedges
- 4 bytes number, Number RdrPasses
0 to Number RdrPasses
- CMeshMRMGeom::CRdrPass
- 4 bytes number, Number Geomorphs
0 to Number Geomorphs
- CMRMWedgeGeom
- 4 bytes number, Number Matrix Influences
0 to Number Matrix Influences
- 4 bytes number, Matrix Influencing this Lod
0 to NL3D_MESH_SKINNING_MAX_MATRIX (4) // 0th for vertices with one matrix, 1st for vertices with two matrices ...
- 4 bytes number, Number Influenced Vertices
0 to Number Influenced Vertices
- 4 bytes number, Influenced Vertice
- ver greater/equal to 1
- 4 bytes number, Number Skin Vertex Blocks
0 to Number Skin Vertex Blocks
- CMeshMRMGeom::CVertexBlock
CMeshMRMGeom
- Version, ver (5)
- ver greater/equal to 3
- 4 bytes number, Number Bones
0 to Number Bones
- String, Bone Name
- ver greater/equal to 2
- PolyPtr (IMeshVertexProgram = CMeshVPPerPixelLight/CMeshVPWindTree), Mesh Vertex Program
- ver greater/equal to 1
- CMeshMorpher, Mesh Morpher
- Bool, Skinned
- CAABBox, BBox
- 4 bytes number, Maximal Face Used // For Load balancing, the max number of faces this MRM use.
- 4 bytes number, Minimum Face Used // For Load balancing, the min number of faces this MRM use.
- Float, Distance Finest // The MRM has its max faces when dist<=DistanceFinest. Must be bigger than 0.
- Float, Distance Middle // The MRM has 50% of its faces at dist==DistanceMiddle. Must be smaller/equal to Distance Finest.
- Float, Distance Coarsest // The MRM has faces/Divisor when dist>=DistanceCoarsest. Must be smaller/equal to Distance Middle.
- Float, OO Distance Delta // compiled info (public for faster serial)
- Float, Distance Pow // compiled info (public for faster serial)
- 4 bytes number, Number Lod Infos
0 to Number Lod Infos, l
- CMeshMRMGeom::CLodInfo, LodInfos[l]
- 4 bytes number, Number Wedges
- CVertexBuffer::Header
- ver greater/equal to 4
- 4 bytes number, Number Skin Weights
0 to Number Skin Weights
- CMesh::CSkinWeight
- ver greater/equal to 5 // Shadow Skin Information
- 4 bytes number, Number Vertices
0 to Number Vertices
- CShadowVertex
- 4 bytes number, Number Triangles
0 to Number Triangles
- 4 bytes number, Triangle
Current position in file = startPos
0 to Number Lod Infos
- 4 bytes number, Relative Lod Offset // absolute Lod offset = startPos + Relative Lod Offset
0 to Number Lod Infos, i
- CMeshMRMGeom::CLod, Lod Face Data
- Version, lver (1)
// startWedge = LodInfos[i].StartAddWedge, endWedge = LodInfos[i].EndAddWedges
- CVertexBuffer::Subset startWedge endWedge
- Skinned
- lver smaller 1
startWedge to endWedge
- CMesh::CSkinWeight
CMeshMRM
- Version (0)
- CMeshBase::serialMeshBase
- CMeshMRMGeom, MeshMRMGeom
CMeshMRMSkinnedGeom::CLod
- Version, ver
- 4 bytes number, Number Wedges
- 4 bytes number, Number RdrPasses
0 to Number RdrPasses
- CMeshMRMSkinnedGeom::CRdrPass
- 4 bytes number, Number Geomorphs
0 to Number Geomorphs
- CMRMWedgeGeom
- 4 bytes number, Number Matrix Influences
0 to Number Matrix Influences
- 4 bytes number, Matrix Influencing this Lod
0 to NL3D_MESH_SKINNING_MAX_MATRIX (4) // 0th for vertices with one matrix, 1st for vertices with two matrices ...
- 4 bytes number, Number Influenced Vertices
0 to Number Influenced Vertices
- 4 bytes number, Influenced Vertice
CMeshMRMSkinnedGeom
- Version (0)
- 4 bytes number, Number Bones
0 to Number Bones
- String, Bone Name
- CAABBox, BBox
- 4 bytes number, Maximal Face Used // For Load balancing, the max number of faces this MRM use.
- 4 bytes number, Minimum Face Used // For Load balancing, the min number of faces this MRM use.
- Float, Distance Finest // The MRM has its max faces when dist<=DistanceFinest. Must be bigger than 0.
- Float, Distance Middle // The MRM has 50% of its faces at dist==DistanceMiddle. Must be smaller/equal to Distance Finest.
- Float, Distance Coarsest // The MRM has faces/Divisor when dist>=DistanceCoarsest. Must be smaller/equal to Distance Middle.
- Float, OO Distance Delta // compiled info (public for faster serial)
- Float, Distance Pow // compiled info (public for faster serial)
- CMeshMRMSkinnedGeom::CPackedVertexBuffer
- 4 bytes number, Number Vertices
0 to Number Vertices
- CShadowVertex
- 4 bytes number, Number Triangles
0 to Number Triangles
- 4 bytes number, Triangle
- 4 bytes number, Number Lods
0 to Number Lods
- CMeshMRMSkinnedGeom::CLod
CMeshMRMSkinned
- Version (0)
- CMeshBase::serialMeshBase
- CMeshMRMSkinnedGeom, Mesh MRM Geom
CMeshMRMSkinnedGeom::CPackedVertexBuffer
- Version (0)
- 4 bytes number, Number Packed Buffers
0 to Number Packed Buffers
- CMeshMRMSkinnedGeom::CPackedVertexBuffer::CPackedVertex
- Float, Decompact Scale
CMeshMRMSkinnedGeom::CPackedVertexBuffer::CPackedVertex
- Version (0)
- 2 bytes number, X
- 2 bytes number, Y
- 2 bytes number, Z
- 2 bytes number, Nx
- 2 bytes number, Ny
- 2 bytes number, Nz
- 2 bytes number, U
- 2 bytes number, V
0 to NL3D_MESH_MRM_SKINNED_MAX_MATRIX (4)
- 1 byte number, Matrices[i]
- 1 byte number, Weights[i]
CMeshMultiLod
- Version (0)
- CMeshBase::serialMeshBase
- Bool, StaticLod
- 4 bytes number, Number Mesh Slots
0 to Number Mesh Slots
- CMeshMultiLod::CMeshSlot
CMeshMultiLod::CMeshSlot
- Version (0)
- PolyPtr (IMeshGeom = CMeshGeom/CMeshMRMGeom/CMeshMRMSkinnedGeom), MeshGeom
- Float, A
- Float, B
- Float, DistMax
- Float, End Polygon Count
- Float, Blend Length
- 1 byte number, Flags
CMeshVPPerPixelLight
- Verison (0)
- Bool, Specular Lighting
CMeshVPWindTree
- Version (0)
0 to HrcDepth (3)
- Float, Frequency
- Float, Frequency Wind Factor
- Float, Power XY
- Float, Power Z
- Float, Bias
- Bool Specular Lighting
CBlendShape
- Version, ver (1)
- String, Name
- 4 bytes number, Number Delta Positions
0 to Number Delta Positions
- 3DVector, Delta Position
- 4 bytes number, Number Delta Norm
0 to Number Delta Norm
- 3DVector, Delta Norm
- 4 bytes number, Number Delta UV
0 to Number Delta UV
- CUV, Delta UV
- 4 bytes number, Number Delta Color
0 to Number Delta Color
- CRGBAF, Delta Color
- ver greater/equal to 1
- 4 bytes number, Number Delta Tg Space
0 to Number Delta Tg Space
- 3DVector, Delta Tg Space
- 4 bytes number, Number Vertex References
0 to Number Vertex References
- 4 bytes number, Vertex Reference
CMeshMorpher
- Version (0)
- 4 bytes number, Number Blend Shapes
0 to Number Blend Shapes
- CBlendShape
CSkeletonShape
- Version, ver (1)
- 4 bytes number, Number Bones
0 to Number Bones
- CBoneBase
- 4 bytes number, Number Elements
0 to Number Elements
- String, key
- 4 bytes number, value
- map key to value // Bone Map
- ver greater/equal to 1
- 4 bytes number, Number Lods
0 to Number Lods
- CSkeletonShape::CLod
- ver smaller 1
// default Lod = all bones activated
CShapeStream
- 4 bytes that are "SHAP"
- PolyPtr (IShape)
CSkeletonShape::CLod
- Version (0)
- Float, Distance
- 4 bytes number, Number Bones
0 to Number Bones
- 1 byte number, Active Bone // active if 0xFF, else 0
ITexture
- Version, ver (1)
- 4 bytes number, index
index in TUploadFormat
- 4 bytes number, index
index in TWrapMode
- 4 bytes number, index
index in TWrapMode
- 4 bytes number, index
index in TMinFilter
- 4 bytes number, index
index in TMagFilter
- ver greater/equal to 1
- Bool, Load Grayscale As Alpha
CTextureCube
- Version, ver (2)
- ITexture
0 to 6
- PolyPtr (ITexture), Texture
- ver equal to 1
- Bool
CTextureFile
- Version, ver (1)
- ITexture
- String, File Name
- ver greater/equal to 1
- Bool, Allow Degradation
CTextureMultiFile
- Version (0)
- ITexture
- 4 bytes number, Number File Names
0 to Number File Names
- String, File Name
- 4 bytes number, Current Selected Texture
CTrackSampledCommon::CTimeBlock
- Version (0)
- 2 bytes number, Time Offset // Value to add to the key in the array to have real frame value
- 4 bytes number, Key Offset // Value to add to the index to have Key index in _Keys
- 4 bytes number, Number Times
0 to Number Times
- 1 byte number, Time // Key Time. Separated for optimal memory packing, and better cache use at dichotomy search
CTrackSampledCommon::serialCommon
- Version (0)
- Bool, Loop Mode
- Float, Begin Time
- Float, End Time
- Float, Total Range
- Float, OO Total Range
- Float, Delta Time
- Float, OO Delta Time
- 4 bytes number, Number Time Blocks
0 to Number Time Blocks
- CTrackSampledCommon::CTimeBlock
CTrackSampledQuat
- Version, ver (1)
- ver smaller/equal to 0
- Bool, Loop Mode
- Float, Begin Time
- Float, End Time
- Float, Total Range
- Float, OO Total Range
- Float, Delta Time
- Float, OO Delta Time
- 4 bytes number, Number Time Blocks
0 to Number Time Blocks
- CTrackSampledCommon::CTimeBlock
- ver greater 0
- CTrackSampledCommon::serialCommon
- 4 bytes number, Number Keys
0 to Number Keys
- CQuatPack
CTrackSampledVector
- Version (0)
- CTrackSampledCommon::serialCommon
- 4 bytes number, Number Keys
0 to Number Keys
- 3DVector
CVertexBuffer
- Version, ver (2)
- ver smaller 2
- 4 bytes number, Flags
bit 1 = XYZ
bit 2 = Weight0, WeightCount = 1 // if multiple, highest WeightCount
bit 3 = Weight1, WeightCount = 2
bit 4 = Weight2, WeightCount = 3
bit 5 = Weight3, WeightCount = 4
bit 6 = Normal
bit 7 = PrimaryColor
bit 8 = SecondaryColor
bit 9 = TexCoord0
bit 10 = TexCoord1
bit 11 = TexCoord2
bit 12 = TexCoord3
bit 13 = TexCoord4
bit 14 = TexCoord5
bit 15 = TexCoord6
bit 16 = TexCoord7
bits 17 & 2 & 3 & 4 & 5 = PaletteSkin
- 4 bytes number, Number Vertices
0 to Number Vertices
- XYZ_Flag
- 3DVector, XYZ
- Normal_Flag
- 3DVector, Normal
0 to MaxStage (8), i
- UVi_Flag
- CUV
- PrimaryColor_Flag
- RGBA, Color
- SecondaryColor_Flag
- RGBA, Specular
0 to WeightCount
- Float, Weight
- PaletteSkin_Flag
- CPaletteSkin
- ver greater/equal to 2
- CVertexBuffer::Header
- CVertexBuffer::Subset 0 (=startWedge) Number Vertices (=endWedge)
CVertexBuffer::Header
- Version, ver (3)
- ver smaller 1
- 4 bytes number, Flags
bit 1 = XYZ
bit 2 = Weight0, WeightCount = 1 // if multiple, highest WeightCount
bit 3 = Weight1, WeightCount = 2
bit 4 = Weight2, WeightCount = 3
bit 5 = Weight3, WeightCount = 4
bit 6 = Normal
bit 7 = PrimaryColor
bit 8 = SecondaryColor
bit 9 = TexCoord0
bit 10 = TexCoord1
bit 11 = TexCoord2
bit 12 = TexCoord3
bit 13 = TexCoord4
bit 14 = TexCoord5
bit 15 = TexCoord6
bit 16 = TexCoord7
bits 17 & 2 & 3 & 4 & 5 = PaletteSkin
- ver greater/equal to 1
- 2 bytes number, Flags
bit 1 = Position
bit 2 = Normal
bit 3 = TexCoord0
bit 4 = TexCoord1
bit 5 = TexCoord2
bit 6 = TexCoord3
bit 7 = TexCoord4
bit 8 = TexCoord5
bit 9 = TexCoord6
bit 10 = TexCoord7
bit 11 = PrimaryColor (Color?)
bit 12 = SecondaryColor (Specular?)
bit 13 = Weight
bit 14 = PaletteSkin
bit 15 = Fog
bit 16 = Empty
0 to NumValue (16), i
- 1 byte number, Type[i]
- 4 bytes number, Number Vertices
- ver greater/equal to 2
- 1 byte number, Vertex Color Format
- ver greater/equal to 3
- 4 bytes number, index
index in TPreferredMemory
- String, Name
CVertexBuffer::Subset startWedge endWedge
- Version, ver (2)
startWedge to endWedge
0 to NumValue (16), i
- Flags bit i set
- Type[i] equal 0
- Double
- Type[i] equal 1
- Float
- Type[i] equal 2
- 2 bytes number
- Type[i] equal 3
- Double
- Double
- Type[i] equal 4
- Float
- Float
- Type[i] equal 5
- 2 bytes number
- 2 bytes number
- Type[i] equal 6
- Double
- Double
- Double
- Type[i] equal 7
- Float
- Float
- Float
- Type[i] equal 8
- 2 bytes number
- 2 bytes number
- 2 bytes number
- Type[i] equal 9
- Double
- Double
- Double
- Double
- Type[i] equal 10
- Float
- Float
- Float
- Float
- Type[i] equal 11
- 2 bytes number
- 2 bytes number
- 2 bytes number
- 2 bytes number
- Type[i] equal 12
- 1 byte number
- 1 byte number
- 1 byte number
- 1 byte number
- ver greater/equal to 2
- 1 byte number, UVRouting
- 1 byte number, UVRouting
- 1 byte number, UVRouting
- 1 byte number, UVRouting
- 1 byte number, UVRouting
- 1 byte number, UVRouting
- 1 byte number, UVRouting
- 1 byte number, UVRouting
CPaletteSkin
- 1 byte number, MatrixId 0
- 1 byte number, MatrixId 1
- 1 byte number, MatrixId 2
- 1 byte number, MatrixId 3
CTexAnimTracks
- Version, ver (0)
- Version
- Float, Default U Translation
- Version
- Float, Default V Translation
- Version
- Float, Default U Scale
- Version
- Float, Default V Scale
CMeshGeom::CMatrixBlock
- Version (0)
0 to IDriver::MaxModelMatrix (16)
- 4 bytes number, Matrix Id
- 4 bytes number, Number Matrix
- 4 bytes number, Number Rdr Passes
0 to Number Rdr Passes
- CMeshGeom::CRdrPass
CMeshGeom::CRdrPass
- Version (0)
- 4 bytes number, Material Id
- CIndexBuffer, Primitives list
CMeshBase::CMatStageV7
- 1 byte number, Material Number
- 1 byte number, Stage Number
CMeshBase::CLightInfoMapListV7
- 4 bytes number, Number Material Stages
0 to Number Material Stages
- CMatStageV7
CMeshBase::CLightMapInfoList
- Version (0)
- 4 bytes number, Light Group
- String, Animated Light
- 4 bytes number, Number Mat Stages
0 to Number Mat Stages
CMeshBase::CMatStage
CMeshBase::CLightMapInfoList::CMatStage
- Version (0)
- 1 byte number, Material Id
- 1 byte number, Stage Id
CMeshMRMGeom::CRdrPass
- Version (0)
- 4 bytes number, Material Id
- CIndexBuffer, Primitives Block
CMeshMRMGeom::CVertexBlock
- 4 bytes number, Start Vertex
- 4 bytes number, Number Vertices
CMeshMRMGeom::CLodInfo
- Version (0)
- 4 bytes number, startAddWedge
- 4 bytes number, endAddWedges
CMeshMRMSkinnedGeom::CRdrPass
- Version (0)
- 4 bytes number, Material Id
- 4 bytes number, Number Primitives
0 to Number Primitives
- 2 bytes number, Primitive
CMeshMRMSkinnedGeom::CVertexBlock
- 4 bytes number, Start Vertex
- 4 bytes number, Number Vertices
CMRMWedgeGeom
- 4 bytes number, Start Wedge
- 4 bytes number, End Wedge
CShadowVertex
- Version (0)
- 3DVector, Vertex
- 4 bytes number, Matrix Id
CQuatPack
- 2 bytes number, x
- 2 bytes number, y
- 2 bytes number, z
- 2 bytes number, w
// Quaternion (x * (1/32767), y * (1/32767), z * (1/32767), w * (1/32767))
ITrackKeyFramer Key Type
- Version (0)
- 4 bytes number, Number Elements
0 to Number Elements
- Float, MapKey
- Key Type, MapValue
- map MapKey to MapValue
- Bool, Range Lock
- Float, Range Begin
- Float, Range End
- Bool, Loop Mode
CTrackKeyFramerLinearQuat
- ITrackKeyFramer CKey 4DVector
CTrackKeyFramerLinearVector
- ITrackKeyFramer CKey 3DVector
CTrackKeyFramerTCBQuat
- ITrackKeyFramer CKeyTCB 4DVector
CKey ParseFunc
- Version (0)
- ParseFunc
CKeyTCB ParseFunc
- Version (0)
- ParseFunc
- Float, Tension
- Float, Continuity
- Float, Bias
- Float, Ease To
- Float, Ease From
CTrackDefaultVector
- CTrackDefaultBlendable 3DVector
CTrackDefaultQuat
- CTrackDefaultBlendable 4DVector
CTrackDefaultBlendable Type
- Version (0)
- Type
And those from outside 3d part:
Click to display ⇲
Click to hide ⇱
CAABBox
- Version (0)
- 3DVector, Center
- 3DVector, Half Size
CMatrix
- Version, ver (0)
- 4 bytes number, StateBit
- Float, Scale 33
- StateBit 2nd, 3rd or 4th bit set
- Float, Matrix [0][0]
- Float, Matrix [0][1]
- Float, Matrix [0][2]
- Float, Matrix [1][0]
- Float, Matrix [1][1]
- Float, Matrix [1][2]
- Float, Matrix [2][0]
- Float, Matrix [2][1]
- Float, Matrix [2][2]
- StateBit 1st bit set
- Float, Matrix [0][3]
- Float, Matrix [1][3]
- Float, Matrix [2][3]
- StateBit 5th bit set
- Float, Matrix [3][0]
- Float, Matrix [3][1]
- Float, Matrix [3][2]
- Float, Matrix [3][3]
CUV
- Float, u
- Float, v
CRGBAF
- Float, R (0 - 1)
- Float, G (0 - 1)
- Float, B (0 - 1)
- Float, A (0 - 1)





