@@ -48,7 +48,11 @@ void ESM4::Light::load(ESM4::Reader& reader)
48
48
break ;
49
49
case ESM::fourCC (" DATA" ):
50
50
{
51
- if (subHdr.dataSize != 32 && subHdr.dataSize != 48 && subHdr.dataSize != 64 )
51
+ // 24: older TES4 records (found in GOG release)
52
+ // 32: newer TES4 records, FO3/FNV
53
+ // 48: TES5
54
+ // 64: FO4/FO76
55
+ if (subHdr.dataSize != 24 && subHdr.dataSize != 32 && subHdr.dataSize != 48 && subHdr.dataSize != 64 )
52
56
{
53
57
reader.skipSubRecordData ();
54
58
break ;
@@ -57,21 +61,23 @@ void ESM4::Light::load(ESM4::Reader& reader)
57
61
reader.get (mData .radius );
58
62
reader.get (mData .colour );
59
63
reader.get (mData .flags );
60
- reader.get (mData .falloff );
61
- reader.get (mData .FOV );
62
- // TES5, FO4
63
- if (subHdr.dataSize >= 48 )
64
+ if (subHdr.dataSize >= 32 )
64
65
{
65
- reader.get (mData .nearClip );
66
- reader.get (mData .frequency );
67
- reader.get (mData .intensityAmplitude );
68
- reader.get (mData .movementAmplitude );
69
- if (subHdr.dataSize == 64 )
66
+ reader.get (mData .falloff );
67
+ reader.get (mData .FOV );
68
+ if (subHdr.dataSize >= 48 )
70
69
{
71
- reader.get (mData .constant );
72
- reader.get (mData .scalar );
73
- reader.get (mData .exponent );
74
- reader.get (mData .godRaysNearClip );
70
+ reader.get (mData .nearClip );
71
+ reader.get (mData .frequency );
72
+ reader.get (mData .intensityAmplitude );
73
+ reader.get (mData .movementAmplitude );
74
+ if (subHdr.dataSize == 64 )
75
+ {
76
+ reader.get (mData .constant );
77
+ reader.get (mData .scalar );
78
+ reader.get (mData .exponent );
79
+ reader.get (mData .godRaysNearClip );
80
+ }
75
81
}
76
82
}
77
83
reader.get (mData .value );
0 commit comments