Fixed bounds materials bug, compacted attributes

This commit is contained in:
dexyfex 2018-01-04 05:41:44 +11:00
parent 5ca6749d15
commit 8871da221b

View File

@ -30,14 +30,19 @@ using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Runtime.InteropServices;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using TC = System.ComponentModel.TypeConverterAttribute;
using EXP = System.ComponentModel.ExpandableObjectConverter;
namespace CodeWalker.GameFiles namespace CodeWalker.GameFiles
{ {
[TypeConverter(typeof(ExpandableObjectConverter))] public class BoundsDictionary : ResourceFileBase [TC(typeof(EXP))] public class BoundsDictionary : ResourceFileBase
{ {
public override long BlockLength public override long BlockLength
{ {
@ -97,7 +102,7 @@ namespace CodeWalker.GameFiles
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public class Bounds : ResourceFileBase, IResourceXXSystemBlock [TC(typeof(EXP))] public class Bounds : ResourceFileBase, IResourceXXSystemBlock
{ {
public override long BlockLength public override long BlockLength
{ {
@ -232,9 +237,9 @@ namespace CodeWalker.GameFiles
} }
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public class BoundSphere : Bounds [TC(typeof(EXP))] public class BoundSphere : Bounds
{ } { }
[TypeConverter(typeof(ExpandableObjectConverter))] public class BoundCapsule : Bounds [TC(typeof(EXP))] public class BoundCapsule : Bounds
{ {
public override long BlockLength public override long BlockLength
{ {
@ -275,9 +280,9 @@ namespace CodeWalker.GameFiles
writer.Write(this.Unknown_7Ch); writer.Write(this.Unknown_7Ch);
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public class BoundBox : Bounds [TC(typeof(EXP))] public class BoundBox : Bounds
{ } { }
[TypeConverter(typeof(ExpandableObjectConverter))] public class BoundGeometry : Bounds [TC(typeof(EXP))] public class BoundGeometry : Bounds
{ {
public override long BlockLength public override long BlockLength
{ {
@ -556,7 +561,8 @@ namespace CodeWalker.GameFiles
return list.ToArray(); return list.ToArray();
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public struct BoundMaterial_s
[TC(typeof(EXP))] [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct BoundMaterial_s
{ {
public BoundsMaterialType Type { get; set; } public BoundsMaterialType Type { get; set; }
public byte ProceduralId { get; set; } public byte ProceduralId { get; set; }
@ -569,7 +575,8 @@ namespace CodeWalker.GameFiles
return Type.ToString() + ", " + ProceduralId.ToString() + ", " + RoomId_and_PedDensity.ToString() + ", " + MaterialColorIndex.ToString() + ", " + PolyFlags.ToString() + ", " + Unk4.ToString(); return Type.ToString() + ", " + ProceduralId.ToString() + ", " + RoomId_and_PedDensity.ToString() + ", " + MaterialColorIndex.ToString() + ", " + PolyFlags.ToString() + ", " + Unk4.ToString();
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public struct BoundMaterialColour
[TC(typeof(EXP))] public struct BoundMaterialColour
{ {
//public BoundsMaterialType Type { get; set; } //public BoundsMaterialType Type { get; set; }
public byte R { get; set; } public byte R { get; set; }
@ -582,7 +589,7 @@ namespace CodeWalker.GameFiles
return R.ToString() + ", " + G.ToString() + ", " + B.ToString() + ", " + A.ToString(); return R.ToString() + ", " + G.ToString() + ", " + B.ToString() + ", " + A.ToString();
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public struct BoundVertex_s [TC(typeof(EXP))] public struct BoundVertex_s
{ {
public short X { get; set; } public short X { get; set; }
public short Y { get; set; } public short Y { get; set; }
@ -596,7 +603,7 @@ namespace CodeWalker.GameFiles
Box = 3, Box = 3,
Cylinder = 4, Cylinder = 4,
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public abstract class BoundPolygon [TC(typeof(EXP))] public abstract class BoundPolygon
{ {
public BoundPolygonType Type { get; set; } public BoundPolygonType Type { get; set; }
public abstract void Read(byte[] bytes, int offset); public abstract void Read(byte[] bytes, int offset);
@ -606,7 +613,7 @@ namespace CodeWalker.GameFiles
return Type.ToString(); return Type.ToString();
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public class BoundPolygonTriangle : BoundPolygon [TC(typeof(EXP))] public class BoundPolygonTriangle : BoundPolygon
{ {
public float triArea { get; set; } public float triArea { get; set; }
public ushort triIndex1 { get; set; } public ushort triIndex1 { get; set; }
@ -644,7 +651,7 @@ namespace CodeWalker.GameFiles
return base.ToString() + ": " + vertIndex1.ToString() + ", " + vertIndex2.ToString() + ", " + vertIndex3.ToString(); return base.ToString() + ": " + vertIndex1.ToString() + ", " + vertIndex2.ToString() + ", " + vertIndex3.ToString();
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public class BoundPolygonSphere : BoundPolygon [TC(typeof(EXP))] public class BoundPolygonSphere : BoundPolygon
{ {
public ushort sphereType { get; set; } public ushort sphereType { get; set; }
public ushort sphereIndex { get; set; } public ushort sphereIndex { get; set; }
@ -670,7 +677,7 @@ namespace CodeWalker.GameFiles
return base.ToString() + ": " + sphereIndex.ToString() + ", " + sphereRadius.ToString(); return base.ToString() + ": " + sphereIndex.ToString() + ", " + sphereRadius.ToString();
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public class BoundPolygonCapsule : BoundPolygon [TC(typeof(EXP))] public class BoundPolygonCapsule : BoundPolygon
{ {
public ushort capsuleType { get; set; } public ushort capsuleType { get; set; }
public ushort capsuleIndex1 { get; set; } public ushort capsuleIndex1 { get; set; }
@ -698,7 +705,7 @@ namespace CodeWalker.GameFiles
return base.ToString() + ": " + capsuleIndex1.ToString() + ", " + capsuleIndex2.ToString() + ", " + capsuleRadius.ToString(); return base.ToString() + ": " + capsuleIndex1.ToString() + ", " + capsuleIndex2.ToString() + ", " + capsuleRadius.ToString();
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public class BoundPolygonBox : BoundPolygon [TC(typeof(EXP))] public class BoundPolygonBox : BoundPolygon
{ {
public uint boxType { get; set; } public uint boxType { get; set; }
public short boxIndex1 { get; set; } public short boxIndex1 { get; set; }
@ -726,7 +733,7 @@ namespace CodeWalker.GameFiles
return base.ToString() + ": " + boxIndex1.ToString() + ", " + boxIndex2.ToString() + ", " + boxIndex3.ToString() + ", " + boxIndex4.ToString(); return base.ToString() + ": " + boxIndex1.ToString() + ", " + boxIndex2.ToString() + ", " + boxIndex3.ToString() + ", " + boxIndex4.ToString();
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public class BoundPolygonCylinder : BoundPolygon [TC(typeof(EXP))] public class BoundPolygonCylinder : BoundPolygon
{ {
public ushort cylinderType { get; set; } public ushort cylinderType { get; set; }
public ushort cylinderIndex1 { get; set; } public ushort cylinderIndex1 { get; set; }
@ -754,7 +761,7 @@ namespace CodeWalker.GameFiles
return base.ToString() + ": " + cylinderIndex1.ToString() + ", " + cylinderIndex2.ToString() + ", " + cylinderRadius.ToString(); return base.ToString() + ": " + cylinderIndex1.ToString() + ", " + cylinderIndex2.ToString() + ", " + cylinderRadius.ToString();
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public class BoundBVH : BoundGeometry [TC(typeof(EXP))] public class BoundBVH : BoundGeometry
{ {
public override long BlockLength public override long BlockLength
{ {
@ -835,7 +842,7 @@ namespace CodeWalker.GameFiles
return list.ToArray(); return list.ToArray();
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public class BoundComposite : Bounds [TC(typeof(EXP))] public class BoundComposite : Bounds
{ {
public override long BlockLength public override long BlockLength
{ {
@ -984,7 +991,7 @@ namespace CodeWalker.GameFiles
return list.ToArray(); return list.ToArray();
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public struct BoundComposite_Unknown_B_002_s [TC(typeof(EXP))] public struct BoundComposite_Unknown_B_002_s
{ {
public uint Unknown_0h { get; set; } public uint Unknown_0h { get; set; }
public uint Unknown_4h { get; set; } public uint Unknown_4h { get; set; }
@ -994,7 +1001,7 @@ namespace CodeWalker.GameFiles
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public class BoundDisc : Bounds [TC(typeof(EXP))] public class BoundDisc : Bounds
{ {
public override long BlockLength public override long BlockLength
{ {
@ -1035,7 +1042,7 @@ namespace CodeWalker.GameFiles
writer.Write(this.Unknown_7Ch); writer.Write(this.Unknown_7Ch);
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public class BoundCylinder : Bounds [TC(typeof(EXP))] public class BoundCylinder : Bounds
{ {
public override long BlockLength public override long BlockLength
{ {
@ -1077,7 +1084,7 @@ namespace CodeWalker.GameFiles
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public class BVH : ResourceSystemBlock [TC(typeof(EXP))] public class BVH : ResourceSystemBlock
{ {
public override long BlockLength public override long BlockLength
{ {
@ -1198,7 +1205,7 @@ namespace CodeWalker.GameFiles
}; };
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public struct BVHTreeInfo_s [TC(typeof(EXP))] public struct BVHTreeInfo_s
{ {
public short MinX { get; set; } public short MinX { get; set; }
public short MinY { get; set; } public short MinY { get; set; }
@ -1214,7 +1221,7 @@ namespace CodeWalker.GameFiles
return NodeIndex1.ToString() + ", " + NodeIndex2.ToString(); return NodeIndex1.ToString() + ", " + NodeIndex2.ToString();
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public struct BVHNode_s [TC(typeof(EXP))] public struct BVHNode_s
{ {
public short MinX { get; set; } public short MinX { get; set; }
public short MinY { get; set; } public short MinY { get; set; }
@ -1233,7 +1240,7 @@ namespace CodeWalker.GameFiles
[TypeConverter(typeof(ExpandableObjectConverter))] public struct BoundsMaterialType [TC(typeof(EXP))] public struct BoundsMaterialType
{ {
public byte Index { get; set; } public byte Index { get; set; }
@ -1251,7 +1258,7 @@ namespace CodeWalker.GameFiles
} }
} }
[TypeConverter(typeof(ExpandableObjectConverter))] public class BoundsMaterialData [TC(typeof(EXP))] public class BoundsMaterialData
{ {
public string Name { get; set; } public string Name { get; set; }
public string Filter { get; set; } public string Filter { get; set; }