-
Notifications
You must be signed in to change notification settings - Fork 42
ModData
Engels Quintero edited this page Nov 30, 2024
·
7 revisions
public enum ModDataType : int
{
/// <summary>
/// Advanced Material
/// </summary>
ModDataMtrl = 0x00000000,
ModDataTexAni = 0x00010000,
ModDataMultiTex = 0x00010001,
ModDataMultiTexRev = 0x00010002,
ModDataParticle = 0x00030000,
ModDataEnvMap = 0x00040000,
ModDataBumpEnv = 0x00040001,
/// <summary>
/// Sound Config
/// </summary>
ModDataSound = 0x00050000,
/// <summary>
/// Dynamic Vertex Config
/// </summary>
ModDataDyVertex = 0x00060000,
/// <summary>
/// Dynamic Joint Config
/// </summary>
ModDataDyJoint = 0x00060001,
/// <summary>
/// Dynamic Lattice Config
/// </summary>
ModDataDyLattice = 0x00060002,
ModDataProgEquipPow = 0x00070000,
}
// IModData
4 float Float0
4 int Int0
4 int Int1
4 int JMXVBMT_MtrlIdx // -1 = Apply to all materials
4 int Int3
4 int Int4
1 byte Byte0
1 byte Byte1
1 byte Byte2
1 byte Byte3
// ModDataDyJoint : IModData
No additional data
//ModDataDyLattice : IModData
No additional data
//ModDataDyVertex : IModData
No additional data
//ModDataMtrl : IModData
4 uint length //length in ms
4 uint flag //4 = Curve
4 uint unkUInt7
4 uint gradientKeyCount
for (int i = 0; i < gradientKeyCount; i++)
{
4 uint key.Time //in ms
16 Color4 key.Value
}
if(flag & 4)
{
4 uint curveKeyCount
for (int i = 0; i < curveKeyCount; i++)
{
4 uint key.Time //in ms
4 float key.Value
}
}
4 uint unkUInt8
4 uint unkUInt9
4 uint unkUInt10
4 uint unkUInt11
//as 16 byte struct -> Color4?, Vector4?, Quaternion?
{
4 uint unkUInt12
4 uint unkUInt13
4 uint unkUInt14
4 uint unkUInt15
}
4 uint unkUInt16
//ModDataMultiTex : IModData
4 uint unkUInt5
4 uint Texture.Length
* string Texture //.ddj
4 uint unkUInt6
//ModDataMultiTexRev : IModData
4 uint unkUInt5
4 uint Texture.Length
* string Texture //.ddj
4 uint unkUInt6
//ModDataParticle : IModData
4 uint particleCount
for (int i = 0; i < particleCount; i++)
{
4 uint particle.IsRelativeToOrigin //indicates position pivot
4 uint particle.File.Length
* string particle.File //.efp
4 uint particle.Bone.Length
* string particle.Bone
12 Vector3 particle.Position //relative to origin or bone if present
4 uint particle.BirthTime // in ms
// Initial settings?
1 byte particle.unkByte0
1 byte particle.unkByte1 // 1 = Night time only
1 byte particle.unkByte2
1 byte particle.unkByte3
if(particle.unkByte3 == 1)
{
12 Vector3 particle.unkVector // initial velocity?
}
}
//ModDataProgEquipPow : IModData
No additional data
//ModDataSound : IModData
//(%s) m_pSndSet->Tracks.size()(%d) <= MAX_SOUND_TRACK_PER_ANI
4 uint nSndSetNum
if(nSndSetNum <= 0)
return;
//ModDataSound::ReadConfig (for the 3D audio source?)
{
4 int pSndConfig.Flag // see DSBCAPS.dwFlag (https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ee416818(v=vs.85))
4 int pSndConfig.Int6
4 int pSndConfig.Int7
4 float pSndConfig.Float0 //10
4 float pSndConfig.Float1 //100
4 int pSndConfig.Int8
//read as 16 byte struct -> Color4?, Vector4?, Quaternion?
4 int pSndConfig.Int9
4 int pSndConfig.Int10
4 int pSndConfig.Int11
4 int pSndConfig.Int12
4 int pSndConfig.Int13
}
for (int i = 0; i < nSndSetNum; i++)
{
4 uint pSndSet.Name.Length
* string pSndSet.Name //default
4 uint nTrackNum
//MAX_SOUND_TRACK_PER_ANI = 15
//ASSERT(nTrackNum >= 0 && nTrackNum <= MAX_SOUND_TRACK_PER_ANI)
for (int i = 0; i < nTrackNum; i++)
{
4 uint hasValue
if(hasValue != 1)
continue;
4 uint pSndTrack.File.Length
* string pSndTrack.File //.wav
4 uint pSndTrack.KeyTime //in ms
4 uint pSndTrack.Event.Length
* string pSndTrack.Event
}
}
//ModDataTexAni : IModData
4 uint unkUInt5
4 uint unkUInt6
4 uint unkUInt7
4 uint unkUInt8
4 uint unkUInt9
64 Matrix AnimationMatrix //vss2.c -> VSC_TEXTUREANI_MATRIX
//ModDataEnvMap : IModData
4 uint unkUInt5
4 uint unkUInt6
4 uint unkUInt7
4 uint unkUInt8
//ModDataBumpEnv : ModDataEnvMap
4 float unkFloat1
4 float unkFloat2
4 float unkFloat3
4 float unkFloat4
4 float unkFloat5
4 float unkFloat6
4 uint textureCount
for (int i = 0; i < textureCount; i++)
{
1 byte hasValue
if(hasValue)
{
//BumpData
4 uint texture.Length
* string texture //.ddj
}
}