====== 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. --- //[[user:siela1915|Sit Melai]] 2016/12/18 02:08// ===== Basic Classes/Types ===== To start some base classes that will be reused a lot: 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: 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 TType (Point Light) PointLight, // The light is a point. SpotLight, // The light is a spotlight with a cone. AmbientLight // The light is an Ambient PointLight in an Ig. ===== List ===== Here's a list with all serializable classes from 3d part of nel: CMaterialBase::CAnimatedTexture // done CMaterialBase // done V: 1 CMorphBase // done V: - 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 // done V: 7 CPointLight // done V: 2 CPointLightNamed // done V: 1 CPointLightNamedArray // done V: 1 CPSAttribMakerMemory CPSAttribMakerMemory CPSAttribMakerMemory 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 // done V: - CTileFarBank::CTileFar CTileFarBank CTileLightInfluence // done V: - 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 // done V: 0 CZone::CPatchConnect // done V: 1 CPatchInfo::CBindInfo // done V: 0 CZone // done V: 4 CTexAnimTracks // done V: 0 CIGSurfaceLight V: 1 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: - CPackedWorld::CZoneInfo CPackedWorld::CZoneIndexList CPackedVertex CPackedTri CPackedTri16 CVector3s // done V: - CPointLightNamedArray::CPointLightGroup // done V: 0 CPointLightNamedArray::CPointLightGroupV0 // done V: - CSnappedVector CPSAttrib 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 // done V: - CTileColorOldPatchVersion6 // done V: - 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: CAABBox // done V: 0 CAABBoxExt // done V: - 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: 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 (un/pack: uX = X * factor) - 2 bytes number, Y (un/pack: uY = Y * factor) - 2 bytes number, Z (un/pack: uZ = Z * factor) - 2 bytes number, Nx (un/pack: uNx = Nx * (1/NL3D_MESH_MRM_SKINNED_NORMAL_FACTOR (32767))) - 2 bytes number, Ny (un/pack: uNy = Ny * (1/NL3D_MESH_MRM_SKINNED_NORMAL_FACTOR (32767))) - 2 bytes number, Nz (un/pack: uNx = Nz * (1/NL3D_MESH_MRM_SKINNED_NORMAL_FACTOR (32767))) - 2 bytes number, U (un/pack: uU = U * (1/NL3D_MESH_MRM_SKINNED_UV_FACTOR (8192))) - 2 bytes number, V (un/pack: uV = V * (1/NL3D_MESH_MRM_SKINNED_UV_FACTOR (8192))) 0 to NL3D_MESH_MRM_SKINNED_MAX_MATRIX (4) - 1 byte number, Matrices[i] - 1 byte number, Weights[i] (un/pack: uWeight = Weights[i] * (1/NL3D_MESH_MRM_SKINNED_WEIGHT_FACTOR (255))) 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 CPatch - Version, ver (7) - ver smaller 2 - not supported anymore - ver greater/equal to 2 0 to 4 - CVector3s, Vertex 0 to 8 - CVector3s, Tangent 0 to 4 - CVector3s, Interior - 4 bytes number, Number Tiles 0 to Number Tiles - CTileElement - ver smaller/equal to 6 - 4 bytes number, Number Tile Colors 0 to Number Tile Colors - CTileColorOldPatchVersion6 - ver greater 6 - 4 bytes number, Number Tile Colors 0 to Number Tile Colors - CTileColor - 1 byte number, Order S - 1 byte number, Order T - 4 bytes number, Number Compressed Lumels 0 to Number Compressed Lumels - 1 byte number, Compressed Lumel - ver greater/equal to 3 - 1 byte number, Noise Rotation // The orientation of the NoiseMap. 0,1,2,3. This represent a CCW rotation of the NoiseMap. - 1 byte number, Corner Smooth Flag - ver greater/equal to 4 - 1 byte number, Flags - ver greater/equal to 5 - 4 bytes number, Number Tile Light Influences 0 to Number Tile Light Influences - CTileLightInfluence CPointLight - Version, ver (2) - ver greater/equal to 2 - Bool, Add Ambient With Sun - ver greater/equal to 1 - 4 bytes number, index index in TType - 3DVector, Spot Direction - Float, Spot Angle Begin - Float, Spot Angle End - 3DVector, Position - RGBA, Ambient - RGBA, Diffuse - RGBA, Specular - Float, Attenuation Begin - Float, Attenuation End CPointLightNamed - Version, ver (1) - CPointLight - String, Animated Light - RGBA, Default Ambient - RGBA, Default Diffuse - RGBA, Default Specular - ver greater/equal to 1 - 4 bytes number, Light Group CPointLightNamedArray - Version, ver (1) - 4 bytes number, Number Point Lights 0 to Number Point Lights - CPointLightNamed - ver equal 0 - 4 bytes number, Number Point Light Groups 0 to Number Point Light Groups - String, Key - CPointLightNamedArray::CPointLightGroupV0, Point Light Group - map Key to Point Light Group - ver greater 0 - 4 bytes number, Number Point Light Groups 0 to Number Point Light Groups - CPointLightNamedArray::CPointLightGroup 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 CTileElement - 2 bytes number, Flags 0 to 3 - 2 bytes number, Tile CTileLightInfluence 0 to NumLightPerCorner (2) - 1 byte number, Light Id - 1 byte number, Packed Light Factor 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 CBorderVertex - Version (0) - 2 bytes number, Current Vertex - 2 bytes number, Neighbour Zone Id - 2 bytes number, Neighbour Vertex CZone::CPatchConnect - Version, ver (1) - ver smaller 1 - 1 byte number, Old Order S - 1 byte number, Old Order T - String, ErrorSize 0 to 4 - 2 bytes number, Base Vertex 0 to 4 - CPatchInfo::CBindInfo CPatchInfo::CBindInfo - Version (0) - 1 byte number, Number Patches - 2 bytes number, Zone Id 0 to 4 - 2 bytes number, Neighbour Patch 0 to 4 - 1 byte number, Neighbour Patch Edge CZone - Version, ver (4) - ver smaller 3 - not supported anymore - ver greater/equal to 3 - 4 bytes that are "ENOZ" - 2 bytes number, Zone Id - CAABBoxExt, Zone BB - 3DVector, Patch Bias - Float, Patch Scale - 4 bytes number, Number Vertices - 4 bytes number, Number Border Vertices 0 to Number Border Vertices - CBorderVertex - 4 bytes number, Number Patches 0 to Number Patches - CPatch - 4 bytes number, Number Patch Connects 0 to Number Patch Connects - CZone::CPatchConnect - ver greater/equal to 4 - CPointLightNamedArray 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 CVector3s - 2 bytes number, x (un/pack: ux = x * scale + bias.x) - 2 bytes number, y (un/pack: uy = y * scale + bias.y) - 2 bytes number, z (un/pack: uz = z * scale + bias.z) CPointLightNamedArray::CPointLightGroup - Version (0) - String, Animation Light - 4 bytes number, Light Group - 4 bytes number, Start Id - 4 bytes number, End Id CPointLightNamedArray::CPointLightGroupV0 - 4 bytes number, Start Id - 4 bytes number, End Id CShadowVertex - Version (0) - 3DVector, Vertex - 4 bytes number, Matrix Id CTileColor - 2 bytes number, RGB User Color CTileColorOldPatchVersion6 - 2 bytes number, RGB User Color - 3DVector, Light Vector 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: CAABBox - Version (0) - 3DVector, Center - 3DVector, Half Size CAABBoxExt - CAABBox 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) {{tag>Tag_a_ajouter}}