Skip to content

Commit 26d4b12

Browse files
committed
Sync commit - working on making things
1 parent 5d82fb1 commit 26d4b12

3 files changed

Lines changed: 35 additions & 4 deletions

File tree

LegendaryExplorer/LegendaryExplorerCore/Packages/CloningImportingAndRelinking/EntryImporter.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -864,8 +864,15 @@ public static bool ReplaceExportDataWithAnother(ExportEntry incomingExport, Expo
864864
using var res = new EndianReader(MemoryManager.GetMemoryStream()) { Endian = targetExport.FileRef.Endian };
865865
if (incomingExport.HasStack)
866866
{
867-
res.Writer.Write(incomingExport.DataReadOnly.Slice(0, 8));
868-
res.Writer.WriteFromBuffer(GetStackDummy(targetExport.Game));
867+
// Seems like this doesn't work, maybe stack has already been written
868+
// or is overwritten somewhere.
869+
// 12/30/2025 - Use StateFrame to copy stack over
870+
var stateFrame = StateFrame.FromExport(incomingExport);
871+
var stateFrameBytes = stateFrame.ToBytes(targetExport.FileRef);
872+
res.Writer.Write(stateFrameBytes);
873+
res.Writer.Write(incomingExport.NetIndex); // Write NetIndex
874+
// res.Writer.Write(incomingExport.DataReadOnly.Slice(0, 8));
875+
// res.Writer.WriteFromBuffer(GetStackDummy(targetExport.Game));
869876
}
870877
else
871878
{

LegendaryExplorer/LegendaryExplorerCore/Packages/ExportEntry.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -945,6 +945,23 @@ public void WritePrePropsAndProperties(byte[] prePropBytes, PropertyCollection p
945945
Data = m.ToArray();
946946
}
947947

948+
///// <summary>
949+
///// Used for writing StateFrame pre-prop binary.
950+
///// </summary>
951+
///// <param name="bin"></param>
952+
///// <param name="props"></param>
953+
///// <param name="binStart"></param>
954+
//public void WritePrePropsAndProperties(ObjectBinary bin, PropertyCollection props, int binStart = -1)
955+
//{
956+
// MemoryStream ms = MemoryManager.GetMemoryStream(_data.Length);
957+
// var m = new EndianReader(ms) { Endian = _fileRef.Endian };
958+
// bin.WriteTo(m.Writer, _fileRef);
959+
// props.WriteTo(m.Writer, _fileRef);
960+
// binStart = binStart == -1 ? propsEnd() : binStart; // this allows us to precompute the starting position, which can avoid issues during relink as props may not have resolved yet
961+
// m.Writer.Write(_data, binStart, _data.Length - binStart);
962+
// Data = m.ToArray();
963+
//}
964+
948965
public int GetPropertyStart()
949966
{
950967
if (HasStack)

LegendaryExplorer/LegendaryExplorerCore/Packages/PackageResynthesizer.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Diagnostics;
4-
using System.IO;
54
using System.Linq;
65
using LegendaryExplorerCore.DebugTools;
76
using LegendaryExplorerCore.Diagnostics;
@@ -169,7 +168,6 @@ private static void CopyPackageHeader(IMEPackage package, IMEPackage newPackage)
169168
{
170169
meNewPackage.AdditionalPackagesToCook.AddRange(mePackage.AdditionalPackagesToCook);
171170
}
172-
// Todo: Generations?
173171
}
174172

175173
private static void PortOrdering(EntryOrdering ordering, IMEPackage newPackage, IEntry parent, ESynthesisMode mode, List<ImportEntry> importsToConvert = null)
@@ -269,6 +267,15 @@ private static void PortOrdering(EntryOrdering ordering, IMEPackage newPackage,
269267
EntryImporter.ImportAndRelinkEntries(EntryImporter.PortingOption.ReplaceSingular,
270268
ordering.Entry, newPackage, destExp, true,
271269
new RelinkerOptionsPackage() { RelinkAllowDifferingClassesInRelink = true, ImportExportDependencies = false }, out _);
270+
271+
272+
// Restore NetIndex and LatentAction
273+
//destExp.NetIndex = oExp.NetIndex;
274+
//if (destExp.HasStack)
275+
//{
276+
// StateFrame oStack = StateFrame.FromExport(oExp);
277+
// destExp.WritePrePropsAndProperties(oStack, destExp.GetProperties());
278+
//}
272279
}
273280
}
274281
}

0 commit comments

Comments
 (0)