Fill out more CoD4 structures.

This commit is contained in:
wfowler
2019-05-13 00:12:56 -06:00
parent d4373ee192
commit 2686563805
7 changed files with 102 additions and 51 deletions

View File

@@ -497,8 +497,8 @@ namespace LibBSP {
case MapType.Quake3: {
return 2;
}
case MapType.CoD4:
case MapType.CoD2: {
case MapType.CoD2:
case MapType.CoD4: {
return 4;
}
default: {

View File

@@ -119,7 +119,8 @@ namespace LibBSP {
}
break;
}
case MapType.CoD2: {
case MapType.CoD2:
case MapType.CoD4: {
result.normal = new Vector3d(BitConverter.ToSingle(data, 12), BitConverter.ToSingle(data, 16), BitConverter.ToSingle(data, 20));
result.color = ColorExtensions.FromArgb(data[27], data[24], data[25], data[26]);
result.uv0 = new Vector2d(BitConverter.ToSingle(data, 28), BitConverter.ToSingle(data, 32));
@@ -131,7 +132,6 @@ namespace LibBSP {
}
case MapType.MOHAA:
case MapType.Quake3:
case MapType.CoD4:
case MapType.FAKK: {
result.uv0 = new Vector2d(BitConverter.ToSingle(data, 12), BitConverter.ToSingle(data, 16));
result.uv1 = new Vector2d(BitConverter.ToSingle(data, 20), BitConverter.ToSingle(data, 24));
@@ -147,7 +147,7 @@ namespace LibBSP {
result.normal = new Vector3d(BitConverter.ToSingle(data, 52), BitConverter.ToSingle(data, 56), BitConverter.ToSingle(data, 60));
result.color = ColorExtensions.FromArgb(data[67], data[64], data[65], data[66]);
// Use for two more float fields and two more colors.
// There's actually another field that seems to be color but I've only ever seen it be FFFFFFFF.
// There's actually another field that seems to be color but I've only ever seen it be 0xFFFFFFFF.
result.tangent = new Vector4d(BitConverter.ToSingle(data, 44), BitConverter.ToSingle(data, 48), BitConverter.ToSingle(data, 68), BitConverter.ToSingle(data, 72));
goto case MapType.Quake;
}
@@ -259,6 +259,7 @@ namespace LibBSP {
case MapType.CoD2: {
return 8;
}
case MapType.CoD4:
case MapType.Raven:
case MapType.Quake3: {
return 10;
@@ -324,7 +325,8 @@ namespace LibBSP {
}
break;
}
case MapType.CoD2: {
case MapType.CoD2:
case MapType.CoD4: {
structLength = 68;
break;
}
@@ -391,7 +393,8 @@ namespace LibBSP {
}
break;
}
case MapType.CoD2: {
case MapType.CoD2:
case MapType.CoD4: {
v.normal.GetBytes().CopyTo(bytes, 12);
v.color.GetBytes().CopyTo(bytes, 24);
v.uv0.GetBytes().CopyTo(bytes, 28);
@@ -403,7 +406,6 @@ namespace LibBSP {
}
case MapType.MOHAA:
case MapType.Quake3:
case MapType.CoD4:
case MapType.FAKK: {
v.uv0.GetBytes().CopyTo(bytes, 12);
v.uv1.GetBytes().CopyTo(bytes, 20);

View File

@@ -463,8 +463,8 @@ namespace LibBSP {
case MapType.CoD: {
return 3;
}
case MapType.CoD4:
case MapType.CoD2: {
case MapType.CoD2:
case MapType.CoD4: {
return 5;
}
case MapType.Raven:

View File

@@ -299,7 +299,8 @@ namespace LibBSP {
get {
switch (type) {
case MapType.CoD:
case MapType.CoD2: {
case MapType.CoD2:
case MapType.CoD4: {
return BitConverter.ToInt16(data, 0);
}
case MapType.Quake3:
@@ -329,7 +330,8 @@ namespace LibBSP {
byte[] bytes = BitConverter.GetBytes(value);
switch (type) {
case MapType.CoD:
case MapType.CoD2: {
case MapType.CoD2:
case MapType.CoD4: {
data[0] = bytes[0];
data[1] = bytes[1];
break;
@@ -373,7 +375,8 @@ namespace LibBSP {
case MapType.STEF2:
case MapType.STEF2Demo:
case MapType.MOHAA:
case MapType.FAKK: {
case MapType.FAKK:
case MapType.CoD4: {
return BitConverter.ToInt32(data, 12);
}
default: {
@@ -395,7 +398,8 @@ namespace LibBSP {
case MapType.STEF2:
case MapType.STEF2Demo:
case MapType.MOHAA:
case MapType.FAKK: {
case MapType.FAKK:
case MapType.CoD4: {
bytes.CopyTo(data, 12);
break;
}
@@ -421,6 +425,9 @@ namespace LibBSP {
case MapType.FAKK: {
return BitConverter.ToInt32(data, 16);
}
case MapType.CoD4: {
return BitConverter.ToInt16(data, 16);
}
default: {
return -1;
}
@@ -448,6 +455,11 @@ namespace LibBSP {
bytes.CopyTo(data, 16);
break;
}
case MapType.CoD4: {
data[16] = bytes[0];
data[17] = bytes[1];
break;
}
}
}
}
@@ -709,7 +721,8 @@ namespace LibBSP {
case MapType.STEF2:
case MapType.STEF2Demo:
case MapType.MOHAA:
case MapType.FAKK: {
case MapType.FAKK:
case MapType.CoD4: {
return BitConverter.ToInt32(data, 20);
}
default: {
@@ -731,7 +744,8 @@ namespace LibBSP {
case MapType.STEF2:
case MapType.STEF2Demo:
case MapType.MOHAA:
case MapType.FAKK: {
case MapType.FAKK:
case MapType.CoD4: {
bytes.CopyTo(data, 20);
break;
}
@@ -749,6 +763,9 @@ namespace LibBSP {
case MapType.Nightfire: {
return BitConverter.ToInt32(data, 16);
}
case MapType.CoD4: {
return BitConverter.ToInt16(data, 18);
}
case MapType.Quake3:
case MapType.Raven:
case MapType.STEF2:
@@ -775,6 +792,11 @@ namespace LibBSP {
bytes.CopyTo(data, 16);
break;
}
case MapType.CoD4: {
data[18] = bytes[0];
data[19] = bytes[1];
return;
}
case MapType.Quake3:
case MapType.Raven:
case MapType.STEF2:
@@ -788,28 +810,6 @@ namespace LibBSP {
}
}
public int unknown {
get {
switch (type) {
case MapType.Nightfire: {
return BitConverter.ToInt32(data, 36);
}
default: {
return 0;
}
}
}
set {
byte[] bytes = BitConverter.GetBytes(value);
switch (type) {
case MapType.Nightfire: {
bytes.CopyTo(data, 36);
break;
}
}
}
}
public int lightStyles {
get {
switch (type) {
@@ -930,6 +930,10 @@ namespace LibBSP {
structLength = 20;
break;
}
case MapType.CoD4: {
structLength = 24;
break;
}
case MapType.SiN: {
structLength = 36;
break;
@@ -1021,9 +1025,7 @@ namespace LibBSP {
case MapType.CoD: {
return 6;
}
case MapType.CoD2: {
return 7;
}
case MapType.CoD2:
case MapType.Vindictus:
case MapType.TacticalInterventionEncrypted:
case MapType.Source17:
@@ -1039,7 +1041,8 @@ namespace LibBSP {
case MapType.Quake: {
return 7;
}
case MapType.Nightfire: {
case MapType.Nightfire:
case MapType.CoD4: {
return 9;
}
case MapType.Raven:
@@ -1073,6 +1076,10 @@ namespace LibBSP {
case MapType.DMoMaM: {
return 27;
}
case MapType.CoD4: {
// Not sure where else to put this. This is the simple surfaces lump?
return 47;
}
default: {
return -1;
}

View File

@@ -69,6 +69,9 @@ namespace LibBSP {
[Index("markBrushes")] public int firstMarkBrush {
get {
switch (type) {
case MapType.CoD4: {
return BitConverter.ToInt32(data, 12);
}
case MapType.CoD:
case MapType.CoD2: {
return BitConverter.ToInt32(data, 16);
@@ -112,6 +115,10 @@ namespace LibBSP {
set {
byte[] bytes = BitConverter.GetBytes(value);
switch (type) {
case MapType.CoD4: {
bytes.CopyTo(data, 12);
break;
}
case MapType.CoD:
case MapType.CoD2: {
bytes.CopyTo(data, 16);
@@ -161,6 +168,9 @@ namespace LibBSP {
[Count("markBrushes")] public int numMarkBrushes {
get {
switch (type) {
case MapType.CoD4: {
return BitConverter.ToInt32(data, 16);
}
case MapType.CoD:
case MapType.CoD2: {
return BitConverter.ToInt32(data, 20);
@@ -204,6 +214,10 @@ namespace LibBSP {
set {
byte[] bytes = BitConverter.GetBytes(value);
switch (type) {
case MapType.CoD4: {
bytes.CopyTo(data, 16);
break;
}
case MapType.CoD:
case MapType.CoD2: {
bytes.CopyTo(data, 20);
@@ -491,6 +505,10 @@ namespace LibBSP {
}
int structLength = 0;
switch (type) {
case MapType.CoD4: {
structLength = 24;
break;
}
case MapType.Quake:
case MapType.Quake2:
case MapType.SiN: {
@@ -511,10 +529,6 @@ namespace LibBSP {
structLength = 32;
break;
}
case MapType.Vindictus: {
structLength = 56;
break;
}
case MapType.CoD:
case MapType.CoD2: {
structLength = 36;
@@ -530,7 +544,8 @@ namespace LibBSP {
break;
}
case MapType.Source18:
case MapType.Source19: {
case MapType.Source19:
case MapType.Vindictus: {
structLength = 56;
break;
}
@@ -597,6 +612,9 @@ namespace LibBSP {
case MapType.CoD2: {
return 26;
}
case MapType.CoD4: {
return 28;
}
default: {
return -1;
}

View File

@@ -212,6 +212,9 @@ namespace LibBSP {
[Index("faces")] public int firstFace {
get {
switch (type) {
case MapType.CoD4: {
return BitConverter.ToInt16(data, 24);
}
case MapType.CoD:
case MapType.CoD2:
case MapType.STEF2:
@@ -256,6 +259,11 @@ namespace LibBSP {
set {
byte[] bytes = BitConverter.GetBytes(value);
switch (type) {
case MapType.CoD4: {
data[24] = bytes[0];
data[25] = bytes[1];
break;
}
case MapType.CoD:
case MapType.CoD2:
case MapType.STEF2:
@@ -304,6 +312,9 @@ namespace LibBSP {
[Count("faces")] public int numFaces {
get {
switch (type) {
case MapType.CoD4: {
return BitConverter.ToInt16(data, 28);
}
case MapType.CoD:
case MapType.CoD2:
case MapType.STEF2:
@@ -348,6 +359,11 @@ namespace LibBSP {
set {
byte[] bytes = BitConverter.GetBytes(value);
switch (type) {
case MapType.CoD4: {
data[28] = bytes[0];
data[29] = bytes[1];
break;
}
case MapType.CoD:
case MapType.CoD2:
case MapType.STEF2:

View File

@@ -67,18 +67,18 @@ namespace LibBSP {
switch (type) {
case DataType.Byte:
case DataType.SByte: {
return 1;
return sizeof(sbyte);
}
case DataType.UInt16:
case DataType.Int16: {
return 2;
return sizeof(short);
}
case DataType.UInt32:
case DataType.Int32: {
return 4;
return sizeof(int);
}
case DataType.Int64: {
return 8;
return sizeof(long);
}
default: {
return 0;
@@ -245,6 +245,10 @@ namespace LibBSP {
dataType = DataType.UInt32;
return 27;
}
case MapType.CoD4: {
dataType = DataType.UInt32;
return 29;
}
}
dataType = DataType.Invalid;
return -1;
@@ -280,6 +284,10 @@ namespace LibBSP {
dataType = DataType.UInt16;
return 9;
}
case MapType.CoD4: {
dataType = DataType.UInt16;
return 11;
}
case MapType.Raven:
case MapType.Quake3: {
dataType = DataType.UInt32;