using System.IO; namespace NIFLib.Core { public class NiRef where T : NiObject { public T Object { get; private set; } public uint RefId { get; } public NiRef(uint refId) { RefId = refId; } public NiRef(BinaryReader reader) : this(reader.ReadUInt32()) { } public bool IsValid() => RefId != 0xFFFFFFFF; public void SetRef(NiFile file) { if (!IsValid()) return; Object = (T) file.ObjectsByRef[RefId]; } } }