diff --git a/KKdBaseLib/Auth3D.cs b/KKdBaseLib/Auth3D.cs
index e415f9b..3a81e7b 100644
--- a/KKdBaseLib/Auth3D.cs
+++ b/KKdBaseLib/Auth3D.cs
@@ -2,6 +2,7 @@ namespace KKdBaseLib.Auth3D
{
public struct Data
{
+ public string[] Auth2D;
public string[] Motion;
public string[] ObjectList;
public string[] ObjectHRCList;
@@ -62,9 +63,9 @@ namespace KKdBaseLib.Auth3D
public float Aspect;
public float CameraApertureH;
public float CameraApertureW;
- public Key FOV;
- public Key Roll;
- public Key FocalLength;
+ public Key? FocalLength;
+ public Key? FOV;
+ public Key? Roll;
public ModelTransform MT;
}
}
@@ -83,7 +84,6 @@ namespace KKdBaseLib.Auth3D
public struct DOF
{
- public string Name;
public ModelTransform MT;
}
@@ -171,7 +171,6 @@ namespace KKdBaseLib.Auth3D
public struct Light
{
public int Id;
- public string Name;
public string Type;
public Key? ConeAngle;
public Key? Constant;
@@ -230,6 +229,7 @@ namespace KKdBaseLib.Auth3D
public string Morph;
public string UIDName;
public string ParentName;
+ public string ParentNode;
public ModelTransform MT;
public TexturePattern[] TexPat;
public TextureTransform[] TexTrans;
@@ -262,6 +262,8 @@ namespace KKdBaseLib.Auth3D
public bool Shadow;
public string Name;
public string UIDName;
+ public string ParentName;
+ public string ParentNode;
public ObjectNode[] Node;
}
@@ -275,11 +277,11 @@ namespace KKdBaseLib.Auth3D
public struct PlayControl
{
- public int Begin;
+ public float Begin;
public int? Div;
- public int FPS;
- public int? Offset;
- public int Size;
+ public float FPS;
+ public float? Offset;
+ public float Size;
}
public struct Point
diff --git a/KKdBaseLib/F2/ENRS.cs b/KKdBaseLib/F2/ENRS.cs
index 3f48a7a..ec462f3 100644
--- a/KKdBaseLib/F2/ENRS.cs
+++ b/KKdBaseLib/F2/ENRS.cs
@@ -223,7 +223,7 @@ namespace KKdBaseLib.F2
public int Size;
public int Repeat;
public SubENRSEntry[] Sub;
-
+
public ENRSEntry(int offset, int count, int size, int repeat)
{ Offset = offset; Count = count; Size = size; Repeat = repeat; Sub = new SubENRSEntry[count]; }
@@ -255,13 +255,12 @@ namespace KKdBaseLib.F2
public int SizeSkip => Skip + Reverse * (2 << (byte)Type);
public int Size => Reverse * (2 << (byte)Type);
- public override string ToString() => "Skip: " + Skip +
- "; Reverse: " + Reverse + "; Type: " + Type;
+ public override string ToString() =>
+ $"Skip: {Skip}; Reverse: {Reverse}; Type: {Type}";
}
public override string ToString() =>
- "Offset: " + Offset + "; Count: " + Count + "; " +
- "Size: " + Size + "; Repeat: " + Repeat;
+ $"Offset: {Offset}; Count: {Count}; Size: {Size}; Repeat: {Repeat}";
}
public override string ToString() =>
diff --git a/KKdBaseLib/KKdBaseLib.csproj b/KKdBaseLib/KKdBaseLib.csproj
index 9d040d6..1ce0590 100644
--- a/KKdBaseLib/KKdBaseLib.csproj
+++ b/KKdBaseLib/KKdBaseLib.csproj
@@ -6,12 +6,12 @@
korenkonder (C) 2019-2021
A base library
- 0.4.10.7
+ 0.4.10.8
KKdBaseLib
KKdBaseLib
net461
KKdBaseLib
- 0.4.10.7
+ 0.4.10.8
AnyCPU
diff --git a/KKdMainLib/A3DA.cs b/KKdMainLib/A3DA.cs
index 0ad6880..7aff64f 100644
--- a/KKdMainLib/A3DA.cs
+++ b/KKdMainLib/A3DA.cs
@@ -178,10 +178,8 @@ namespace KKdMainLib
if (dict.FV(out value, "dof.name"))
{
- DOF dof = new DOF { Name = value };
Head.Format = Format.AFT;
- dof.MT = RMT("dof");
- Data.DOF = dof;
+ Data.DOF = new DOF { MT = RMT("dof") };
}
if (dict.FV(out value, "ambient.length"))
@@ -191,12 +189,24 @@ namespace KKdMainLib
for (i0 = 0; i0 < Data.Ambient.Length; i0++)
{
name = "ambient." + i0;
+
dict.FV(out Data.Ambient[i0].Name, name + ".name");
Data.Ambient[i0]. LightDiffuse = RRGBAKN(name + ".light.Diffuse");
Data.Ambient[i0].RimLightDiffuse = RRGBAKN(name + ".rimlight.Diffuse");
}
}
+ if (dict.FV(out value, "auth_2d.length"))
+ {
+ Data.Auth2D = new string[int.Parse(value)];
+ for (i0 = 0; i0 < Data.Ambient.Length; i0++)
+ {
+ name = "auth_2d." + i0;
+
+ dict.FV(out Data.Auth2D[i0], name + ".name");
+ }
+ }
+
if (dict.FV(out value, "camera_root.length"))
{
Data.CameraRoot = new CameraRoot[int.Parse(value)];
@@ -206,24 +216,24 @@ namespace KKdMainLib
nameView = name + ".view_point";
dict.FV(out Data.CameraRoot[i0].VP.Aspect, nameView + ".aspect");
- dict.FV(out i1, nameView + ".fov_is_horizontal");
- Data.CameraRoot[i0].VP.FOVIsHorizontal = i1 != 0;
- if (!Data.CameraRoot[i0].VP.FOVIsHorizontal)
+ if (dict.FV(out i1, nameView + ".fov_is_horizontal"))
+ {
+ Data.CameraRoot[i0].VP.FOVIsHorizontal = i1 != 0;
+ Data.CameraRoot[i0].VP.FOV = RKN(nameView + ".fov");
+ }
+ else
{
dict.FV(out Data.CameraRoot[i0].VP.
CameraApertureH, nameView + ".camera_aperture_h");
dict.FV(out Data.CameraRoot[i0].VP.
CameraApertureW, nameView + ".camera_aperture_w");
+ Data.CameraRoot[i0].VP.FocalLength = RKN(nameView + ".focal_length");
}
Data.CameraRoot[i0]. MT = RMT(name);
Data.CameraRoot[i0].Interest = RMT(name + ".interest");
Data.CameraRoot[i0].VP. MT = RMT(nameView);
- if (!Data.CameraRoot[i0].VP.FOVIsHorizontal)
- Data.CameraRoot[i0].VP.FocalLength = RK(nameView + ".focal_length");
- else
- Data.CameraRoot[i0].VP.FOV = RK(nameView + ".fov");
- Data.CameraRoot[i0].VP.Roll = RK(nameView + ".roll");
+ Data.CameraRoot[i0].VP.Roll = RKN(nameView + ".roll");
}
}
@@ -235,7 +245,7 @@ namespace KKdMainLib
name = "chara." + i0;
dict.FV(out Data.Chara[i0].Name, name + ".name");
-
+
Data.Chara[i0].MT = RMT(name);
}
}
@@ -294,7 +304,6 @@ namespace KKdMainLib
name = "light." + i0;
dict.FV(out Data.Light[i0].Id , name + ".id" );
- dict.FV(out Data.Light[i0].Name, name + ".name");
dict.FV(out Data.Light[i0].Type, name + ".type");
Data.Light[i0].Ambient = RRGBAKN(name + ".Ambient");
@@ -389,9 +398,9 @@ namespace KKdMainLib
name = "material_list." + i0;
dict.FV(out Data.MaterialList[i0].Name, name + ".name");
- Data.MaterialList[i0].BlendColor = RRGBAK(name + ".blend_color");
- Data.MaterialList[i0].GlowIntensity = RK (name + ".glow_intensity");
- Data.MaterialList[i0].Incandescence = RRGBAK(name + ".incandescence");
+ Data.MaterialList[i0].BlendColor = RRGBAKN(name + ".blend_color");
+ Data.MaterialList[i0].GlowIntensity = RKN (name + ".glow_intensity");
+ Data.MaterialList[i0].Incandescence = RRGBAKN(name + ".incandescence");
}
}
@@ -413,6 +422,7 @@ namespace KKdMainLib
dict.FV(out Data.Object[i0].MorphOffset, name + ".morph_offset");
dict.FV(out Data.Object[i0]. Name, name + ".name");
dict.FV(out Data.Object[i0]. ParentName, name + ".parent_name");
+ dict.FV(out Data.Object[i0]. ParentNode, name + ".parent_node");
if (dict.FV(out Data.Object[i0]. Pat , name + ".pat" ))
dict.FV(out Data.Object[i0]. PatOffset, name + ".pat_offset");
dict.FV(out Data.Object[i0]. UIDName, name + ".uid_name");
@@ -464,8 +474,10 @@ namespace KKdMainLib
{
name = "objhrc." + i0;
- dict.FV(out Data.ObjectHRC[i0]. Name, name + ".name");
- dict.FV(out Data.ObjectHRC[i0].UIDName, name + ".uid_name");
+ dict.FV(out Data.ObjectHRC[i0]. Name, name + ".name");
+ dict.FV(out Data.ObjectHRC[i0].ParentName, name + ".parent_name");
+ dict.FV(out Data.ObjectHRC[i0].ParentNode, name + ".parent_node");
+ dict.FV(out Data.ObjectHRC[i0]. UIDName, name + ".uid_name");
dict.FV(out int shadow, name + ".shadow");
Data.ObjectHRC[i0].Shadow = shadow != 0;
if (dict.FV(out value, name + ".node.length"))
@@ -474,7 +486,7 @@ namespace KKdMainLib
for (i1 = 0; i1 < Data.ObjectHRC[i0].Node.Length; i1++)
{
nameView = name + ".node." + i1;
-
+
if (dict.SW(nameView + ".joint_orient"))
{
Vec3 jointOrient = new Vec3();
@@ -515,7 +527,7 @@ namespace KKdMainLib
name = "point." + i0;
dict.FV(out Data.Point[i0].Name, name + ".name");
-
+
Data.Point[i0].MT = RMT(name);
}
}
@@ -555,6 +567,19 @@ namespace KKdMainLib
W("ambient.length", Data.Fog.Length);
}
+ if (Data.Auth2D != null)
+ {
+ so0 = Data.Auth2D.Length.SW();
+ for (i0 = 0; i0 < Data.Auth2D.Length; i0++)
+ {
+ soi0 = so0[i0];
+ name = "auth_2d." + soi0;
+
+ W(name + ".name", Data.Auth2D[soi0]);
+ }
+ W("auth_2d.length", Data.Fog.Length);
+ }
+
if (Data.CameraAuxiliary != null)
{
name = "camera_auxiliary";
@@ -587,17 +612,17 @@ namespace KKdMainLib
W(ref cr.Interest, name + ".interest");
W(ref cr.MT, name, 0b11110);
W(nameView + ".aspect", cr.VP.Aspect);
- if (!cr.VP.FOVIsHorizontal)
+ if (cr.VP.FOV.HasValue)
+ {
+ W(ref cr.VP.FOV, nameView + ".fov");
+ W(nameView + ".fov_is_horizontal", cr.VP.FOVIsHorizontal ? 1 : 0);
+ }
+ else
{
W(nameView + ".camera_aperture_h", cr.VP.CameraApertureH);
W(nameView + ".camera_aperture_w", cr.VP.CameraApertureW);
W(ref cr.VP.FocalLength, nameView + ".focal_length");
}
- else
- {
- W(ref cr.VP.FOV, nameView + ".fov");
- W(nameView + ".fov_is_horizontal", 1);
- }
W(ref cr.VP.MT , nameView, 0b10000);
W(ref cr.VP.Roll, nameView + ".roll");
W(ref cr.VP.MT , nameView, 0b01111);
@@ -635,7 +660,7 @@ namespace KKdMainLib
if (Data.DOF != null && (Head.Format == Format.AFT || Head.Format == Format.FT))
{
DOF dof = Data.DOF.Value;
- W("dof.name", dof.Name);
+ W("dof.name", "DOF");
W(ref dof.MT, "dof");
Data.DOF = dof;
}
@@ -710,7 +735,16 @@ namespace KKdMainLib
}
W(ref light.Specular , name + ".Specular" );
W(name + ".id" , light.Id );
- W(name + ".name", light.Name);
+ W(name + ".name", light.Id switch
+ {
+ 0 => "Char",
+ 1 => "Stage",
+ 2 => "Sun",
+ 3 => "Reflect",
+ 5 => "CharColor",
+ 6 => "ToneCurve",
+ _ => "none",
+ });
W(ref light.Position , name + ".position" );
W(ref light.SpotDirection, name + ".spot_direction");
W(name + ".type", light.Type);
@@ -833,6 +867,7 @@ namespace KKdMainLib
}
W(name + ".name" , @object.Name );
W(name + ".parent_name", @object.ParentName);
+ W(name + ".parent_node", @object.ParentNode);
if (@object.Pat != null)
{
W(name + ".pat" , @object.Pat );
@@ -932,9 +967,11 @@ namespace KKdMainLib
W(name + ".node.length", objectHRC.Node.Length);
}
+ W(name + ".parent_name", objectHRC.ParentName);
+ W(name + ".parent_node", objectHRC.ParentNode);
if (objectHRC.Shadow)
W(name + ".shadow", 1);
- W(name + ".uid_name", objectHRC.UIDName);
+ W(name + ".uid_name", objectHRC. UIDName);
}
W("objhrc.length", Data.ObjectHRC.Length);
}
@@ -1002,13 +1039,8 @@ namespace KKdMainLib
}
private Vec4? RRGBAKN(string str) =>
- dict.FV(out bool b, str + ".") ? b ?
- (Vec4?)new Vec4 { W = RKNS(str + ".a"), Z = RKNS(str + ".b"),
- Y = RKNS(str + ".g"), X = RKNS(str + ".r") } : null : null;
-
- private Vec4 RRGBAK(string str) =>
- new Vec4 { W = RKNS(str + ".a"), Z = RKNS(str + ".b"),
- Y = RKNS(str + ".g"), X = RKNS(str + ".r") };
+ dict.SW(str) ? (Vec4?)new Vec4 { W = RKNS(str + ".a"), Z = RKNS(str + ".b"),
+ Y = RKNS(str + ".g"), X = RKNS(str + ".r") } : null;
private Vec3 RV3(string str) =>
new Vec3 { X = RK(str + ".x"), Y = RK(str + ".y"), Z = RK(str + ".z") };
@@ -1239,9 +1271,9 @@ namespace KKdMainLib
RMT(ref Data.CameraRoot[i0]. MT);
RMT(ref Data.CameraRoot[i0].Interest);
RMT(ref Data.CameraRoot[i0].VP. MT);
- RK (ref Data.CameraRoot[i0].VP.FocalLength);
- RK (ref Data.CameraRoot[i0].VP.FOV );
- RK (ref Data.CameraRoot[i0].VP.Roll );
+ RKN(ref Data.CameraRoot[i0].VP.FocalLength);
+ RKN(ref Data.CameraRoot[i0].VP.FOV );
+ RKN(ref Data.CameraRoot[i0].VP.Roll );
}
if (Data.Chara != null)
@@ -1380,7 +1412,7 @@ namespace KKdMainLib
WO(ref Data.CameraRoot[i0].VP. MT, ReturnToOffset);
WO(ref Data.CameraRoot[i0].Interest, ReturnToOffset);
}
-
+
if (Data.Chara != null)
for (i0 = 0; i0 < Data.Chara.Length; i0++)
WO(ref Data.Chara[i0].MT, ReturnToOffset);
@@ -1422,7 +1454,7 @@ namespace KKdMainLib
if (Data.ObjectHRC[i0].Node != null)
for (i1 = 0; i1 < Data.ObjectHRC[i0].Node.Length; i1++)
WO(ref Data.ObjectHRC[i0].Node[i1].MT, ReturnToOffset);
-
+
if (Data.Point != null)
for (i0 = 0; i0 < Data.Point.Length; i0++)
WO(ref Data.Point[i0].MT, ReturnToOffset);
@@ -1791,9 +1823,9 @@ namespace KKdMainLib
MMT(ref Data.CameraRoot[i0]. MT, ref mData.CameraRoot[i0]. MT);
MMT(ref Data.CameraRoot[i0].Interest, ref mData.CameraRoot[i0].Interest);
MMT(ref Data.CameraRoot[i0].VP. MT, ref mData.CameraRoot[i0].VP. MT);
- MK (ref Data.CameraRoot[i0].VP.FocalLength, ref mData.CameraRoot[i0].VP.FocalLength);
- MK (ref Data.CameraRoot[i0].VP.FOV , ref mData.CameraRoot[i0].VP.FOV );
- MK (ref Data.CameraRoot[i0].VP.Roll , ref mData.CameraRoot[i0].VP.Roll );
+ MKN(ref Data.CameraRoot[i0].VP.FocalLength, ref mData.CameraRoot[i0].VP.FocalLength);
+ MKN(ref Data.CameraRoot[i0].VP.FOV , ref mData.CameraRoot[i0].VP.FOV );
+ MKN(ref Data.CameraRoot[i0].VP.Roll , ref mData.CameraRoot[i0].VP.Roll );
}
if (Data.Chara != null && mData.Chara != null)
@@ -2039,6 +2071,14 @@ namespace KKdMainLib
};
}
+ if ((temp = a3d["Auth2D", true]).NotNull)
+ {
+ Data.Auth2D = new string[temp.Array.Length];
+
+ for (i = 0; i < Data.Auth2D.Length; i++)
+ Data.Auth2D[i] = temp[i].RS();
+ }
+
if ((temp = a3d["CameraAuxiliary"]).NotNull)
Data.CameraAuxiliary = new CameraAuxiliary
{
@@ -2063,10 +2103,18 @@ namespace KKdMainLib
if ((temp1 = temp[i]["ViewPoint"]).IsNull) continue;
- bool fovIsHorizontal = temp1.RB(temp1["FOVHorizontal"].NotNull
- ? "FOVHorizontal" : "FOVIsHorizontal");
-
- if (!fovIsHorizontal)
+ if (temp1[temp1["FOVHorizontal"].NotNull
+ ? "FOVHorizontal" : "FOVIsHorizontal"].NotNull)
+ Data.CameraRoot[i].VP = new CameraRoot.ViewPoint
+ {
+ MT = temp1.RMT(),
+ Aspect = temp1.RF32("Aspect"),
+ FOVIsHorizontal = temp1.RB(temp1["FOVHorizontal"].NotNull
+ ? "FOVHorizontal" : "FOVIsHorizontal"),
+ FOV = temp1.RK ("FOV" ),
+ Roll = temp1.RK ("Roll" ),
+ };
+ else
Data.CameraRoot[i].VP = new CameraRoot.ViewPoint
{
MT = temp1.RMT(),
@@ -2074,18 +2122,8 @@ namespace KKdMainLib
CameraApertureH = temp1.RF32("CameraApertureH"),
CameraApertureW = temp1.RF32("CameraApertureW"),
FocalLength = temp1.RK ("FocalLength" ),
- FOVIsHorizontal = false,
Roll = temp1.RK ("Roll" ),
};
- else
- Data.CameraRoot[i].VP = new CameraRoot.ViewPoint
- {
- MT = temp1.RMT(),
- Aspect = temp1.RF32("Aspect"),
- FOVIsHorizontal = true,
- FOV = temp1.RK ("FOV" ),
- Roll = temp1.RK ("Roll" ),
- };
}
}
@@ -2112,11 +2150,7 @@ namespace KKdMainLib
}
if ((temp = a3d["DOF"]).NotNull)
- Data.DOF = new DOF
- {
- MT = temp.RMT(),
- Name = temp.RS("Name"),
- };
+ Data.DOF = new DOF { MT = temp.RMT() };
if ((temp = a3d["Event", true]).NotNull)
{
@@ -2168,7 +2202,6 @@ namespace KKdMainLib
Data.Light[i] = new Light
{
Id = temp[i].RI32 ("Id" ),
- Name = temp[i].RS ("Name" ),
Type = temp[i].RS ("Type" ),
Ambient = temp[i].RRGBAKN("Ambient" ),
ConeAngle = temp[i].RKN ("ConeAngle" ),
@@ -2188,7 +2221,6 @@ namespace KKdMainLib
Data.Light[i] = new Light
{
Id = temp[i].RI32 ("Id" ),
- Name = temp[i].RS ("Name" ),
Type = temp[i].RS ("Type" ),
Ambient = temp[i].RRGBAKN("Ambient" ),
ConeAngle = temp[i].RKN ("ConeAngle" ),
@@ -2212,10 +2244,10 @@ namespace KKdMainLib
for (i = 0; i < Data.MaterialList.Length; i++)
Data.MaterialList[i] = new MaterialList
{
- Name = temp[i].RS ( "Name"),
- BlendColor = temp[i].RRGBAK( "BlendColor"),
- GlowIntensity = temp[i].RK ("GlowIntensity"),
- Incandescence = temp[i].RRGBAK("Incandescence"),
+ Name = temp[i].RS ( "Name"),
+ BlendColor = temp[i].RRGBAKN( "BlendColor"),
+ GlowIntensity = temp[i].RKN ("GlowIntensity"),
+ Incandescence = temp[i].RRGBAKN("Incandescence"),
};
}
@@ -2293,6 +2325,7 @@ namespace KKdMainLib
MorphOffset = temp[i0].RF32("MorphOffset"),
Name = temp[i0].RS ( "Name"),
ParentName = temp[i0].RS ( "ParentName"),
+ ParentNode = temp[i0].RS ( "ParentNode"),
Pat = temp[i0].RS ( "Pat" ),
PatOffset = temp[i0].RF32( "PatOffset"),
UIDName = temp[i0].RS ( "UIDName"),
@@ -2359,9 +2392,11 @@ namespace KKdMainLib
{
Data.ObjectHRC[i0] = new ObjectHRC
{
- Name = temp[i0].RS( "Name"),
- Shadow = temp[i0].RB( "Shadow"),
- UIDName = temp[i0].RS("UIDName"),
+ Name = temp[i0].RS( "Name"),
+ ParentName = temp[i0].RS("ParentName"),
+ ParentNode = temp[i0].RS("ParentNode"),
+ Shadow = temp[i0].RB( "Shadow"),
+ UIDName = temp[i0].RS( "UIDName"),
};
if ((temp1 = temp[i0]["Node", true]).NotNull)
@@ -2466,6 +2501,14 @@ namespace KKdMainLib
a3d.Add(ambient);
}
+ if (Data.Auth2D != null)
+ {
+ MsgPack auth2D = new MsgPack(Data.Ambient.Length, "Auth2D");
+ for (i = 0; i < Data.Ambient.Length; i++)
+ auth2D[i] = new MsgPack(null, Data.Ambient[i].Name);
+ a3d.Add(auth2D);
+ }
+
if (Data.CameraAuxiliary != null)
{
CameraAuxiliary ca = Data.CameraAuxiliary.Value;
@@ -2483,14 +2526,13 @@ namespace KKdMainLib
{
MsgPack cameraRoot = new MsgPack(Data.CameraRoot.Length, "CameraRoot");
for (i = 0; i < Data.CameraRoot.Length; i++)
- if (!Data.CameraRoot[i].VP.FOVIsHorizontal)
+ if (Data.CameraRoot[i].VP.FOV.HasValue)
cameraRoot[i] = MsgPack.New
.Add("Interest", ref Data.CameraRoot[i].Interest)
.Add(new MsgPack("ViewPoint")
.Add("Aspect" , Data.CameraRoot[i].VP.Aspect )
- .Add("CameraApertureH", Data.CameraRoot[i].VP.CameraApertureH)
- .Add("CameraApertureW", Data.CameraRoot[i].VP.CameraApertureW)
- .Add("FocalLength" , ref Data.CameraRoot[i].VP.FocalLength )
+ .Add("FOVIsHorizontal", Data.CameraRoot[i].VP.FOVIsHorizontal)
+ .Add("FOV" , ref Data.CameraRoot[i].VP.FOV )
.Add("Roll" , ref Data.CameraRoot[i].VP.Roll )
.Add(ref Data.CameraRoot[i].VP.MT))
.Add(ref Data.CameraRoot[i]. MT);
@@ -2499,8 +2541,9 @@ namespace KKdMainLib
.Add("Interest", ref Data.CameraRoot[i].Interest)
.Add(new MsgPack("ViewPoint")
.Add("Aspect" , Data.CameraRoot[i].VP.Aspect )
- .Add("FOVIsHorizontal", Data.CameraRoot[i].VP.FOVIsHorizontal)
- .Add("FOV" , ref Data.CameraRoot[i].VP.FOV )
+ .Add("CameraApertureH", Data.CameraRoot[i].VP.CameraApertureH)
+ .Add("CameraApertureW", Data.CameraRoot[i].VP.CameraApertureW)
+ .Add("FocalLength" , ref Data.CameraRoot[i].VP.FocalLength )
.Add("Roll" , ref Data.CameraRoot[i].VP.Roll )
.Add(ref Data.CameraRoot[i].VP.MT))
.Add(ref Data.CameraRoot[i]. MT);
@@ -2527,7 +2570,7 @@ namespace KKdMainLib
if (Data.DOF != null)
{
DOF dof = Data.DOF.Value;
- a3d.Add(new MsgPack("DOF").Add("Name", dof.Name).Add(ref dof.MT));
+ a3d.Add(new MsgPack("DOF").Add(ref dof.MT));
Data.DOF = dof;
}
@@ -2564,7 +2607,6 @@ namespace KKdMainLib
MsgPack light = new MsgPack(Data.Light.Length, "Light");
for (i = 0; i < Data.Light.Length; i++)
light[i] = MsgPack.New.Add("Id" , Data.Light[i].Id)
- .Add("Name", Data.Light[i].Name)
.Add("Type", Data.Light[i].Type)
.Add("Ambient" , ref Data.Light[i].Ambient )
.Add("ConeAngle" , ref Data.Light[i].ConeAngle )
@@ -2600,7 +2642,7 @@ namespace KKdMainLib
instance[i1].Add("Shadow", true);
instance[i1].Add("UIDName", Data.MObjectHRC[i0].Instances[i1].UIDName);
}
-
+
_mObjectHRC.Add(instance);
}
@@ -2665,14 +2707,15 @@ namespace KKdMainLib
{
MsgPack _object = MsgPack.New;
if (Data.Object[i0].Morph != null)
- _object.Add("Morph" , Data.Object[i0].Morph )
- .Add("MorphOffset", Data.Object[i0].MorphOffset);
+ _object = _object.Add("Morph" , Data.Object[i0].Morph )
+ .Add("MorphOffset", Data.Object[i0].MorphOffset);
_object.Add("Name", Data.Object[i0].Name);
if (Data.Object[i0].Pat != null)
- _object.Add("Pat" , Data.Object[i0].Pat )
- .Add("PatOffset", Data.Object[i0].PatOffset);
- _object.Add("ParentName", Data.Object[i0].ParentName)
- .Add( "UIDName", Data.Object[i0]. UIDName);
+ _object = _object.Add("Pat" , Data.Object[i0].Pat )
+ .Add("PatOffset", Data.Object[i0].PatOffset);
+ _object = _object.Add("ParentName", Data.Object[i0].ParentName)
+ .Add("ParentNode", Data.Object[i0].ParentNode)
+ .Add( "UIDName", Data.Object[i0]. UIDName);
if (Data.Object[i0].TexPat != null)
{
MsgPack texPat = new MsgPack(Data.Object[i0].TexPat.Length, "TexturePattern");
@@ -2680,8 +2723,8 @@ namespace KKdMainLib
{
texPat[i1] = MsgPack.New.Add("Name", Data.Object[i0].TexPat[i1].Name);
if (Data.Object[i0].TexPat[i1].Pat != null)
- texPat[i1].Add("Pat" , Data.Object[i0].TexPat[i1].Pat )
- .Add("PatOffset", Data.Object[i0].TexPat[i1].PatOffset);
+ texPat[i1] = texPat[i1].Add("Pat" , Data.Object[i0].TexPat[i1].Pat )
+ .Add("PatOffset", Data.Object[i0].TexPat[i1].PatOffset);
}
_object.Add(texPat);
}
@@ -2714,10 +2757,13 @@ namespace KKdMainLib
MsgPack objectHRC = new MsgPack(Data.ObjectHRC.Length, "ObjectHRC");
for (i0 = 0; i0 < Data.ObjectHRC.Length; i0++)
{
- MsgPack _objectHRC = MsgPack.New.Add("Name", Data.MObjectHRC[i0].Instances[i1].Name);
- if (Data.MObjectHRC[i0].Instances[i1].Shadow)
+ MsgPack _objectHRC = MsgPack.New
+ .Add("Name", Data.ObjectHRC[i0].Name)
+ .Add("ParentName", Data.ObjectHRC[i0].ParentName)
+ .Add("ParentNode", Data.ObjectHRC[i0].ParentNode);
+ if (Data.ObjectHRC[i0].Shadow)
_objectHRC.Add("Shadow", true);
- _objectHRC.Add("UIDName", Data.MObjectHRC[i0].Instances[i1].UIDName);
+ _objectHRC.Add("UIDName", Data.ObjectHRC[i0].UIDName);
if (Data.ObjectHRC[i0].Node != null)
{
@@ -2813,9 +2859,6 @@ namespace KKdMainLib
public static Vec4? RRGBAKN(this MsgPack msgPack, string name) =>
msgPack[name].NotNull ? (Vec4?)msgPack[name].RRGBAK() : null;
- public static Vec4 RRGBAK(this MsgPack msgPack, string name) =>
- msgPack[name].RRGBAK();
-
public static Vec4 RRGBAK(this MsgPack msgPack) =>
new Vec4 { X = msgPack.RKN("R"), Y = msgPack.RKN("G"),
Z = msgPack.RKN("B"), W = msgPack.RKN("A") };
diff --git a/KKdMainLib/DB/Auth.cs b/KKdMainLib/DB/Auth.cs
index cd6e8e4..bd662f3 100644
--- a/KKdMainLib/DB/Auth.cs
+++ b/KKdMainLib/DB/Auth.cs
@@ -61,8 +61,7 @@ namespace KKdMainLib.DB
s = File.OpenWriter(file + ".bin", true);
s.W("#A3DA__________\n");
- s.W("#" + DateTime.UtcNow.ToString("ddd MMM dd HH:mm:ss yyyy",
- System.Globalization.CultureInfo.InvariantCulture) + "\n");
+ s.W("# date time was eliminated.\n");
if (Category != null)
{
@@ -75,18 +74,26 @@ namespace KKdMainLib.DB
if (UIDs != null)
{
int[] so = UIDs.Length.SW();
+ int max = -1;
for (i = 0; i < UIDs.Length; i++)
{
if (UIDs[so[i]].Category != null && UIDs[so[i]].Category != "")
s.W($"uid.{so[i]}.category=" + UIDs[so[i]].Category + "\n");
if (UIDs[so[i]].OrgUid != null)
- s.W($"uid.{so[i]}.org_uid=" + UIDs[so[i]].OrgUid + "\n");
+ {
+ int orgUid = UIDs[so[i]].OrgUid.Value;
+ s.W($"uid.{so[i]}.org_uid=" + orgUid + "\n");
+ if (max < orgUid)
+ max = orgUid;
+ }
if (UIDs[so[i]].Size != null)
s.W($"uid.{so[i]}.size=" + UIDs[so[i]].Size + "\n");
if (UIDs[so[i]].Value != null && UIDs[so[i]].Value != "")
s.W($"uid.{so[i]}.value=" + UIDs[so[i]].Value + "\n");
}
s.W($"uid.length={UIDs.Length}\n");
+ if (max != -1)
+ s.W($"uid.max={max}\n");
}
s.C();
diff --git a/KKdMainLib/Extensions.cs b/KKdMainLib/Extensions.cs
index d11f12c..8ff696d 100644
--- a/KKdMainLib/Extensions.cs
+++ b/KKdMainLib/Extensions.cs
@@ -163,7 +163,7 @@ namespace KKdMainLib
if (@struct.HasSubStructs)
for (int i = 0; i < @struct.SubStructs.Length; i++)
stream.W(@struct.SubStructs[i], depth + 1, shiftX, useDepth);
- if (@struct.HasPOF || @struct.HasENRS || @struct.HasSubStructs)
+ if (@struct.HasPOF || @struct.HasENRS || @struct.HasSubStructs)
stream.WEOFC(depth + 1);
}
}
@@ -270,7 +270,7 @@ namespace KKdMainLib
{
uint a, b, hash;
int i;
-
+
const uint m = 0x7FD652AD;
const int r = 16;
diff --git a/KKdMainLib/F2/Bloom.cs b/KKdMainLib/F2/Bloom.cs
index e0a257f..656c847 100644
--- a/KKdMainLib/F2/Bloom.cs
+++ b/KKdMainLib/F2/Bloom.cs
@@ -98,7 +98,7 @@ namespace KKdMainLib.F2
s.W(blt.Brightpass.Z);
s.W(blt.Range );
}
-
+
e.Array = new ENRS.ENRSEntry[2];
e.Array[0] = new ENRS.ENRSEntry(0x00, 0x01, 0x10, 0x01);
e.Array[0].Sub[0] = new ENRS.ENRSEntry.SubENRSEntry(0x00, 0x02, ENRS.ENRSEntry.Type.DWORD);
diff --git a/KKdMainLib/F2/ColorCorrection.cs b/KKdMainLib/F2/ColorCorrection.cs
index af06796..8fa021a 100644
--- a/KKdMainLib/F2/ColorCorrection.cs
+++ b/KKdMainLib/F2/ColorCorrection.cs
@@ -99,7 +99,7 @@ namespace KKdMainLib.F2
s.W(cct.Gamma.Z );
s.W(cct.Contrast );
}
-
+
e.Array = new ENRS.ENRSEntry[2];
e.Array[0] = new ENRS.ENRSEntry(0x00, 0x01, 0x10, 0x01);
e.Array[0].Sub[0] = new ENRS.ENRSEntry.SubENRSEntry(0x00, 0x02, ENRS.ENRSEntry.Type.DWORD);
diff --git a/KKdMainLib/F2/DOF.cs b/KKdMainLib/F2/DOF.cs
index a7fd453..f40d128 100644
--- a/KKdMainLib/F2/DOF.cs
+++ b/KKdMainLib/F2/DOF.cs
@@ -91,7 +91,7 @@ namespace KKdMainLib.F2
s.W(dft.Ratio );
s.W(dft.Quality );
}
-
+
e.Array = new ENRS.ENRSEntry[2];
e.Array[0] = new ENRS.ENRSEntry(0x00, 0x01, 0x10, 0x01);
e.Array[0].Sub[0] = new ENRS.ENRSEntry.SubENRSEntry(0x00, 0x02, ENRS.ENRSEntry.Type.DWORD);
diff --git a/KKdMainLib/F2/Light.cs b/KKdMainLib/F2/Light.cs
index e736466..d32435c 100644
--- a/KKdMainLib/F2/Light.cs
+++ b/KKdMainLib/F2/Light.cs
@@ -895,7 +895,7 @@ namespace KKdMainLib.F2
ToneCurve = 0b00000001000000000,
}
}
-
+
public struct LITX
{
public int C;
diff --git a/KKdMainLib/KKdMainLib.csproj b/KKdMainLib/KKdMainLib.csproj
index 12c5c68..6cfd21a 100644
--- a/KKdMainLib/KKdMainLib.csproj
+++ b/KKdMainLib/KKdMainLib.csproj
@@ -6,12 +6,12 @@
korenkonder (C) 2018-2021
A simple library for working with Project Diva AC/DT/F/AFT/F2/X/XHD/FT/VRFL/M39 files
- 0.4.10.7
+ 0.4.10.8
KKdMainLib
KKdMainLib
net461
KKdMainLib
- 0.4.10.7
+ 0.4.10.8
AnyCPU
diff --git a/KKdMainLib/MotHead.cs b/KKdMainLib/MotHead.cs
index 662e55e..48a68d1 100644
--- a/KKdMainLib/MotHead.cs
+++ b/KKdMainLib/MotHead.cs
@@ -22,12 +22,12 @@ namespace KKdMainLib
s.P = 0;
Header. MotionSetID = s.RI32();
- Header.StartMotionID = s.RI32();
- Header. EndMotionID = s.RI32();
+ Header.FirstMotionID = s.RI32();
+ Header. LastMotionID = s.RI32();
Header.SubHeaderOffset = s.RI32();
if (Header.SubHeaderOffset < 0x10) goto RETURN;
- i0 = Header.EndMotionID - Header.StartMotionID;
+ i0 = Header.LastMotionID - Header.FirstMotionID;
if (i0 < 0) goto RETURN;
s.P = Header.SubHeaderOffset;
@@ -39,10 +39,13 @@ namespace KKdMainLib
s.P = Header.Data[i].Offset;
- Header.Data[i].MotionID = Header.StartMotionID + i;
- Header.Data[i].SomeData = s.RI32();
- s.RI64();
- s.RI64();
+ Header.Data[i].MotionID = Header.FirstMotionID + i;
+ Header.Data[i].Field00 = s.RI32();
+ Header.Data[i].Field04 = s.RI32();
+ Header.Data[i].Field08 = s.RI32();
+ Header.Data[i].Field0C = s.RI32();
+ Header.Data[i].Field10 = s.RU16();
+ Header.Data[i].Field12 = s.RU16();
Header.Data[i].Offset2 = s.RI32();
Header.Data[i].DataHeaderOffset = s.RI32();
@@ -55,7 +58,7 @@ namespace KKdMainLib
Header.Data[i].Array = new HeaderData.Sub.Data[i0];
for (i0 = 0; i0 < Header.Data[i].Array.Length; i0++)
{
- Header.Data[i].Array[i0].Type = s.RI32();
+ Header.Data[i].Array[i0].Type = (Type)s.RI32();
Header.Data[i].Array[i0].Frame = s.RI32();
Header.Data[i].Array[i0].Offset = s.RI32();
}
@@ -73,17 +76,18 @@ namespace KKdMainLib
Header.Data[i].Array2 = new HeaderData.Sub.Data2[i0];
for (i0 = 0; i0 < Header.Data[i].Array2.Length; i0++)
{
- Header.Data[i].Array2[i0].Frame = s.RI32();
+ Header.Data[i].Array2[i0].Type = s.RI32();
Header.Data[i].Array2[i0].Offset = s.RI32();
}
for (i0 = 0; i0 < Header.Data[i].Array2.Length; i0++)
{
+ ref HeaderData.Sub.Data2 Data = ref Header.Data[i].Array2[i0];
+ if ((i1 = GetSize2(Data.Type)) < 1) continue;
+
if (Header.Data[i].Array2[i0].Offset < 0x10) goto RETURN;
- s.P = Header.Data[i].Array2[i0].Offset;
- Header.Data[i].Array2[i0].Array = new int[7];
- for (i1 = 0; i1 < Header.Data[i].Array2[i0].Array.Length; i1++)
- Header.Data[i].Array2[i0].Array[i1] = s.RI32();
+ s.P = Data.Offset;
+ Data.Array = s.RBy(i1);
}
}
@@ -94,17 +98,10 @@ namespace KKdMainLib
ref HeaderData.Sub.Data Data = ref Header.Data[i].Array[i0];
if ((i1 = GetSize(Data.Type)) < 1) continue;
-
if (Data.Offset > 0)
{
s.P = Data.Offset;
- if (i1 == 0x01) Data.Array = new int[] { s.RU8 () };
- else if (i1 == 0x02) Data.Array = new int[] { s.RU16() };
- else
- {
- Data.Array = new int[i1 / 4];
- for (i1 = 0; i1 < Data.Array.Length; i1++) Data.Array[i1] = s.RI32();
- }
+ Data.Array = s.RBy(i1);
}
}
}
@@ -117,14 +114,14 @@ RETURN:
{
if (Header.Data == null || Header.Data.Length < 1) return;
- Header.StartMotionID = 0x7FFFFFFF;
- Header.EndMotionID = 0x00000000;
+ Header.FirstMotionID = 0x7FFFFFFF;
+ Header. LastMotionID = 0x00000000;
for (i = 0; i < Header.Data.Length; i++)
{
- if (Header.Data[i].MotionID < Header.StartMotionID)
- Header.StartMotionID = Header.Data[i].MotionID;
- if (Header.Data[i].MotionID > Header. EndMotionID)
- Header. EndMotionID = Header.Data[i].MotionID;
+ if (Header.Data[i].MotionID < Header.FirstMotionID)
+ Header.FirstMotionID = Header.Data[i].MotionID;
+ if (Header.Data[i].MotionID > Header. LastMotionID)
+ Header. LastMotionID = Header.Data[i].MotionID;
}
s = File.OpenWriter(file + ".bin", true);
@@ -134,9 +131,9 @@ RETURN:
s.O = 0x20;
s.P = 0;
s.W(0);
- for (int I = Header.EndMotionID - Header.StartMotionID; I > -1; I--)
+ for (int I = Header.LastMotionID - Header.FirstMotionID; I > -1; I--)
for (i = 0; i < Header.Data.Length; i++)
- if (Header.StartMotionID + I == Header.Data[i].MotionID)
+ if (Header.FirstMotionID + I == Header.Data[i].MotionID)
{
s.A(0x20, true);
Header.Data[i].Offset = s.P;
@@ -156,54 +153,55 @@ RETURN:
int Size = GetSize(data.Type);
if (data.Array == null || data.Array.Length < 1 || Size < 1) continue;
- if (data.Type == 0x3E || data.Type == 0x49) s.A(0x20, true);
+ if ((int)data.Type == 0x3E || (int)data.Type == 0x49)
+ s.A(0x20, true);
data.Offset = s.P;
- if (Size == 0x01) s.W(( byte)data.Array[0]);
- else if (Size == 0x02) s.W((short)data.Array[0]);
- else
- {
- if (s.P % 0x4 != 0) s.A(0x04, true);
- Size /= 4;
-
- data.Offset = s.P;
- for (i1 = 0; i1 < data.Array.Length && i1 < Size; i1++)
- s.W(data.Array[i1]);
-
- for (; i1 < Size; i1++) s.W(0);
- }
+ if (data.Array.Length >= 4 && s.P % 0x4 != 0)
+ s.A(0x04, true);
+ else if (data.Array.Length == 2 && s.P % 0x2 != 0)
+ s.A(0x02, true);
+ s.W(data.Array);
+ if ((int)data.Type == 0x3C)
+ s.A(0x20, true);
}
- if (Header.Data[i].Array2 != null)
- if (Header.Data[i].Array2.Length > 0)
+ if (Header.Data[i].Array2 != null && Header.Data[i].Array2.Length > 0)
+ {
+ Header.Data[i].Offset2 = s.P;
+
+ for (i0 = 0; i0 < Header.Data[i].Array2.Length; i0++)
+ { s.W( 0); s.W(0); }
+ s.W(-1); s.W(0);
+
+ for (i0 = Header.Data[i].Array2.Length - 1; i0 > -1; i0--)
{
- Header.Data[i].Offset2 = s.P;
+ ref HeaderData.Sub.Data2 data = ref Header.Data[i].Array2[i0];
+ int Size = GetSize2(data.Type);
+ if (data.Array == null || data.Array.Length < 1 || Size < 1) continue;
- for (i0 = 0; i0 < Header.Data[i].Array2.Length; i0++)
- { s.W( 0); s.W(0); }
- s.W(-1); s.W(0);
+ data.Offset = s.P;
- for (i0 = Header.Data[i].Array2.Length - 1; i0 > -1; i0--)
- {
- Header.Data[i].Array2[i0].Offset = s.P;
- for (i1 = 0; i1 < Header.Data[i].Array2[i0].Array.Length && i1 < 7; i1++)
- s.W(Header.Data[i].Array2[i0].Array[i1]);
-
- for (; i1 < 7; i1++) s.W(0);
- }
- }
- break;
+ if (data.Array.Length >= 4 && s.P % 0x4 != 0)
+ s.A(0x04, true);
+ else if (data.Array.Length == 2 && s.P % 0x2 != 0)
+ s.A(0x02, true);
+ s.W(data.Array);
+ }
+ break;
+ }
}
- s.A(0x04, true);
+ s.A(0x20, true);
+
Header.SubHeaderOffset = s.P;
- i1 = Header.EndMotionID - Header.StartMotionID;
+ i1 = Header.LastMotionID - Header.FirstMotionID;
int offset = 0;
for (i = 0, i1++; i < i1; i++)
{
offset = 0;
for (i0 = 0; i0 < Header.Data.Length; i0++)
- if (Header.StartMotionID + i == Header.Data[i0].MotionID)
+ if (Header.FirstMotionID + i == Header.Data[i0].MotionID)
{ offset = Header.Data[i0].Offset; break; }
s.W(offset);
}
@@ -212,10 +210,12 @@ RETURN:
for (i = 0; i < Header.Data.Length; i++)
{
s.P = Header.Data[i].Offset;
- s.W(Header.Data[i].SomeData);
- s.W(0);
- s.W(0L);
- s.W(0x040004);
+ s.W(Header.Data[i].Field00);
+ s.W(Header.Data[i].Field04);
+ s.W(Header.Data[i].Field08);
+ s.W(Header.Data[i].Field0C);
+ s.W(Header.Data[i].Field10);
+ s.W(Header.Data[i].Field12);
s.W(Header.Data[i].Offset2);
s.W(Header.Data[i].DataHeaderOffset);
s.W(0);
@@ -223,7 +223,7 @@ RETURN:
s.P = Header.Data[i].DataHeaderOffset;
for (i0 = 0; i0 < Header.Data[i].Array.Length; i0++)
{
- s.W(Header.Data[i].Array[i0].Type );
+ s.W((int)Header.Data[i].Array[i0].Type );
s.W(Header.Data[i].Array[i0].Frame );
s.W(Header.Data[i].Array[i0].Offset);
}
@@ -232,15 +232,15 @@ RETURN:
if (Header.Data[i].Array2 != null)
for (i0 = 0; i0 < Header.Data[i].Array2.Length; i0++)
{
- s.W(Header.Data[i].Array2[i0].Frame );
+ s.W(Header.Data[i].Array2[i0].Type );
s.W(Header.Data[i].Array2[i0].Offset);
}
}
s.P = 0;
s.W(Header.MotionSetID );
- s.W(Header.StartMotionID );
- s.W(Header. EndMotionID );
+ s.W(Header.FirstMotionID );
+ s.W(Header. LastMotionID );
s.W(Header.SubHeaderOffset);
s.C();
}
@@ -254,14 +254,18 @@ RETURN:
if ((motHead = msgPack["MotHead"]).IsNull) return;
Header.MotionSetID = motHead.RI32("MotionSetID");
- MsgPack temp = MsgPack.New;
MsgPack motions, array;
if ((motions = motHead["Motions", true]).IsNull) return;
Header.Data = new HeaderData.Sub[motions.Array.Length];
for (i = 0; i < Header.Data.Length; i++)
{
Header.Data[i].MotionID = motions[i].RI32("MotionID");
- Header.Data[i].SomeData = motions[i].RI32("SomeData");
+ Header.Data[i].Field00 = motions[i].RI32("Field00");
+ Header.Data[i].Field04 = motions[i].RI32("Field04");
+ Header.Data[i].Field08 = motions[i].RI32("Field08");
+ Header.Data[i].Field0C = motions[i].RI32("Field0C");
+ Header.Data[i].Field10 = motions[i].RU16("Field10");
+ Header.Data[i].Field12 = motions[i].RU16("Field12");
MsgPack array2;
if ((array2 = motions[i]["Array2", true]).NotNull)
@@ -270,14 +274,17 @@ RETURN:
for (i0 = 0; i0 < Header.Data[i].Array2.Length; i0++)
{
- Header.Data[i].Array2[i0].Frame = array2[i0].RI32("Frame");
+ ref HeaderData.Sub.Data2 data = ref Header.Data[i].Array2[i0];
+
+ data.Type = array2[i0].RI32("Type");
+ data.Array = new byte[GetSize2(data.Type)];
MsgPack arrayArray;
if ((arrayArray = array2[i0]["Array", true]).IsNull) continue;
- Header.Data[i].Array2[i0].Array = new int[arrayArray.Array.Length];
- for (i1 = 0; i1 < Header.Data[i].Array2[i0].Array.Length; i1++)
- Header.Data[i].Array2[i0].Array[i1] = arrayArray[i1].RI32();
+ data.Array = new byte[arrayArray.Array.Length];
+ for (i1 = 0; i1 < arrayArray.Array.Length; i1++)
+ data.Array.GBy(arrayArray[i1].RU8(), i1);
}
}
@@ -288,196 +295,266 @@ RETURN:
for (i0 = 0; i0 < Header.Data[i].Array.Length; i0++)
{
ref HeaderData.Sub.Data data = ref Header.Data[i].Array[i0];
- data.Type = array[i0].RI32("Type");
+ System.Enum.TryParse(array[i0].RS("Type"), out data.Type);
data.Frame = array[i0].RI32("Frame");
+ MsgPack temp = array[i0]["Data"];
- if ((temp = array[i0]["Type3"]).NotNull)
+ if (temp.IsNull)
{
- data.Type = 0x03;
- data.Array = new int[] { temp.RI32("i0") };
- }
- else if ((temp = array[i0]["Type53"]).NotNull)
- {
- data.Type = 0x35;
- data.Array = new int[] { temp.RI32("i0"),
- temp.RF32("f1").ToI32(),
- temp.RF32("f2").ToI32(),
- temp.RI32("i3") };
- }
- else if ((temp = array[i0]["Type54"]).NotNull)
- {
- data.Type = 0x36;
- data.Array = new int[] { temp.RI32("i0"),
- temp.RF32("f1").ToI32(),
- temp.RF32("f2").ToI32(),
- temp.RI32("i3") };
- }
- else if ((temp = array[i0]["Type55"]).NotNull)
- {
- data.Type = 0x37;
- data.Array = new int[] { temp.RI32("i0"),
- temp.RF32("f1").ToI32(),
- temp.RF32("f2").ToI32(),
- temp.RI32("i3") };
- }
- else if ((temp = array[i0]["Type56"]).NotNull)
- {
- data.Type = 0x38;
- data.Array = new int[] { temp.RI32("i0"),
- temp.RF32("f1").ToI32(),
- temp.RF32("f2").ToI32(),
- temp.RI32("i3") };
- }
- else if ((temp = array[i0]["Type57"]).NotNull)
- {
- data.Type = 0x39;
- data.Array = new int[] { temp.RI32("i0"),
- temp.RF32("f1").ToI32(),
- temp.RF32("f2").ToI32(),
- temp.RI32("i3") };
- }
- else if ((temp = array[i0]["Type60"]).NotNull)
- {
- data.Type = 0x3C;
- data.Array = new int[] { temp.RI32("i0"),
- temp.RF32("f1").ToI32(),
- temp.RF32("f2").ToI32(),
- temp.RF32("f3").ToI32() };
- }
- else if ((temp = array[i0]["Type61"]).NotNull)
- {
- data.Type = 0x3D;
- data.Array = new int[] { temp.RI32("i0"), temp.RF32("f1").ToI32() };
- }
- else if ((temp = array[i0]["Type62"]).NotNull)
- {
- data.Type = 0x3E;
- data.Array = new int[0x10];
- data.Array[ 0] = temp.RI32("i0");
- data.Array[ 1] =
- ((byte)temp.RI32("i1_3") << 24) | ((byte)temp.RI32("i1_2") << 16) |
- ((byte)temp.RI32("i1_1") << 8) | (byte)temp.RI32("i1_0");
- data.Array[ 2] = temp.RF32("f2" ).ToI32();
- data.Array[ 3] = temp.RF32("f3" ).ToI32();
- data.Array[ 4] = temp.RF32("f4" ).ToI32();
- data.Array[ 5] = temp.RF32("f5" ).ToI32();
- data.Array[ 6] = temp.RF32("f6" ).ToI32();
- data.Array[ 7] = temp.RF32("f7" ).ToI32();
- data.Array[ 8] = temp.RF32("f8" ).ToI32();
- data.Array[ 9] = temp.RF32("f9" ).ToI32();
- data.Array[10] = temp.RF32("f10").ToI32();
- data.Array[11] = temp.RF32("f11").ToI32();
- data.Array[12] = temp.RF32("f12").ToI32();
- data.Array[13] = temp.RF32("f13").ToI32();
- data.Array[14] = temp.RF32("f14").ToI32();
- data.Array[15] = temp.RI32("i15");
- }
- else if ((temp = array[i0]["Type65"]).NotNull)
- {
- data.Type = 0x41;
- data.Array = new int[] { temp.RI32("i0") };
- }
- else if ((temp = array[i0]["Type66"]).NotNull)
- {
- data.Type = 0x42;
- data.Array = new int[] { temp.RF32("f0").ToI32() };
- }
- else if ((temp = array[i0]["Type67"]).NotNull)
- {
- data.Type = 0x43;
- data.Array = new int[] { temp.RI32("i0"), temp.RF32("f1").ToI32() };
- }
- else if ((temp = array[i0]["Type68"]).NotNull)
- {
- data.Type = 0x44;
- data.Array = new int[] { temp.RI32("i0"), temp.RF32("f1").ToI32() };
- }
- else if ((temp = array[i0]["Type69"]).NotNull)
- {
- data.Type = 0x45;
- data.Array = new int[] { temp.RI32("i0"), temp.RI32("i1") };
- }
- else if ((temp = array[i0]["Type70"]).NotNull)
- {
- data.Type = 0x46;
- data.Array = new int[] { temp.RI32("i0") };
- }
- else if ((temp = array[i0]["Type71"]).NotNull)
- {
- data.Type = 0x47;
- data.Array = new int[] { temp.RI32("i0"), temp.RF32("f1").ToI32() };
- }
- else if ((temp = array[i0]["Type72"]).NotNull)
- {
- data.Type = 0x48;
- data.Array = new int[] { temp.RI32("i0"), temp.RF32("f1").ToI32() };
- }
- else if ((temp = array[i0]["Type73"]).NotNull)
- {
- data.Type = 0x49;
- data.Array = new int[] { temp.RI32("i0"),
- temp.RF32("f1").ToI32(),
- temp.RI32("i2"),
- temp.RF32("f3").ToI32(),
- temp.RI32("i4"),
- temp.RI32("i5"),
- temp.RI32("i6"),
- temp.RI32("i7"),
- temp.RI32("i8"),
- temp.RI32("i9"),
- temp.RI32("i10"),
- temp.RI32("i11") };
- }
- else if ((temp = array[i0]["Type74"]).NotNull)
- {
- data.Type = 0x4A;
- data.Array = new int[] { temp.RI32("i0") };
- }
- else if ((temp = array[i0]["Type62"]).NotNull)
- {
- data.Type = 0x4B;
- data.Array = new int[0x0D];
- data.Array[ 0] = temp.RI32("i0");
- data.Array[ 1] = ((byte)temp.RI32("i1_1") << 8) | (byte)temp.RI32("i1_0");
- data.Array[ 2] = temp.RF32("f2" ).ToI32();
- data.Array[ 3] = temp.RF32("f3" ).ToI32();
- data.Array[ 4] = temp.RF32("f4" ).ToI32();
- data.Array[ 5] = temp.RF32("f5" ).ToI32();
- data.Array[ 6] = temp.RF32("f6" ).ToI32();
- data.Array[ 7] = temp.RF32("f7" ).ToI32();
- data.Array[ 8] = temp.RF32("f8" ).ToI32();
- data.Array[ 9] = temp.RF32("f9" ).ToI32();
- data.Array[10] = temp.RF32("f10").ToI32();
- data.Array[11] = temp.RF32("f11").ToI32();
- data.Array[12] = temp.RF32("f12").ToI32();
- }
- else if ((temp = array[i0]["Type76"]).NotNull)
- {
- data.Type = 0x4C;
- data.Array = new int[] { temp.RI32("i0"),
- temp.RF32("f1").ToI32(),
- temp.RF32("f2").ToI32() };
- }
- else if ((temp = array[i0]["Type77"]).NotNull)
- {
- data.Type = 0x4D;
- data.Array = new int[] { temp.RI32("i0") };
- }
- else if ((temp = array[i0]["Type79"]).NotNull)
- {
- data.Type = 0x4F;
- data.Array = new int[] { temp.RI32("i0") };
- }
- else if ((temp = array[i0]["Type80"]).NotNull)
- {
- data.Type = 0x50;
- data.Array = new int[] { temp.RI32("i0") };
- }
- else if ((temp = array[i0]["Array", true]).NotNull)
- {
- data.Array = new int[temp.Array.Length];
+ MsgPack arrayArray = array[i0]["Array"];
+ if (arrayArray.IsNull)
+ continue;
+
+ data.Array = new byte[arrayArray.Array.Length];
for (i1 = 0; i1 < data.Array.Length; i1++)
- data.Array[i1] = temp[i1].RI32();
+ data.Array[i1] = arrayArray[i1].RU8();
+ continue;
+ }
+
+ data.Array = new byte[GetSize(data.Type)];
+
+ switch ((int)data.Type)
+ {
+ case 0x02:
+ data.Array.GBy(temp.RI16("i00_16"), 0x00);
+ break;
+ case 0x03:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ break;
+ case 0x04:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ break;
+ case 0x07:
+ data.Array.GBy(temp.RI32("i00_16"), 0x00);
+ data.Array.GBy(temp.RF32("f04"), 0x04);
+ data.Array.GBy(temp.RF32("f08"), 0x08);
+ break;
+ case 0x08:
+ data.Array.GBy(temp.RI16("i04_16"), 0x04);
+ break;
+ case 0x0D:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ data.Array.GBy(temp.RI32("i04"), 0x04);
+ data.Array.GBy(temp.RI32("i08"), 0x08);
+ break;
+ case 0x11:
+ data.Array.GBy(temp.RI16("i00_16"), 0x00);
+ data.Array.GBy(temp.RI16("i02_16"), 0x02);
+ data.Array.GBy(temp.RF32("f04"), 0x04);
+ data.Array.GBy(temp.RF32("f08"), 0x08);
+ data.Array.GBy(temp.RF32("f0C"), 0x0C);
+ data.Array.GBy(temp.RF32("f10"), 0x10);
+ data.Array.GBy(temp.RF32("f14"), 0x14);
+ data.Array.GBy(temp.RF32("f18"), 0x18);
+ break;
+ case 0x1D:
+ data.Array.GBy(temp.RI16("i00_16"), 0x00);
+ data.Array.GBy(temp.RI16("i02_16"), 0x02);
+ data.Array.GBy(temp.RI16("i04_16"), 0x04);
+ data.Array.GBy(temp.RI16("i06_16"), 0x06);
+ data.Array.GBy(temp.RF32("f08"), 0x08);
+ data.Array.GBy(temp.RF32("f0C"), 0x0C);
+ data.Array.GBy(temp.RF32("f10"), 0x10);
+ data.Array.GBy(temp.RI16("i14_16"), 0x14);
+ data.Array.GBy(temp.RF32("f18"), 0x18);
+ data.Array.GBy(temp.RF32("f1C"), 0x1C);
+ data.Array.GBy(temp.RF32("f20"), 0x20);
+ data.Array.GBy(temp.RF32("f24"), 0x24);
+ data.Array.GBy(temp.RF32("f28"), 0x28);
+ data.Array.GBy(temp.RF32("f2C"), 0x2C);
+ data.Array.GBy(temp.RI16("i30_16"), 0x30);
+ data.Array.GBy(temp.RI32("i34"), 0x34);
+ data.Array.GBy(temp.RI32("i38"), 0x38);
+ break;
+ case 0x20:
+ data.Array.GBy(temp.RI16("i00_16"), 0x00);
+ data.Array.GBy(temp.RI32("i04"), 0x04);
+ data.Array.GBy(temp.RI32("i08"), 0x08);
+ data.Array.GBy(temp.RI32("i0C"), 0x0C);
+ break;
+ case 0x21:
+ data.Array.GBy(temp.RI16("i00_16"), 0x00);
+ data.Array.GBy(temp.RU8("i02_8"), 0x02);
+ data.Array.GBy(temp.RI32("i04"), 0x04);
+ data.Array.GBy(temp.RF32("f08"), 0x08);
+ data.Array.GBy(temp.RF32("f0C"), 0x0C);
+ data.Array.GBy(temp.RI32("i10"), 0x10);
+ data.Array.GBy(temp.RI32("i14"), 0x14);
+ break;
+ case 0x32:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ data.Array.GBy(temp.RF32("f04"), 0x04);
+ break;
+ case 0x35:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ data.Array.GBy(temp.RF32("f04"), 0x04);
+ data.Array.GBy(temp.RF32("f08"), 0x08);
+ data.Array.GBy(temp.RI32("i0C"), 0x0C);
+ data.Array.GBy(temp.RF32("f10"), 0x10);
+ break;
+ case 0x36:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ data.Array.GBy(temp.RF32("f04"), 0x04);
+ data.Array.GBy(temp.RF32("f08"), 0x08);
+ data.Array.GBy(temp.RI32("i0C"), 0x0C);
+ data.Array.GBy(temp.RF32("f10"), 0x10);
+ break;
+ case 0x37:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ data.Array.GBy(temp.RF32("f04"), 0x04);
+ data.Array.GBy(temp.RF32("f08"), 0x08);
+ data.Array.GBy(temp.RI32("i0C"), 0x0C);
+ data.Array.GBy(temp.RF32("f10"), 0x10);
+ break;
+ case 0x38:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ data.Array.GBy(temp.RF32("f04"), 0x04);
+ data.Array.GBy(temp.RF32("f08"), 0x08);
+ data.Array.GBy(temp.RI32("i0C"), 0x0C);
+ data.Array.GBy(temp.RF32("f10"), 0x10);
+ break;
+ case 0x39:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ data.Array.GBy(temp.RF32("f04"), 0x04);
+ data.Array.GBy(temp.RF32("f08"), 0x08);
+ data.Array.GBy(temp.RI32("i0C"), 0x0C);
+ data.Array.GBy(temp.RF32("f10"), 0x10);
+ break;
+ case 0x3A:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ data.Array.GBy(temp.RF32("f04"), 0x04);
+ data.Array.GBy(temp.RF32("f08"), 0x08);
+ data.Array.GBy(temp.RI32("i0C"), 0x0C);
+ data.Array.GBy(temp.RF32("f10"), 0x10);
+ break;
+ case 0x3B:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ break;
+ case 0x3C:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ data.Array.GBy(temp.RF32("f04"), 0x04);
+ data.Array.GBy(temp.RF32("f08"), 0x08);
+ data.Array.GBy(temp.RF32("f0C"), 0x0C);
+ break;
+ case 0x3D:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ data.Array.GBy(temp.RF32("f04"), 0x04);
+ break;
+ case 0x3E:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ data.Array.GBy(temp.RU8("i04_8"), 0x04);
+ data.Array.GBy(temp.RU8("i05_8"), 0x05);
+ data.Array.GBy(temp.RU8("i06_8"), 0x06);
+ data.Array.GBy(temp.RU8("i07_8"), 0x07);
+ data.Array.GBy(temp.RF32("f08"), 0x08);
+ data.Array.GBy(temp.RF32("f0C"), 0x0C);
+ data.Array.GBy(temp.RF32("f10"), 0x10);
+ data.Array.GBy(temp.RF32("f14"), 0x14);
+ data.Array.GBy(temp.RF32("f18"), 0x18);
+ data.Array.GBy(temp.RF32("f1C"), 0x1C);
+ data.Array.GBy(temp.RF32("f20"), 0x20);
+ data.Array.GBy(temp.RF32("f24"), 0x24);
+ data.Array.GBy(temp.RF32("f28"), 0x28);
+ data.Array.GBy(temp.RF32("f2C"), 0x2C);
+ data.Array.GBy(temp.RF32("f30"), 0x30);
+ data.Array.GBy(temp.RF32("f34"), 0x34);
+ data.Array.GBy(temp.RF32("f38"), 0x38);
+ break;
+ case 0x42:
+ data.Array.GBy(temp.RF32("Value"), 0x00);
+ break;
+ case 0x43:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ data.Array.GBy(temp.RF32("f04"), 0x04);
+ break;
+ case 0x44:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ data.Array.GBy(temp.RF32("f04"), 0x04);
+ break;
+ case 0x45:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ break;
+ case 0x46:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ break;
+ case 0x47:
+ data.Array.GBy(temp.RU8("i00_8"), 0x00);
+ data.Array.GBy(temp.RF32("f04"), 0x04);
+ break;
+ case 0x48:
+ data.Array.GBy(temp.RF32("f00"), 0x00);
+ data.Array.GBy(temp.RF32("f04"), 0x04);
+ data.Array.GBy(temp.RF32("f08"), 0x08);
+ data.Array.GBy(temp.RI32("i0C"), 0x0C);
+ data.Array.GBy(temp.RI32("i10"), 0x10);
+ data.Array.GBy(temp.RI32("i14"), 0x14);
+ data.Array.GBy(temp.RU8("i18_8"), 0x18);
+ data.Array.GBy(temp.RU8("i19_8"), 0x19);
+ data.Array.GBy(temp.RU8("i1A_8"), 0x1A);
+ break;
+ case 0x49:
+ data.Array.GBy(temp.RI16("i00_16"), 0x00);
+ data.Array.GBy(temp.RI16("i02_16"), 0x02);
+ data.Array.GBy(temp.RF32("f04"), 0x04);
+ data.Array.GBy(temp.RI16("i08_16"), 0x08);
+ data.Array.GBy(temp.RF32("f0C"), 0x0C);
+ data.Array.GBy(temp.RI32("i10"), 0x10);
+ data.Array.GBy(temp.RI32("i14"), 0x14);
+ data.Array.GBy(temp.RI32("i18"), 0x18);
+ data.Array.GBy(temp.RI32("i1C"), 0x1C);
+ data.Array.GBy(temp.RU8("i20"), 0x20);
+ data.Array.GBy(temp.RU8("i21"), 0x21);
+ data.Array.GBy(temp.RU8("i22"), 0x22);
+ data.Array.GBy(temp.RU8("i23"), 0x23);
+ data.Array.GBy(temp.RF32("f24"), 0x24);
+ data.Array.GBy(temp.RI32("i28"), 0x28);
+ data.Array.GBy(temp.RI32("i2C"), 0x2C);
+ break;
+ case 0x4A:
+ data.Array.GBy(temp.RU8("i00_8"), 0x00);
+ data.Array.GBy(temp.RU8("i01_8"), 0x01);
+ break;
+ case 0x4B:
+ data.Array.GBy(temp.RI32("i00"), 0x00);
+ data.Array.GBy(temp.RU8("i04_8"), 0x04);
+ data.Array.GBy(temp.RU8("i05_8"), 0x05);
+ data.Array.GBy(temp.RF32("f08"), 0x08);
+ data.Array.GBy(temp.RF32("f0C"), 0x0C);
+ data.Array.GBy(temp.RF32("f10"), 0x10);
+ data.Array.GBy(temp.RF32("f14"), 0x14);
+ data.Array.GBy(temp.RF32("f18"), 0x18);
+ data.Array.GBy(temp.RF32("f1C"), 0x1C);
+ data.Array.GBy(temp.RF32("f20"), 0x20);
+ data.Array.GBy(temp.RF32("f24"), 0x24);
+ data.Array.GBy(temp.RF32("f28"), 0x28);
+ data.Array.GBy(temp.RF32("f2C"), 0x2C);
+ data.Array.GBy(temp.RF32("f30"), 0x30);
+ break;
+ case 0x4C:
+ data.Array.GBy(temp.RI16("i00_16"), 0x00);
+ data.Array.GBy(temp.RF32("f04"), 0x04);
+ data.Array.GBy(temp.RF32("f08"), 0x08);
+ break;
+ case 0x4D:
+ data.Array.GBy(temp.RU8("i00_8"), 0x00);
+ break;
+ case 0x4E:
+ data.Array.GBy(temp.RI16("i00_16"), 0x00);
+ data.Array.GBy(temp.RU8("i02_8"), 0x02);
+ data.Array.GBy(temp.RU8("i03_8"), 0x03);
+ data.Array.GBy(temp.RI32("i04"), 0x04);
+ data.Array.GBy(temp.RI32("i08"), 0x08);
+ data.Array.GBy(temp.RI32("i0C"), 0x0C);
+ data.Array.GBy(temp.RI32("i10"), 0x10);
+ data.Array.GBy(temp.RI32("i14"), 0x14);
+ data.Array.GBy(temp.RI32("i18"), 0x18);
+ break;
+ case 0x4F:
+ data.Array.GBy(temp.RU8("i00_8"), 0x00);
+ break;
+ case 0x50:
+ data.Array.GBy(temp.RU8("i00_8"), 0x00);
+ break;
}
}
}
@@ -498,181 +575,323 @@ RETURN:
if (Header.Data[i].Offset < 0x10) continue;
MsgPack motion = MsgPack.New
.Add("MotionID", Header.Data[i].MotionID)
- .Add("SomeData", Header.Data[i].SomeData);
+ .Add("Field00", Header.Data[i].Field00)
+ .Add("Field04", Header.Data[i].Field04)
+ .Add("Field08", Header.Data[i].Field08)
+ .Add("Field0C", Header.Data[i].Field0C)
+ .Add("Field10", Header.Data[i].Field10)
+ .Add("Field12", Header.Data[i].Field12);
- if (Header.Data[i].Array == null || Header.Data[i].Array.Length < 1) { }
- else
+ if (Header.Data[i].Array != null && Header.Data[i].Array.Length > 0)
{
MsgPack array = new MsgPack(Header.Data[i].Array.Length, "Array");
for (i0 = 0; i0 < Header.Data[i].Array.Length; i0++)
{
ref HeaderData.Sub.Data data = ref Header.Data[i].Array[i0];
MsgPack arrayEntry = MsgPack.New;
+ arrayEntry.Add("Type", data.Type.ToString());
arrayEntry.Add("Frame", data.Frame);
- if (data.Array == null || data.Array.Length < 1)
- arrayEntry.Add("Type", data.Type);
- else if (data.Type == 0x03)
- arrayEntry.Add(new MsgPack("Type3")
- .Add("i0", data.Array[0]));
- else if (data.Type == 0x35)
- arrayEntry.Add(new MsgPack("Type53")
- .Add("i0", data.Array[0])
- .Add("f1", data.Array[1].ToF32())
- .Add("f2", data.Array[2].ToF32())
- .Add("i3", data.Array[3]));
- else if (data.Type == 0x36)
- arrayEntry.Add(new MsgPack("Type54")
- .Add("i0", data.Array[0])
- .Add("f1", data.Array[1].ToF32())
- .Add("f2", data.Array[2].ToF32())
- .Add("i3", data.Array[3]));
- else if (data.Type == 0x37)
- arrayEntry.Add(new MsgPack("Type55")
- .Add("i0", data.Array[0])
- .Add("f1", data.Array[1].ToF32())
- .Add("f2", data.Array[2].ToF32())
- .Add("i3", data.Array[3]));
- else if (data.Type == 0x38)
- arrayEntry.Add(new MsgPack("Type56")
- .Add("i0", data.Array[0])
- .Add("f1", data.Array[1].ToF32())
- .Add("f2", data.Array[2].ToF32())
- .Add("i3", data.Array[3]));
- else if (data.Type == 0x39)
- arrayEntry.Add(new MsgPack("Type57")
- .Add("i0", data.Array[0])
- .Add("f1", data.Array[1].ToF32())
- .Add("f2", data.Array[2].ToF32())
- .Add("i3", data.Array[3]));
- else if (data.Type == 0x3C)
- arrayEntry.Add(new MsgPack("Type60")
- .Add("i0", data.Array[0])
- .Add("f1", data.Array[1].ToF32())
- .Add("f2", data.Array[2].ToF32())
- .Add("f3", data.Array[3].ToF32()));
- else if (data.Type == 0x3D)
- arrayEntry.Add(new MsgPack("Type61")
- .Add("i0", data.Array[0])
- .Add("f1", data.Array[1].ToF32()));
- else if (data.Type == 0x3E)
- arrayEntry.Add(new MsgPack("Type62")
- .Add("i0", data.Array[0])
- .Add("i1_0", (byte) data.Array[1])
- .Add("i1_1", (byte)(data.Array[1] >> 8))
- .Add("i1_2", (byte)(data.Array[1] >> 16))
- .Add("i1_3", (byte)(data.Array[1] >> 24))
- .Add("f2" , data.Array[ 2].ToF32())
- .Add("f3" , data.Array[ 3].ToF32())
- .Add("f4" , data.Array[ 4].ToF32())
- .Add("f5" , data.Array[ 5].ToF32())
- .Add("f6" , data.Array[ 6].ToF32())
- .Add("f7" , data.Array[ 7].ToF32())
- .Add("f8" , data.Array[ 8].ToF32())
- .Add("f9" , data.Array[ 9].ToF32())
- .Add("f10", data.Array[10].ToF32())
- .Add("f11", data.Array[11].ToF32())
- .Add("f12", data.Array[12].ToF32())
- .Add("f13", data.Array[13].ToF32())
- .Add("f14", data.Array[14].ToF32())
- .Add("i15", data.Array[15]));
- else if (data.Type == 0x41)
- arrayEntry.Add(new MsgPack("Type65")
- .Add("i0", data.Array[0]));
- else if (data.Type == 0x42)
- arrayEntry.Add(new MsgPack("Type66")
- .Add("f0", data.Array[0].ToF32()));
- else if (data.Type == 0x43)
- arrayEntry.Add(new MsgPack("Type67")
- .Add("i0", data.Array[0])
- .Add("f1", data.Array[1].ToF32()));
- else if (data.Type == 0x44)
- arrayEntry.Add(new MsgPack("Type68")
- .Add("i0", data.Array[0])
- .Add("f1", data.Array[1].ToF32()));
- else if (data.Type == 0x45)
- arrayEntry.Add(new MsgPack("Type69")
- .Add("i0", data.Array[0])
- .Add("i1", data.Array[1]));
- else if (data.Type == 0x46)
- arrayEntry.Add(new MsgPack("Type70")
- .Add("i0", data.Array[0]));
- else if (data.Type == 0x47)
- arrayEntry.Add(new MsgPack("Type71")
- .Add("i0", data.Array[0])
- .Add("f1", data.Array[1].ToF32()));
- else if (data.Type == 0x48)
- arrayEntry.Add(new MsgPack("Type72")
- .Add("i0", data.Array[0])
- .Add("f1", data.Array[1].ToF32()));
- else if (data.Type == 0x49)
- arrayEntry.Add(new MsgPack("Type73")
- .Add("i0", data.Array[0])
- .Add("f1", data.Array[1].ToF32())
- .Add("i2", data.Array[2])
- .Add("f3", data.Array[3].ToF32())
- .Add("i4", data.Array[4])
- .Add("i5", data.Array[5])
- .Add("i6", data.Array[6])
- .Add("i7", data.Array[7])
- .Add("i8", data.Array[8])
- .Add("i9", data.Array[9])
- .Add("i10", data.Array[10])
- .Add("i11", data.Array[11]));
- else if (data.Type == 0x4A)
- arrayEntry.Add(new MsgPack("Type74")
- .Add("i0", data.Array[0]));
- else if (data.Type == 0x4B)
- arrayEntry.Add(new MsgPack("Type75")
- .Add("i0", data.Array[0])
- .Add("i1_0", (byte) data.Array[1])
- .Add("i1_1", (byte)(data.Array[1] >> 8))
- .Add("f2" , data.Array[ 2].ToF32())
- .Add("f3" , data.Array[ 3].ToF32())
- .Add("f4" , data.Array[ 4].ToF32())
- .Add("f5" , data.Array[ 5].ToF32())
- .Add("f6" , data.Array[ 6].ToF32())
- .Add("f7" , data.Array[ 7].ToF32())
- .Add("f8" , data.Array[ 8].ToF32())
- .Add("f9" , data.Array[ 9].ToF32())
- .Add("f10", data.Array[10].ToF32())
- .Add("f11", data.Array[11].ToF32())
- .Add("f12", data.Array[12].ToF32()));
- else if (data.Type == 0x4C)
- arrayEntry.Add(new MsgPack("Type76")
- .Add("i0", data.Array[0])
- .Add("f1", data.Array[1].ToF32())
- .Add("f2", data.Array[2].ToF32()));
- else if (data.Type == 0x4D)
- arrayEntry.Add(new MsgPack("Type77")
- .Add("i0", data.Array[0]));
- else if (data.Type == 0x4F)
- arrayEntry.Add(new MsgPack("Type79")
- .Add("i0", data.Array[0]));
- else if (data.Type == 0x50)
- arrayEntry.Add(new MsgPack("Type80")
- .Add("i0", data.Array[0]));
- else
+ switch ((int)data.Type)
{
- arrayEntry.Add("Type", data.Type);
- MsgPack arrayArray = new MsgPack(data.Array.Length, "Array");
- for (i1 = 0; i1 < data.Array.Length; i1++)
- arrayArray[i1] = data.Array[i1];
- arrayEntry.Add(arrayArray);
+ case 0x02:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00_16", data.Array.TI16(0x00)));
+ break;
+ case 0x03:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00)));
+ break;
+ case 0x04:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00)));
+ break;
+ case 0x07:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00_16", data.Array.TI16(0x00))
+ .Add("f04", data.Array.TF32(0x04))
+ .Add("f08", data.Array.TF32(0x08)));
+ break;
+ case 0x08:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i04_16", data.Array.TI16(0x04)));
+ break;
+ case 0x0D:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00))
+ .Add("i04", data.Array.TI32(0x04))
+ .Add("i08", data.Array.TI32(0x08)));
+ break;
+ case 0x11:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00_16", data.Array.TI16(0x00))
+ .Add("i02_16", data.Array.TI16(0x02))
+ .Add("f04", data.Array.TF32(0x04))
+ .Add("f08", data.Array.TF32(0x08))
+ .Add("f0C", data.Array.TF32(0x0C))
+ .Add("f10", data.Array.TF32(0x10))
+ .Add("f14", data.Array.TF32(0x14))
+ .Add("f18", data.Array.TF32(0x18)));
+ break;
+ case 0x1D:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00_16", data.Array.TI16(0x00))
+ .Add("i02_16", data.Array.TI16(0x02))
+ .Add("i04_16", data.Array.TI16(0x04))
+ .Add("i06_16", data.Array.TI16(0x06))
+ .Add("f08", data.Array.TF32(0x08))
+ .Add("f0C", data.Array.TF32(0x0C))
+ .Add("f10", data.Array.TF32(0x10))
+ .Add("i14_16", data.Array.TI16(0x14))
+ .Add("f18", data.Array.TF32(0x18))
+ .Add("f1C", data.Array.TF32(0x1C))
+ .Add("f20", data.Array.TF32(0x20))
+ .Add("f24", data.Array.TF32(0x24))
+ .Add("f28", data.Array.TF32(0x28))
+ .Add("f2C", data.Array.TF32(0x2C))
+ .Add("i30_16", data.Array.TI16(0x30))
+ .Add("i34", data.Array.TI32(0x34))
+ .Add("i38", data.Array.TI32(0x38)));
+ break;
+ case 0x20:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00_16", data.Array.TI16(0x00))
+ .Add("i04", data.Array.TI32(0x04))
+ .Add("i08", data.Array.TI32(0x08))
+ .Add("i0C", data.Array.TI32(0x0C)));
+ break;
+ case 0x21:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00_16", data.Array.TI16(0x00))
+ .Add("i02_8", data.Array[0x02])
+ .Add("i04", data.Array.TI32(0x04))
+ .Add("f08", data.Array.TF32(0x08))
+ .Add("f0C", data.Array.TF32(0x0C))
+ .Add("i10", data.Array.TI32(0x10))
+ .Add("i14", data.Array.TI32(0x14)));
+ break;
+ case 0x32:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00))
+ .Add("f04", data.Array.TF32(0x04)));
+ break;
+ case 0x35:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00))
+ .Add("f04", data.Array.TF32(0x04))
+ .Add("f08", data.Array.TF32(0x08))
+ .Add("i0C", data.Array.TI32(0x0C))
+ .Add("f10", data.Array.TF32(0x10)));
+ break;
+ case 0x36:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00))
+ .Add("f04", data.Array.TF32(0x04))
+ .Add("f08", data.Array.TF32(0x08))
+ .Add("i0C", data.Array.TI32(0x0C))
+ .Add("f10", data.Array.TF32(0x10)));
+ break;
+ case 0x37:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00))
+ .Add("f04", data.Array.TF32(0x04))
+ .Add("f08", data.Array.TF32(0x08))
+ .Add("i0C", data.Array.TI32(0x0C))
+ .Add("f10", data.Array.TF32(0x10)));
+ break;
+ case 0x38:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00))
+ .Add("f04", data.Array.TF32(0x04))
+ .Add("f08", data.Array.TF32(0x08))
+ .Add("i0C", data.Array.TI32(0x0C))
+ .Add("f10", data.Array.TF32(0x10)));
+ break;
+ case 0x39:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00))
+ .Add("f04", data.Array.TF32(0x04))
+ .Add("f08", data.Array.TF32(0x08))
+ .Add("i0C", data.Array.TI32(0x0C))
+ .Add("f10", data.Array.TF32(0x10)));
+ break;
+ case 0x3A:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00))
+ .Add("f04", data.Array.TF32(0x04))
+ .Add("f08", data.Array.TF32(0x08))
+ .Add("i0C", data.Array.TI32(0x0C))
+ .Add("f10", data.Array.TF32(0x10)));
+ break;
+ case 0x3B:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00)));
+ break;
+ case 0x3C:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00))
+ .Add("f04", data.Array.TF32(0x04))
+ .Add("f08", data.Array.TF32(0x08))
+ .Add("f0C", data.Array.TF32(0x0C)));
+ break;
+ case 0x3D:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00))
+ .Add("f04", data.Array.TF32(0x04)));
+ break;
+ case 0x3E:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00))
+ .Add("i04_8", data.Array[0x04])
+ .Add("i05_8", data.Array[0x05])
+ .Add("i06_8", data.Array[0x06])
+ .Add("i07_8", data.Array[0x07])
+ .Add("f08", data.Array.TF32(0x08))
+ .Add("f0C", data.Array.TF32(0x0C))
+ .Add("f10", data.Array.TF32(0x10))
+ .Add("f14", data.Array.TF32(0x14))
+ .Add("f18", data.Array.TF32(0x18))
+ .Add("f1C", data.Array.TF32(0x1C))
+ .Add("f20", data.Array.TF32(0x20))
+ .Add("f24", data.Array.TF32(0x24))
+ .Add("f28", data.Array.TF32(0x28))
+ .Add("f2C", data.Array.TF32(0x2C))
+ .Add("f30", data.Array.TF32(0x30))
+ .Add("f34", data.Array.TF32(0x34))
+ .Add("f38", data.Array.TF32(0x38)));
+ break;
+ case 0x42:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("Value", data.Array.TF32(0x00)));
+ break;
+ case 0x43:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00))
+ .Add("f04", data.Array.TF32(0x04)));
+ break;
+ case 0x44:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00))
+ .Add("f04", data.Array.TF32(0x04)));
+ break;
+ case 0x45:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00)));
+ break;
+ case 0x46:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00)));
+ break;
+ case 0x47:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00_8", data.Array[0x00])
+ .Add("f04", data.Array.TF32(0x04)));
+ break;
+ case 0x48:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("f00", data.Array.TF32(0x00))
+ .Add("f04", data.Array.TF32(0x04))
+ .Add("f08", data.Array.TF32(0x08))
+ .Add("i0C", data.Array.TI32(0x0C))
+ .Add("i10", data.Array.TI32(0x10))
+ .Add("i14", data.Array.TI32(0x14))
+ .Add("i18_8", data.Array[0x18])
+ .Add("i19_8", data.Array[0x19])
+ .Add("i1A_8", data.Array[0x1A]));
+ break;
+ case 0x49:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00_16", data.Array.TI16(0x00))
+ .Add("i02_16", data.Array.TI16(0x02))
+ .Add("f04", data.Array.TF32(0x04))
+ .Add("i08_16", data.Array.TI16(0x08))
+ .Add("f0C", data.Array.TF32(0x0C))
+ .Add("i10", data.Array.TI32(0x10))
+ .Add("i14", data.Array.TI32(0x14))
+ .Add("i18", data.Array.TI32(0x18))
+ .Add("i1C", data.Array.TI32(0x1C))
+ .Add("i20_8", data.Array[0x20])
+ .Add("i21_8", data.Array[0x21])
+ .Add("i22_8", data.Array[0x22])
+ .Add("i23_8", data.Array[0x23])
+ .Add("f24", data.Array.TI32(0x24))
+ .Add("i28", data.Array.TI32(0x28))
+ .Add("i2C", data.Array.TI32(0x2C)));
+ break;
+ case 0x4A:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00_8", data.Array[0x00])
+ .Add("i01_8", data.Array[0x01]));
+ break;
+ case 0x4B:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00", data.Array.TI32(0x00))
+ .Add("i04_8", data.Array[0x04])
+ .Add("i05_8", data.Array[0x05])
+ .Add("f08", data.Array.TF32(0x08))
+ .Add("f0C", data.Array.TF32(0x0C))
+ .Add("f10", data.Array.TF32(0x10))
+ .Add("f14", data.Array.TF32(0x14))
+ .Add("f18", data.Array.TF32(0x18))
+ .Add("f1C", data.Array.TF32(0x1C))
+ .Add("f20", data.Array.TF32(0x20))
+ .Add("f24", data.Array.TF32(0x24))
+ .Add("f28", data.Array.TF32(0x28))
+ .Add("f2C", data.Array.TF32(0x2C))
+ .Add("f30", data.Array.TF32(0x30)));
+ break;
+ case 0x4C:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00_16", data.Array.TI16(0x00))
+ .Add("f04", data.Array.TF32(0x04))
+ .Add("f08", data.Array.TF32(0x08)));
+ break;
+ case 0x4D:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00_8", data.Array[0x00]));
+ break;
+ case 0x4E:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00_16", data.Array.TI16(0x00))
+ .Add("i02_8", data.Array[0x02])
+ .Add("i03_8", data.Array[0x03])
+ .Add("i04", data.Array.TI32(0x04))
+ .Add("i08", data.Array.TI32(0x08))
+ .Add("i0C", data.Array.TI32(0x0C))
+ .Add("i10", data.Array.TI32(0x10))
+ .Add("i14", data.Array.TI32(0x14))
+ .Add("i18", data.Array.TI32(0x18)));
+ break;
+ case 0x4F:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00_8", data.Array[0]));
+ break;
+ case 0x50:
+ arrayEntry.Add(new MsgPack("Data")
+ .Add("i00_8", data.Array[0]));
+ break;
+ default:
+ if (data.Array != null && data.Array.Length > 0)
+ {
+ MsgPack arrayArray = new MsgPack(data.Array.Length, "Array");
+ for (i1 = 0; i1 < data.Array.Length; i1++)
+ arrayArray[i1] = data.Array[i1];
+ arrayEntry.Add(arrayArray);
+ }
+ break;
}
+
array[i0] = arrayEntry;
}
motion.Add(array);
}
- if (Header.Data[i].Array2 == null || Header.Data[i].Array2.Length < 1) { }
- else
+ if (Header.Data[i].Array2 != null && Header.Data[i].Array2.Length > 0)
{
MsgPack array2 = new MsgPack(Header.Data[i].Array2.Length, "Array2");
for (i0 = 0; i0 < Header.Data[i].Array2.Length; i0++)
{
- MsgPack arrayEntry = MsgPack.New.Add("Frame", Header.Data[i].Array2[i0].Frame);
- if (Header.Data[i].Array2[i0].Array == null || Header.Data[i].Array2[i0].Array.Length < 1) { }
- else
+ MsgPack arrayEntry = MsgPack.New.Add("Type", Header.Data[i].Array2[i0].Type);
+ if (Header.Data[i].Array2[i0].Array != null && Header.Data[i].Array2[i0].Array.Length > 0)
{
MsgPack arrayArray = new MsgPack(Header.Data[i].Array2[i0].Array.Length, "Array");
for (i1 = 0; i1 < Header.Data[i].Array2[i0].Array.Length; i1++)
@@ -691,19 +910,20 @@ RETURN:
motHead.WriteAfterAll(false, true, file, json);
}
- private static int GetSize(int Type) =>
- Type switch
+ private static int GetSize(Type Type) =>
+ (int)Type switch
{
0x02 => 0x02,
0x03 => 0x04,
0x04 => 0x04,
- 0x07 => 0x08,
+ 0x07 => 0x0C,
0x08 => 0x08,
0x0D => 0x0C,
0x11 => 0x1C,
- 0x1D => 0x30,
+ 0x1D => 0x3C,
0x20 => 0x10,
0x21 => 0x18,
+ 0x32 => 0x04,
0x35 => 0x14,
0x36 => 0x14,
0x37 => 0x14,
@@ -714,34 +934,41 @@ RETURN:
0x3C => 0x10,
0x3D => 0x08,
0x3E => 0x40,
- 0x40 => 0x00,
- 0x41 => 0x04,
0x42 => 0x04,
0x43 => 0x08,
0x44 => 0x08,
- 0x45 => 0x08,
+ 0x45 => 0x04,
0x46 => 0x04,
0x47 => 0x08,
- 0x48 => 0x08,
+ 0x48 => 0x1C,
0x49 => 0x30,
0x4A => 0x02,
0x4B => 0x34,
0x4C => 0x0C,
- 0x4D => 0x04,
+ 0x4D => 0x01,
0x4E => 0x1C,
0x4F => 0x01,
0x50 => 0x01,
_ => 0x00,
};
- public void Dispose()
+ private static int GetSize2(int Type) =>
+ (int)Type switch {
+ 0x00 => 0x1C,
+ 0x01 => 0x08,
+ 0x02 => 0x14,
+ 0x44 => 0x04,
+ _ => 0x00,
+ };
+
+ public void Dispose()
{ if (s != null) s.D(); s = null; Header = default; }
public struct HeaderData
{
public int MotionSetID;
- public int StartMotionID;
- public int EndMotionID;
+ public int FirstMotionID;
+ public int LastMotionID;
public int SubHeaderOffset;
public Sub[] Data;
@@ -751,7 +978,12 @@ RETURN:
public int Offset;
public int MotionID;
- public int SomeData;
+ public int Field00;
+ public int Field04;
+ public int Field08;
+ public int Field0C;
+ public ushort Field10;
+ public ushort Field12;
public int Offset2;
public int DataHeaderOffset;
@@ -760,21 +992,28 @@ RETURN:
public struct Data
{
- public int Type;
+ public Type Type;
public int Frame;
public int Offset;
- public int[] Array;
+ public byte[] Array;
}
public struct Data2
{
public int Offset;
- public int Frame;
- public int[] Array;
+ public int Type;
+ public byte[] Array;
}
}
}
+
+ public enum Type
+ {
+ WingReset = 0x40,
+ OsageReset = 0x41,
+ OsagePhysStep = 0x42,
+ }
}
}
diff --git a/KKdMainLib/libdeflate.dll b/KKdMainLib/libdeflate.dll
index 681cfd7..3c319e9 100644
Binary files a/KKdMainLib/libdeflate.dll and b/KKdMainLib/libdeflate.dll differ
diff --git a/PD_Tool/Properties/AssemblyInfo.cs b/PD_Tool/Properties/AssemblyInfo.cs
index f44bb04..8760710 100644
--- a/PD_Tool/Properties/AssemblyInfo.cs
+++ b/PD_Tool/Properties/AssemblyInfo.cs
@@ -11,5 +11,5 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("7B5D5A3A-A6F8-4813-C97D-ACFC98F7397E")]
-[assembly: AssemblyVersion("0.4.10.7")]
-[assembly: AssemblyFileVersion("0.4.10.7")]
+[assembly: AssemblyVersion("0.4.10.8")]
+[assembly: AssemblyFileVersion("0.4.10.8")]
diff --git a/PD_Tool/classes/A3D.cs b/PD_Tool/classes/A3D.cs
index a1cce75..6214710 100644
--- a/PD_Tool/classes/A3D.cs
+++ b/PD_Tool/classes/A3D.cs
@@ -69,7 +69,7 @@ namespace PD_Tool
{
state = a3da.A3DAReader(filepath);
if (state == 1)
- if (choose == "F") a3da.MsgPackWriter(filepath, json);
+ if (choose == "9") a3da.MsgPackWriter(filepath, json);
else
{
a3da.Head.Format = format;