コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 public override object Read(XnbReaderManager xnbReaderManager, XnbStreamReader xnbStreamReader)
 {
     return(xnbStreamReader.ReadInt32());
 }