private IEnumerator Start() { var methodsInfos = new SortedSet <MethodInfo>(new MethodComparer()); foreach (Assembly assembly in RpcAttribute.ValidAssemblies) { foreach (Type type in assembly.GetTypes()) { if (typeof(IRpcInvokeable).IsAssignableFrom(type)) { foreach (MethodInfo methodInfo in type.GetMethods()) { if (methodInfo.GetCustomAttributes(typeof(RpcAttribute), false).Length > 0) { methodsInfos.Add(methodInfo); } } } yield return(new WaitForFixedUpdate()); } } if (methodsInfos.Count > 0) { RpcInfos = new BijectMap <int, MethodInfo>(); int counter = 0; foreach (MethodInfo methodsInfo in methodsInfos) { RpcInfos.Add(counter++, methodsInfo); yield return(new WaitForFixedUpdate()); } } }
private SyncCenter() { GameObjectToSyncedComponents = new ConcurrentDictionary <GameObject, List <Component> >(); SyncedObjectBufferSize = new ConcurrentDictionary <GameObject, int>(); ClientID2GameObjects = new ConcurrentDictionary <int, List <GameObject> >(); GameObject2ClientsID = new ConcurrentDictionary <GameObject, int>(); componentsForSync = new ConcurrentStack <byte[]>(); NetworkedGameObjects = new BijectMap <int, GameObject>(); NetworkViews = new BijectMap <int, NetworkView>(); IDSyncedComponent = new BijectMap <int, Component>(); random = new Random(GetHashCode()); }