Exemplo n.º 1
0
        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());
                }
            }
        }
Exemplo n.º 2
0
 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());
 }