Пример #1
0
 private void SetListenersState(UnityEventCallState state)
 {
     for (int i = 0; i < button.onClick.GetPersistentEventCount(); i++)
     {
         button.onClick.SetPersistentListenerState(i, state);
     }
 }
Пример #2
0
		internal void AddPersistentListener(UnityAction call, UnityEventCallState callState)
		{
			int persistentEventCount = base.GetPersistentEventCount();
			base.AddPersistentListener();
			this.RegisterPersistentListener(persistentEventCount, call);
			base.SetPersistentListenerState(persistentEventCount, callState);
		}
Пример #3
0
        internal void AddPersistentListener(UnityAction <T0> call, UnityEventCallState callState)
        {
            int persistentEventCount = base.GetPersistentEventCount();

            base.AddPersistentListener();
            this.RegisterPersistentListener(persistentEventCount, call);
            base.SetPersistentListenerState(persistentEventCount, callState);
        }
Пример #4
0
        internal void AddPersistentListener(UnityAction <T0, T1, T2, T3> call, UnityEventCallState callState)
        {
            var count = GetPersistentEventCount();

            AddPersistentListener();
            RegisterPersistentListener(count, call);
            SetPersistentListenerState(count, callState);
        }
Пример #5
0
        internal void AddPersistentListener(UnityAction call, UnityEventCallState callState)
        {
            int persistentEventCount = GetPersistentEventCount();

            AddPersistentListener();
            RegisterPersistentListener(persistentEventCount, call);
            SetPersistentListenerState(persistentEventCount, callState);
        }
Пример #6
0
 public ButtonAttribute(string text = "", AColor color = AColor.None,
                        UnityEventCallState whenCanPress = UnityEventCallState.EditorAndRuntime,
                        UISize size = UISize.SoSmall)
     : base(color)
 {
     Height       = (int)size;
     Text         = text ?? throw new ArgumentNullException(nameof(text));
     WhenCanPress = whenCanPress;
 }
Пример #7
0
        public void SetPersistentListenerState(int index, UnityEventCallState state)
        {
            PersistentCall listener = m_PersistentCalls.GetListener(index);

            if (listener != null)
            {
                listener.callState = state;
            }
            DirtyPersistentCalls();
        }
    private static int SetPersistentListenerState(IntPtr L)
    {
        LuaScriptMgr.CheckArgsCount(L, 3);
        UnityEventBase      unityEventBase = (UnityEventBase)LuaScriptMgr.GetNetObjectSelf(L, 1, "UnityEngine.Events.UnityEventBase");
        int                 index          = (int)LuaScriptMgr.GetNumber(L, 2);
        UnityEventCallState state          = (UnityEventCallState)((int)LuaScriptMgr.GetNetObject(L, 3, typeof(UnityEventCallState)));

        unityEventBase.SetPersistentListenerState(index, state);
        return(0);
    }
Пример #9
0
        internal static bool CheckUnityEventHasActivePersistentListener(SerializedProperty unityEvent)
        {
            if (unityEvent == null)
            {
                return(false);
            }

            SerializedProperty calls = unityEvent.FindPropertyRelative("m_PersistentCalls.m_Calls");

            if (calls == null)
            {
                Debug.LogError(LOG_PREFIX + " Can't find Unity Event calls! Please report to " + REPORT_EMAIL);
                return(false);
            }
            if (!calls.isArray)
            {
                Debug.LogError(LOG_PREFIX + " Looks like Unity Event calls are not array anymore! Please report to " + REPORT_EMAIL);
                return(false);
            }

            bool result = false;

            int callsCount = calls.arraySize;

            for (int i = 0; i < callsCount; i++)
            {
                SerializedProperty call = calls.GetArrayElementAtIndex(i);

                SerializedProperty targetProperty     = call.FindPropertyRelative("m_Target");
                SerializedProperty methodNameProperty = call.FindPropertyRelative("m_MethodName");
                SerializedProperty callStateProperty  = call.FindPropertyRelative("m_CallState");

                if (targetProperty != null && methodNameProperty != null && callStateProperty != null &&
                    targetProperty.propertyType == SerializedPropertyType.ObjectReference &&
                    methodNameProperty.propertyType == SerializedPropertyType.String &&
                    callStateProperty.propertyType == SerializedPropertyType.Enum)
                {
                    Object target                 = targetProperty.objectReferenceValue;
                    string methodName             = methodNameProperty.stringValue;
                    UnityEventCallState callState = (UnityEventCallState)callStateProperty.enumValueIndex;

                    if (target != null && !string.IsNullOrEmpty(methodName) && callState != UnityEventCallState.Off)
                    {
                        result = true;
                        break;
                    }
                }
                else
                {
                    Debug.LogError(LOG_PREFIX + " Can't parse Unity Event call! Please report to " + REPORT_EMAIL);
                }
            }
            return(result);
        }
    /// <summary>
    /// Adds a persistent listener. Beware this is a hack using reflection.
    /// </summary>
    public void AddPersistentListener(UnityAction <T, U, V, X> action, UnityEventCallState state = UnityEventCallState.RuntimeOnly)
    {
        if (!UnityEventReflection.TryAccessPersistentCalls(this, ref _persistentCallsObject))
        {
            return;
        }
        int index = GetPersistentEventCount();

        UnityEventReflection.AddPersistentListner(_persistentCallsObject, index, action.Target as UnityEngine.Object, action.Method);
        SetPersistentListenerState(index, state);
    }
        public void SetPersistentListenerState(int index, UnityEventCallState state)
        {
            PersistentCall listener = this.m_PersistentCalls.GetListener(index);
            bool           flag     = listener != null;

            if (flag)
            {
                listener.callState = state;
            }
            this.DirtyPersistentCalls();
        }
Пример #12
0
        public void ReadFrom(object obj)
        {
            if (obj == null)
            {
                m_Arguments  = default(PersistentArgumentCache);
                m_CallState  = default(UnityEventCallState);
                m_MethodName = null;
                m_Mode       = default(PersistentListenerMode);
                m_Target     = 0;
                return;
            }

            Initialize(obj.GetType());
            m_Arguments = new PersistentArgumentCache();
            m_Arguments.ReadFrom(m_argumentsFieldInfo.GetValue(obj));
            m_CallState  = (UnityEventCallState)m_callStatFieldInfo.GetValue(obj);
            m_MethodName = (string)m_methodNameFieldInfo.GetValue(obj);
            m_Mode       = (PersistentListenerMode)m_modeFieldInfo.GetValue(obj);
            UnityObject target = (UnityObject)m_targetFieldInfo.GetValue(obj);

            m_Target = target.GetMappedInstanceID();
        }
        protected override void ReadFromImpl(object obj)
        {
            base.ReadFromImpl(obj);
            if (obj == null)
            {
                m_Arguments  = default(PersistentArgumentCache);
                m_CallState  = default(UnityEventCallState);
                m_MethodName = null;
                m_Mode       = default(PersistentListenerMode);
                m_Target     = 0;
                return;
            }

            Initialize(obj.GetType());
            m_Arguments = new PersistentArgumentCache();
            m_Arguments.ReadFrom(m_argumentsFieldInfo.GetValue(obj));
            m_CallState  = (UnityEventCallState)m_callStatFieldInfo.GetValue(obj);
            m_MethodName = (string)m_methodNameFieldInfo.GetValue(obj);
            m_Mode       = (PersistentListenerMode)m_modeFieldInfo.GetValue(obj);
            UnityObject target = (UnityObject)m_targetFieldInfo.GetValue(obj);

            m_Target = ToID(target);
        }
Пример #14
0
        internal void AddPersistentListener(UnityAction <T0, T1, T2, T3, T4, T5, T6, T7, T8> call, UnityEventCallState callState)
        {
            int persistentEventCount = GetPersistentEventCount();

            AddPersistentListener();
            RegisterPersistentListener(persistentEventCount, call);
            SetPersistentListenerState(persistentEventCount, callState);
        }
Пример #15
0
 public ButtonAttribute(UnityEventCallState whenCanPut, string text = "")
     : this(text, AColor.None, whenCanPut)
 {
 }