Added Unreal Engine plugin and editor for Windows Forms
This commit is contained in:
parent
939736e0c2
commit
fc6f525631
@ -0,0 +1,529 @@
|
||||
namespace UniversalEditor.Editors.UnrealEngine
|
||||
{
|
||||
partial class UnrealPackageEditor
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.tv = new System.Windows.Forms.TreeView();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.pnlExportTable = new System.Windows.Forms.Panel();
|
||||
this.button5 = new System.Windows.Forms.Button();
|
||||
this.button6 = new System.Windows.Forms.Button();
|
||||
this.button7 = new System.Windows.Forms.Button();
|
||||
this.button8 = new System.Windows.Forms.Button();
|
||||
this.lvExportTable = new System.Windows.Forms.ListView();
|
||||
this.chExportObjectName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.chExportObjectParent = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.chExportObjectClass = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.chExportObjectFlags = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.chExportObjectOffset = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.chExportObjectSize = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.pnlHeritageTable = new System.Windows.Forms.Panel();
|
||||
this.button9 = new System.Windows.Forms.Button();
|
||||
this.button10 = new System.Windows.Forms.Button();
|
||||
this.button11 = new System.Windows.Forms.Button();
|
||||
this.button12 = new System.Windows.Forms.Button();
|
||||
this.lvHeritageTable = new System.Windows.Forms.ListView();
|
||||
this.chHeritageGUID = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.pnlImportTable = new System.Windows.Forms.Panel();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.button3 = new System.Windows.Forms.Button();
|
||||
this.button4 = new System.Windows.Forms.Button();
|
||||
this.lvImportTable = new System.Windows.Forms.ListView();
|
||||
this.chImportPackageName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.chImportObjectName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.chImportClassName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.pnlNameTable = new System.Windows.Forms.Panel();
|
||||
this.cmdNameClear = new System.Windows.Forms.Button();
|
||||
this.cmdNameRemove = new System.Windows.Forms.Button();
|
||||
this.cmdNameModify = new System.Windows.Forms.Button();
|
||||
this.cmdNameAdd = new System.Windows.Forms.Button();
|
||||
this.lvNameTable = new System.Windows.Forms.ListView();
|
||||
this.chName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.chFlags = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.pnlExportTable.SuspendLayout();
|
||||
this.pnlHeritageTable.SuspendLayout();
|
||||
this.pnlImportTable.SuspendLayout();
|
||||
this.pnlNameTable.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tv
|
||||
//
|
||||
this.tv.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tv.HideSelection = false;
|
||||
this.tv.Location = new System.Drawing.Point(0, 0);
|
||||
this.tv.Name = "tv";
|
||||
this.tv.Size = new System.Drawing.Size(170, 267);
|
||||
this.tv.TabIndex = 0;
|
||||
this.tv.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tv_AfterSelect);
|
||||
this.tv.MouseDown += new System.Windows.Forms.MouseEventHandler(this.tv_MouseDown);
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer1.Name = "splitContainer1";
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.Controls.Add(this.tv);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.pnlExportTable);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.pnlHeritageTable);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.pnlImportTable);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.pnlNameTable);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(558, 267);
|
||||
this.splitContainer1.SplitterDistance = 170;
|
||||
this.splitContainer1.TabIndex = 1;
|
||||
//
|
||||
// pnlExportTable
|
||||
//
|
||||
this.pnlExportTable.Controls.Add(this.button5);
|
||||
this.pnlExportTable.Controls.Add(this.button6);
|
||||
this.pnlExportTable.Controls.Add(this.button7);
|
||||
this.pnlExportTable.Controls.Add(this.button8);
|
||||
this.pnlExportTable.Controls.Add(this.lvExportTable);
|
||||
this.pnlExportTable.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.pnlExportTable.Enabled = false;
|
||||
this.pnlExportTable.Location = new System.Drawing.Point(0, 0);
|
||||
this.pnlExportTable.Name = "pnlExportTable";
|
||||
this.pnlExportTable.Size = new System.Drawing.Size(384, 267);
|
||||
this.pnlExportTable.TabIndex = 2;
|
||||
this.pnlExportTable.Visible = false;
|
||||
//
|
||||
// button5
|
||||
//
|
||||
this.button5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.button5.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.button5.Location = new System.Drawing.Point(306, 3);
|
||||
this.button5.Name = "button5";
|
||||
this.button5.Size = new System.Drawing.Size(75, 23);
|
||||
this.button5.TabIndex = 1;
|
||||
this.button5.Text = "&Clear";
|
||||
this.button5.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// button6
|
||||
//
|
||||
this.button6.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.button6.Location = new System.Drawing.Point(165, 3);
|
||||
this.button6.Name = "button6";
|
||||
this.button6.Size = new System.Drawing.Size(75, 23);
|
||||
this.button6.TabIndex = 1;
|
||||
this.button6.Text = "&Remove...";
|
||||
this.button6.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// button7
|
||||
//
|
||||
this.button7.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.button7.Location = new System.Drawing.Point(84, 3);
|
||||
this.button7.Name = "button7";
|
||||
this.button7.Size = new System.Drawing.Size(75, 23);
|
||||
this.button7.TabIndex = 1;
|
||||
this.button7.Text = "&Modify...";
|
||||
this.button7.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// button8
|
||||
//
|
||||
this.button8.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.button8.Location = new System.Drawing.Point(3, 3);
|
||||
this.button8.Name = "button8";
|
||||
this.button8.Size = new System.Drawing.Size(75, 23);
|
||||
this.button8.TabIndex = 1;
|
||||
this.button8.Text = "&Add...";
|
||||
this.button8.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lvExportTable
|
||||
//
|
||||
this.lvExportTable.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lvExportTable.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.chExportObjectName,
|
||||
this.chExportObjectParent,
|
||||
this.chExportObjectClass,
|
||||
this.chExportObjectFlags,
|
||||
this.chExportObjectOffset,
|
||||
this.chExportObjectSize});
|
||||
this.lvExportTable.FullRowSelect = true;
|
||||
this.lvExportTable.GridLines = true;
|
||||
this.lvExportTable.HideSelection = false;
|
||||
this.lvExportTable.Location = new System.Drawing.Point(3, 32);
|
||||
this.lvExportTable.Name = "lvExportTable";
|
||||
this.lvExportTable.Size = new System.Drawing.Size(378, 232);
|
||||
this.lvExportTable.TabIndex = 0;
|
||||
this.lvExportTable.UseCompatibleStateImageBehavior = false;
|
||||
this.lvExportTable.View = System.Windows.Forms.View.Details;
|
||||
this.lvExportTable.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.lvExportTable_ItemDrag);
|
||||
//
|
||||
// chExportObjectName
|
||||
//
|
||||
this.chExportObjectName.Text = "Object";
|
||||
this.chExportObjectName.Width = 84;
|
||||
//
|
||||
// chExportObjectParent
|
||||
//
|
||||
this.chExportObjectParent.Text = "Parent";
|
||||
this.chExportObjectParent.Width = 53;
|
||||
//
|
||||
// chExportObjectClass
|
||||
//
|
||||
this.chExportObjectClass.Text = "Class";
|
||||
this.chExportObjectClass.Width = 81;
|
||||
//
|
||||
// chExportObjectFlags
|
||||
//
|
||||
this.chExportObjectFlags.Text = "Flags";
|
||||
this.chExportObjectFlags.Width = 49;
|
||||
//
|
||||
// chExportObjectOffset
|
||||
//
|
||||
this.chExportObjectOffset.Text = "Offset";
|
||||
this.chExportObjectOffset.Width = 45;
|
||||
//
|
||||
// chExportObjectSize
|
||||
//
|
||||
this.chExportObjectSize.Text = "Size";
|
||||
//
|
||||
// pnlHeritageTable
|
||||
//
|
||||
this.pnlHeritageTable.Controls.Add(this.button9);
|
||||
this.pnlHeritageTable.Controls.Add(this.button10);
|
||||
this.pnlHeritageTable.Controls.Add(this.button11);
|
||||
this.pnlHeritageTable.Controls.Add(this.button12);
|
||||
this.pnlHeritageTable.Controls.Add(this.lvHeritageTable);
|
||||
this.pnlHeritageTable.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.pnlHeritageTable.Enabled = false;
|
||||
this.pnlHeritageTable.Location = new System.Drawing.Point(0, 0);
|
||||
this.pnlHeritageTable.Name = "pnlHeritageTable";
|
||||
this.pnlHeritageTable.Size = new System.Drawing.Size(384, 267);
|
||||
this.pnlHeritageTable.TabIndex = 3;
|
||||
this.pnlHeritageTable.Visible = false;
|
||||
//
|
||||
// button9
|
||||
//
|
||||
this.button9.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.button9.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.button9.Location = new System.Drawing.Point(306, 3);
|
||||
this.button9.Name = "button9";
|
||||
this.button9.Size = new System.Drawing.Size(75, 23);
|
||||
this.button9.TabIndex = 1;
|
||||
this.button9.Text = "&Clear";
|
||||
this.button9.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// button10
|
||||
//
|
||||
this.button10.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.button10.Location = new System.Drawing.Point(165, 3);
|
||||
this.button10.Name = "button10";
|
||||
this.button10.Size = new System.Drawing.Size(75, 23);
|
||||
this.button10.TabIndex = 1;
|
||||
this.button10.Text = "&Remove...";
|
||||
this.button10.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// button11
|
||||
//
|
||||
this.button11.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.button11.Location = new System.Drawing.Point(84, 3);
|
||||
this.button11.Name = "button11";
|
||||
this.button11.Size = new System.Drawing.Size(75, 23);
|
||||
this.button11.TabIndex = 1;
|
||||
this.button11.Text = "&Modify...";
|
||||
this.button11.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// button12
|
||||
//
|
||||
this.button12.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.button12.Location = new System.Drawing.Point(3, 3);
|
||||
this.button12.Name = "button12";
|
||||
this.button12.Size = new System.Drawing.Size(75, 23);
|
||||
this.button12.TabIndex = 1;
|
||||
this.button12.Text = "&Add...";
|
||||
this.button12.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lvHeritageTable
|
||||
//
|
||||
this.lvHeritageTable.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lvHeritageTable.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.chHeritageGUID});
|
||||
this.lvHeritageTable.FullRowSelect = true;
|
||||
this.lvHeritageTable.GridLines = true;
|
||||
this.lvHeritageTable.HideSelection = false;
|
||||
this.lvHeritageTable.Location = new System.Drawing.Point(3, 32);
|
||||
this.lvHeritageTable.Name = "lvHeritageTable";
|
||||
this.lvHeritageTable.Size = new System.Drawing.Size(378, 232);
|
||||
this.lvHeritageTable.TabIndex = 0;
|
||||
this.lvHeritageTable.UseCompatibleStateImageBehavior = false;
|
||||
this.lvHeritageTable.View = System.Windows.Forms.View.Details;
|
||||
//
|
||||
// chHeritageGUID
|
||||
//
|
||||
this.chHeritageGUID.Text = "GUID";
|
||||
this.chHeritageGUID.Width = 354;
|
||||
//
|
||||
// pnlImportTable
|
||||
//
|
||||
this.pnlImportTable.Controls.Add(this.button1);
|
||||
this.pnlImportTable.Controls.Add(this.button2);
|
||||
this.pnlImportTable.Controls.Add(this.button3);
|
||||
this.pnlImportTable.Controls.Add(this.button4);
|
||||
this.pnlImportTable.Controls.Add(this.lvImportTable);
|
||||
this.pnlImportTable.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.pnlImportTable.Enabled = false;
|
||||
this.pnlImportTable.Location = new System.Drawing.Point(0, 0);
|
||||
this.pnlImportTable.Name = "pnlImportTable";
|
||||
this.pnlImportTable.Size = new System.Drawing.Size(384, 267);
|
||||
this.pnlImportTable.TabIndex = 1;
|
||||
this.pnlImportTable.Visible = false;
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.button1.Location = new System.Drawing.Point(306, 3);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(75, 23);
|
||||
this.button1.TabIndex = 1;
|
||||
this.button1.Text = "&Clear";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.button2.Location = new System.Drawing.Point(165, 3);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(75, 23);
|
||||
this.button2.TabIndex = 1;
|
||||
this.button2.Text = "&Remove...";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// button3
|
||||
//
|
||||
this.button3.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.button3.Location = new System.Drawing.Point(84, 3);
|
||||
this.button3.Name = "button3";
|
||||
this.button3.Size = new System.Drawing.Size(75, 23);
|
||||
this.button3.TabIndex = 1;
|
||||
this.button3.Text = "&Modify...";
|
||||
this.button3.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// button4
|
||||
//
|
||||
this.button4.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.button4.Location = new System.Drawing.Point(3, 3);
|
||||
this.button4.Name = "button4";
|
||||
this.button4.Size = new System.Drawing.Size(75, 23);
|
||||
this.button4.TabIndex = 1;
|
||||
this.button4.Text = "&Add...";
|
||||
this.button4.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lvImportTable
|
||||
//
|
||||
this.lvImportTable.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lvImportTable.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.chImportPackageName,
|
||||
this.chImportObjectName,
|
||||
this.chImportClassName});
|
||||
this.lvImportTable.FullRowSelect = true;
|
||||
this.lvImportTable.GridLines = true;
|
||||
this.lvImportTable.HideSelection = false;
|
||||
this.lvImportTable.Location = new System.Drawing.Point(3, 32);
|
||||
this.lvImportTable.Name = "lvImportTable";
|
||||
this.lvImportTable.Size = new System.Drawing.Size(378, 232);
|
||||
this.lvImportTable.TabIndex = 0;
|
||||
this.lvImportTable.UseCompatibleStateImageBehavior = false;
|
||||
this.lvImportTable.View = System.Windows.Forms.View.Details;
|
||||
//
|
||||
// chImportPackageName
|
||||
//
|
||||
this.chImportPackageName.Text = "Package";
|
||||
this.chImportPackageName.Width = 97;
|
||||
//
|
||||
// chImportObjectName
|
||||
//
|
||||
this.chImportObjectName.Text = "Object";
|
||||
this.chImportObjectName.Width = 134;
|
||||
//
|
||||
// chImportClassName
|
||||
//
|
||||
this.chImportClassName.Text = "Class";
|
||||
this.chImportClassName.Width = 140;
|
||||
//
|
||||
// pnlNameTable
|
||||
//
|
||||
this.pnlNameTable.Controls.Add(this.cmdNameClear);
|
||||
this.pnlNameTable.Controls.Add(this.cmdNameRemove);
|
||||
this.pnlNameTable.Controls.Add(this.cmdNameModify);
|
||||
this.pnlNameTable.Controls.Add(this.cmdNameAdd);
|
||||
this.pnlNameTable.Controls.Add(this.lvNameTable);
|
||||
this.pnlNameTable.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.pnlNameTable.Enabled = false;
|
||||
this.pnlNameTable.Location = new System.Drawing.Point(0, 0);
|
||||
this.pnlNameTable.Name = "pnlNameTable";
|
||||
this.pnlNameTable.Size = new System.Drawing.Size(384, 267);
|
||||
this.pnlNameTable.TabIndex = 0;
|
||||
this.pnlNameTable.Visible = false;
|
||||
//
|
||||
// cmdNameClear
|
||||
//
|
||||
this.cmdNameClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cmdNameClear.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.cmdNameClear.Location = new System.Drawing.Point(306, 3);
|
||||
this.cmdNameClear.Name = "cmdNameClear";
|
||||
this.cmdNameClear.Size = new System.Drawing.Size(75, 23);
|
||||
this.cmdNameClear.TabIndex = 1;
|
||||
this.cmdNameClear.Text = "&Clear";
|
||||
this.cmdNameClear.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// cmdNameRemove
|
||||
//
|
||||
this.cmdNameRemove.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.cmdNameRemove.Location = new System.Drawing.Point(165, 3);
|
||||
this.cmdNameRemove.Name = "cmdNameRemove";
|
||||
this.cmdNameRemove.Size = new System.Drawing.Size(75, 23);
|
||||
this.cmdNameRemove.TabIndex = 1;
|
||||
this.cmdNameRemove.Text = "&Remove...";
|
||||
this.cmdNameRemove.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// cmdNameModify
|
||||
//
|
||||
this.cmdNameModify.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.cmdNameModify.Location = new System.Drawing.Point(84, 3);
|
||||
this.cmdNameModify.Name = "cmdNameModify";
|
||||
this.cmdNameModify.Size = new System.Drawing.Size(75, 23);
|
||||
this.cmdNameModify.TabIndex = 1;
|
||||
this.cmdNameModify.Text = "&Modify...";
|
||||
this.cmdNameModify.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// cmdNameAdd
|
||||
//
|
||||
this.cmdNameAdd.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.cmdNameAdd.Location = new System.Drawing.Point(3, 3);
|
||||
this.cmdNameAdd.Name = "cmdNameAdd";
|
||||
this.cmdNameAdd.Size = new System.Drawing.Size(75, 23);
|
||||
this.cmdNameAdd.TabIndex = 1;
|
||||
this.cmdNameAdd.Text = "&Add...";
|
||||
this.cmdNameAdd.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lvNameTable
|
||||
//
|
||||
this.lvNameTable.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lvNameTable.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.chName,
|
||||
this.chFlags});
|
||||
this.lvNameTable.FullRowSelect = true;
|
||||
this.lvNameTable.GridLines = true;
|
||||
this.lvNameTable.HideSelection = false;
|
||||
this.lvNameTable.Location = new System.Drawing.Point(3, 32);
|
||||
this.lvNameTable.Name = "lvNameTable";
|
||||
this.lvNameTable.Size = new System.Drawing.Size(378, 232);
|
||||
this.lvNameTable.TabIndex = 0;
|
||||
this.lvNameTable.UseCompatibleStateImageBehavior = false;
|
||||
this.lvNameTable.View = System.Windows.Forms.View.Details;
|
||||
//
|
||||
// chName
|
||||
//
|
||||
this.chName.Text = "Name";
|
||||
this.chName.Width = 231;
|
||||
//
|
||||
// chFlags
|
||||
//
|
||||
this.chFlags.Text = "Flags";
|
||||
this.chFlags.Width = 134;
|
||||
//
|
||||
// UnrealPackageEditor
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Name = "UnrealPackageEditor";
|
||||
this.Size = new System.Drawing.Size(558, 267);
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.pnlExportTable.ResumeLayout(false);
|
||||
this.pnlHeritageTable.ResumeLayout(false);
|
||||
this.pnlImportTable.ResumeLayout(false);
|
||||
this.pnlNameTable.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TreeView tv;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.Panel pnlNameTable;
|
||||
private System.Windows.Forms.ListView lvNameTable;
|
||||
private System.Windows.Forms.ColumnHeader chName;
|
||||
private System.Windows.Forms.ColumnHeader chFlags;
|
||||
private System.Windows.Forms.Button cmdNameClear;
|
||||
private System.Windows.Forms.Button cmdNameRemove;
|
||||
private System.Windows.Forms.Button cmdNameModify;
|
||||
private System.Windows.Forms.Button cmdNameAdd;
|
||||
private System.Windows.Forms.Panel pnlImportTable;
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Button button2;
|
||||
private System.Windows.Forms.Button button3;
|
||||
private System.Windows.Forms.Button button4;
|
||||
private System.Windows.Forms.ListView lvImportTable;
|
||||
private System.Windows.Forms.ColumnHeader chImportPackageName;
|
||||
private System.Windows.Forms.ColumnHeader chImportObjectName;
|
||||
private System.Windows.Forms.ColumnHeader chImportClassName;
|
||||
private System.Windows.Forms.Panel pnlExportTable;
|
||||
private System.Windows.Forms.Button button5;
|
||||
private System.Windows.Forms.Button button6;
|
||||
private System.Windows.Forms.Button button7;
|
||||
private System.Windows.Forms.Button button8;
|
||||
private System.Windows.Forms.ListView lvExportTable;
|
||||
private System.Windows.Forms.ColumnHeader chExportObjectParent;
|
||||
private System.Windows.Forms.ColumnHeader chExportObjectClass;
|
||||
private System.Windows.Forms.ColumnHeader chExportObjectName;
|
||||
private System.Windows.Forms.ColumnHeader chExportObjectFlags;
|
||||
private System.Windows.Forms.ColumnHeader chExportObjectOffset;
|
||||
private System.Windows.Forms.ColumnHeader chExportObjectSize;
|
||||
private System.Windows.Forms.Panel pnlHeritageTable;
|
||||
private System.Windows.Forms.Button button9;
|
||||
private System.Windows.Forms.Button button10;
|
||||
private System.Windows.Forms.Button button11;
|
||||
private System.Windows.Forms.Button button12;
|
||||
private System.Windows.Forms.ListView lvHeritageTable;
|
||||
private System.Windows.Forms.ColumnHeader chHeritageGUID;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,222 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using UniversalEditor.Accessors;
|
||||
using UniversalEditor.ObjectModels.UnrealEngine;
|
||||
using UniversalEditor.UserInterface.WindowsForms;
|
||||
|
||||
namespace UniversalEditor.Editors.UnrealEngine
|
||||
{
|
||||
public partial class UnrealPackageEditor : Editor
|
||||
{
|
||||
public UnrealPackageEditor()
|
||||
{
|
||||
InitializeComponent();
|
||||
Font = SystemFonts.MenuFont;
|
||||
|
||||
base.SupportedObjectModels.Add(typeof(UnrealPackageObjectModel));
|
||||
}
|
||||
|
||||
protected override void OnObjectModelChanged(EventArgs e)
|
||||
{
|
||||
base.OnObjectModelChanged(e);
|
||||
|
||||
tv.Nodes.Clear();
|
||||
|
||||
UnrealPackageObjectModel upk = (ObjectModel as UnrealPackageObjectModel);
|
||||
if (upk == null) return;
|
||||
|
||||
TreeNode tnToplevel = new TreeNode();
|
||||
|
||||
if (upk.Accessor is FileAccessor) tnToplevel.Text = System.IO.Path.GetFileName((upk.Accessor as FileAccessor).FileName);
|
||||
if (String.IsNullOrEmpty(tnToplevel.Text)) tnToplevel.Text = "<ROOT>";
|
||||
|
||||
#region Name Table
|
||||
{
|
||||
TreeNode tn = new TreeNode();
|
||||
tn.Name = "nodeNameTable";
|
||||
tn.Text = "Name Table";
|
||||
tnToplevel.Nodes.Add(tn);
|
||||
|
||||
foreach (NameTableEntry entry in upk.NameTableEntries)
|
||||
{
|
||||
ListViewItem lvi = new ListViewItem();
|
||||
lvi.Tag = entry;
|
||||
lvi.Text = entry.Name;
|
||||
lvi.SubItems.Add(entry.Flags.ToString());
|
||||
lvNameTable.Items.Add(lvi);
|
||||
}
|
||||
lvNameTable.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
|
||||
}
|
||||
#endregion
|
||||
#region Export Table
|
||||
{
|
||||
TreeNode tn = new TreeNode();
|
||||
tn.Name = "nodeExportTable";
|
||||
tn.Text = "Export Table";
|
||||
tnToplevel.Nodes.Add(tn);
|
||||
|
||||
foreach (ExportTableEntry entry in upk.ExportTableEntries)
|
||||
{
|
||||
ListViewItem lvi = new ListViewItem();
|
||||
lvi.Tag = entry;
|
||||
if (entry.Name == null)
|
||||
{
|
||||
lvi.Text = String.Empty;
|
||||
}
|
||||
else
|
||||
{
|
||||
lvi.Text = entry.Name.ToString(false);
|
||||
}
|
||||
if (entry.ObjectParent == null)
|
||||
{
|
||||
lvi.SubItems.Add(String.Empty);
|
||||
}
|
||||
else
|
||||
{
|
||||
lvi.SubItems.Add(entry.ObjectParent.ToString());
|
||||
}
|
||||
if (entry.ObjectClass == null)
|
||||
{
|
||||
lvi.SubItems.Add(String.Empty);
|
||||
}
|
||||
else
|
||||
{
|
||||
lvi.SubItems.Add(entry.ObjectClass.ToString());
|
||||
}
|
||||
lvi.SubItems.Add(entry.Flags.ToString());
|
||||
lvi.SubItems.Add(entry.Offset.ToString());
|
||||
lvi.SubItems.Add(entry.Size.ToString());
|
||||
lvExportTable.Items.Add(lvi);
|
||||
}
|
||||
lvExportTable.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
|
||||
}
|
||||
#endregion
|
||||
#region Import Table
|
||||
{
|
||||
TreeNode tn = new TreeNode();
|
||||
tn.Name = "nodeImportTable";
|
||||
tn.Text = "Import Table";
|
||||
tnToplevel.Nodes.Add(tn);
|
||||
|
||||
foreach (ImportTableEntry entry in upk.ImportTableEntries)
|
||||
{
|
||||
ListViewItem lvi = new ListViewItem();
|
||||
lvi.Tag = entry;
|
||||
if (entry.PackageName != null)
|
||||
{
|
||||
lvi.Text = entry.PackageName.ToString(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
lvi.Text = "(invalid)";
|
||||
}
|
||||
if (entry.ObjectName != null)
|
||||
{
|
||||
lvi.SubItems.Add(entry.ObjectName.ToString(false));
|
||||
}
|
||||
else
|
||||
{
|
||||
lvi.SubItems.Add("(invalid)");
|
||||
}
|
||||
if (entry.ClassName != null)
|
||||
{
|
||||
lvi.SubItems.Add(entry.ClassName.ToString(false));
|
||||
}
|
||||
else
|
||||
{
|
||||
lvi.SubItems.Add("(invalid)");
|
||||
}
|
||||
lvImportTable.Items.Add(lvi);
|
||||
}
|
||||
lvImportTable.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
|
||||
}
|
||||
#endregion
|
||||
#region Heritage Table
|
||||
{
|
||||
TreeNode tn = new TreeNode();
|
||||
tn.Name = "nodeHeritageTable";
|
||||
tn.Text = "Heritage Table";
|
||||
tnToplevel.Nodes.Add(tn);
|
||||
|
||||
foreach (Guid guid in upk.PackageGUIDs)
|
||||
{
|
||||
ListViewItem lvi = new ListViewItem();
|
||||
lvi.Tag = guid;
|
||||
lvi.Text = guid.ToString("B");
|
||||
lvHeritageTable.Items.Add(lvi);
|
||||
}
|
||||
lvHeritageTable.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
|
||||
}
|
||||
#endregion
|
||||
|
||||
tv.Nodes.Add(tnToplevel);
|
||||
}
|
||||
|
||||
private void tv_AfterSelect(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
if (e.Node == null) return;
|
||||
|
||||
if (e.Node.Name.StartsWith("node"))
|
||||
{
|
||||
string name = e.Node.Name.Substring(4);
|
||||
SwitchPanel("pnl" + name);
|
||||
}
|
||||
}
|
||||
|
||||
private void SwitchPanel(Panel panel)
|
||||
{
|
||||
foreach (Control ctl in splitContainer1.Panel2.Controls)
|
||||
{
|
||||
if (ctl == panel)
|
||||
{
|
||||
ctl.Enabled = true;
|
||||
ctl.Visible = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
ctl.Visible = false;
|
||||
ctl.Enabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
private void SwitchPanel(string panelName)
|
||||
{
|
||||
foreach (Control ctl in splitContainer1.Panel2.Controls)
|
||||
{
|
||||
if (ctl is Panel && ctl.Name == panelName)
|
||||
{
|
||||
ctl.Enabled = true;
|
||||
ctl.Visible = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
ctl.Visible = false;
|
||||
ctl.Enabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void tv_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == System.Windows.Forms.MouseButtons.Right) tv.SelectedNode = tv.HitTest(e.Location).Node;
|
||||
}
|
||||
|
||||
private void lvExportTable_ItemDrag(object sender, ItemDragEventArgs e)
|
||||
{
|
||||
ListViewItem lvi = (e.Item as ListViewItem);
|
||||
if (lvi == null) return;
|
||||
|
||||
ExportTableEntry ete = (lvi.Tag as ExportTableEntry);
|
||||
if (ete == null) return;
|
||||
|
||||
string FileName = TemporaryFileManager.CreateTemporaryFile(ete.Name.Name, ete.GetData());
|
||||
|
||||
DataObject dobj = new DataObject("FileDrop", new string[] { FileName });
|
||||
lvExportTable.DoDragDrop(dobj, DragDropEffects.Copy);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("UniversalEditor.Plugins.UnrealEngine.UserInterface.WindowsForms")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("City of Orlando")]
|
||||
[assembly: AssemblyProduct("UniversalEditor.Plugins.UnrealEngine.UserInterface.WindowsForms")]
|
||||
[assembly: AssemblyCopyright("Copyright © City of Orlando 2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("66c42923-4b27-4f1e-a5d0-82426f58071c")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@ -0,0 +1,63 @@
|
||||
using System;
|
||||
|
||||
internal static class TemporaryFileManager
|
||||
{
|
||||
private static Random rand = new Random();
|
||||
|
||||
private static System.Collections.Specialized.StringCollection mvarTemporaryFileNames = new System.Collections.Specialized.StringCollection();
|
||||
private static string mvarTemporaryFilePath = null;
|
||||
|
||||
public static string CreateTemporaryFile(string FileName, byte[] FileData)
|
||||
{
|
||||
if (mvarTemporaryFilePath == null) throw new InvalidOperationException();
|
||||
if (!System.IO.Directory.Exists(mvarTemporaryFilePath))
|
||||
{
|
||||
System.IO.Directory.CreateDirectory(mvarTemporaryFilePath);
|
||||
}
|
||||
|
||||
FileName = System.IO.Path.GetFileName(FileName);
|
||||
if (FileData == null) FileData = new byte[0];
|
||||
|
||||
string filePath = mvarTemporaryFilePath + System.IO.Path.DirectorySeparatorChar.ToString() + FileName;
|
||||
System.IO.File.WriteAllBytes(filePath, FileData);
|
||||
mvarTemporaryFileNames.Add(filePath);
|
||||
return filePath;
|
||||
}
|
||||
|
||||
public static bool RegisterTemporaryDirectory(string prefix, int maxNameLength)
|
||||
{
|
||||
if (mvarTemporaryFilePath != null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
string name = String.Empty;
|
||||
do
|
||||
{
|
||||
name = prefix + rand.Next(0, (maxNameLength * 10) - 1).ToString().PadLeft(maxNameLength - prefix.Length, '0');
|
||||
}
|
||||
while (System.IO.Directory.Exists(name));
|
||||
|
||||
string pathName = System.IO.Path.GetTempPath() + System.IO.Path.DirectorySeparatorChar.ToString() + name;
|
||||
System.IO.Directory.CreateDirectory(pathName);
|
||||
|
||||
mvarTemporaryFilePath = pathName;
|
||||
return true;
|
||||
}
|
||||
public static bool UnregisterTemporaryDirectory()
|
||||
{
|
||||
if (mvarTemporaryFilePath == null) return false;
|
||||
|
||||
foreach (string fileName in mvarTemporaryFileNames)
|
||||
{
|
||||
if (System.IO.File.Exists(fileName))
|
||||
{
|
||||
System.IO.File.Delete(fileName);
|
||||
}
|
||||
}
|
||||
if (System.IO.Directory.Exists(mvarTemporaryFilePath))
|
||||
{
|
||||
System.IO.Directory.Delete(mvarTemporaryFilePath, true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,83 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{049A3447-14AF-4CAE-BE0E-1C42DD1AB1CB}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>UniversalEditor</RootNamespace>
|
||||
<AssemblyName>UniversalEditor.Plugins.UnrealEngine.UserInterface.WindowsForms</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\..\..\..\Output\Debug\Plugins\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\..\..\..\Output\Release\Plugins\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Editors\UnrealEngine\UnrealPackageEditor.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Editors\UnrealEngine\UnrealPackageEditor.Designer.cs">
|
||||
<DependentUpon>UnrealPackageEditor.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="TemporaryFileManager.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\..\Libraries\UniversalEditor.Core\UniversalEditor.Core.csproj">
|
||||
<Project>{2d4737e6-6d95-408a-90db-8dff38147e85}</Project>
|
||||
<Name>UniversalEditor.Core</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\..\Libraries\UniversalEditor.UserInterface.WindowsForms\UniversalEditor.UserInterface.WindowsForms.csproj">
|
||||
<Project>{bcbb72bd-0ecb-4ff2-8d91-e466361fb6f9}</Project>
|
||||
<Name>UniversalEditor.UserInterface.WindowsForms</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\..\Libraries\UniversalEditor.UserInterface\UniversalEditor.UserInterface.csproj">
|
||||
<Project>{8622ebc4-8e20-476e-b284-33d472081f5c}</Project>
|
||||
<Name>UniversalEditor.UserInterface</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\..\Plugins\UniversalEditor.Essential\UniversalEditor.Essential.csproj">
|
||||
<Project>{30467e5c-05bc-4856-aadc-13906ef4cadd}</Project>
|
||||
<Name>UniversalEditor.Essential</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\..\Plugins\UniversalEditor.Plugins.UnrealEngine\UniversalEditor.Plugins.UnrealEngine.csproj">
|
||||
<Project>{df96f24e-fed9-4bac-8389-63590125dc61}</Project>
|
||||
<Name>UniversalEditor.Plugins.UnrealEngine</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Editors\UnrealEngine\UnrealPackageEditor.resx">
|
||||
<DependentUpon>UnrealPackageEditor.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
@ -0,0 +1,185 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.Accessors;
|
||||
using UniversalEditor.IO;
|
||||
using UniversalEditor.ObjectModels.FileSystem;
|
||||
using UniversalEditor.Plugins.UnrealEngine;
|
||||
|
||||
namespace UniversalEditor.DataFormats.UnrealEngine.Installer
|
||||
{
|
||||
public class UMODDataFormat : DataFormat
|
||||
{
|
||||
private static DataFormatReference _dfr = null;
|
||||
public override DataFormatReference MakeReference()
|
||||
{
|
||||
if (_dfr == null)
|
||||
{
|
||||
_dfr = base.MakeReference();
|
||||
_dfr.Capabilities.Add(typeof(FileSystemObjectModel), DataFormatCapabilities.All);
|
||||
_dfr.Filters.Add("Unreal Tournament UMOD installer", new byte?[][] { new byte?[] { 0xA3, 0xC5, 0xE3, 0x9F } }, new string[] { "*.umod" });
|
||||
_dfr.Filters[0].MagicByteOffsets = new int[] { -20 };
|
||||
_dfr.Sources.Add("http://wiki.beyondunreal.com/Legacy:UMOD/File_Format");
|
||||
}
|
||||
return _dfr;
|
||||
}
|
||||
|
||||
protected override void LoadInternal(ref ObjectModel objectModel)
|
||||
{
|
||||
Reader br = base.Accessor.Reader;
|
||||
FileSystemObjectModel fsom = (objectModel as FileSystemObjectModel);
|
||||
|
||||
// The UMOD file "header" is 20 bytes long. The header is stored in the last 20 bytes of
|
||||
// the file (hence the quotes around the term "header").
|
||||
br.Accessor.Seek(-20, SeekOrigin.End);
|
||||
|
||||
// Magic number. Used to verify this file as a UMOD installer. Always 0x9FE3C5A3.
|
||||
uint magic = br.ReadUInt32();
|
||||
if (magic != 0x9FE3C5A3) throw new InvalidDataFormatException("Footer does not begin with 0x9FE3C5A3");
|
||||
|
||||
// Byte offset of file directory in the UMOD file. (See below.)
|
||||
uint fileDirectoryOffset = br.ReadUInt32();
|
||||
|
||||
// Total byte size of the UMOD file.
|
||||
uint fileSize = br.ReadUInt32();
|
||||
|
||||
// UMOD file version.
|
||||
uint formatVersion = br.ReadUInt32();
|
||||
|
||||
// CRC32 checksum over the file content.
|
||||
uint checksum = br.ReadUInt32();
|
||||
|
||||
// The file directory describes the files stored in the first part of the UMOD file. Its
|
||||
// byte offset in the UMOD file is given in the file "header" (see above).
|
||||
br.Accessor.Seek(fileDirectoryOffset, SeekOrigin.Begin);
|
||||
|
||||
// The directory consists of an index-type file count (the index data type is described
|
||||
// below), followed by variable-size records, each describing one file in the UMOD
|
||||
// installer.
|
||||
int fileCount = br.ReadINDEX();
|
||||
|
||||
for (int i = 0; i < fileCount; i++)
|
||||
{
|
||||
// Length of file name (including trailing null byte).
|
||||
int fileNameLength = br.ReadINDEX();
|
||||
|
||||
// File name, with trailing null byte.
|
||||
string fileName = br.ReadNullTerminatedString();
|
||||
|
||||
// Byte offset of file in UMOD file.
|
||||
uint offset = br.ReadUInt32();
|
||||
// Byte length of file.
|
||||
uint length = br.ReadUInt32();
|
||||
|
||||
|
||||
// Bit field describing file flags.
|
||||
|
||||
// Mychaeel: Feel free to investigate and contribute information about the file flags.
|
||||
// (I know that they have to be set to 0x03 for Manifest.ini and Manifest.int to
|
||||
// prevent those files from being copied to the user's System directory, and set to
|
||||
// 0x00 for all other files.)
|
||||
UMODFileFlags flags = (UMODFileFlags)br.ReadUInt32();
|
||||
|
||||
File file = new File();
|
||||
file.Name = fileName;
|
||||
file.Size = length;
|
||||
file.Properties.Add("offset", offset);
|
||||
file.Properties.Add("length", length);
|
||||
fsom.Files.Add(file);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void SaveInternal(ObjectModel objectModel)
|
||||
{
|
||||
FileSystemObjectModel fsom = (objectModel as FileSystemObjectModel);
|
||||
Writer bw = null;
|
||||
|
||||
#region File data
|
||||
MemoryAccessor msData = new MemoryAccessor();
|
||||
bw = new Writer(msData);
|
||||
foreach (File file in fsom.Files)
|
||||
{
|
||||
bw.WriteBytes(file.GetDataAsByteArray());
|
||||
}
|
||||
bw.Close();
|
||||
|
||||
byte[] data = msData.ToArray();
|
||||
#endregion
|
||||
#region File records
|
||||
uint fileOffset = 0;
|
||||
|
||||
MemoryAccessor msDirectory = new MemoryAccessor();
|
||||
bw = new Writer(msDirectory);
|
||||
// The directory consists of an index-type file count (the index data type is described
|
||||
// below), followed by variable-size records, each describing one file in the UMOD
|
||||
// installer.
|
||||
bw.WriteINDEX(fsom.Files.Count);
|
||||
foreach (File file in fsom.Files)
|
||||
{
|
||||
// Length of file name (including trailing null byte).
|
||||
bw.WriteINDEX(file.Name.Length);
|
||||
|
||||
// File name, with trailing null byte.
|
||||
bw.WriteNullTerminatedString(file.Name);
|
||||
|
||||
// Byte offset of file in UMOD file.
|
||||
bw.WriteUInt32(fileOffset);
|
||||
// Byte length of file.
|
||||
bw.WriteUInt32((uint)file.Size);
|
||||
|
||||
|
||||
// Bit field describing file flags.
|
||||
|
||||
// Mychaeel: Feel free to investigate and contribute information about the file flags.
|
||||
// (I know that they have to be set to 0x03 for Manifest.ini and Manifest.int to
|
||||
// prevent those files from being copied to the user's System directory, and set to
|
||||
// 0x00 for all other files.)
|
||||
UMODFileFlags flags = UMODFileFlags.None;
|
||||
bw.WriteUInt32((uint)flags);
|
||||
fileOffset += (uint)file.Size;
|
||||
}
|
||||
bw.Close();
|
||||
|
||||
byte[] directoryData = msDirectory.ToArray();
|
||||
#endregion
|
||||
#region Header data
|
||||
// The UMOD file "header" is 20 bytes long. The header is stored in the last 20 bytes of
|
||||
// the file (hence the quotes around the term "header").
|
||||
MemoryAccessor msHeader = new MemoryAccessor();
|
||||
bw = new Writer(msHeader);
|
||||
|
||||
// Magic number. Used to verify this file as a UMOD installer. Always 0x9FE3C5A3.
|
||||
bw.WriteUInt32((uint)0x9FE3C5A3);
|
||||
|
||||
// Byte offset of file directory in the UMOD file. (See below.)
|
||||
uint fileDirectoryOffset = (uint)data.Length;
|
||||
bw.WriteUInt32(fileDirectoryOffset);
|
||||
|
||||
// Total byte size of the UMOD file.
|
||||
uint fileSize = 20;
|
||||
bw.WriteUInt32(fileSize);
|
||||
|
||||
// UMOD file version.
|
||||
uint formatVersion = 0;
|
||||
bw.WriteUInt32(formatVersion);
|
||||
|
||||
// CRC32 checksum over the file content.
|
||||
uint checksum = 0;
|
||||
bw.WriteUInt32(checksum);
|
||||
|
||||
bw.Flush();
|
||||
bw.Close();
|
||||
|
||||
byte[] headerData = msHeader.ToArray();
|
||||
#endregion
|
||||
|
||||
bw = base.Accessor.Writer;
|
||||
|
||||
bw.WriteBytes(data);
|
||||
bw.WriteBytes(directoryData);
|
||||
bw.WriteBytes(headerData);
|
||||
bw.Flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.DataFormats.UnrealEngine.Installer
|
||||
{
|
||||
public enum UMODFileFlags
|
||||
{
|
||||
None = 0x00,
|
||||
PreventCopyToSystem = 0x03
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,427 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.IO;
|
||||
using UniversalEditor.ObjectModels.UnrealEngine;
|
||||
using UniversalEditor.Plugins.UnrealEngine;
|
||||
|
||||
namespace UniversalEditor.DataFormats.UnrealEngine.Package
|
||||
{
|
||||
public class UnrealPackageDataFormat : DataFormat
|
||||
{
|
||||
private static DataFormatReference _dfr = null;
|
||||
public override DataFormatReference MakeReference()
|
||||
{
|
||||
if (_dfr == null)
|
||||
{
|
||||
_dfr = base.MakeReference();
|
||||
_dfr.Capabilities.Add(typeof(UnrealPackageObjectModel), DataFormatCapabilities.All);
|
||||
_dfr.Filters.Add("Unreal Engine package", new byte?[][] { new byte?[] { 0xC1, 0x83, 0x2A, 0x9E } }, new string[] { "*.u", "*.utx", "*.upk" });
|
||||
_dfr.ExportOptions.Add(new CustomOptionText("PackageName", "Package &name:"));
|
||||
_dfr.ExportOptions.Add(new CustomOptionNumber("PackageVersion", "Package &version:", 0, UInt16.MinValue, UInt16.MaxValue));
|
||||
_dfr.Sources.Add("http://wiki.beyondunreal.com/Legacy:Package_File_Format");
|
||||
}
|
||||
return _dfr;
|
||||
}
|
||||
|
||||
private ushort mvarPackageVersion = 0;
|
||||
/// <summary>
|
||||
/// Version of the file-format; Unreal1 uses mostly 61-63, UT 67-69; However, note that
|
||||
/// quite a few packages are in use with UT that have Unreal1 versions.
|
||||
/// </summary>
|
||||
public ushort PackageVersion { get { return mvarPackageVersion; } set { mvarPackageVersion = value; } }
|
||||
|
||||
private string mvarPackageName = String.Empty;
|
||||
public string PackageName { get { return mvarPackageName; } set { mvarPackageName = value; } }
|
||||
|
||||
protected override void LoadInternal(ref ObjectModel objectModel)
|
||||
{
|
||||
Reader br = base.Accessor.Reader;
|
||||
|
||||
UnrealPackageObjectModel upk = (objectModel as UnrealPackageObjectModel);
|
||||
#region Header
|
||||
|
||||
// Always "0x9E2A83C1"; use this to verify that you indeed try to read an Unreal-Package
|
||||
uint signature = br.ReadUInt32();
|
||||
if (signature != 0x9E2A83C1) throw new InvalidDataFormatException("File does not begin with 0x9E2A83C1");
|
||||
|
||||
mvarPackageVersion = br.ReadUInt16();
|
||||
upk.LicenseeNumber = br.ReadUInt16();
|
||||
upk.PackageFlags = (PackageFlags)br.ReadUInt32(); // 1949392
|
||||
|
||||
if (mvarPackageVersion >= 512)
|
||||
{
|
||||
uint valueLength = br.ReadUInt32();
|
||||
mvarPackageName = br.ReadFixedLengthString(valueLength);
|
||||
mvarPackageName = mvarPackageName.TrimNull();
|
||||
|
||||
uint unknown1 = br.ReadUInt32();
|
||||
uint unknown2 = br.ReadUInt32();
|
||||
}
|
||||
|
||||
// Number of entries in name-table
|
||||
uint nameTableEntryCount = br.ReadUInt32();
|
||||
// Offset of name-table within the file
|
||||
uint nameTableOffset = br.ReadUInt32();
|
||||
|
||||
// Number of entries in export-table
|
||||
uint exportTableEntryCount = br.ReadUInt32();
|
||||
// Offset of export-table within the file
|
||||
uint exportTableOffset = br.ReadUInt32();
|
||||
|
||||
// Number of entries in import-table
|
||||
uint importTableEntryCount = br.ReadUInt32();
|
||||
// Offset of import-table within the file
|
||||
uint importTableOffset = br.ReadUInt32();
|
||||
|
||||
// After the ImportOffset, the header differs between the versions. The only interesting
|
||||
// fact, though, is that for fileformat versions => 68, a GUID has been introduced. It can
|
||||
// be found right after the ImportOffset:
|
||||
if (mvarPackageVersion < 68)
|
||||
{
|
||||
// number of values in the Heritage Table
|
||||
uint heritageTableEntryCount = br.ReadUInt32();
|
||||
// offset of the Heritage Table from the beginning of the file
|
||||
uint heritageTableOffset = br.ReadUInt32();
|
||||
|
||||
long pos = br.Accessor.Position;
|
||||
br.Accessor.Position = heritageTableOffset;
|
||||
|
||||
for (uint i = 0; i < heritageTableEntryCount; i++)
|
||||
{
|
||||
upk.PackageGUIDs.Add(br.ReadGuid());
|
||||
}
|
||||
|
||||
br.Accessor.Position = pos;
|
||||
}
|
||||
else if (mvarPackageVersion >= 68)
|
||||
{
|
||||
upk.PackageGUIDs.Add(br.ReadGuid());
|
||||
|
||||
if (mvarPackageVersion < 512)
|
||||
{
|
||||
uint generationCount = br.ReadUInt32();
|
||||
for (uint i = 0; i < generationCount; i++)
|
||||
{
|
||||
Generation generation = new Generation();
|
||||
generation.ExportCount = br.ReadUInt32();
|
||||
generation.NameCount = br.ReadUInt32();
|
||||
upk.Generations.Add(generation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Name table
|
||||
{
|
||||
// The Unreal-Engine introduces two new variable-types. The first one is a rather simple
|
||||
// string type, called NAME from now on. The second one is a bit more tricky, these
|
||||
// CompactIndices, or INDEX later on, compresses ordinary DWORDs downto one to five BYTEs.
|
||||
|
||||
// The first and most simple one of the three tables is the name-table. 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.
|
||||
br.Accessor.Position = nameTableOffset;
|
||||
for (uint i = 0; i < nameTableEntryCount; i++)
|
||||
{
|
||||
string name = br.ReadNAME(mvarPackageVersion);
|
||||
if (mvarPackageVersion >= 512)
|
||||
{
|
||||
uint unknown = br.ReadUInt32();
|
||||
}
|
||||
NameTableEntryFlags flags = (NameTableEntryFlags)br.ReadInt32();
|
||||
upk.NameTableEntries.Add(name, flags);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Export table
|
||||
{
|
||||
// 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.
|
||||
br.Accessor.Position = exportTableOffset;
|
||||
for (uint i = 0; i < exportTableEntryCount; i++)
|
||||
{
|
||||
ExportTableEntry entry = new ExportTableEntry();
|
||||
|
||||
// Class of the object, i.e. "Texture" or "Palette" etc; stored as a
|
||||
// ObjectReference
|
||||
int classIndex = br.ReadINDEX();
|
||||
if (classIndex != 0) entry.ObjectClass = new ObjectReference(classIndex, upk);
|
||||
|
||||
// Object Parent; again a ObjectReference
|
||||
int objectParentIndex = br.ReadINDEX();
|
||||
if (objectParentIndex != 0) entry.ObjectParent = new ObjectReference(objectParentIndex, upk);
|
||||
|
||||
// Internal package/group of the object, i.e. ‘Floor’ for floor-textures;
|
||||
// ObjectReference
|
||||
int groupIndex = br.ReadInt32();
|
||||
if (groupIndex != 0) entry.Group = new ObjectReference(groupIndex, upk);
|
||||
|
||||
// The name of the object; an index into the name-table
|
||||
int objectNameIndex = br.ReadINDEX();
|
||||
if (objectNameIndex >= 0 && objectNameIndex < upk.NameTableEntries.Count)
|
||||
{
|
||||
entry.Name = upk.NameTableEntries[objectNameIndex];
|
||||
}
|
||||
|
||||
// Flags for the object; described in the appendix
|
||||
entry.Flags = (ObjectFlags)br.ReadInt32();
|
||||
|
||||
// Total size of the object
|
||||
entry.Size = br.ReadINDEX();
|
||||
|
||||
if (entry.Size != 0)
|
||||
{
|
||||
// Offset of the object; this field only exists if the SerialSize is larger 0
|
||||
entry.Offset = br.ReadINDEX();
|
||||
}
|
||||
upk.ExportTableEntries.Add(entry);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Import table
|
||||
{
|
||||
br.Accessor.Position = importTableOffset;
|
||||
for (uint i = 0; i < importTableEntryCount; i++)
|
||||
{
|
||||
// The third table holds references to objects in external packages. For example, a
|
||||
// texture might have a DetailTexture (which makes for the nice structure if have a
|
||||
// very close look at a texture). Now, these DetailTextures are all stored in a
|
||||
// single package (as they are used by many different textures in different package
|
||||
// files). The property of the texture object only needs to store an index into the
|
||||
// import-table then as the entry in the import-table already points to the
|
||||
// DetailTexture in the other package.
|
||||
ImportTableEntry entry = new ImportTableEntry();
|
||||
|
||||
int classPackageIndex = br.ReadINDEX();
|
||||
if (classPackageIndex >= 0 && classPackageIndex < upk.NameTableEntries.Count)
|
||||
{
|
||||
entry.PackageName = upk.NameTableEntries[classPackageIndex];
|
||||
}
|
||||
|
||||
int classNameIndex = br.ReadINDEX();
|
||||
if (classNameIndex >= 0 && classNameIndex < upk.NameTableEntries.Count)
|
||||
{
|
||||
entry.ClassName = upk.NameTableEntries[classNameIndex];
|
||||
}
|
||||
|
||||
int packageReference = br.ReadInt32();
|
||||
entry.Package = new ObjectReference(packageReference, upk);
|
||||
|
||||
int objectNameIndex = br.ReadINDEX();
|
||||
if (objectNameIndex >= 0 && objectNameIndex < upk.NameTableEntries.Count)
|
||||
{
|
||||
entry.ObjectName = upk.NameTableEntries[objectNameIndex];
|
||||
}
|
||||
upk.ImportTableEntries.Add(entry);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
protected override void SaveInternal(ObjectModel objectModel)
|
||||
{
|
||||
Writer bw = base.Accessor.Writer;
|
||||
|
||||
UnrealPackageObjectModel upk = (objectModel as UnrealPackageObjectModel);
|
||||
#region Header
|
||||
|
||||
// Always "0x9E2A83C1"; use this to verify that you indeed try to read an Unreal-Package
|
||||
bw.WriteUInt32((uint)0x9E2A83C1);
|
||||
|
||||
bw.WriteUInt16(mvarPackageVersion);
|
||||
bw.WriteUInt16(upk.LicenseeNumber);
|
||||
bw.WriteUInt32((uint)upk.PackageFlags); // 1949392
|
||||
|
||||
if (mvarPackageVersion >= 512)
|
||||
{
|
||||
bw.WriteUInt32((uint)mvarPackageName.Length);
|
||||
bw.WriteFixedLengthString(mvarPackageName);
|
||||
|
||||
uint unknown1 = 0;
|
||||
bw.WriteUInt32(unknown1);
|
||||
|
||||
uint unknown2 = 0;
|
||||
bw.WriteUInt32(unknown2);
|
||||
}
|
||||
|
||||
// Number of entries in name-table
|
||||
bw.WriteUInt32((uint)upk.NameTableEntries.Count);
|
||||
// Offset of name-table within the file
|
||||
uint nameTableOffset = 0;
|
||||
bw.WriteUInt32(nameTableOffset);
|
||||
|
||||
// Number of entries in export-table
|
||||
bw.WriteUInt32((uint)upk.ExportTableEntries.Count);
|
||||
// Offset of export-table within the file
|
||||
uint exportTableOffset = 0;
|
||||
bw.WriteUInt32(exportTableOffset);
|
||||
|
||||
// Number of entries in import-table
|
||||
bw.WriteUInt32((uint)upk.ImportTableEntries.Count);
|
||||
// Offset of import-table within the file
|
||||
uint importTableOffset = 0;
|
||||
bw.WriteUInt32(importTableOffset);
|
||||
|
||||
// After the ImportOffset, the header differs between the versions. The only interesting
|
||||
// fact, though, is that for fileformat versions => 68, a GUID has been introduced. It can
|
||||
// be found right after the ImportOffset:
|
||||
if (mvarPackageVersion < 68)
|
||||
{
|
||||
// number of values in the Heritage Table
|
||||
bw.WriteUInt32((uint)upk.PackageGUIDs.Count);
|
||||
// offset of the Heritage Table from the beginning of the file
|
||||
uint heritageTableOffset = 0;
|
||||
bw.WriteUInt32(heritageTableOffset);
|
||||
|
||||
// TODO: navigate to the heritageTableOffset to write the data
|
||||
for (uint i = 0; i < (uint)upk.PackageGUIDs.Count; i++)
|
||||
{
|
||||
bw.WriteGuid(upk.PackageGUIDs[(int)i]);
|
||||
}
|
||||
}
|
||||
else if (mvarPackageVersion >= 68)
|
||||
{
|
||||
if (upk.PackageGUIDs.Count > 0)
|
||||
{
|
||||
bw.WriteGuid(upk.PackageGUIDs[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
Guid guid = Guid.NewGuid();
|
||||
upk.PackageGUIDs.Add(guid);
|
||||
bw.WriteGuid(guid);
|
||||
}
|
||||
|
||||
if (mvarPackageVersion < 512)
|
||||
{
|
||||
bw.WriteUInt32((uint)upk.Generations.Count);
|
||||
for (uint i = 0; i < upk.Generations.Count; i++)
|
||||
{
|
||||
Generation generation = upk.Generations[(int)i];
|
||||
bw.WriteUInt32(generation.ExportCount);
|
||||
bw.WriteUInt32(generation.NameCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Name table
|
||||
{
|
||||
// The Unreal-Engine introduces two new variable-types. The first one is a rather simple
|
||||
// string type, called NAME from now on. The second one is a bit more tricky, these
|
||||
// CompactIndices, or INDEX later on, compresses ordinary DWORDs downto one to five BYTEs.
|
||||
|
||||
// The first and most simple one of the three tables is the name-table. 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.
|
||||
|
||||
// TODO: navigate to the name table offset
|
||||
// br.BaseStream.Position = nameTableOffset;
|
||||
for (uint i = 0; i < upk.NameTableEntries.Count; i++)
|
||||
{
|
||||
bw.WriteNAME(upk.NameTableEntries[(int)i].Name, mvarPackageVersion);
|
||||
if (mvarPackageVersion >= 512)
|
||||
{
|
||||
uint unknown = 0;
|
||||
bw.WriteUInt32(unknown);
|
||||
}
|
||||
bw.WriteInt32((int)upk.NameTableEntries[(int)i].Flags);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Export table
|
||||
{
|
||||
// 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.
|
||||
// br.BaseStream.Position = exportTableOffset;
|
||||
// TODO: navigate to export table offset
|
||||
|
||||
for (uint i = 0; i < upk.ExportTableEntries.Count; i++)
|
||||
{
|
||||
ExportTableEntry entry = upk.ExportTableEntries[(int)i];
|
||||
|
||||
// Class of the object, i.e. "Texture" or "Palette" etc; stored as a
|
||||
// ObjectReference
|
||||
if (entry.ObjectClass != null)
|
||||
{
|
||||
bw.WriteINDEX(entry.ObjectClass.IndexValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
bw.WriteINDEX(0);
|
||||
}
|
||||
|
||||
// Object Parent; again a ObjectReference
|
||||
if (entry.ObjectParent != null)
|
||||
{
|
||||
bw.WriteINDEX(entry.ObjectParent.IndexValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
bw.WriteINDEX(0);
|
||||
}
|
||||
|
||||
// Internal package/group of the object, i.e. ‘Floor’ for floor-textures;
|
||||
// ObjectReference
|
||||
if (entry.Group != null)
|
||||
{
|
||||
bw.WriteInt32(entry.Group.IndexValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
bw.WriteInt32((int)0);
|
||||
}
|
||||
|
||||
// The name of the object; an index into the name-table
|
||||
bw.WriteINDEX(upk.NameTableEntries.IndexOf(entry.Name));
|
||||
|
||||
// Flags for the object; described in the appendix
|
||||
bw.WriteInt32((int)entry.Flags);
|
||||
|
||||
// Total size of the object
|
||||
bw.WriteINDEX(entry.Size);
|
||||
|
||||
if (entry.Size != 0)
|
||||
{
|
||||
// Offset of the object; this field only exists if the SerialSize is larger 0
|
||||
bw.WriteINDEX(entry.Offset);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Import table
|
||||
{
|
||||
for (uint i = 0; i < upk.ImportTableEntries.Count; i++)
|
||||
{
|
||||
// The third table holds references to objects in external packages. For example, a
|
||||
// texture might have a DetailTexture (which makes for the nice structure if have a
|
||||
// very close look at a texture). Now, these DetailTextures are all stored in a
|
||||
// single package (as they are used by many different textures in different package
|
||||
// files). The property of the texture object only needs to store an index into the
|
||||
// import-table then as the entry in the import-table already points to the
|
||||
// DetailTexture in the other package.
|
||||
ImportTableEntry entry = upk.ImportTableEntries[(int)i];
|
||||
|
||||
bw.WriteINDEX(upk.NameTableEntries.IndexOf(entry.PackageName));
|
||||
bw.WriteINDEX(upk.NameTableEntries.IndexOf(entry.ClassName));
|
||||
bw.WriteInt32(entry.Package.IndexValue);
|
||||
bw.WriteINDEX(upk.NameTableEntries.IndexOf(entry.ObjectName));
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
bw.Flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,129 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.IO;
|
||||
|
||||
namespace UniversalEditor.Plugins.UnrealEngine
|
||||
{
|
||||
public static class ExtensionMethods
|
||||
{
|
||||
/// <summary>
|
||||
/// The Name type is a simple string type. The format does, although, differ between the
|
||||
/// package versions.
|
||||
/// </summary>
|
||||
/// <param name="br"></param>
|
||||
/// <returns></returns>
|
||||
public static string ReadNAME(this Reader br, int packageVersion)
|
||||
{
|
||||
string value = String.Empty;
|
||||
|
||||
// Older package versions (<64, original Unreal engine) store the Name type as a
|
||||
// zero-terminated ASCII string; "UT2k3", for example would be stored as:
|
||||
// "U" "T" "2" "k" "3" 0x00
|
||||
if (packageVersion < 64)
|
||||
{
|
||||
value = br.ReadNullTerminatedString();
|
||||
}
|
||||
else if (packageVersion >= 512)
|
||||
{
|
||||
uint length = br.ReadUInt32();
|
||||
value = br.ReadNullTerminatedString();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Newer packages (>=64, UT engine) prepend the length of the string plus the trailing
|
||||
// zero. Again, "UT2k3" would be now stored as: 0x06 "U" "T" "2" "k" "3" 0x00
|
||||
value = br.ReadLengthPrefixedString();
|
||||
if (value.EndsWith("\0"))
|
||||
{
|
||||
value = value.TrimNull();
|
||||
}
|
||||
else
|
||||
{
|
||||
// do we need this sanity check?
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
public static void WriteNAME(this Writer bw, string value, int packageVersion)
|
||||
{
|
||||
// Older package versions (<64, original Unreal engine) store the Name type as a
|
||||
// zero-terminated ASCII string; "UT2k3", for example would be stored as:
|
||||
// "U" "T" "2" "k" "3" 0x00
|
||||
if (packageVersion < 64)
|
||||
{
|
||||
bw.WriteNullTerminatedString(value);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Newer packages (>=64, UT engine) prepend the length of the string plus the trailing
|
||||
// zero. Again, "UT2k3" would be now stored as: 0x06 "U" "T" "2" "k" "3" 0x00
|
||||
bw.WriteLengthPrefixedString(value);
|
||||
bw.WriteInt32((byte)0);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reads a compact integer from the FileReader. Bytes read differs, so do not make
|
||||
/// assumptions about physical data being read from the stream. (If you have to, get the
|
||||
/// difference of FileReader.BaseStream.Position before and after this is executed.)
|
||||
/// </summary>
|
||||
/// <returns>An "uncompacted" signed integer.</returns>
|
||||
/// <remarks>There may be better ways to implement this, but this is fast, and it works.</remarks>
|
||||
public static int ReadINDEX(this Reader br)
|
||||
{
|
||||
int output = 0;
|
||||
bool signed = false;
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
byte x = br.ReadByte();
|
||||
// First byte
|
||||
if (i == 0)
|
||||
{
|
||||
// Bit: X0000000
|
||||
if ((x & 0x80) > 0)
|
||||
{
|
||||
signed = true;
|
||||
}
|
||||
// Bits: 00XXXXXX
|
||||
output |= (x & 0x3F);
|
||||
// Bit: 0X000000
|
||||
if ((x & 0x40) == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
// Last byte
|
||||
else if (i == 4)
|
||||
{
|
||||
// Bits: 000XXXXX -- the 0 bits are ignored
|
||||
// (hits the 32 bit boundary)
|
||||
output |= (x & 0x1F) << (6 + (3 * 7));
|
||||
}
|
||||
// Middle bytes
|
||||
else
|
||||
{
|
||||
// Bits: 0XXXXXXX
|
||||
output |= (x & 0x7F) << (6 + ((i - 1) * 7));
|
||||
// Bit: X0000000
|
||||
if ((x & 0x80) == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// multiply by negative one here, since the first 6+ bits could be 0
|
||||
if (signed)
|
||||
{
|
||||
output *= -1;
|
||||
}
|
||||
return (output);
|
||||
}
|
||||
public static void WriteINDEX(this Writer bw, int value)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.UnrealEngine
|
||||
{
|
||||
public class ExportTableEntry : ICloneable
|
||||
{
|
||||
public class ExportTableEntryCollection
|
||||
: System.Collections.ObjectModel.Collection<ExportTableEntry>
|
||||
{
|
||||
}
|
||||
|
||||
public event UniversalEditor.ObjectModels.FileSystem.DataRequestEventHandler DataRequest;
|
||||
protected virtual void OnDataRequest(UniversalEditor.ObjectModels.FileSystem.DataRequestEventArgs e)
|
||||
{
|
||||
if (DataRequest != null)
|
||||
{
|
||||
DataRequest(this, e);
|
||||
}
|
||||
}
|
||||
|
||||
public byte[] GetData()
|
||||
{
|
||||
UniversalEditor.ObjectModels.FileSystem.DataRequestEventArgs e = new FileSystem.DataRequestEventArgs();
|
||||
OnDataRequest(e);
|
||||
return e.Data;
|
||||
}
|
||||
|
||||
private NameTableEntry mvarName = null;
|
||||
public NameTableEntry Name { get { return mvarName; } set { mvarName = value; } }
|
||||
private ObjectReference mvarObjectClass = null;
|
||||
public ObjectReference ObjectClass { get { return mvarObjectClass; } set { mvarObjectClass = value; } }
|
||||
private ObjectReference mvarObjectParent = null;
|
||||
public ObjectReference ObjectParent { get { return mvarObjectParent; } set { mvarObjectParent = value; } }
|
||||
private ObjectReference mvarGroup = null;
|
||||
public ObjectReference Group { get { return mvarGroup; } set { mvarGroup = value; } }
|
||||
private ObjectFlags mvarFlags = ObjectFlags.None;
|
||||
public ObjectFlags Flags { get { return mvarFlags; } set { mvarFlags = value; } }
|
||||
|
||||
private int mvarSize = 0;
|
||||
public int Size { get { return mvarSize; } set { mvarSize = value; } }
|
||||
|
||||
private int mvarOffset = 0;
|
||||
public int Offset { get { return mvarOffset; } set { mvarOffset = value; } }
|
||||
|
||||
public object Clone()
|
||||
{
|
||||
ExportTableEntry clone = new ExportTableEntry();
|
||||
return clone;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (mvarGroup != null)
|
||||
{
|
||||
sb.Append(mvarGroup.ToString());
|
||||
sb.Append('.');
|
||||
}
|
||||
if (mvarName == null)
|
||||
{
|
||||
sb.Append("(invalid name)");
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Append(mvarName.ToString(false));
|
||||
}
|
||||
if (mvarObjectClass != null)
|
||||
{
|
||||
sb.Append(" (");
|
||||
sb.Append(mvarObjectClass.ToString());
|
||||
sb.Append(")");
|
||||
}
|
||||
if (mvarObjectParent != null)
|
||||
{
|
||||
sb.Append(" extends ");
|
||||
sb.Append(mvarObjectParent.ToString());
|
||||
}
|
||||
sb.Append(" : ");
|
||||
sb.Append(mvarFlags.ToString());
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,80 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.UnrealEngine
|
||||
{
|
||||
public enum FunctionFlags
|
||||
{
|
||||
None = 0x00000000,
|
||||
/// <summary>
|
||||
/// Function is final (prebindable, non-overridable function).
|
||||
/// </summary>
|
||||
Final = 0x00000001,
|
||||
/// <summary>
|
||||
/// Function has been defined (not just declared). Not used in source code.
|
||||
/// </summary>
|
||||
Defined = 0x00000002,
|
||||
/// <summary>
|
||||
/// Function is an iterator.
|
||||
/// </summary>
|
||||
Iterator = 0x00000004,
|
||||
/// <summary>
|
||||
/// Function is a latent state function.
|
||||
/// </summary>
|
||||
Latent = 0x00000008,
|
||||
/// <summary>
|
||||
/// Unary operator is a prefix operator.
|
||||
/// </summary>
|
||||
PrefixOperator = 0x00000010,
|
||||
/// <summary>
|
||||
/// Function cannot be reentered.
|
||||
/// </summary>
|
||||
Singular = 0x00000020,
|
||||
/// <summary>
|
||||
/// Function is network-replicated. Not used in source code.
|
||||
/// </summary>
|
||||
NetworkReplicated = 0x00000040,
|
||||
/// <summary>
|
||||
/// Function should be sent reliably on the network. Not used in source code.
|
||||
/// </summary>
|
||||
NetworkReliable = 0x00000080,
|
||||
/// <summary>
|
||||
/// Function executed on the client side.
|
||||
/// </summary>
|
||||
Simulated = 0x00000100,
|
||||
/// <summary>
|
||||
/// Executable from command line.
|
||||
/// </summary>
|
||||
CommandLine = 0x00000200,
|
||||
/// <summary>
|
||||
/// Native function.
|
||||
/// </summary>
|
||||
Native = 0x00000400,
|
||||
/// <summary>
|
||||
/// Event function.
|
||||
/// </summary>
|
||||
Event = 0x00000800,
|
||||
/// <summary>
|
||||
/// Operator function.
|
||||
/// </summary>
|
||||
Operator = 0x00001000,
|
||||
/// <summary>
|
||||
/// Static function.
|
||||
/// </summary>
|
||||
Static = 0x00002000,
|
||||
/// <summary>
|
||||
/// Don't export intrinsic function to C++.
|
||||
/// </summary>
|
||||
DoNotExport = 0x00004000,
|
||||
/// <summary>
|
||||
/// Function doesn't modify this object.
|
||||
/// </summary>
|
||||
Constant = 0x00008000,
|
||||
/// <summary>
|
||||
/// Return value is purely dependent on parameters; no state dependencies or internal state changes.
|
||||
/// </summary>
|
||||
Invariant = 0x00010000
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,26 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.UnrealEngine
|
||||
{
|
||||
public class Generation
|
||||
{
|
||||
public class GenerationCollection
|
||||
: System.Collections.ObjectModel.Collection<Generation>
|
||||
{
|
||||
}
|
||||
|
||||
private uint mvarExportCount = 0;
|
||||
public uint ExportCount { get { return mvarExportCount; } set { mvarExportCount = value; } }
|
||||
|
||||
private uint mvarNameCount = 0;
|
||||
public uint NameCount { get { return mvarNameCount; } set { mvarNameCount = value; } }
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return mvarExportCount.ToString() + " exports, " + mvarNameCount.ToString() + " names";
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,70 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.UnrealEngine
|
||||
{
|
||||
public class ImportTableEntry : ICloneable
|
||||
{
|
||||
public class ImportTableEntryCollection
|
||||
: System.Collections.ObjectModel.Collection<ImportTableEntry>
|
||||
{
|
||||
}
|
||||
|
||||
public object Clone()
|
||||
{
|
||||
ImportTableEntry clone = new ImportTableEntry();
|
||||
return clone;
|
||||
}
|
||||
|
||||
private NameTableEntry mvarPackageName = null;
|
||||
/// <summary>
|
||||
/// Package file in which the class of the object is defined
|
||||
/// </summary>
|
||||
public NameTableEntry PackageName { get { return mvarPackageName; } set { mvarPackageName = value; } }
|
||||
|
||||
private NameTableEntry mvarClassName = null;
|
||||
/// <summary>
|
||||
/// Class of the object, i.e. "Texture", "Palette", "Package", etc.
|
||||
/// </summary>
|
||||
public NameTableEntry ClassName { get { return mvarClassName; } set { mvarClassName = value; } }
|
||||
|
||||
private ObjectReference mvarPackage = null;
|
||||
/// <summary>
|
||||
/// Reference where the object resides
|
||||
/// </summary>
|
||||
public ObjectReference Package { get { return mvarPackage; } set { mvarPackage = value; } }
|
||||
|
||||
private NameTableEntry mvarObjectName = null;
|
||||
/// <summary>
|
||||
/// The name of the object
|
||||
/// </summary>
|
||||
public NameTableEntry ObjectName { get { return mvarObjectName; } set { mvarObjectName = value; } }
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (mvarPackageName != null)
|
||||
{
|
||||
sb.Append(mvarPackageName.ToString(false));
|
||||
sb.Append(".");
|
||||
}
|
||||
if (mvarObjectName == null)
|
||||
{
|
||||
sb.Append("(invalid name)");
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Append(mvarObjectName.ToString(false));
|
||||
}
|
||||
if (mvarClassName != null)
|
||||
{
|
||||
sb.Append(" (");
|
||||
sb.Append(mvarClassName.ToString(false));
|
||||
sb.Append(")");
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,58 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.UnrealEngine
|
||||
{
|
||||
[Flags()]
|
||||
public enum NameTableEntryFlags
|
||||
{
|
||||
None = 0
|
||||
}
|
||||
public class NameTableEntry : ICloneable
|
||||
{
|
||||
public class NameTableEntryCollection
|
||||
: System.Collections.ObjectModel.Collection<NameTableEntry>
|
||||
{
|
||||
public NameTableEntry Add(string name, NameTableEntryFlags flags = NameTableEntryFlags.None)
|
||||
{
|
||||
NameTableEntry entry = new NameTableEntry();
|
||||
entry.Name = name;
|
||||
entry.Flags = flags;
|
||||
Add(entry);
|
||||
return entry;
|
||||
}
|
||||
}
|
||||
|
||||
private string mvarName = String.Empty;
|
||||
public string Name { get { return mvarName; } set { mvarName = value; } }
|
||||
|
||||
private NameTableEntryFlags mvarFlags = NameTableEntryFlags.None;
|
||||
public NameTableEntryFlags Flags { get { return mvarFlags; } set { mvarFlags = value; } }
|
||||
|
||||
public object Clone()
|
||||
{
|
||||
NameTableEntry entry = new NameTableEntry();
|
||||
entry.Name = (mvarName.Clone() as string);
|
||||
entry.Flags = mvarFlags;
|
||||
return entry;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return ToString(true);
|
||||
}
|
||||
public string ToString(bool includeFlags)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append(mvarName);
|
||||
if (includeFlags)
|
||||
{
|
||||
sb.Append(" : ");
|
||||
sb.Append(mvarFlags.ToString());
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,140 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.UnrealEngine
|
||||
{
|
||||
[Flags()]
|
||||
public enum ObjectFlags : uint
|
||||
{
|
||||
None = 0,
|
||||
/// <summary>
|
||||
/// Object must be tracked in the editor by the Undo/Redo tracking system.
|
||||
/// </summary>
|
||||
Transactional = 0x00000001,
|
||||
/// <summary>
|
||||
/// Object is not reachable on the object graph.
|
||||
/// </summary>
|
||||
Unreachable = 0x00000002,
|
||||
/// <summary>
|
||||
/// Object may be imported by other package files.
|
||||
/// </summary>
|
||||
Public = 0x00000004,
|
||||
/// <summary>
|
||||
/// Temporary import tag in load/save.
|
||||
/// </summary>
|
||||
Importing = 0x00000008,
|
||||
/// <summary>
|
||||
/// Temporary export tag in load/save.
|
||||
/// </summary>
|
||||
Exporting = 0x00000010,
|
||||
/// <summary>
|
||||
/// The external data source corresponding to this object has been modified.
|
||||
/// </summary>
|
||||
SourceModified = 0x00000020,
|
||||
/// <summary>
|
||||
/// Check during garbage collection.
|
||||
/// </summary>
|
||||
GarbageCollect = 0x00000040,
|
||||
/// <summary>
|
||||
/// During load, indicates object needs loading.
|
||||
/// </summary>
|
||||
RequireLoad = 0x00000200,
|
||||
/// <summary>
|
||||
/// A hardcoded name which should be syntax-highlighted.
|
||||
/// </summary>
|
||||
HighlightedName = 0x00000400,
|
||||
EliminateObject = 0x00000400,
|
||||
RemappedName = 0x00000800,
|
||||
/// <summary>
|
||||
/// In a singular function.
|
||||
/// </summary>
|
||||
SingularFunction = 0x00000800,
|
||||
/// <summary>
|
||||
/// Suppressed log name.
|
||||
/// </summary>
|
||||
Suppressed = 0x00001000,
|
||||
StateChanged = 0x00001000,
|
||||
/// <summary>
|
||||
/// Within an EndState call.
|
||||
/// </summary>
|
||||
EndState = 0x00002000,
|
||||
/// <summary>
|
||||
/// Do not save the object.
|
||||
/// </summary>
|
||||
Transient = 0x00004000,
|
||||
/// <summary>
|
||||
/// Data is being preloaded from the file.
|
||||
/// </summary>
|
||||
Preloading = 0x00008000,
|
||||
/// <summary>
|
||||
/// Must be loaded for game client.
|
||||
/// </summary>
|
||||
LoadForClient = 0x00010000,
|
||||
/// <summary>
|
||||
/// Must be loaded for game server.
|
||||
/// </summary>
|
||||
LoadForServer = 0x00020000,
|
||||
/// <summary>
|
||||
/// Must be loaded for editor.
|
||||
/// </summary>
|
||||
LoadForEditor = 0x00040000,
|
||||
/// <summary>
|
||||
/// Keep object around (don't garbage collect) for editor even if unreferenced.
|
||||
/// </summary>
|
||||
Standalone = 0x00080000,
|
||||
/// <summary>
|
||||
/// Don't load this object for the game client.
|
||||
/// </summary>
|
||||
NotForClient = 0x00100000,
|
||||
/// <summary>
|
||||
/// Don't load this object for the game server.
|
||||
/// </summary>
|
||||
NotForServer = 0x00200000,
|
||||
/// <summary>
|
||||
/// Don't load this object for the editor.
|
||||
/// </summary>
|
||||
NotForEdit = 0x00400000,
|
||||
/// <summary>
|
||||
/// Object Destroy has already been called
|
||||
/// </summary>
|
||||
Destroyed = 0x00800000,
|
||||
/// <summary>
|
||||
/// Object needs to be postloaded.
|
||||
/// </summary>
|
||||
RequirePostLoad = 0x01000000,
|
||||
/// <summary>
|
||||
/// This object has an execution stack allocated and is ready to execute UnrealScript code.
|
||||
/// </summary>
|
||||
HasStack = 0x02000000,
|
||||
/// <summary>
|
||||
/// Class or name is defined in C++ code and must be bound at load-time. (UClass only)
|
||||
/// </summary>
|
||||
Intrinsic = 0x04000000,
|
||||
/// <summary>
|
||||
/// Class or name is defined in C++ code and must be bound at load-time. (UClass only)
|
||||
/// </summary>
|
||||
Native = 0x04000000,
|
||||
/// <summary>
|
||||
/// Marked (for debugging)
|
||||
/// </summary>
|
||||
Marked = 0x08000000,
|
||||
/// <summary>
|
||||
/// ShutdownAfterError called.
|
||||
/// </summary>
|
||||
ErrorShutdown = 0x10000000,
|
||||
/// <summary>
|
||||
/// For debugging Serialize calls
|
||||
/// </summary>
|
||||
DebugPostLoad = 0x20000000,
|
||||
/// <summary>
|
||||
/// For debugging Serialize calls
|
||||
/// </summary>
|
||||
DebugSerialize = 0x40000000,
|
||||
/// <summary>
|
||||
/// For debugging Destroy calls
|
||||
/// </summary>
|
||||
DebugDestroy = 0x80000000
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,82 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.UnrealEngine
|
||||
{
|
||||
public class ObjectReference
|
||||
{
|
||||
private UnrealPackageObjectModel mvarParent = null;
|
||||
public UnrealPackageObjectModel Parent { get { return mvarParent; } }
|
||||
|
||||
private int mvarIndexValue = 0;
|
||||
public int IndexValue { get { return mvarIndexValue; } set { mvarIndexValue = value; } }
|
||||
|
||||
public static readonly ObjectReference Empty = new ObjectReference(0, null);
|
||||
|
||||
public ObjectReference(int indexValue = 0, UnrealPackageObjectModel parent = null)
|
||||
{
|
||||
mvarParent = parent;
|
||||
mvarIndexValue = indexValue;
|
||||
}
|
||||
|
||||
public object Value
|
||||
{
|
||||
get
|
||||
{
|
||||
if (mvarParent != null)
|
||||
{
|
||||
if (mvarIndexValue < 0)
|
||||
{
|
||||
// pointer to an entry of the ImportTable
|
||||
int index = -mvarIndexValue - 1;
|
||||
if (index >= 0 && index < mvarParent.ImportTableEntries.Count)
|
||||
{
|
||||
return mvarParent.ImportTableEntries[index].ToString();
|
||||
}
|
||||
}
|
||||
else if (mvarIndexValue > 0)
|
||||
{
|
||||
// pointer to an entry in the ExportTable
|
||||
int index = mvarIndexValue - 1;
|
||||
if (index >= 0 && index < mvarParent.ExportTableEntries.Count)
|
||||
{
|
||||
return mvarParent.ExportTableEntries[index].ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
if (mvarIndexValue == 0) return "(null)";
|
||||
if (mvarParent != null)
|
||||
{
|
||||
if (mvarIndexValue < 0)
|
||||
{
|
||||
// pointer to an entry of the ImportTable
|
||||
int index = -mvarIndexValue - 1;
|
||||
if (index >= 0 && index < mvarParent.ImportTableEntries.Count)
|
||||
{
|
||||
return mvarParent.ImportTableEntries[index].ToString();
|
||||
}
|
||||
return "(unknown: " + mvarIndexValue.ToString() + ")";
|
||||
}
|
||||
else if (mvarIndexValue > 0)
|
||||
{
|
||||
// pointer to an entry in the ExportTable
|
||||
int index = mvarIndexValue - 1;
|
||||
if (index >= 0 && index < mvarParent.ExportTableEntries.Count)
|
||||
{
|
||||
return mvarParent.ExportTableEntries[index].ToString();
|
||||
}
|
||||
return "(unknown: " + mvarIndexValue.ToString() + ")";
|
||||
}
|
||||
}
|
||||
return "(unknown: " + mvarIndexValue.ToString() + ")";
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,40 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.UnrealEngine
|
||||
{
|
||||
[Flags()]
|
||||
public enum PackageFlags
|
||||
{
|
||||
None = 0,
|
||||
/// <summary>
|
||||
/// The package is allowed to be downloaded to clients freely.
|
||||
/// </summary>
|
||||
AllowDownload = 0x0001,
|
||||
/// <summary>
|
||||
/// All objects in the package are optional (i.e. skins, textures) and it's up to the client whether he wants
|
||||
/// to download them or not. Not yet implemented; currently ignored.
|
||||
/// </summary>
|
||||
ClientOptional = 0x0002,
|
||||
/// <summary>
|
||||
/// This package is only needed on the server side, and the client shouldn't be informed of its presence. This
|
||||
/// is used with packages like IpDrv so that it can be updated frequently on the server side without requiring
|
||||
/// downloading stuff to the client.
|
||||
/// </summary>
|
||||
ServerSideOnly = 0x0004,
|
||||
/// <summary>
|
||||
/// Loaded from linker with broken import links
|
||||
/// </summary>
|
||||
BrokenLinks = 0x0008,
|
||||
/// <summary>
|
||||
/// Not trusted
|
||||
/// </summary>
|
||||
Untrusted = 0x0010,
|
||||
/// <summary>
|
||||
/// Client needs to download this package
|
||||
/// </summary>
|
||||
Required = 0x8000
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,101 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.UnrealEngine
|
||||
{
|
||||
[Flags()]
|
||||
public enum PropertyFlags
|
||||
{
|
||||
None = 0x00000000,
|
||||
/// <summary>
|
||||
/// Property is user-settable in the editor.
|
||||
/// </summary>
|
||||
Editable = 0x00000001,
|
||||
/// <summary>
|
||||
/// Actor's property always matches class's default actor property.
|
||||
/// </summary>
|
||||
Constant = 0x00000002,
|
||||
/// <summary>
|
||||
/// Variable is writable by the input system.
|
||||
/// </summary>
|
||||
InputWritable = 0x00000004,
|
||||
/// <summary>
|
||||
/// Object can be exported with actor.
|
||||
/// </summary>
|
||||
Exportable = 0x00000008,
|
||||
/// <summary>
|
||||
/// Optional parameter (if CPF_Param is set).
|
||||
/// </summary>
|
||||
OptionalParameter = 0x00000010,
|
||||
/// <summary>
|
||||
/// Property is relevant to network replication (not specified in source code)
|
||||
/// </summary>
|
||||
NetworkReplication = 0x00000020,
|
||||
/// <summary>
|
||||
/// Reference to a constant object.
|
||||
/// </summary>
|
||||
ConstantReference = 0x00000040,
|
||||
/// <summary>
|
||||
/// Function/When call parameter
|
||||
/// </summary>
|
||||
Parameter = 0x00000080,
|
||||
/// <summary>
|
||||
/// Value is copied out after function call.
|
||||
/// </summary>
|
||||
OutParameter = 0x00000100,
|
||||
/// <summary>
|
||||
/// Property is a short-circuitable evaluation function parm.
|
||||
/// </summary>
|
||||
SkipParameter = 0x00000200,
|
||||
/// <summary>
|
||||
/// Return value.
|
||||
/// </summary>
|
||||
ReturnParameter = 0x00000400,
|
||||
/// <summary>
|
||||
/// Coerce args into this function parameter
|
||||
/// </summary>
|
||||
CoerceParameter = 0x00000800,
|
||||
/// <summary>
|
||||
/// Property is native: C++ code is responsible for serializing it.
|
||||
/// </summary>
|
||||
Native = 0x00001000,
|
||||
/// <summary>
|
||||
/// Property is transient: shouldn't be saved, zero-filled at load time.
|
||||
/// </summary>
|
||||
Transient = 0x00002000,
|
||||
/// <summary>
|
||||
/// Property should be loaded/saved as permanent profile.
|
||||
/// </summary>
|
||||
Configuration = 0x00004000,
|
||||
/// <summary>
|
||||
/// Property should be loaded as localizable text
|
||||
/// </summary>
|
||||
Localized = 0x00008000,
|
||||
/// <summary>
|
||||
/// Property travels across levels/servers.
|
||||
/// </summary>
|
||||
Travel = 0x00010000,
|
||||
/// <summary>
|
||||
/// Property is uneditable in the editor
|
||||
/// </summary>
|
||||
PreventEdit = 0x00020000,
|
||||
/// <summary>
|
||||
/// Load config from base class, not subclass.
|
||||
/// </summary>
|
||||
GlobalConfiguration = 0x00040000,
|
||||
/// <summary>
|
||||
/// Object or dynamic array loaded on demand only.
|
||||
/// </summary>
|
||||
Demand = 0x00100000,
|
||||
/// <summary>
|
||||
/// Automatically create inner object
|
||||
/// </summary>
|
||||
AutoCreate = 0x00200000,
|
||||
/// <summary>
|
||||
/// Fields need construction/destruction (not specified in source code)
|
||||
/// </summary>
|
||||
ConstructionRequired = 0x00400000
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,75 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.UnrealEngine
|
||||
{
|
||||
public enum PropertyType
|
||||
{
|
||||
Byte = 1,
|
||||
Integer = 2,
|
||||
Boolean = 3,
|
||||
Float = 4,
|
||||
Object = 5,
|
||||
Name = 6,
|
||||
String = 7,
|
||||
Class = 8,
|
||||
Array = 9,
|
||||
Struct = 10,
|
||||
Vector = 11,
|
||||
Rotator = 12,
|
||||
Str = 13,
|
||||
Map = 14,
|
||||
FixedArray = 15
|
||||
}
|
||||
|
||||
/*
|
||||
* Property size values:
|
||||
0 = 1 byte
|
||||
1 = 2 bytes
|
||||
2 = 4 bytes
|
||||
3 = 12 bytes
|
||||
4 = 16 bytes
|
||||
5 = a byte follows with real size
|
||||
6 = a word follows with real size
|
||||
7 = an integer follows with real size
|
||||
*
|
||||
*
|
||||
* Property value layout:
|
||||
* 0x01 (ByteProperty) Value Format
|
||||
0x02 (IntegerProperty) BYTE
|
||||
0x03 (BooleanProperty) DWORD
|
||||
0x04 (FloatProperty) DWORD
|
||||
0x05 (ObjectProperty) INDEX
|
||||
0x06 (NameProperty) INDEX
|
||||
0x07 (StringProperty) Unknown
|
||||
0x08 (ClassProperty)
|
||||
0x09 (ArrayProperty) Unknown
|
||||
0x0A (StructProperty)
|
||||
0x0B (VectorProperty) Unknown
|
||||
0x0C (RotatorProperty) Unknown
|
||||
0x0D (StrProperty) INDEX length
|
||||
ASCIIZ text
|
||||
Unknown
|
||||
Unknown
|
||||
0x0E (MapProperty)
|
||||
0x0F (FixedArrayProperty)
|
||||
Comments
|
||||
The real value is in bit 7 of
|
||||
the info byte.
|
||||
A 4-byte float.
|
||||
Object Reference value.
|
||||
See “Object References”.
|
||||
Name Reference value.
|
||||
Index in to the Name
|
||||
Table.
|
||||
See below for some known
|
||||
classes.
|
||||
See below for some known
|
||||
structs.
|
||||
Length field includes null
|
||||
terminator.
|
||||
|
||||
*/
|
||||
}
|
||||
@ -0,0 +1,95 @@
|
||||
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;
|
||||
public override ObjectModelReference MakeReference()
|
||||
{
|
||||
if (_omr == null)
|
||||
{
|
||||
_omr = base.MakeReference();
|
||||
_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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Unreal Engine plugin for Universal Editor")]
|
||||
[assembly: AssemblyDescription("Provides data formats to interact with Epic Games' Unreal game engine assets.")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Mike Becker's Software")]
|
||||
[assembly: AssemblyProduct("Universal Editor Plugin Pack")]
|
||||
[assembly: AssemblyCopyright("Copyright ©2013 Mike Becker's Software")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("d54c55f4-4359-4af2-8f27-7908c7002f35")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@ -0,0 +1,72 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{DF96F24E-FED9-4BAC-8389-63590125DC61}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>UniversalEditor</RootNamespace>
|
||||
<AssemblyName>UniversalEditor.Plugins.UnrealEngine</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\..\Output\Debug\Plugins\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\..\Output\Release\Plugins\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="DataFormats\UnrealEngine\Installer\UMODDataFormat.cs" />
|
||||
<Compile Include="DataFormats\UnrealEngine\Installer\UMODFileFlags.cs" />
|
||||
<Compile Include="DataFormats\UnrealEngine\Package\UnrealPackageDataFormat.cs" />
|
||||
<Compile Include="ExtensionMethods.cs" />
|
||||
<Compile Include="ObjectModels\UnrealEngine\ExportTableEntry.cs" />
|
||||
<Compile Include="ObjectModels\UnrealEngine\FunctionFlags.cs" />
|
||||
<Compile Include="ObjectModels\UnrealEngine\Generation.cs" />
|
||||
<Compile Include="ObjectModels\UnrealEngine\ImportTableEntry.cs" />
|
||||
<Compile Include="ObjectModels\UnrealEngine\NameTableEntry.cs" />
|
||||
<Compile Include="ObjectModels\UnrealEngine\ObjectFlags.cs" />
|
||||
<Compile Include="ObjectModels\UnrealEngine\ObjectReference.cs" />
|
||||
<Compile Include="ObjectModels\UnrealEngine\PackageFlags.cs" />
|
||||
<Compile Include="ObjectModels\UnrealEngine\PropertyFlags.cs" />
|
||||
<Compile Include="ObjectModels\UnrealEngine\PropertyType.cs" />
|
||||
<Compile Include="ObjectModels\UnrealEngine\UnrealPackageObjectModel.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Libraries\UniversalEditor.Core\UniversalEditor.Core.csproj">
|
||||
<Project>{2d4737e6-6d95-408a-90db-8dff38147e85}</Project>
|
||||
<Name>UniversalEditor.Core</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\UniversalEditor.Essential\UniversalEditor.Essential.csproj">
|
||||
<Project>{30467e5c-05bc-4856-aadc-13906ef4cadd}</Project>
|
||||
<Name>UniversalEditor.Essential</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
@ -97,398 +97,176 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalEditor.Plugins.Mul
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sanjigen", "..\..\Sanjigen\Sanjigen\Sanjigen.csproj", "{ED627DF7-3E78-4428-AB31-810BA1586E62}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalEditor.Plugins.UnrealEngine", "Plugins\UniversalEditor.Plugins.UnrealEngine\UniversalEditor.Plugins.UnrealEngine.csproj", "{DF96F24E-FED9-4BAC-8389-63590125DC61}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalEditor.Plugins.UnrealEngine.UserInterface.WindowsForms", "Environments\WindowsForms\Plugins\UniversalEditor.Plugins.UnrealEngine.UserInterface.WindowsForms\UniversalEditor.Plugins.UnrealEngine.UserInterface.WindowsForms.csproj", "{049A3447-14AF-4CAE-BE0E-1C42DD1AB1CB}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|Mixed Platforms = Debug|Mixed Platforms
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|Mixed Platforms = Release|Mixed Platforms
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{2D4737E6-6D95-408A-90DB-8DFF38147E85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2D4737E6-6D95-408A-90DB-8DFF38147E85}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2D4737E6-6D95-408A-90DB-8DFF38147E85}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{2D4737E6-6D95-408A-90DB-8DFF38147E85}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{2D4737E6-6D95-408A-90DB-8DFF38147E85}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{2D4737E6-6D95-408A-90DB-8DFF38147E85}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2D4737E6-6D95-408A-90DB-8DFF38147E85}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2D4737E6-6D95-408A-90DB-8DFF38147E85}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{2D4737E6-6D95-408A-90DB-8DFF38147E85}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{2D4737E6-6D95-408A-90DB-8DFF38147E85}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{BAC9FDFD-C39E-4A90-B9F8-CF75B551BE10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BAC9FDFD-C39E-4A90-B9F8-CF75B551BE10}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BAC9FDFD-C39E-4A90-B9F8-CF75B551BE10}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{BAC9FDFD-C39E-4A90-B9F8-CF75B551BE10}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{BAC9FDFD-C39E-4A90-B9F8-CF75B551BE10}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{BAC9FDFD-C39E-4A90-B9F8-CF75B551BE10}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BAC9FDFD-C39E-4A90-B9F8-CF75B551BE10}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BAC9FDFD-C39E-4A90-B9F8-CF75B551BE10}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{BAC9FDFD-C39E-4A90-B9F8-CF75B551BE10}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{BAC9FDFD-C39E-4A90-B9F8-CF75B551BE10}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{30467E5C-05BC-4856-AADC-13906EF4CADD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{30467E5C-05BC-4856-AADC-13906EF4CADD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{30467E5C-05BC-4856-AADC-13906EF4CADD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{30467E5C-05BC-4856-AADC-13906EF4CADD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{30467E5C-05BC-4856-AADC-13906EF4CADD}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{30467E5C-05BC-4856-AADC-13906EF4CADD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{30467E5C-05BC-4856-AADC-13906EF4CADD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{30467E5C-05BC-4856-AADC-13906EF4CADD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{30467E5C-05BC-4856-AADC-13906EF4CADD}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{30467E5C-05BC-4856-AADC-13906EF4CADD}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{3F664673-7E22-4486-9AD0-FC81861D0B78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3F664673-7E22-4486-9AD0-FC81861D0B78}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3F664673-7E22-4486-9AD0-FC81861D0B78}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{3F664673-7E22-4486-9AD0-FC81861D0B78}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{3F664673-7E22-4486-9AD0-FC81861D0B78}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{3F664673-7E22-4486-9AD0-FC81861D0B78}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3F664673-7E22-4486-9AD0-FC81861D0B78}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3F664673-7E22-4486-9AD0-FC81861D0B78}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{3F664673-7E22-4486-9AD0-FC81861D0B78}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{3F664673-7E22-4486-9AD0-FC81861D0B78}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{7CA0A889-C1A1-4CEB-AA54-43A640B41C6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7CA0A889-C1A1-4CEB-AA54-43A640B41C6C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7CA0A889-C1A1-4CEB-AA54-43A640B41C6C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{7CA0A889-C1A1-4CEB-AA54-43A640B41C6C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{7CA0A889-C1A1-4CEB-AA54-43A640B41C6C}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{7CA0A889-C1A1-4CEB-AA54-43A640B41C6C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7CA0A889-C1A1-4CEB-AA54-43A640B41C6C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7CA0A889-C1A1-4CEB-AA54-43A640B41C6C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{7CA0A889-C1A1-4CEB-AA54-43A640B41C6C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{7CA0A889-C1A1-4CEB-AA54-43A640B41C6C}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{BE4D0BA3-0888-42A5-9C09-FC308A4509D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BE4D0BA3-0888-42A5-9C09-FC308A4509D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BE4D0BA3-0888-42A5-9C09-FC308A4509D2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{BE4D0BA3-0888-42A5-9C09-FC308A4509D2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{BE4D0BA3-0888-42A5-9C09-FC308A4509D2}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{BE4D0BA3-0888-42A5-9C09-FC308A4509D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BE4D0BA3-0888-42A5-9C09-FC308A4509D2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BE4D0BA3-0888-42A5-9C09-FC308A4509D2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{BE4D0BA3-0888-42A5-9C09-FC308A4509D2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{BE4D0BA3-0888-42A5-9C09-FC308A4509D2}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
||||
{617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
||||
{617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Debug|x86.Build.0 = Debug|x86
|
||||
{617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
||||
{617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||
{617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Release|x86.ActiveCfg = Release|x86
|
||||
{617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Release|x86.Build.0 = Release|x86
|
||||
{8622EBC4-8E20-476E-B284-33D472081F5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{8622EBC4-8E20-476E-B284-33D472081F5C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{8622EBC4-8E20-476E-B284-33D472081F5C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{8622EBC4-8E20-476E-B284-33D472081F5C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{8622EBC4-8E20-476E-B284-33D472081F5C}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{8622EBC4-8E20-476E-B284-33D472081F5C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8622EBC4-8E20-476E-B284-33D472081F5C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{8622EBC4-8E20-476E-B284-33D472081F5C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{8622EBC4-8E20-476E-B284-33D472081F5C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{8622EBC4-8E20-476E-B284-33D472081F5C}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{BCBB72BD-0ECB-4FF2-8D91-E466361FB6F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BCBB72BD-0ECB-4FF2-8D91-E466361FB6F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BCBB72BD-0ECB-4FF2-8D91-E466361FB6F9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{BCBB72BD-0ECB-4FF2-8D91-E466361FB6F9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{BCBB72BD-0ECB-4FF2-8D91-E466361FB6F9}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{BCBB72BD-0ECB-4FF2-8D91-E466361FB6F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BCBB72BD-0ECB-4FF2-8D91-E466361FB6F9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BCBB72BD-0ECB-4FF2-8D91-E466361FB6F9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{BCBB72BD-0ECB-4FF2-8D91-E466361FB6F9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{BCBB72BD-0ECB-4FF2-8D91-E466361FB6F9}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{FE016EA3-DC31-4A92-8B0A-8C746EC117E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FE016EA3-DC31-4A92-8B0A-8C746EC117E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FE016EA3-DC31-4A92-8B0A-8C746EC117E1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{FE016EA3-DC31-4A92-8B0A-8C746EC117E1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{FE016EA3-DC31-4A92-8B0A-8C746EC117E1}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{FE016EA3-DC31-4A92-8B0A-8C746EC117E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FE016EA3-DC31-4A92-8B0A-8C746EC117E1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FE016EA3-DC31-4A92-8B0A-8C746EC117E1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{FE016EA3-DC31-4A92-8B0A-8C746EC117E1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{FE016EA3-DC31-4A92-8B0A-8C746EC117E1}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{369CFD53-3E65-4A9E-8BDD-4CCD78BF3E33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{369CFD53-3E65-4A9E-8BDD-4CCD78BF3E33}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{369CFD53-3E65-4A9E-8BDD-4CCD78BF3E33}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{369CFD53-3E65-4A9E-8BDD-4CCD78BF3E33}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{369CFD53-3E65-4A9E-8BDD-4CCD78BF3E33}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{369CFD53-3E65-4A9E-8BDD-4CCD78BF3E33}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{369CFD53-3E65-4A9E-8BDD-4CCD78BF3E33}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{369CFD53-3E65-4A9E-8BDD-4CCD78BF3E33}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{369CFD53-3E65-4A9E-8BDD-4CCD78BF3E33}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{369CFD53-3E65-4A9E-8BDD-4CCD78BF3E33}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{30A2F772-8EC1-425A-8D5D-36A0BE4D6B66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{30A2F772-8EC1-425A-8D5D-36A0BE4D6B66}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{30A2F772-8EC1-425A-8D5D-36A0BE4D6B66}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{30A2F772-8EC1-425A-8D5D-36A0BE4D6B66}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{30A2F772-8EC1-425A-8D5D-36A0BE4D6B66}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{30A2F772-8EC1-425A-8D5D-36A0BE4D6B66}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{30A2F772-8EC1-425A-8D5D-36A0BE4D6B66}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{30A2F772-8EC1-425A-8D5D-36A0BE4D6B66}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{30A2F772-8EC1-425A-8D5D-36A0BE4D6B66}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{30A2F772-8EC1-425A-8D5D-36A0BE4D6B66}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{3DC2C1F6-F332-4E55-BF6A-AED78A7C3FD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3DC2C1F6-F332-4E55-BF6A-AED78A7C3FD2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3DC2C1F6-F332-4E55-BF6A-AED78A7C3FD2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{3DC2C1F6-F332-4E55-BF6A-AED78A7C3FD2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{3DC2C1F6-F332-4E55-BF6A-AED78A7C3FD2}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{3DC2C1F6-F332-4E55-BF6A-AED78A7C3FD2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3DC2C1F6-F332-4E55-BF6A-AED78A7C3FD2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3DC2C1F6-F332-4E55-BF6A-AED78A7C3FD2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{3DC2C1F6-F332-4E55-BF6A-AED78A7C3FD2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{3DC2C1F6-F332-4E55-BF6A-AED78A7C3FD2}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{899E3DD6-EA65-4168-AAE3-867A4F9650A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{899E3DD6-EA65-4168-AAE3-867A4F9650A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{899E3DD6-EA65-4168-AAE3-867A4F9650A6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{899E3DD6-EA65-4168-AAE3-867A4F9650A6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{899E3DD6-EA65-4168-AAE3-867A4F9650A6}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{899E3DD6-EA65-4168-AAE3-867A4F9650A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{899E3DD6-EA65-4168-AAE3-867A4F9650A6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{899E3DD6-EA65-4168-AAE3-867A4F9650A6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{899E3DD6-EA65-4168-AAE3-867A4F9650A6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{899E3DD6-EA65-4168-AAE3-867A4F9650A6}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{19AEFD28-37E8-4FFD-B879-FEE57824689D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{19AEFD28-37E8-4FFD-B879-FEE57824689D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{19AEFD28-37E8-4FFD-B879-FEE57824689D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{19AEFD28-37E8-4FFD-B879-FEE57824689D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{19AEFD28-37E8-4FFD-B879-FEE57824689D}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{19AEFD28-37E8-4FFD-B879-FEE57824689D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{19AEFD28-37E8-4FFD-B879-FEE57824689D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{19AEFD28-37E8-4FFD-B879-FEE57824689D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{19AEFD28-37E8-4FFD-B879-FEE57824689D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{19AEFD28-37E8-4FFD-B879-FEE57824689D}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{76FD1306-9CA4-428F-993B-B7E4EEEACBF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{76FD1306-9CA4-428F-993B-B7E4EEEACBF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{76FD1306-9CA4-428F-993B-B7E4EEEACBF3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{76FD1306-9CA4-428F-993B-B7E4EEEACBF3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{76FD1306-9CA4-428F-993B-B7E4EEEACBF3}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{76FD1306-9CA4-428F-993B-B7E4EEEACBF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{76FD1306-9CA4-428F-993B-B7E4EEEACBF3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{76FD1306-9CA4-428F-993B-B7E4EEEACBF3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{76FD1306-9CA4-428F-993B-B7E4EEEACBF3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{76FD1306-9CA4-428F-993B-B7E4EEEACBF3}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{26095090-3F7D-4DB5-A9BF-4C687230FC0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{26095090-3F7D-4DB5-A9BF-4C687230FC0F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{26095090-3F7D-4DB5-A9BF-4C687230FC0F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{26095090-3F7D-4DB5-A9BF-4C687230FC0F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{26095090-3F7D-4DB5-A9BF-4C687230FC0F}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{26095090-3F7D-4DB5-A9BF-4C687230FC0F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{26095090-3F7D-4DB5-A9BF-4C687230FC0F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{26095090-3F7D-4DB5-A9BF-4C687230FC0F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{26095090-3F7D-4DB5-A9BF-4C687230FC0F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{26095090-3F7D-4DB5-A9BF-4C687230FC0F}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{118E40C4-323E-4B4B-8EF4-38EED6CC5E83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{118E40C4-323E-4B4B-8EF4-38EED6CC5E83}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{118E40C4-323E-4B4B-8EF4-38EED6CC5E83}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{118E40C4-323E-4B4B-8EF4-38EED6CC5E83}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{118E40C4-323E-4B4B-8EF4-38EED6CC5E83}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{118E40C4-323E-4B4B-8EF4-38EED6CC5E83}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{118E40C4-323E-4B4B-8EF4-38EED6CC5E83}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{118E40C4-323E-4B4B-8EF4-38EED6CC5E83}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{118E40C4-323E-4B4B-8EF4-38EED6CC5E83}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{118E40C4-323E-4B4B-8EF4-38EED6CC5E83}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{4250B20B-2DC9-432F-B0C2-BD20B80B4970}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4250B20B-2DC9-432F-B0C2-BD20B80B4970}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4250B20B-2DC9-432F-B0C2-BD20B80B4970}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{4250B20B-2DC9-432F-B0C2-BD20B80B4970}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{4250B20B-2DC9-432F-B0C2-BD20B80B4970}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{4250B20B-2DC9-432F-B0C2-BD20B80B4970}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4250B20B-2DC9-432F-B0C2-BD20B80B4970}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{4250B20B-2DC9-432F-B0C2-BD20B80B4970}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{4250B20B-2DC9-432F-B0C2-BD20B80B4970}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{4250B20B-2DC9-432F-B0C2-BD20B80B4970}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{D4D9C9A6-04A4-46AD-8238-2493A455723F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D4D9C9A6-04A4-46AD-8238-2493A455723F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D4D9C9A6-04A4-46AD-8238-2493A455723F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{D4D9C9A6-04A4-46AD-8238-2493A455723F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{D4D9C9A6-04A4-46AD-8238-2493A455723F}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{D4D9C9A6-04A4-46AD-8238-2493A455723F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D4D9C9A6-04A4-46AD-8238-2493A455723F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D4D9C9A6-04A4-46AD-8238-2493A455723F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{D4D9C9A6-04A4-46AD-8238-2493A455723F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{D4D9C9A6-04A4-46AD-8238-2493A455723F}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{62CFC025-B8CF-42AA-880A-92F27377FCAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{62CFC025-B8CF-42AA-880A-92F27377FCAF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{62CFC025-B8CF-42AA-880A-92F27377FCAF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{62CFC025-B8CF-42AA-880A-92F27377FCAF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{62CFC025-B8CF-42AA-880A-92F27377FCAF}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{62CFC025-B8CF-42AA-880A-92F27377FCAF}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{62CFC025-B8CF-42AA-880A-92F27377FCAF}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{62CFC025-B8CF-42AA-880A-92F27377FCAF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{62CFC025-B8CF-42AA-880A-92F27377FCAF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{62CFC025-B8CF-42AA-880A-92F27377FCAF}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{4FD9DB1D-76AA-48D1-8446-95376C4A2BC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4FD9DB1D-76AA-48D1-8446-95376C4A2BC2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4FD9DB1D-76AA-48D1-8446-95376C4A2BC2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{4FD9DB1D-76AA-48D1-8446-95376C4A2BC2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{4FD9DB1D-76AA-48D1-8446-95376C4A2BC2}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{4FD9DB1D-76AA-48D1-8446-95376C4A2BC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4FD9DB1D-76AA-48D1-8446-95376C4A2BC2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{4FD9DB1D-76AA-48D1-8446-95376C4A2BC2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{4FD9DB1D-76AA-48D1-8446-95376C4A2BC2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{4FD9DB1D-76AA-48D1-8446-95376C4A2BC2}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{10B9B771-9939-4D0B-8D47-501B6F60209F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{10B9B771-9939-4D0B-8D47-501B6F60209F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{10B9B771-9939-4D0B-8D47-501B6F60209F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{10B9B771-9939-4D0B-8D47-501B6F60209F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{10B9B771-9939-4D0B-8D47-501B6F60209F}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{10B9B771-9939-4D0B-8D47-501B6F60209F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{10B9B771-9939-4D0B-8D47-501B6F60209F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{10B9B771-9939-4D0B-8D47-501B6F60209F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{10B9B771-9939-4D0B-8D47-501B6F60209F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{10B9B771-9939-4D0B-8D47-501B6F60209F}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{FEC4EAD0-8A6E-4029-A537-EBD9F420B227}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FEC4EAD0-8A6E-4029-A537-EBD9F420B227}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FEC4EAD0-8A6E-4029-A537-EBD9F420B227}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{FEC4EAD0-8A6E-4029-A537-EBD9F420B227}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{FEC4EAD0-8A6E-4029-A537-EBD9F420B227}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{FEC4EAD0-8A6E-4029-A537-EBD9F420B227}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FEC4EAD0-8A6E-4029-A537-EBD9F420B227}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FEC4EAD0-8A6E-4029-A537-EBD9F420B227}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{FEC4EAD0-8A6E-4029-A537-EBD9F420B227}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{FEC4EAD0-8A6E-4029-A537-EBD9F420B227}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{828C6BB6-3543-4EAF-B0F9-F11410AE8836}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{828C6BB6-3543-4EAF-B0F9-F11410AE8836}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{828C6BB6-3543-4EAF-B0F9-F11410AE8836}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{828C6BB6-3543-4EAF-B0F9-F11410AE8836}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{828C6BB6-3543-4EAF-B0F9-F11410AE8836}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{828C6BB6-3543-4EAF-B0F9-F11410AE8836}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{828C6BB6-3543-4EAF-B0F9-F11410AE8836}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{828C6BB6-3543-4EAF-B0F9-F11410AE8836}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{828C6BB6-3543-4EAF-B0F9-F11410AE8836}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{828C6BB6-3543-4EAF-B0F9-F11410AE8836}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{1C24F4F8-9D94-4783-B5C0-11564D70B76A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1C24F4F8-9D94-4783-B5C0-11564D70B76A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1C24F4F8-9D94-4783-B5C0-11564D70B76A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{1C24F4F8-9D94-4783-B5C0-11564D70B76A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{1C24F4F8-9D94-4783-B5C0-11564D70B76A}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{1C24F4F8-9D94-4783-B5C0-11564D70B76A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1C24F4F8-9D94-4783-B5C0-11564D70B76A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1C24F4F8-9D94-4783-B5C0-11564D70B76A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{1C24F4F8-9D94-4783-B5C0-11564D70B76A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{1C24F4F8-9D94-4783-B5C0-11564D70B76A}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{D3BBDA07-5088-454E-A16D-DA24D8D88037}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D3BBDA07-5088-454E-A16D-DA24D8D88037}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D3BBDA07-5088-454E-A16D-DA24D8D88037}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{D3BBDA07-5088-454E-A16D-DA24D8D88037}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{D3BBDA07-5088-454E-A16D-DA24D8D88037}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{D3BBDA07-5088-454E-A16D-DA24D8D88037}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D3BBDA07-5088-454E-A16D-DA24D8D88037}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D3BBDA07-5088-454E-A16D-DA24D8D88037}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{D3BBDA07-5088-454E-A16D-DA24D8D88037}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{D3BBDA07-5088-454E-A16D-DA24D8D88037}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{FFC91B24-39AF-49AC-9A3A-900FBE1012ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FFC91B24-39AF-49AC-9A3A-900FBE1012ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FFC91B24-39AF-49AC-9A3A-900FBE1012ED}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{FFC91B24-39AF-49AC-9A3A-900FBE1012ED}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{FFC91B24-39AF-49AC-9A3A-900FBE1012ED}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{FFC91B24-39AF-49AC-9A3A-900FBE1012ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FFC91B24-39AF-49AC-9A3A-900FBE1012ED}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FFC91B24-39AF-49AC-9A3A-900FBE1012ED}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{FFC91B24-39AF-49AC-9A3A-900FBE1012ED}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{FFC91B24-39AF-49AC-9A3A-900FBE1012ED}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{FD6B879E-46B0-47BE-860E-BF0C11135590}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FD6B879E-46B0-47BE-860E-BF0C11135590}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FD6B879E-46B0-47BE-860E-BF0C11135590}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{FD6B879E-46B0-47BE-860E-BF0C11135590}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{FD6B879E-46B0-47BE-860E-BF0C11135590}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{FD6B879E-46B0-47BE-860E-BF0C11135590}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FD6B879E-46B0-47BE-860E-BF0C11135590}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FD6B879E-46B0-47BE-860E-BF0C11135590}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{FD6B879E-46B0-47BE-860E-BF0C11135590}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{FD6B879E-46B0-47BE-860E-BF0C11135590}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{41DBA506-177E-4B2D-8E6D-738E371326A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{41DBA506-177E-4B2D-8E6D-738E371326A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{41DBA506-177E-4B2D-8E6D-738E371326A1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{41DBA506-177E-4B2D-8E6D-738E371326A1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{41DBA506-177E-4B2D-8E6D-738E371326A1}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{41DBA506-177E-4B2D-8E6D-738E371326A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{41DBA506-177E-4B2D-8E6D-738E371326A1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{41DBA506-177E-4B2D-8E6D-738E371326A1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{41DBA506-177E-4B2D-8E6D-738E371326A1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{41DBA506-177E-4B2D-8E6D-738E371326A1}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{BED1EEAF-9ADD-46F6-92D0-53957858E25B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BED1EEAF-9ADD-46F6-92D0-53957858E25B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BED1EEAF-9ADD-46F6-92D0-53957858E25B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{BED1EEAF-9ADD-46F6-92D0-53957858E25B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{BED1EEAF-9ADD-46F6-92D0-53957858E25B}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{BED1EEAF-9ADD-46F6-92D0-53957858E25B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BED1EEAF-9ADD-46F6-92D0-53957858E25B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BED1EEAF-9ADD-46F6-92D0-53957858E25B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{BED1EEAF-9ADD-46F6-92D0-53957858E25B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{BED1EEAF-9ADD-46F6-92D0-53957858E25B}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{D8E59ADD-B591-49AF-B18E-6E0D4581700C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D8E59ADD-B591-49AF-B18E-6E0D4581700C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D8E59ADD-B591-49AF-B18E-6E0D4581700C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{D8E59ADD-B591-49AF-B18E-6E0D4581700C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{D8E59ADD-B591-49AF-B18E-6E0D4581700C}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{D8E59ADD-B591-49AF-B18E-6E0D4581700C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D8E59ADD-B591-49AF-B18E-6E0D4581700C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D8E59ADD-B591-49AF-B18E-6E0D4581700C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{D8E59ADD-B591-49AF-B18E-6E0D4581700C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{D8E59ADD-B591-49AF-B18E-6E0D4581700C}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{E6C9A73D-4556-4220-9BC7-302A7EE64C1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E6C9A73D-4556-4220-9BC7-302A7EE64C1A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E6C9A73D-4556-4220-9BC7-302A7EE64C1A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{E6C9A73D-4556-4220-9BC7-302A7EE64C1A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{E6C9A73D-4556-4220-9BC7-302A7EE64C1A}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{E6C9A73D-4556-4220-9BC7-302A7EE64C1A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E6C9A73D-4556-4220-9BC7-302A7EE64C1A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E6C9A73D-4556-4220-9BC7-302A7EE64C1A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{E6C9A73D-4556-4220-9BC7-302A7EE64C1A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{E6C9A73D-4556-4220-9BC7-302A7EE64C1A}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{9B5ABDC3-ADF7-42B7-ADE9-8DC715310492}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9B5ABDC3-ADF7-42B7-ADE9-8DC715310492}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9B5ABDC3-ADF7-42B7-ADE9-8DC715310492}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{9B5ABDC3-ADF7-42B7-ADE9-8DC715310492}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{9B5ABDC3-ADF7-42B7-ADE9-8DC715310492}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{9B5ABDC3-ADF7-42B7-ADE9-8DC715310492}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9B5ABDC3-ADF7-42B7-ADE9-8DC715310492}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{9B5ABDC3-ADF7-42B7-ADE9-8DC715310492}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{9B5ABDC3-ADF7-42B7-ADE9-8DC715310492}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{9B5ABDC3-ADF7-42B7-ADE9-8DC715310492}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{ED627DF7-3E78-4428-AB31-810BA1586E62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{ED627DF7-3E78-4428-AB31-810BA1586E62}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{ED627DF7-3E78-4428-AB31-810BA1586E62}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{ED627DF7-3E78-4428-AB31-810BA1586E62}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{ED627DF7-3E78-4428-AB31-810BA1586E62}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{ED627DF7-3E78-4428-AB31-810BA1586E62}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{ED627DF7-3E78-4428-AB31-810BA1586E62}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{ED627DF7-3E78-4428-AB31-810BA1586E62}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{ED627DF7-3E78-4428-AB31-810BA1586E62}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{ED627DF7-3E78-4428-AB31-810BA1586E62}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{DF96F24E-FED9-4BAC-8389-63590125DC61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{DF96F24E-FED9-4BAC-8389-63590125DC61}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DF96F24E-FED9-4BAC-8389-63590125DC61}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DF96F24E-FED9-4BAC-8389-63590125DC61}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{049A3447-14AF-4CAE-BE0E-1C42DD1AB1CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{049A3447-14AF-4CAE-BE0E-1C42DD1AB1CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{049A3447-14AF-4CAE-BE0E-1C42DD1AB1CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{049A3447-14AF-4CAE-BE0E-1C42DD1AB1CB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
@ -523,6 +301,7 @@ Global
|
||||
{BED1EEAF-9ADD-46F6-92D0-53957858E25B} = {71CFF024-26F7-4626-A526-B435FDF8D64E}
|
||||
{9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D} = {71CFF024-26F7-4626-A526-B435FDF8D64E}
|
||||
{E6C9A73D-4556-4220-9BC7-302A7EE64C1A} = {71CFF024-26F7-4626-A526-B435FDF8D64E}
|
||||
{DF96F24E-FED9-4BAC-8389-63590125DC61} = {71CFF024-26F7-4626-A526-B435FDF8D64E}
|
||||
{FE016EA3-DC31-4A92-8B0A-8C746EC117E1} = {46041F27-7C1C-4209-B72B-251EDB5D4C61}
|
||||
{ED627DF7-3E78-4428-AB31-810BA1586E62} = {46041F27-7C1C-4209-B72B-251EDB5D4C61}
|
||||
{C1F34183-7A2F-41A6-9958-F6F329099654} = {A846CA33-9CAA-4237-B14F-8721DBA89442}
|
||||
@ -536,6 +315,7 @@ Global
|
||||
{4250B20B-2DC9-432F-B0C2-BD20B80B4970} = {D3CE7A47-3989-4B6D-9867-0EA3C8DD7AB1}
|
||||
{D8E59ADD-B591-49AF-B18E-6E0D4581700C} = {D3CE7A47-3989-4B6D-9867-0EA3C8DD7AB1}
|
||||
{9B5ABDC3-ADF7-42B7-ADE9-8DC715310492} = {D3CE7A47-3989-4B6D-9867-0EA3C8DD7AB1}
|
||||
{049A3447-14AF-4CAE-BE0E-1C42DD1AB1CB} = {D3CE7A47-3989-4B6D-9867-0EA3C8DD7AB1}
|
||||
{118E40C4-323E-4B4B-8EF4-38EED6CC5E83} = {54990D5E-CE09-459F-916E-AF13101765B4}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user