mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2024-11-26 17:02:53 +08:00
YED parsing progress
This commit is contained in:
parent
97c5e806d8
commit
721b04aa2e
@ -435,11 +435,21 @@ namespace CodeWalker.GameFiles
|
|||||||
case 0x37:
|
case 0x37:
|
||||||
case 0x1D:
|
case 0x1D:
|
||||||
case 0x1E:
|
case 0x1E:
|
||||||
return new ExpressionUnk1_Empty();
|
case 0x46:
|
||||||
|
case 0x1F:
|
||||||
|
case 0x3A:
|
||||||
|
case 0x22:
|
||||||
|
case 0x49:
|
||||||
|
case 0x3F:
|
||||||
|
case 0x1B:
|
||||||
|
case 0x40:
|
||||||
|
case 0x3C:
|
||||||
|
case 0x11:
|
||||||
|
return new ExpressionUnk1_Base();
|
||||||
|
|
||||||
case 0x45:
|
case 0x45:
|
||||||
case 0x44:
|
case 0x44:
|
||||||
return new ExpressionUnk1_S1S2T2();
|
return new ExpressionUnk1_S1();
|
||||||
|
|
||||||
case 0x07:
|
case 0x07:
|
||||||
case 0x09:
|
case 0x09:
|
||||||
@ -449,11 +459,16 @@ namespace CodeWalker.GameFiles
|
|||||||
case 0x27:
|
case 0x27:
|
||||||
case 0x28:
|
case 0x28:
|
||||||
case 0x20:
|
case 0x20:
|
||||||
|
case 0x42:
|
||||||
|
case 0x43:
|
||||||
|
case 0x2A:
|
||||||
|
case 0x06:
|
||||||
return new ExpressionUnk1_S2();
|
return new ExpressionUnk1_S2();
|
||||||
|
|
||||||
case 0x2B:
|
case 0x2B:
|
||||||
case 0x2C:
|
case 0x2C:
|
||||||
return new ExpressionUnk1_2B2C();
|
case 0x2D:
|
||||||
|
return new ExpressionUnk1_2B2C2D();
|
||||||
|
|
||||||
|
|
||||||
case 0x0B: return new ExpressionUnk1_0B();
|
case 0x0B: return new ExpressionUnk1_0B();
|
||||||
@ -462,7 +477,7 @@ namespace CodeWalker.GameFiles
|
|||||||
case 0x0E: return new ExpressionUnk1_0E();
|
case 0x0E: return new ExpressionUnk1_0E();
|
||||||
|
|
||||||
}
|
}
|
||||||
return new ExpressionUnk1_Empty();
|
return new ExpressionUnk1_Base();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -475,178 +490,132 @@ namespace CodeWalker.GameFiles
|
|||||||
[TypeConverter(typeof(ExpandableObjectConverter))] public class ExpressionUnk1_Base
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class ExpressionUnk1_Base
|
||||||
{
|
{
|
||||||
public byte Type { get; set; }
|
public byte Type { get; set; }
|
||||||
public byte Type2 { get; set; }
|
|
||||||
|
|
||||||
public UnkStruct1 Struct1 { get; set; }
|
|
||||||
public UnkStruct2 Struct2 { get; set; }
|
|
||||||
|
|
||||||
public class UnkStruct1
|
|
||||||
{
|
|
||||||
public uint Length { get; set; }
|
|
||||||
public uint ItemCount { get; set; }
|
|
||||||
public uint ItemType { get; set; }
|
|
||||||
public uint Unk1 { get; set; }
|
|
||||||
|
|
||||||
public byte[] Data { get; set; }
|
|
||||||
//public Matrix[] Matrices { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public void Read(DataReader r)
|
|
||||||
{
|
|
||||||
Length = r.ReadUInt32();
|
|
||||||
ItemCount = r.ReadUInt32();
|
|
||||||
ItemType = r.ReadUInt32();
|
|
||||||
Unk1 = r.ReadUInt32();
|
|
||||||
|
|
||||||
var len = Length;
|
|
||||||
//if (len == 0) len = 272;
|
|
||||||
var dlen = (int)len - 16;
|
|
||||||
if (dlen > 0)
|
|
||||||
{
|
|
||||||
Data = r.ReadBytes(dlen);
|
|
||||||
}
|
|
||||||
|
|
||||||
//if (ItemType > 1)
|
|
||||||
//{
|
|
||||||
// if (((ItemCount * ItemType * 32) + 16) != Length)
|
|
||||||
// { }
|
|
||||||
//}
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
// if (((ItemCount * ItemType * 32)) != Length)
|
|
||||||
// { }
|
|
||||||
//}
|
|
||||||
|
|
||||||
switch (ItemCount)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
case 4:
|
|
||||||
case 8:
|
|
||||||
case 12:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
switch (ItemType)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
case 1:
|
|
||||||
case 2:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
public void Write(DataWriter w)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ToString()
|
|
||||||
{
|
|
||||||
return Length.ToString() + ", " + ItemCount.ToString() + ", " + ItemType.ToString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public class UnkStruct2
|
|
||||||
{
|
|
||||||
public ushort Unk00 { get; set; }
|
|
||||||
public ushort Unk02 { get; set; }
|
|
||||||
public byte Unk04 { get; set; }
|
|
||||||
public byte Unk05 { get; set; }
|
|
||||||
public byte Unk06 { get; set; }
|
|
||||||
public byte Unk07 { get; set; }
|
|
||||||
|
|
||||||
public void Read(DataReader r)
|
|
||||||
{
|
|
||||||
Unk00 = r.ReadUInt16();
|
|
||||||
Unk02 = r.ReadUInt16();
|
|
||||||
Unk04 = r.ReadByte();
|
|
||||||
Unk05 = r.ReadByte();
|
|
||||||
Unk06 = r.ReadByte();
|
|
||||||
Unk07 = r.ReadByte();
|
|
||||||
}
|
|
||||||
public void Write(DataWriter w)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ToString()
|
|
||||||
{
|
|
||||||
var str = Unk00.ToString() + ", " + Unk02.ToString() + ", " + Unk04.ToString() + ", " + Unk05.ToString() + ", " + Unk06.ToString() + ", " + Unk07.ToString();
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public string TypeStr { get => Type.ToString("X").PadLeft(2, '0'); }
|
public string TypeStr { get => Type.ToString("X").PadLeft(2, '0'); }
|
||||||
public string Type2Str { get => Type2.ToString("X").PadLeft(2, '0'); }
|
|
||||||
|
|
||||||
|
|
||||||
public virtual void Read(DataReader r1, DataReader r2, DataReader r3)
|
public virtual void Read(DataReader r1, DataReader r2, DataReader r3)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
|
||||||
public UnkStruct1 ReadStruct1(DataReader r1)
|
|
||||||
{
|
|
||||||
Struct1 = new UnkStruct1();
|
|
||||||
Struct1.Read(r1);
|
|
||||||
return Struct1;
|
|
||||||
}
|
|
||||||
public UnkStruct2 ReadStruct2(DataReader r2)
|
|
||||||
{
|
|
||||||
Struct2 = new UnkStruct2();
|
|
||||||
Struct2.Read(r2);
|
|
||||||
return Struct2;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ToString()
|
|
||||||
{
|
|
||||||
var str = TypeStr + ", " + Type2Str;
|
|
||||||
if (Struct2 != null)
|
|
||||||
{
|
|
||||||
str += " - " + Struct2.ToString();
|
|
||||||
}
|
|
||||||
if (Struct1 != null)
|
|
||||||
{
|
|
||||||
str += " - " + Struct1.ToString();
|
|
||||||
}
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
[TypeConverter(typeof(ExpandableObjectConverter))] public class ExpressionUnk1_Empty : ExpressionUnk1_Base
|
|
||||||
{
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
return TypeStr;
|
return TypeStr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[TypeConverter(typeof(ExpandableObjectConverter))] public class ExpressionUnk1_S1S2T2 : ExpressionUnk1_Base
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class ExpressionUnk1_S1 : ExpressionUnk1_Base
|
||||||
{
|
{
|
||||||
|
public uint Length { get; set; }
|
||||||
|
public uint ItemCount { get; set; }//is this right?
|
||||||
|
public uint ItemType { get; set; }//is this right?
|
||||||
|
public uint Unk1 { get; set; } // 0x00000000
|
||||||
|
|
||||||
|
public byte[] Data { get; set; }
|
||||||
|
|
||||||
|
|
||||||
public override void Read(DataReader r1, DataReader r2, DataReader r3)
|
public override void Read(DataReader r1, DataReader r2, DataReader r3)
|
||||||
{
|
{
|
||||||
ReadStruct1(r1);
|
Length = r1.ReadUInt32();
|
||||||
ReadStruct2(r2);
|
ItemCount = r1.ReadUInt32();
|
||||||
Type2 = r3.ReadByte();
|
ItemType = r1.ReadUInt32();
|
||||||
|
Unk1 = r1.ReadUInt32();
|
||||||
|
|
||||||
|
var len = Length;
|
||||||
|
var dlen = (int)len - 16;
|
||||||
|
if (dlen > 0)
|
||||||
|
{
|
||||||
|
Data = r1.ReadBytes(dlen);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ }//no hit
|
||||||
|
|
||||||
|
|
||||||
|
var ib = (int)(ItemCount * ItemType * 32);
|
||||||
|
var idif = (int)Length - ib;
|
||||||
|
switch (idif)
|
||||||
|
{
|
||||||
|
case 16:
|
||||||
|
case 0:
|
||||||
|
case -16:
|
||||||
|
case 48:
|
||||||
|
case 80:
|
||||||
|
case 32:
|
||||||
|
case 112:
|
||||||
|
case 144:
|
||||||
|
case 64:
|
||||||
|
case -32:
|
||||||
|
case -64:
|
||||||
|
case -48:
|
||||||
|
case -80:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;//no hit
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
switch (ItemCount)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
case 4:
|
||||||
|
case 8:
|
||||||
|
case 12:
|
||||||
|
case 20:
|
||||||
|
case 24:
|
||||||
|
case 48:
|
||||||
|
case 52:
|
||||||
|
case 76:
|
||||||
|
case 32:
|
||||||
|
case 16:
|
||||||
|
case 40:
|
||||||
|
case 44:
|
||||||
|
case 60:
|
||||||
|
case 72:
|
||||||
|
case 56:
|
||||||
|
case 28:
|
||||||
|
case 68:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;//no hit
|
||||||
|
}
|
||||||
|
switch (ItemType)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
case 3:
|
||||||
|
case 4:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;//no hit
|
||||||
|
}
|
||||||
|
if (Unk1 != 0)
|
||||||
|
{ }//no hit
|
||||||
|
}
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return TypeStr + ", 1: - " + Length.ToString() + ", " + ItemCount.ToString() + ", " + ItemType.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[TypeConverter(typeof(ExpandableObjectConverter))] public class ExpressionUnk1_S2 : ExpressionUnk1_Base
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class ExpressionUnk1_S2 : ExpressionUnk1_Base
|
||||||
{
|
{
|
||||||
|
public ushort Unk00 { get; set; }
|
||||||
|
public ushort Unk02 { get; set; }
|
||||||
|
public byte Unk04 { get; set; }
|
||||||
|
public byte Unk05 { get; set; }
|
||||||
|
public byte Unk06 { get; set; }
|
||||||
|
public byte Unk07 { get; set; }
|
||||||
|
|
||||||
public override void Read(DataReader r1, DataReader r2, DataReader r3)
|
public override void Read(DataReader r1, DataReader r2, DataReader r3)
|
||||||
{
|
{
|
||||||
ReadStruct2(r2);
|
Unk00 = r2.ReadUInt16();
|
||||||
|
Unk02 = r2.ReadUInt16();
|
||||||
|
Unk04 = r2.ReadByte();
|
||||||
|
Unk05 = r2.ReadByte();
|
||||||
|
Unk06 = r2.ReadByte();
|
||||||
|
Unk07 = r2.ReadByte();
|
||||||
}
|
}
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
var str = TypeStr;
|
return TypeStr + ", 2: - " + Unk00.ToString() + ", " + Unk02.ToString() + ", " + Unk04.ToString() + ", " + Unk05.ToString() + ", " + Unk06.ToString() + ", " + Unk07.ToString();
|
||||||
if (Struct2 != null)
|
|
||||||
{
|
|
||||||
str += " - " + Struct2.ToString();
|
|
||||||
}
|
|
||||||
return str;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[TypeConverter(typeof(ExpandableObjectConverter))] public class ExpressionUnk1_2B2C : ExpressionUnk1_Base
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class ExpressionUnk1_2B2C2D : ExpressionUnk1_Base
|
||||||
{
|
{
|
||||||
public float UnkFloat1 { get; set; }
|
public float UnkFloat1 { get; set; }
|
||||||
public uint UnkUint1 { get; set; }
|
public uint UnkUint1 { get; set; }
|
||||||
@ -660,72 +629,21 @@ namespace CodeWalker.GameFiles
|
|||||||
}
|
}
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
return TypeStr + " - " + UnkFloat1.ToString() + ", " + UnkUint1.ToString() + ", " + UnkUint2.ToString();
|
return TypeStr + ", 2: - " + UnkFloat1.ToString() + ", " + UnkUint1.ToString() + ", " + UnkUint2.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[TypeConverter(typeof(ExpandableObjectConverter))] public class ExpressionUnk1_0B : ExpressionUnk1_Base
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class ExpressionUnk1_0B : ExpressionUnk1_Base
|
||||||
{
|
{
|
||||||
public ExpressionUnk1_Base[] Children { get; set; }
|
|
||||||
public Vector4 UnkVec1 { get; set; }
|
public Vector4 UnkVec1 { get; set; }
|
||||||
|
|
||||||
public List<ExpressionUnk1_Base[]> Sets { get; set; }
|
|
||||||
public void AddSet(ExpressionUnk1_Base[] set)
|
|
||||||
{
|
|
||||||
if (Sets == null) Sets = new List<ExpressionUnk1_Base[]>();
|
|
||||||
Sets.Add(set);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Read(DataReader r1, DataReader r2, DataReader r3)
|
public override void Read(DataReader r1, DataReader r2, DataReader r3)
|
||||||
{
|
{
|
||||||
var children = new List<ExpressionUnk1_Base>();
|
|
||||||
|
|
||||||
while (r3.Position < r3.Length)
|
|
||||||
{
|
|
||||||
var type = r3.ReadByte();
|
|
||||||
if (type == 0)
|
|
||||||
{ break; }
|
|
||||||
|
|
||||||
var child = ExpressionUnk1.CreateItem(type);
|
|
||||||
child.Type = type;
|
|
||||||
child.Read(r1, r2, r3);
|
|
||||||
children.Add(child);
|
|
||||||
|
|
||||||
if ((type == 0x28) || (type == 0x26)) // 40, 38
|
|
||||||
{
|
|
||||||
Type2 = type;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (type == 0x2E)
|
|
||||||
{
|
|
||||||
Type2 = type;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
//if ((type == 0x33) || (type == 0x3D))
|
|
||||||
//{
|
|
||||||
// AddSet(children.ToArray());
|
|
||||||
// children.Clear();
|
|
||||||
// //Type2 = type;
|
|
||||||
// //break;
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (children.Count > 0)
|
|
||||||
{
|
|
||||||
Children = children.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
//if ((Type2 == 0x28) || (Type2 == 0x26)) // 40, 38
|
|
||||||
//{
|
|
||||||
// ReadStruct2(r2);
|
|
||||||
//}
|
|
||||||
UnkVec1 = r1.ReadVector4();
|
UnkVec1 = r1.ReadVector4();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
var str = base.ToString() + " - " + UnkVec1.ToString() + " - " + (Children?.Length ?? 0).ToString() + " children";
|
var str = TypeStr + ", 1: - " + UnkVec1.ToString();
|
||||||
if (Sets != null) str += ", " + Sets.Count.ToString() + " sets";
|
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -740,7 +658,7 @@ namespace CodeWalker.GameFiles
|
|||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
return TypeStr + " - " + UnkFloat.ToString();
|
return TypeStr + ", 2: - " + UnkFloat.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[TypeConverter(typeof(ExpandableObjectConverter))] public class ExpressionUnk1_3E : ExpressionUnk1_Base
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class ExpressionUnk1_3E : ExpressionUnk1_Base
|
||||||
@ -761,9 +679,7 @@ namespace CodeWalker.GameFiles
|
|||||||
}
|
}
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
var str = TypeStr;
|
return TypeStr + ", 1: - " + UnkVec1.ToString() + " - " + UnkUint1.ToString() + ", " + UnkUint2.ToString() + ", " + UnkUint3.ToString() + ", " + UnkUint4.ToString();
|
||||||
//return str + " - " + UnkVec1.ToString();
|
|
||||||
return str + " - " + UnkVec1.ToString() + " - " + UnkUint1.ToString() + ", " + UnkUint2.ToString() + ", " + UnkUint3.ToString() + ", " + UnkUint4.ToString();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[TypeConverter(typeof(ExpandableObjectConverter))] public class ExpressionUnk1_0E : ExpressionUnk1_Base
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class ExpressionUnk1_0E : ExpressionUnk1_Base
|
||||||
@ -822,12 +738,7 @@ namespace CodeWalker.GameFiles
|
|||||||
}
|
}
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
var str = TypeStr;
|
return TypeStr + ", 1: - " + UnkVec1.ToString() + ", " + UnkVec2.ToString() + ", " + UnkVec3.ToString() + ", " + UnkVec4.ToString() + " ...";
|
||||||
if (Struct1 != null)
|
|
||||||
{
|
|
||||||
str += " - " + Struct1.ToString();
|
|
||||||
}
|
|
||||||
return str;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user