forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			71 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using FishNet.Connection;
 | 
						|
using FishNet.Serializing;
 | 
						|
using MonoFN.Cecil;
 | 
						|
using System;
 | 
						|
using System.Reflection;
 | 
						|
 | 
						|
namespace FishNet.CodeGenerating.Helping
 | 
						|
{
 | 
						|
    internal class ReaderImports : CodegenBase
 | 
						|
    {
 | 
						|
        #region Reflection references.
 | 
						|
        public TypeReference PooledReader_TypeRef;
 | 
						|
        public TypeReference Reader_TypeRef;
 | 
						|
        public TypeReference NetworkConnection_TypeRef;
 | 
						|
        public MethodReference PooledReader_ReadNetworkBehaviour_MethodRef;
 | 
						|
        public MethodReference Reader_ReadPackedWhole_MethodRef;
 | 
						|
        public MethodReference Reader_ReadDictionary_MethodRef;
 | 
						|
        public MethodReference Reader_ReadList_MethodRef;
 | 
						|
        public MethodReference Reader_ReadListCache_MethodRef;
 | 
						|
        public MethodReference Reader_ReadArray_MethodRef;
 | 
						|
        public TypeReference GenericReaderTypeRef;
 | 
						|
        public TypeReference ReaderTypeRef;
 | 
						|
        public MethodReference ReadSetMethodRef;
 | 
						|
        public MethodReference ReadAutoPackSetMethodRef;
 | 
						|
        #endregion
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Imports references needed by this helper.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="moduleDef"></param>
 | 
						|
        /// <returns></returns>
 | 
						|
        public override bool ImportReferences()
 | 
						|
        {
 | 
						|
            ReaderProcessor rp = base.GetClass<ReaderProcessor>();
 | 
						|
 | 
						|
            PooledReader_TypeRef = base.ImportReference(typeof(PooledReader));
 | 
						|
            Reader_TypeRef = base.ImportReference(typeof(Reader));
 | 
						|
            NetworkConnection_TypeRef = base.ImportReference(typeof(NetworkConnection));
 | 
						|
 | 
						|
            GenericReaderTypeRef = base.ImportReference(typeof(GenericReader<>));
 | 
						|
            ReaderTypeRef = base.ImportReference(typeof(Reader));
 | 
						|
 | 
						|
            System.Reflection.PropertyInfo readPropertyInfo;
 | 
						|
            readPropertyInfo = typeof(GenericReader<>).GetProperty(nameof(GenericReader<int>.Read));
 | 
						|
            ReadSetMethodRef = base.ImportReference(readPropertyInfo.GetSetMethod());
 | 
						|
            readPropertyInfo = typeof(GenericReader<>).GetProperty(nameof(GenericReader<int>.ReadAutoPack));
 | 
						|
            ReadAutoPackSetMethodRef = base.ImportReference(readPropertyInfo.GetSetMethod());
 | 
						|
 | 
						|
 | 
						|
            Type pooledReaderType = typeof(PooledReader);
 | 
						|
            foreach (MethodInfo methodInfo in pooledReaderType.GetMethods())
 | 
						|
            {
 | 
						|
                int parameterCount = methodInfo.GetParameters().Length;
 | 
						|
                /* Special methods. */
 | 
						|
                if (methodInfo.Name == nameof(PooledReader.ReadPackedWhole))
 | 
						|
                    Reader_ReadPackedWhole_MethodRef = base.ImportReference(methodInfo);
 | 
						|
                //Relay readers.
 | 
						|
                else if (parameterCount == 0 && methodInfo.Name == nameof(PooledReader.ReadDictionary))
 | 
						|
                    Reader_ReadDictionary_MethodRef = base.ImportReference(methodInfo);
 | 
						|
                else if (parameterCount == 0 && methodInfo.Name == nameof(PooledReader.ReadListAllocated))
 | 
						|
                    Reader_ReadList_MethodRef = base.ImportReference(methodInfo);
 | 
						|
                else if (parameterCount == 0 && methodInfo.Name == nameof(PooledReader.ReadListCacheAllocated))
 | 
						|
                    Reader_ReadListCache_MethodRef = base.ImportReference(methodInfo);
 | 
						|
                else if (parameterCount == 0 && methodInfo.Name == nameof(PooledReader.ReadArrayAllocated))
 | 
						|
                    Reader_ReadArray_MethodRef = base.ImportReference(methodInfo);
 | 
						|
            }
 | 
						|
             
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |