Пример #1
0
        public virtual void OnEnable()
        {
            if (state.enabled || state.requireStarter ||
                state.requireActorParent)
            {
                return;
            }

            state.released = false;
            state.enabled  = true;


            if (ProcessingSignals.TryAddToGlobal(this))
            {
                if (signals == null)
                {
                    signals = new ProcessingSignals();
                }

                signals.Add(this);
            }


            ProcessingUpdate.Default.Add(this);

            HandleEnable();
        }
Пример #2
0
        public static bool TryAddToGlobal(object obj)
        {
            var reciever = obj as IRecieve;

            if (reciever == null)
            {
                return(false);
            }
            var all       = obj.GetType().GetInterfaces();
            var hasLocals = false;

            foreach (var intType in all)
            {
                if (intType.IsGenericType && intType.GetGenericTypeDefinition() == typeof(IReceive <>))
                {
                    Default.Add(reciever, intType.GetGenericArguments()[0]);
                }


                if (!hasLocals && intType.IsGenericType && intType.GetGenericTypeDefinition() == typeof(IReceiveLocal <>))
                {
                    hasLocals = true;
                }
            }

            return(hasLocals);
        }
        public void Add(object obj)
        {
            var reciever = obj as IRecieve;

            if (reciever == null)
            {
                return;
            }

            var all = obj.GetType().GetInterfaces();

            foreach (var intType in all)
            {
                if (intType.IsGenericType && intType.GetGenericTypeDefinition() == typeof(IReceiveGlobal <>))
                {
                    Default.Add(reciever, intType.GetGenericArguments()[0]);
                }
                else if (intType.IsGenericType && intType.GetGenericTypeDefinition() == typeof(IReceive <>))
                {
                    Add(reciever, intType.GetGenericArguments()[0]);
                }
            }
        }
Пример #4
0
 public void SignalAdd <T>(IRecieve recieve)
 {
     signals.Add <T>(recieve);
 }