示例#1
0
    public override void Execute(ActionCallback Callback, InputBus actionTarget)
    {
        Transform target = FindTarget(actionTarget).positionData;

        if (target != null)
        {
            ((AiActorController)actionTarget).UpdateInput(actionInput, true);

            float facing = Mathf.Sign(actionTarget.transform.right.x);
            float dir    = Mathf.Sign((target.transform.position - actionTarget.transform.position).x);
            if (alwaysFaceTarget && facing != dir)
            {
                actionTarget.transform.right = -actionTarget.transform.right;
            }

            if (Vector3.Distance(actionTarget.transform.position, target.position) > vaildActionRange)
            {
                ((AiActorController)actionTarget).UpdateInput(actionInput, false);
                Callback();
            }
        }
        else
        {
            ((AiActorController)actionTarget).UpdateInput(actionInput, false);
            Callback();
        }
    }
示例#2
0
        /// <summary>
        /// Sends a key Event to the ibus current input context. This method will be called by
        /// the IbusKeyboardAdapter on some KeyDown and all KeyPress events.
        /// </summary>
        /// <param name="keySym">The X11 key symbol (for special keys) or the key code</param>
        /// <param name="scanCode">The X11 scan code</param>
        /// <param name="state">The modifier state, i.e. shift key etc.</param>
        /// <returns><c>true</c> if the key event is handled by ibus.</returns>
        /// <seealso cref="IBusKeyboardAdaptor.HandleKeyPress"/>
        public bool ProcessKeyEvent(int keySym, int scanCode, Keys state)
        {
            if (m_inputContext == null)
            {
                return(false);
            }

            try
            {
                // m_inputContext.IsEnabled() throws an exception for IBus 1.5.
                if (!KeyboardController.CombinedKeyboardHandling && !m_inputContext.IsEnabled())
                {
                    return(false);
                }

                var modifiers = ConvertToIbusModifiers(state, (char)keySym);

                return(m_inputContext.ProcessKeyEvent(keySym, scanCode, modifiers));
            }
            catch (NDesk.DBus.DBusConectionErrorException e)
            {
                Console.WriteLine("IbusCommunicator.ProcessKeyEvent({0},{1},{2}): caught DBusConectionErrorException: {3}", keySym, scanCode, state, e);
                m_ibus         = null;
                m_inputContext = null;
                NotifyUserOfIBusConnectionDropped();
            }
            catch (System.NullReferenceException e)
            {
                Console.WriteLine("IbusCommunicator.ProcessKeyEvent({0},{1},{2}): caught NullReferenceException: {3}", keySym, scanCode, state, e);
            }
            return(false);
        }
示例#3
0
    public override void Execute(ActionCallback Callback, InputBus actionTarget)
    {
        Transform target = FindTarget(actionTarget).positionData;

        if (target != null)
        {
            Vector3 axis = new Vector3(1, 0, 0);

            if (target.position.x < actionTarget.transform.position.x)
            {
                axis = -axis;
            }
            ((AiActorController)actionTarget).UpdateInput(moveInput, axis);

            if (Vector3.Distance(actionTarget.transform.position, target.position) < targetRange)
            {
                ((AiActorController)actionTarget).UpdateInput(moveInput, Vector3.zero);
                Callback();
            }
        }
        else
        {
            ((AiActorController)actionTarget).UpdateInput(moveInput, Vector3.zero);
            Callback();
        }
    }
示例#4
0
        /// <summary>
        /// Sends a key Event to the ibus current input context. This method will be called by
        /// the IbusKeyboardAdapter on some KeyDown and all KeyPress events.
        /// </summary>
        /// <param name="keySym">The X11 key symbol (for special keys) or the key code</param>
        /// <param name="scanCode">The X11 scan code</param>
        /// <param name="state">The modifier state, i.e. shift key etc.</param>
        /// <returns><c>true</c> if the key event is handled by ibus.</returns>
        /// <seealso cref="IbusKeyboardSwitchingAdaptor.HandleKeyPress"/>
        public bool ProcessKeyEvent(int keySym, int scanCode, Keys state)
        {
            if (m_inputContext == null)
            {
                return(false);
            }

            try
            {
                // m_inputContext.IsEnabled() is no longer contained in IBus 1.5. However,
                // ibusdotnet >= 1.9.1 deals with that and always returns true so that we still
                // can use this method.
                if (!m_inputContext.IsEnabled())
                {
                    return(false);
                }

                var modifiers = ConvertToIbusModifiers(state, (char)keySym);

                return(m_inputContext.ProcessKeyEvent(keySym, scanCode, modifiers));
            }
            catch (NDesk.DBus.DBusConectionErrorException e)
            {
                Console.WriteLine("IbusCommunicator.ProcessKeyEvent({0},{1},{2}): caught DBusConectionErrorException: {3}", keySym, scanCode, state, e);
                m_ibus         = null;
                m_inputContext = null;
                NotifyUserOfIBusConnectionDropped();
            }
            catch (System.NullReferenceException e)
            {
                Console.WriteLine("IbusCommunicator.ProcessKeyEvent({0},{1},{2}): caught NullReferenceException: {3}", keySym, scanCode, state, e);
            }
            return(false);
        }
示例#5
0
 public bool HasRequirements(InputBus actionTarget)
 {
     if (CheckPrerequirements(actionTarget) && CheckRequirements(actionTarget))
     {
         return(true);
     }
     return(false);
 }
		internal IBusEngineDesc[] GetAllIBusKeyboards()
		{
			if (!IBusCommunicator.Connected)
				return new IBusEngineDesc[0];

			var ibusWrapper = new InputBus(IBusCommunicator.Connection);
			return ibusWrapper.ListEngines();
		}
		protected virtual IBusEngineDesc[] GetIBusKeyboards()
		{
			if (!IBusCommunicator.Connected)
				return new IBusEngineDesc[0];

			var ibusWrapper = new InputBus(IBusCommunicator.Connection);
			return ibusWrapper.ListActiveEngines();
		}
        protected virtual IBusEngineDesc[] GetIBusKeyboards()
        {
            if (!_ibusComm.Connected)
            {
                return(new IBusEngineDesc[0]);
            }

            var ibusWrapper = new InputBus(_ibusComm.Connection);

            return(ibusWrapper.ListActiveEngines());
        }
        internal IBusEngineDesc[] GetAllIBusKeyboards()
        {
            if (!_ibusComm.Connected)
            {
                return(new IBusEngineDesc[0]);
            }

            var ibusWrapper = new InputBus(_ibusComm.Connection);

            return(ibusWrapper.ListEngines());
        }
示例#10
0
 protected bool CheckRequirements(InputBus actionTarget)
 {
     foreach (Requirement requirement in requirements)
     {
         if (!requirement.Check(actionTarget))
         {
             return(false);
         }
     }
     return(true);
 }
示例#11
0
    protected override bool CheckPrerequirements(InputBus actionTarget)
    {
        Transform target = FindTarget(actionTarget).positionData;

        if (target != null)
        {
            bool within = Vector3.Distance(actionTarget.transform.position, target.position) > targetRange;
            bool found  = FindTarget(actionTarget).isTriggered;
            return(within && found);
        }
        return(false);
    }
示例#12
0
    void Awake()
    {
        actions = new InputActions();
        bus     = GetComponent <InputBus>();

        currentStats = (ActorStats)baseStats.Clone();

        actions.stats = currentStats;

        lastHealth = currentStats.health;

        SubscribeToEvents();
        InitializeOnAwake();
    }
示例#13
0
 /// <summary>
 /// Wrap an ibus with protection incase DBus connection is dropped.
 /// </summary>
 protected void ProtectedIBusInvoke(Action action)
 {
     try
     {
         action();
     }
     catch (NDesk.DBus.DBusConectionErrorException)
     {
         m_ibus         = null;
         m_inputContext = null;
         NotifyUserOfIBusConnectionDropped();
     }
     catch (System.NullReferenceException)
     {
     }
 }
        /// <summary>
        /// Create a Connection to Ibus. If successfull Connected property is true.
        /// </summary>
        public IbusCommunicator()
        {
            m_connection = IBusConnectionFactory.Create();

            if (m_connection == null)
                return;

            // Prevent hanging on exit issues caused by missing dispose calls, or strange interaction
            // between ComObjects and managed object.
            Application.ThreadExit += (sender, args) =>
                                {
                                    if (m_connection != null)
                                        m_connection.Dispose();
                                    m_connection = null;
                                };

            m_ibus = new InputBus(m_connection);
        }
示例#15
0
        /// <summary>
        /// Create a Connection to Ibus. If successfull Connected property is true.
        /// </summary>
        public IbusCommunicator()
        {
            m_connection = IBusConnectionFactory.Create();

            if (m_connection == null)
            {
                return;
            }

            // Prevent hanging on exit issues caused by missing dispose calls, or strange interaction
            // between ComObjects and managed object.
            Application.ThreadExit += (sender, args) =>
            {
                if (m_connection != null)
                {
                    m_connection.Dispose();
                }
                m_connection = null;
            };

            m_ibus = new InputBus(m_connection);
        }
示例#16
0
    //Common functions

    protected RelayData FindTarget(InputBus observer)
    {
        RelayData data = new RelayData();
        LayerMask mask = nonVisionLayers;

        if (useVision)
        {
            mask = visionLayers;
        }

        //vvv F*****g change this vvv
        if (targets.Length > 0)
        {
            GameObject target    = targets[0];
            Vector3    targetDir = target.transform.position - observer.transform.position;
            Ray        targeting = new Ray(observer.transform.position, targetDir);

            data.isTriggered  = Physics.Raycast(targeting, trackingDistance, mask);
            data.positionData = target.transform;
        }
        return(data);
    }
示例#17
0
 protected virtual void Initialize()
 {
     bus     = GetComponent <InputBus>();
     actions = new InputState();
 }
示例#18
0
 void Awake()
 {
     bus         = GetComponent <InputBus>();
     bus.Action += Execute;
     InitializeOnAwake();
 }
 /// <summary>
 /// Wrap an ibus with protection incase DBus connection is dropped.
 /// </summary>
 protected void ProtectedIBusInvoke(Action action)
 {
     try
     {
         action();
     }
     catch(NDesk.DBus.DBusConectionErrorException)
     {
         m_ibus = null;
         m_inputContext = null;
         NotifyUserOfIBusConnectionDropped();
     }
     catch(System.NullReferenceException)
     {
     }
 }
        /// <summary>
        /// Sends a key Event to the ibus current input context. This method will be called by
        /// the IbusKeyboardAdapter on some KeyDown and all KeyPress events.
        /// </summary>
        /// <param name="keySym">The X11 key symbol (for special keys) or the key code</param>
        /// <param name="scanCode">The X11 scan code</param>
        /// <param name="state">The modifier state, i.e. shift key etc.</param>
        /// <returns><c>true</c> if the key event is handled by ibus.</returns>
        /// <seealso cref="IBusKeyboardAdaptor.HandleKeyPress"/>
        public bool ProcessKeyEvent(int keySym, int scanCode, Keys state)
        {
            if (m_inputContext == null)
                return false;

            try
            {
                // m_inputContext.IsEnabled() throws an exception for IBus 1.5.
                if (!KeyboardController.CombinedKeyboardHandling && !m_inputContext.IsEnabled())
                    return false;

                var modifiers = ConvertToIbusModifiers(state, (char)keySym);

                return m_inputContext.ProcessKeyEvent(keySym, scanCode, modifiers);
            }
            catch(NDesk.DBus.DBusConectionErrorException e)
            {
                Console.WriteLine("IbusCommunicator.ProcessKeyEvent({0},{1},{2}): caught DBusConectionErrorException: {3}", keySym, scanCode, state, e);
                m_ibus = null;
                m_inputContext = null;
                NotifyUserOfIBusConnectionDropped();
            }
            catch(System.NullReferenceException e)
            {
                Console.WriteLine("IbusCommunicator.ProcessKeyEvent({0},{1},{2}): caught NullReferenceException: {3}", keySym, scanCode, state, e);
            }
            return false;
        }
示例#21
0
 protected virtual bool CheckPrerequirements(InputBus actionTarget)
 {
     return(false);
 }
示例#22
0
 public virtual void Execute(ActionCallback Callback, InputBus actionTarget)
 {
 }
示例#23
0
		/// <summary>
		/// Sends a key Event to the ibus current input context. This method will be called by
		/// the IbusKeyboardAdapter on some KeyDown and all KeyPress events.
		/// </summary>
		/// <param name="keySym">The X11 key symbol (for special keys) or the key code</param>
		/// <param name="scanCode">The X11 scan code</param>
		/// <param name="state">The modifier state, i.e. shift key etc.</param>
		/// <returns><c>true</c> if the key event is handled by ibus.</returns>
		/// <seealso cref="IBusKeyboardAdaptor.HandleKeyPress"/>
		public bool ProcessKeyEvent(int keySym, int scanCode, Keys state)
		{
			if (m_inputContext == null)
				return false;

			try
			{
				// m_inputContext.IsEnabled() is no longer contained in IBus 1.5. However,
				// ibusdotnet >= 1.9.1 deals with that and always returns true so that we still
				// can use this method.
				if (!m_inputContext.IsEnabled())
					return false;

				var modifiers = ConvertToIbusModifiers(state, (char)keySym);

				return m_inputContext.ProcessKeyEvent(keySym, scanCode, modifiers);
			}
			catch(NDesk.DBus.DBusConectionErrorException e)
			{
				Console.WriteLine("IbusCommunicator.ProcessKeyEvent({0},{1},{2}): caught DBusConectionErrorException: {3}", keySym, scanCode, state, e);
				m_ibus = null;
				m_inputContext = null;
				NotifyUserOfIBusConnectionDropped();
			}
			catch(System.NullReferenceException e)
			{
				Console.WriteLine("IbusCommunicator.ProcessKeyEvent({0},{1},{2}): caught NullReferenceException: {3}", keySym, scanCode, state, e);
			}
			return false;
		}
示例#24
0
 public virtual bool Check(InputBus toCheck)
 {
     return(false);
 }
示例#25
0
 protected virtual void Initialize()
 {
     bus          = GetComponent <InputBus>();
     bus.Actions += Execute;
 }