public Record GetRecordByID(uint id)
{
uint pluginid = (id & 0xff000000) >> 24;
if (pluginid > this.Masters.Length)
{
return null;
}
Record r;
// first check self for exact match
if (this.TryGetRecordByID(id, out r))
{
return r;
}
id &= 0xffffff;
if (pluginid >= this.Masters.Length || this.Masters[pluginid] == null)
{
return null;
}
// find the reference master and search it for reference
// TODO: in theory another master could override the first master
id += this.Fixups[pluginid] << 24;
if (this.Masters[pluginid].TryGetRecordByID(id, out r))
{
return r;
}
return null;
}