Exemple #1
0
    public void RemoveListener(ListenTransformChangeEventEnum _eventEnum, Action <Transform> action)
    {
        if (action == null)
        {
            Debug.LogError("RemoveListener Fail.. action is null");
            return;
        }
        int hashCode = action.GetHashCode();

        Debug.Log("UnRegist Success " + _eventEnum);

        if (ListenPositionChange)
        {
            if (IsListenLocalTransPosition)
            {
                _eventEnum = ListenTransformChangeEventEnum.LocalPosition;
            }
            else
            {
                _eventEnum = ListenTransformChangeEventEnum.WorldPosition;
            }
        }//强制设置类型

        switch (_eventEnum)
        {
        case ListenTransformChangeEventEnum.LocalPosition:
            #region LocalPosition

            if (m_OnLocalPositionChangeEventRecordDic.ContainsKey(hashCode) == false)
            {
                Debug.LogError("Not Register Event" + _eventEnum);
                return;
            }
            m_OnLocalPositionChangeEventRecordDic.Remove(hashCode);
            OnLocalPositionChangeEvent -= action;
            break;

            #endregion
        case ListenTransformChangeEventEnum.WorldPosition:
            #region WorldPosition

            if (m_OnWorldPositionChangeEventRecordDic.ContainsKey(hashCode) == false)
            {
                Debug.LogError("Not Register  Event" + _eventEnum);
                return;
            }
            m_OnWorldPositionChangeEventRecordDic.Remove(hashCode);
            OnWorldPositionChangeEvent -= action;
            break;

            #endregion
        case ListenTransformChangeEventEnum.Sacle:
            #region Scale

            if (m_OnScaleChangeEventRecordDic.ContainsKey(hashCode) == false)
            {
                Debug.LogError("Not Register Event" + _eventEnum);
                return;
            }
            m_OnScaleChangeEventRecordDic.Remove(hashCode);
            OnScaleChangeEvent -= action;
            break;

            #endregion
        case ListenTransformChangeEventEnum.Rotation:
            #region Rotation

            if (m_OnRotationChangeEventRecordDic.ContainsKey(hashCode) == false)
            {
                Debug.LogError("Not Register Event" + _eventEnum);
                return;
            }
            m_OnRotationChangeEventRecordDic.Remove(hashCode);
            OnRotationChangeEvent -= action;
            break;
            #endregion
        }
    }
Exemple #2
0
    public void AddEventListenner(ListenTransformChangeEventEnum _eventEnum, Action <Transform> action)
    {
        if (action == null)
        {
            Debug.LogError("AddEventListenner Fail.. action is null");
            return;
        }
        int hashCode = action.GetHashCode();

        Debug.Log("Register Success " + _eventEnum);

        if (ListenPositionChange)
        {
            if (IsListenLocalTransPosition)
            {
                _eventEnum = ListenTransformChangeEventEnum.LocalPosition;
            }
            else
            {
                _eventEnum = ListenTransformChangeEventEnum.WorldPosition;
            }
        }//强制设置类型

        switch (_eventEnum)
        {
        case ListenTransformChangeEventEnum.LocalPosition:
            #region LocalPosition
            if (m_OnLocalPositionChangeEventRecordDic.ContainsKey(hashCode))
            {
                Debug.LogError("Repeat Add Event" + _eventEnum);
                return;
            }     //重复注册检测
            m_OnLocalPositionChangeEventRecordDic.Add(hashCode, action);
            OnLocalPositionChangeEvent += action;
            break;

            #endregion
        case ListenTransformChangeEventEnum.WorldPosition:
            #region WorldPostion
            if (m_OnWorldPositionChangeEventRecordDic.ContainsKey(hashCode))
            {
                Debug.LogError("Repeat Add Event" + _eventEnum);
                return;
            }    //重复注册检测
            m_OnWorldPositionChangeEventRecordDic.Add(hashCode, action);
            OnWorldPositionChangeEvent += action;

            #endregion
            break;

        case ListenTransformChangeEventEnum.Sacle:
            #region Scale
            if (m_OnScaleChangeEventRecordDic.ContainsKey(hashCode))
            {
                Debug.LogError("Repeat Add Event" + _eventEnum);
                return;
            }    //重复注册检测
            m_OnScaleChangeEventRecordDic.Add(hashCode, action);
            OnScaleChangeEvent += action;
            #endregion
            break;

        case ListenTransformChangeEventEnum.Rotation:
            #region Rotation
            if (m_OnRotationChangeEventRecordDic.ContainsKey(hashCode))
            {
                Debug.LogError("Repeat Add Event" + _eventEnum);
                return;
            }    //重复注册检测
            Debug.Log("Register Success " + _eventEnum);
            m_OnRotationChangeEventRecordDic.Add(hashCode, action);
            OnRotationChangeEvent += action;
            #endregion
            break;
        }
    }