Skip to content

Commit a620b37

Browse files
committed
Исправление критического бага
1 parent b562217 commit a620b37

File tree

4 files changed

+77
-15
lines changed

4 files changed

+77
-15
lines changed

Editor.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ namespace OMF_Editor
99
{
1010
public class OMFEditor
1111
{
12-
1312
public void CopyAnims(AnimationsContainer omf_1, AnimationsContainer omf_2)
1413
{
1514
//bool omf_1.bone_cont.OGF_V != omf_2.bone_cont.OGF_V

Form1.Designer.cs

Lines changed: 18 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Form1.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,12 @@ private void AppendFile(string filename, List<string> list)
105105
{
106106
AnimationsContainer new_omf = OpenSecondOMF(filename);
107107
if (new_omf == null) return;
108+
109+
for (int i = 0; i < Main_OMF.Anims.Count; i++)
110+
{
111+
list.Remove(Main_OMF.Anims[i].MotionName);
112+
}
113+
108114
editor.CopyAnims(Main_OMF, new_omf, list);
109115
UpdateList();
110116

@@ -385,5 +391,12 @@ private void button4_Click(object sender, EventArgs e)
385391
}
386392
}
387393
}
394+
395+
private void button5_Click(object sender, EventArgs e)
396+
{
397+
if (Main_OMF == null) return;
398+
399+
Main_OMF.GunslingerRepair();
400+
}
388401
}
389402
}

OMF.cs

Lines changed: 46 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,15 @@ public void RecalcSectionSize()
3131
SectionSize = new_size;
3232

3333
// Recalc second section size
34-
new_size = 2; // motions count ( short )
34+
new_size = 6; // motions count ( short )
3535

3636
foreach (AnimationParams anim in AnimsParams)
37-
new_size += (uint)anim.Size(bone_cont.OGF_V);
37+
{
38+
uint temp = (uint)anim.Size(bone_cont.OGF_V);
39+
40+
new_size += temp;
41+
}
42+
3843

3944
new_size += (uint)bone_cont.Size();
4045

@@ -64,7 +69,22 @@ public void RecalcAllAnimIndex()
6469
}
6570
}
6671

67-
72+
public void GunslingerRepair()
73+
{
74+
short i = 0;
75+
foreach (AnimationParams anm in AnimsParams)
76+
{
77+
anm.MotionID = i;
78+
i++;
79+
}
80+
i = 1;
81+
foreach (AnimVector anm in Anims)
82+
{
83+
anm.Name = AnimsParams[i - 1].Name;
84+
anm.SectionId = i;
85+
i++;
86+
}
87+
}
6888

6989
public BoneContainer bone_cont;
7090

@@ -200,7 +220,7 @@ public int Size()
200220
new_size += bonesparts.Size();
201221
}
202222

203-
return new_size + 4;
223+
return new_size;
204224
}
205225

206226
public List<BoneParts> parts = new List<BoneParts>();
@@ -274,6 +294,13 @@ public MotionMark(BinaryReader reader, OMFEditor editor)
274294
}
275295
}
276296

297+
public uint Size()
298+
{
299+
uint temp = (uint)(Name.Length + 8 * Count + 6);
300+
301+
return temp;
302+
}
303+
277304
public void WriteMotionMark(BinaryWriter writer, OMFEditor editor)
278305
{
279306
editor.WriteMarkString(writer, Name);
@@ -310,16 +337,26 @@ public class AnimationParams
310337
public float Falloff { get; set; }
311338
public int MarksCount { get; set; }
312339

313-
public int Size(short motion_version)
340+
public uint Size(short motion_version)
314341
{
315-
int new_size = 0;
342+
uint new_size = 0;
316343

317344
if(motion_version == 4)
318345
{
319-
new_size += (8 * MarksCount) + 4;
320-
}
346+
new_size += 4;
321347

322-
return new_size + Name.Length + 25;
348+
if (m_marks != null)
349+
{
350+
foreach (MotionMark mark in m_marks)
351+
{
352+
uint temp = mark.Size();
353+
new_size += temp;
354+
}
355+
356+
}
357+
}
358+
359+
return new_size + (uint)(Name.Length + 25);
323360
}
324361

325362
public List<MotionMark> m_marks; // = new List<MotionMark>();

0 commit comments

Comments
 (0)