diff --git a/CGraphicsModel.bt b/CGraphicsModel.bt index 9c75d8e..d38d4b9 100644 --- a/CGraphicsModel.bt +++ b/CGraphicsModel.bt @@ -119,13 +119,6 @@ typedef struct(int readerVersion, int writerVersion) { FourCC type ; } MaterialType ; -struct STextureUsageInfo { - uint flags; - uint filter; - uint wrapX; - uint wrapY; - uint wrapZ; -}; struct SSkinnedModelHeader { uint unk; diff --git a/CMaterialInstanceResource.bt b/CMaterialInstanceResource.bt index 5fa6b0c..f5e7177 100644 --- a/CMaterialInstanceResource.bt +++ b/CMaterialInstanceResource.bt @@ -21,6 +21,32 @@ typedef struct { uchar unk2; } CVariableDesc ; +typedef struct { + FourCC id; + uchar type; + + switch (type) { + case 2: + int unk; + break; + case 3: + case 4: + case 12: + CColor4f color; + break; + case 5: + case 6: + case 7: + case 8: + GUID texture; + STextureUsageInfo textureUsage; + break; + case 10: + CVector4i unk; + break; + } + +} CMaterialInstanceData; // named from CMaterialInstanceDataBuilder, not guaranteed to be accurate typedef struct { ChunkDescriptor chunk; GUID guid1; @@ -65,8 +91,15 @@ typedef struct { } } unkData[unkByte3] ; } - + ubyte unk4; + + uint propertyCount; + CMaterialInstanceData data[propertyCount]; + uint unkFccCount; + struct { + FourCC fcc; + } unkFourCC[unkFccCount]; } else { uint unk1; uchar unk2; diff --git a/NGraphicsMaterial.bt b/NGraphicsMaterial.bt index 5301507..3003803 100644 --- a/NGraphicsMaterial.bt +++ b/NGraphicsMaterial.bt @@ -3,6 +3,14 @@ #include "Common.bt" +struct STextureUsageInfo { + uint flags; + uint filter; + uint wrapX; + uint wrapY; + uint wrapZ; +}; + // NMaterialInstance::ETrait enum ETrait { TRAIT_RFBC = 1,