96 lines
4.2 KiB
C#
96 lines
4.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace UniversalEditor.ObjectModels.UnrealEngine
|
|
{
|
|
public class UnrealPackageObjectModel : ObjectModel
|
|
{
|
|
private static ObjectModelReference _omr = null;
|
|
protected override ObjectModelReference MakeReferenceInternal()
|
|
{
|
|
if (_omr == null)
|
|
{
|
|
_omr = base.MakeReferenceInternal();
|
|
_omr.Title = "Unreal Engine package";
|
|
_omr.Path = new string[] { "Game development", "Unreal Engine", "Package" };
|
|
}
|
|
return _omr;
|
|
}
|
|
|
|
private List<Guid> mvarPackageGUIDs = new List<Guid>();
|
|
/// <summary>
|
|
/// Unique identifiers used for package downloading from servers.
|
|
/// </summary>
|
|
public List<Guid> PackageGUIDs { get { return mvarPackageGUIDs; } set { mvarPackageGUIDs = value; } }
|
|
|
|
private ushort mvarLicenseeNumber = 0;
|
|
/// <summary>
|
|
/// This is the licensee number, different for each game.
|
|
/// </summary>
|
|
public ushort LicenseeNumber { get { return mvarLicenseeNumber; } set { mvarLicenseeNumber = value; } }
|
|
|
|
private PackageFlags mvarPackageFlags = PackageFlags.None;
|
|
/// <summary>
|
|
/// Global package flags; i.e., if a package may be downloaded from a game server, etc.
|
|
/// </summary>
|
|
public PackageFlags PackageFlags { get { return mvarPackageFlags; } set { mvarPackageFlags = value; } }
|
|
|
|
private NameTableEntry.NameTableEntryCollection mvarNameTableEntries = new NameTableEntry.NameTableEntryCollection();
|
|
/// <summary>
|
|
/// The name-table can be considered an index of all unique names used for objects and
|
|
/// references within the file. Later on, you'll often find indexes into this table instead of
|
|
/// a string containing the object-name.
|
|
/// </summary>
|
|
public NameTableEntry.NameTableEntryCollection NameTableEntries { get { return mvarNameTableEntries; } }
|
|
|
|
private ExportTableEntry.ExportTableEntryCollection mvarExportTableEntries = new ExportTableEntry.ExportTableEntryCollection();
|
|
/// <summary>
|
|
/// The export-table is an index for all objects within the package. Every object in the body
|
|
/// of the file has a corresponding entry in this table, with information like offset within
|
|
/// the file etc.
|
|
/// </summary>
|
|
public ExportTableEntry.ExportTableEntryCollection ExportTableEntries { get { return mvarExportTableEntries; } }
|
|
|
|
private ImportTableEntry.ImportTableEntryCollection mvarImportTableEntries = new ImportTableEntry.ImportTableEntryCollection();
|
|
public ImportTableEntry.ImportTableEntryCollection ImportTableEntries { get { return mvarImportTableEntries; } }
|
|
|
|
private Generation.GenerationCollection mvarGenerations = new Generation.GenerationCollection();
|
|
public Generation.GenerationCollection Generations { get { return mvarGenerations; } }
|
|
|
|
public override void Clear()
|
|
{
|
|
mvarLicenseeNumber = 0;
|
|
mvarPackageFlags = UnrealEngine.PackageFlags.None;
|
|
mvarPackageGUIDs.Clear();
|
|
mvarNameTableEntries.Clear();
|
|
mvarExportTableEntries.Clear();
|
|
mvarImportTableEntries.Clear();
|
|
}
|
|
|
|
public override void CopyTo(ObjectModel where)
|
|
{
|
|
UnrealPackageObjectModel clone = (where as UnrealPackageObjectModel);
|
|
clone.LicenseeNumber = mvarLicenseeNumber;
|
|
clone.PackageFlags = mvarPackageFlags;
|
|
foreach (Guid guid in mvarPackageGUIDs)
|
|
{
|
|
clone.PackageGUIDs.Add(guid);
|
|
}
|
|
foreach (NameTableEntry entry in mvarNameTableEntries)
|
|
{
|
|
clone.NameTableEntries.Add(entry.Clone() as NameTableEntry);
|
|
}
|
|
foreach (ExportTableEntry entry in mvarExportTableEntries)
|
|
{
|
|
clone.ExportTableEntries.Add(entry.Clone() as ExportTableEntry);
|
|
}
|
|
foreach (ImportTableEntry entry in mvarImportTableEntries)
|
|
{
|
|
clone.ImportTableEntries.Add(entry.Clone() as ImportTableEntry);
|
|
}
|
|
}
|
|
}
|
|
}
|