83 lines
2.9 KiB
C#

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() + ")";
}
}
}