internal unsafe TwoDimArray(C2DA array) { if (array == null) { throw new ArgumentNullException(nameof(array)); } RowCount = array.m_nNumRows; ColumnCount = array.m_nNumColumns; CExoStringArray columnArray = CExoStringArray.FromPointer(array.m_pColumnLabel); Columns = new string[array.m_nNumColumns]; for (int i = 0; i < array.m_nNumColumns; i++) { string columnName = columnArray.GetItem(i).ToString(); Columns[i] = columnName; } arrayData = new string[RowCount, ColumnCount]; for (int i = 0; i < RowCount; i++) { for (int j = 0; j < ColumnCount; j++) { CExoStringData data = ((CExoStringData **)array.m_pArrayData)[i][j]; arrayData[i, j] = data.ToString(); } } }
private uint OnAIActionRest(void *pCreature, void *pNode) { CNWSCreature creature = CNWSCreature.FromPointer(pCreature); NwCreature? nwCreature = creature.ToNwObject <NwCreature>(); if (nwCreature != null && restDurationOverrides.TryGetValue(nwCreature, out int durationOverride)) { byte creatureLevel = creature.m_pStats.GetLevel(0); int originalValue; C2DA durationTable = NWNXLib.Rules().m_p2DArrays.m_pRestDurationTable; durationTable.GetINTEntry(creatureLevel, DurationTableKey, &originalValue); durationTable.SetINTEntry(creatureLevel, DurationTableKey, durationOverride); uint retVal = aiActionRestHook.CallOriginal(pCreature, pNode); durationTable.SetINTEntry(creatureLevel, DurationTableKey, originalValue); return(retVal); } return(aiActionRestHook.CallOriginal(pCreature, pNode)); }
internal TwoDimArray(C2DA array) : base(array) { cachedRows = new T[RowCount]; }
internal static TwoDimArray <T> GetTable <T>(C2DA twoDimArray) where T : class, ITwoDimArrayEntry, new() { TwoDimArray <T> retVal = new TwoDimArray <T>(twoDimArray); return(retVal); }