private long GetNewPropEntityId(Prop prop)
{
var regionId = this.Id;
var areaId = this.GetAreaId((int)prop.Info.X, (int)prop.Info.Y);
var propId = 0;
lock (_propIds)
{
if (!_propIds.ContainsKey(areaId))
_propIds[areaId] = 1;
propId = _propIds[areaId]++;
if (propId >= ushort.MaxValue)
throw new Exception("Max prop id reached in region '" + regionId + "', area '" + areaId + "'.");
}
var result = MabiId.ServerProps;
result |= (long)regionId << 32;
result |= (long)areaId << 16;
result |= (ushort)propId;
return result;
}