public static ReadableTuple <int> GetTuple(DbDebugItemBase debug, int tItemId) { if (_itemDb == null) { _itemDb = SdeEditor.Instance.ProjectDatabase.GetMetaTable <int>(ServerDbs.Items); } return(_itemDb.TryGetTuple(tItemId)); }
public static int AegisNameToId(DbDebugItemBase debug, object referenceId, string aegisName) { if (_reverseTable.Count == 0) { int index = ServerItemAttributes.AegisName.Index; _itemDb = SdeEditor.Instance.ProjectDatabase.GetMetaTable <int>(ServerDbs.Items); var items = _itemDb.FastItems; foreach (var item in items) { _reverseTable[item.GetStringValue(index)] = item.GetKey <int>(); _reverseTableSub[(item.GetStringValue(index + 1) ?? "").Replace(" ", "_")] = item.GetKey <int>(); } } int result; if (Int32.TryParse(aegisName, out result)) { return(result); } if (_reverseTable.TryGetValue(aegisName, out result)) { return(result); } if (_reverseTableSub.TryGetValue(aegisName, out result)) { var tuple = GetTuple(debug, result); var expectedAegisName = tuple == null ? "#INVALID" : tuple.GetValue <string>(ServerItemAttributes.AegisName); if (debug != null) { debug.ReportIdException("The AegisName '" + aegisName + "' hasn't been directly found and its value may be incorrect. The expected value should be '" + expectedAegisName + "'.", referenceId, ErrorLevel.Warning); } return(result); } if (debug != null) { debug.ReportIdException("The AegisName '" + aegisName + "' couldn't be parsed to its ID because it doesn't exist.", referenceId, ErrorLevel.Critical); } return(0); }