// ------------------------------------------------------------------------------------ //
    public void onTouchBegan(GameTouchController gameTouchController, GameTouchParams gameTouchParams)
    {
        // Check active unit
        if (gameTouchParams.touchGameObject.tag.Equals(UnitBase.UNIT_TAG))
        {
            UnitBase unit = gameTouchParams.touchGameObject.GetComponent<UnitBase>();
            if (unit != null && unit.isUnitMaster())
            {
                if (activeUnit != null && activeUnit.Equals(unit))
                {
                    activeUnit.setActive(false);
                    activeUnit = null;
                }
                else
                {
                    setNewActiveUnit(unit);
                }

                return;
            }
        }

        // Move active unit if not return
        if (activeUnit != null) {
            ((UnitMasterBase) activeUnit).moveAtPosition(gameTouchParams.touchPosition);
        }
    }
 public void notifyGameTouchObservers(GameTouchParams gameTouchParams)
 {
     foreach (IGameTouchObserver observer in gameTouchObservers.ToArray()) {
         if (observer != null) {
             observer.onTouchBegan(this, gameTouchParams);
         }
     }
 }
 // ------------------------------------------------------------------------------------ //
 void Update()
 {
     if (!TimeController.getPause())
     {
         if (Input.GetMouseButtonDown (0))
         {
             foreach (Camera camera in cameras)
             {
                 ray = camera.ScreenPointToRay(Input.mousePosition);
                 if (Physics.Raycast(ray, out hit, 1000))
                 {
                     GameTouchParams gameTouchParams = new GameTouchParams (hit.collider.gameObject, hit.point);
                     notifyGameTouchObservers(gameTouchParams);
                 }
             }
         }
     }
 }