public override object Read(XnbReaderManager xnbReaderManager, XnbStreamReader xnbStreamReader) { var dictionary = new Dictionary <TKeyType, TValueType>(); int count = xnbStreamReader.ReadInt32(); for (var i = 0; i < count; i++) { var xnbKeyTypeReader = GetXnbTypeReader <TKeyType>(xnbReaderManager, xnbStreamReader); var key = (TKeyType)xnbKeyTypeReader.Read(xnbReaderManager, xnbStreamReader); var xnbValueTypeReader = GetXnbTypeReader <TValueType>(xnbReaderManager, xnbStreamReader); var value = (TValueType)xnbValueTypeReader.Read(xnbReaderManager, xnbStreamReader); dictionary.Add(key, value); } return(dictionary); }
private static XnbTypeReader GetXnbTypeReader <TTargetType>(XnbReaderManager xnbReaderManager, XnbStreamReader xnbStreamReader) { XnbTypeReader xnbTypeReader; if (typeof(TTargetType).IsValueType) { xnbTypeReader = xnbReaderManager.GetOrAddXnbTypeReaderFromTargetType <TTargetType>().reader; } else { int keyReaderIndex = xnbStreamReader.Read7BitEncodedInt(); xnbTypeReader = xnbReaderManager.XnbReaderFromIndex(keyReaderIndex); } return(xnbTypeReader); }
public override object Read(XnbReaderManager xnbReaderManager, XnbStreamReader xnbStreamReader) { return(xnbStreamReader.ReadInt32()); }