예제 #1
0
    private void Scroll(ObservableEventTrigger trigger)
    {
        trigger.OnPointerDownAsObservable()
        .Subscribe(data =>
        {
            m_DragStartInfo.SetStartPosition(data.position);
            m_DragStartInfo.StartTime = Time.time;
        }).AddTo(gameObject);

        this.UpdateAsObservable()
        .SkipUntil(trigger.OnBeginDragAsObservable())
        .TakeUntil(trigger.OnEndDragAsObservable().Do(data =>
        {
            // 二本指以上でのスクロールはピンチイン・アウトの可能性があるから
            if (Input.touchCount < 2)
            {
                var startUv = m_DragStartInfo.StartPoint;
                var endUv   = CalcScreenUv(data.position);
                m_NetworkManager.SetCommand($"5,{startUv.x},{startUv.y},{endUv.x},{endUv.y}");
                if (ShowDragObservable)
                {
                    Debug.Log($"Scroll: 5,{startUv.x},{startUv.y},{endUv.x},{endUv.y}");
                }
            }
        }))
        .RepeatUntilDestroy(this)
        .Subscribe(_ =>
        {
            if (ShowDragObservable)
            {
                Debug.Log("Scrolling...");
            }
        }).AddTo(gameObject);
    }
예제 #2
0
 private void Hold(ObservableEventTrigger trigger)
 {
     this.UpdateAsObservable()
     .SkipUntil(trigger.OnPointerDownAsObservable())
     .TakeUntil(trigger.OnPointerUpAsObservable()
                .Do(_ =>
     {
         if (Time.time - m_TouchInfo.StartTime >= HOLD_DURATION)
         {
             var uv = m_TouchInfo.StartPoint;
             m_NetworkManager.SetCommand($"3,{uv.x},{uv.y},0.5");
             if (ShowHoldObservable)
             {
                 Debug.Log($"Hold: ");
             }
         }
     })
                )
     .RepeatUntilDestroy(this)
     .Subscribe(_ =>
     {
         if (ShowHoldObservable)
         {
             Debug.Log("Holding...");
         }
     }).AddTo(gameObject);
 }
    private void Start()
    {
        cameraControllerEventTrigger = this.GetComponent <ObservableEventTrigger>();

    #if UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN
        this.UpdateAsObservable()
        .Where(x => Input.GetMouseButtonUp(0))
        .Subscribe(x => { isDraging = false; });
        cameraControllerEventTrigger.OnDragAsObservable()
        .Subscribe(pointerEventData => onDrag(pointerEventData));
        #elif UNITY_IOS || UNITY_ANDROID
        cameraControllerEventTrigger.OnPointerDownAsObservable()
        .Subscribe(pointerEventData => OnPointerDownValidation(pointerEventData));
        cameraControllerEventTrigger.OnDragAsObservable()
        .Subscribe(pointerEventData => onDrag(pointerEventData));
        cameraControllerEventTrigger.OnPointerUpAsObservable()
        .Where(_ => isPointerUp())
        .Subscribe(_ => {
            InitCameraMoveController();
        });
        this.UpdateAsObservable()
        .Where(x => isNoPointer())
        .Subscribe(x => { isDraging = false; });
        #endif
    }
예제 #4
0
 private void SingleTouch(ObservableEventTrigger trigger)
 {
     trigger.OnPointerUpAsObservable()
     .Where(data =>
     {
         // 前回指を離した時間から0.2sec以下ならダブルクリックとしてSingleTouchは発火しない
         if (Time.time - m_LastReleaseTime <= DOUBLE_TOUCH_DURATION ||
             Time.time - m_TouchInfo.StartTime >= DOUBLE_TOUCH_DURATION)
         {
             return(false);
         }
         m_LastReleaseTime = Time.time;
         return(true);
     })
     .Subscribe(data =>
     {
         // TODO: SingleTouch時の処理
         var uv = CalcScreenUv(data.position);
         m_NetworkManager.SetCommand($"1,{uv.x},{uv.y}");
         if (ShowSingleTouchObservable)
         {
             Debug.Log($"SingleTouch: {uv}");
         }
     }).AddTo(gameObject);
 }
        private void Start()
        {
            float backMousePos = 0.0f;
            ObservableEventTrigger observableEventTrigger = (ObservableEventTrigger)((Component)this).get_gameObject().AddComponent <ObservableEventTrigger>();

            DisposableExtensions.AddTo <IDisposable>((M0)ObservableExtensions.Subscribe <float>((IObservable <M0>)Observable.Select <Unit, float>(Observable.RepeatUntilDestroy <Unit>(Observable.TakeUntil <Unit, PointerEventData>(Observable.SkipUntil <Unit, PointerEventData>((IObservable <M0>)ObservableTriggerExtensions.UpdateAsObservable((Component)this), (IObservable <M1>)Observable.Do <PointerEventData>((IObservable <M0>)observableEventTrigger.OnPointerDownAsObservable(), (Action <M0>)(_ =>
            {
                backMousePos = (float)Input.get_mousePosition().x;
                if (!Object.op_Implicit((Object)this.imgCol))
                {
                    return;
                }
                ((Graphic)this.imgCol).set_color(new Color((float)((Graphic)this.imgCol).get_color().r, (float)((Graphic)this.imgCol).get_color().g, (float)((Graphic)this.imgCol).get_color().b, 1f));
            }))), (IObservable <M1>)Observable.Do <PointerEventData>((IObservable <M0>)observableEventTrigger.OnPointerUpAsObservable(), (Action <M0>)(_ =>
            {
                if (!Object.op_Implicit((Object)this.imgCol))
                {
                    return;
                }
                ((Graphic)this.imgCol).set_color(new Color((float)((Graphic)this.imgCol).get_color().r, (float)((Graphic)this.imgCol).get_color().g, (float)((Graphic)this.imgCol).get_color().b, 0.0f));
            }))), (Component)this), (Func <M0, M1>)(_ => (float)Input.get_mousePosition().x - backMousePos)), (Action <M0>)(move =>
            {
                backMousePos = (float)Input.get_mousePosition().x;
                if (this.type == 0 && this.xyz == 0)
                {
                    move *= -1f;
                }
                this.customAcsCorrectSet.UpdateDragValue(this.type, this.xyz, move);
            })), (Component)this);
        }
예제 #6
0
    private void DoubleTouch(ObservableEventTrigger trigger)
    {
        // 実装参考URL
        // https://qiita.com/miyaoka/items/6a643434a3f1548fb489
        var tapStream = Observable.EveryUpdate().Where(_ =>
        {
            if (Input.touchCount > 0)
            {
                return(Input.GetTouch(0).phase == TouchPhase.Began);
            }
            return(false);
        });

        tapStream.TimeInterval()
        .Select(t => t.Interval.TotalMilliseconds)
        .Buffer(2, 1)
        .Where(list => list[0] > 200)
        .Where(list => list[1] <= 200)
        .Where(_ => Input.touchCount == 1)
        .Select(_ => Input.GetTouch(0))
        .Subscribe(touch =>
        {
            var uv = CalcScreenUv(touch.position);
            m_NetworkManager.SetCommand($"2,{uv.x},{uv.y},0.2");
            if (ShowDoubleTouchObservable)
            {
                Debug.Log($"DoubleTouch: {uv}");
            }
        }).AddTo(gameObject);
    }
    // Use this for initialization
    void Start()
    {
        _eventTrigger = gameObject.AddComponent <ObservableEventTrigger>();
        _mspresenter  = GameObject.Find("MainScenePresenter").GetComponent <MainScenePresenter>();
        _spriteGlow   = GetComponent <SpriteGlowEffect>();

        _sprites = Resources.LoadAll <Sprite>("number");
    }
    void Start()
    {
        skillControllerEventTrigger = this.GetComponent <ObservableEventTrigger>();
        initButtonMask();

        this.skillControllerEventTrigger.OnPointerDownAsObservable()
        .Where(_ => !isCooldowning)
        .Subscribe(_ => skillInput());
    }
    void Start()
    {
        sensorControllerEventTrigger = this.GetComponent <ObservableEventTrigger>();

        //ドラッグ等無いためマルチタップ問題なし
        this.sensorControllerEventTrigger.OnPointerDownAsObservable()
        .Where(_ => hasItem)
        .Subscribe(_ => useInput());
    }
예제 #10
0
        public override void Awake()
        {
            base.Awake();

            target     = Fsm.GetOwnerDefaultTarget(gameObject);
            mainCamera = Camera.main;

            eventTrigger = target.AddComponent <ObservableEventTrigger>();
        }
예제 #11
0
        void Start()
        {
            var gunUnitUI = GetComponent <GunUnitUI>();
            // 親CanvasのRectTransformを基準に利用する
            var rectTransform = transform.root.gameObject.GetComponent <RectTransform>();
            // RectTransformUtility.ScreenPointToLocalPointInRectangle用使い捨て変数
            var tmpPosition = Vector2.zero;
            // get the position of parent's top-left corner in world space
            // i guess it only work when canvas use Screen space - Overlay mode
            var selfRect   = GetComponent <RectTransform>();
            var parentRect = transform.parent.GetComponent <RectTransform>();
            // FIXME: i don't know why all the rect's property will be 0...
            // var anchorPosition = parentRect.TransformPoint(0, parentRect.rect.height, 0);
            var anchorPosition = parentRect.TransformPoint(0, 400, 0);

            Debug.Log(anchorPosition);
            // ObservableEventTriggerをオブジェクトに追加
            ObservableEventTrigger trigger = GetComponent <ObservableEventTrigger>();

            // Dragイベントの登録
            trigger.OnDragAsObservable()
            // 発生するたびにマウスポジションを取得する。
            .Select(_ => Input.mousePosition - anchorPosition)
            // ただしInput.mousePositionはWorld座標なのでそのままでは使えない。親CanvasのUI座標に変換する。
            // .Select(mousePosition =>
            // {
            //     // ※注: 親CanvasのRender ModeをScreen Space Cameraにしている場合はこれでよいが、Screen Space Overlayの場合はまた別の記述になる。
            //     //   http://tsubakit1.hateblo.jp/entry/2016/03/01/020510 を参照。
            //     // RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, mousePosition, Camera.main, out tmpPosition);
            //     // return tmpPosition
            //     return mousePosition - new Vector3(188, 508); // anchor position
            // })
            // ついでにログを取ってみる
            .Do(position => Debug.Log(string.Format("[Drag]Input.mousePosition.x: {0}, Input.mousePosition.y: {1}, Canvas.LocalPosition.x: {2}, Canvas.LocalPosition.y: {3}",
                                                    Input.mousePosition.x, Input.mousePosition.y, position.x, position.y)))
            // 自分の位置をマウスのUI座標に。
            // .Subscribe(position => transform.localPosition = position)
            .Subscribe(position => selfRect.anchoredPosition = position)
            // 自分が破壊されたらイベントも終了。
            .AddTo(this);

            // Drag終了イベント(つまりDrop)の登録
            trigger.OnEndDragAsObservable()
            // 発生したらマウスポジションを取得する。
            .Select(_ => Input.mousePosition)
            .Select(mousePosition =>
            {
                RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, mousePosition, Camera.main, out tmpPosition);
                return(tmpPosition);
            })
            // ドロップされたらログを追加
            .Subscribe(position => Debug.Log(string.Format("[Drop]Input.mousePosition.x: {0}, Input.mousePosition.y: {1}, Canvas.LocalPosition.x: {2}, Canvas.LocalPosition.y: {3}",
                                                           Input.mousePosition.x, Input.mousePosition.y, position.x, position.y)))
            // 自分が破壊されたらイベントも終了。
            .AddTo(this);
        }
예제 #12
0
    void Start()
    {
        sweetControllerEventTrigger = this.GetComponent <ObservableEventTrigger>();
        itemNum = 0;

        //ドラッグ等無いためマルチタップ問題なし
        this.sweetControllerEventTrigger.OnPointerDownAsObservable()
        .Where(_ => itemNum > 0)
        .Subscribe(_ => useInput());
    }
예제 #13
0
 private void PinchIn(ObservableEventTrigger trigger)
 {
     this.UpdateAsObservable()
     .Where(_ => Input.touchCount >= 2)
     .SkipUntil(trigger.OnPointerDownAsObservable().Do(_ =>
     {
         if (Input.touchCount >= 2)
         {
             var touch1           = Input.GetTouch(0);
             var touch2           = Input.GetTouch(1);
             m_PinchInStartTouch1 = CalcScreenUv(touch1.position);
             m_PinchInStartTouch2 = CalcScreenUv(touch2.position);
         }
     }))
     .TakeUntil(trigger.OnPointerUpAsObservable().Do(_ =>
     {
         if (Input.touchCount >= 2)
         {
             var touch1         = Input.GetTouch(0);
             var touch2         = Input.GetTouch(1);
             m_PinchInEndTouch1 = CalcScreenUv(touch1.position);
             m_PinchInEndTouch2 = CalcScreenUv(touch2.position);
             // ピンチイン開始のタッチ指間の距離 < ピンチイン終了時のタッチ指間の距離
             // がそもそもピンチインの定義
             var startDist = Vector2.Distance(m_PinchInStartTouch1, m_PinchInStartTouch2);
             var endDist   = Vector2.Distance(m_PinchInEndTouch1, m_PinchInEndTouch2);
             if (startDist < endDist)
             {
                 var position = (m_PinchInStartTouch1 + m_PinchInStartTouch2) / 2.0f;
                 m_NetworkManager.SetCommand($"6,{position.x},{position.y},{endDist - startDist}");
                 if (ShowPinchInObservable)
                 {
                     Debug.Log($"PinchIn: 6,{position.x},{position.y},{endDist - startDist}");
                 }
             }
             else
             {
                 var position = (m_PinchInStartTouch1 + m_PinchInStartTouch2) / 2.0f;
                 m_NetworkManager.SetCommand($"7,{position.x},{position.y},{startDist - endDist}");
                 if (ShowPinchInObservable)
                 {
                     Debug.Log($"PinchOut: 7,{position.x},{position.y},{startDist - endDist}");
                 }
             }
         }
     }))
     .RepeatUntilDestroy(this)
     .Subscribe(_ =>
     {
         if (ShowPinchInObservable)
         {
             Debug.Log("ピンチイン中");
         }
     }).AddTo(gameObject);
 }
예제 #14
0
    void Start()
    {
        jumpControllerEventTrigger = this.GetComponent <ObservableEventTrigger>();
        isCooldowning = false;
        initButtonMask();

        //ドラッグ等無いためマルチタップ問題なし
        this.jumpControllerEventTrigger.OnPointerDownAsObservable()
        .Where(_ => !isCooldowning)
        .Subscribe(_ => attackInput());
    }
예제 #15
0
    public void StartReviewing(RecordingManager sender, VideoPlayer videoPlayer, AudioSource recorder, AudioClip master, double startTime, int endPos, AudioSource player)
    {
        ReviewPanel.SetActive(true);
        Sender            = sender;
        vp                = videoPlayer;
        Recorder          = recorder;
        Player            = player;
        StartTime         = startTime;
        InitialStartTime  = startTime;
        Master            = master;
        EndPosInRecording = endPos;
        lastPlayedTime    = startTime;
        int samples = Recorder.clip.frequency;

        LengthTime       = (float)endPos / samples;
        EndTime          = StartTime + LengthTime;
        InitialEndTime   = EndTime;
        StartPosInMaster = Master.channels * Mathf.FloorToInt(Master.samples * ((float)startTime / Master.length));
        vp.time          = startTime;
        Player.time      = (float)startTime;
        Player.Pause();
        vp.Pause();
        Recorder.Pause();
        Player.volume = OverwriteToggle.isOn ? 0 : 1;
        if (isFirstTime)
        {
            ObservableEventTrigger et = SeekBar.gameObject.AddComponent <ObservableEventTrigger>();
            et.OnPointerDownAsObservable().Subscribe(x => { focusOnSeekBar = true; });
            et.OnPointerUpAsObservable().Subscribe(x => { focusOnSeekBar = false; });

            SeekBar.OnValueChangedAsObservable().Where(x => !seekingByPlaying && isRunning).Throttle(new System.TimeSpan(500)).Subscribe(x =>
            {
                double time    = StartTime + x * LengthTime;
                lastPlayedTime = time;
                vp.time        = time;
                Player.time    = (float)time;
                Recorder.time  = (float)(x * LengthTime);
                Player.Pause();
                vp.Pause();
                Recorder.Pause();
            });
            OverwriteToggle.OnValueChangedAsObservable().Subscribe(overwrite =>
            {
                if (isRunning)
                {
                    Player.volume = overwrite ? 0 : 1;
                }
            });
            vp.seekCompleted += OnSeekCompleted;
        }
        PlayingState = PlayingStareType.Playing;
        isFirstTime  = false;
        isRunning    = true;
    }
예제 #16
0
    // Use this for initialization
    void Start()
    {
        oet = this.gameObject.AddComponent <ObservableEventTrigger> ();

        oet.OnPointerDownAsObservable()
        .Where(x => x.selectedObject == null)
        .TakeUntil(oet.OnPointerUpAsObservable())
        .RepeatUntilDestroy(this)
        .Subscribe(x => HandleDrag(x))
        .AddTo(oet);
    }
예제 #17
0
        //----- property -----

        //----- method -----

        void OnEnable()
        {
            eventTrigger = UnityUtility.GetOrAddComponent <ObservableEventTrigger>(gameObject);

            eventTrigger
            .OnBeginDragAsObservable()
            .TakeUntilDisable(this)
            .Where(eventData => eventData.pointerDrag.gameObject == gameObject)
            .Select(eventData => eventData.position)
            .Subscribe(position =>
            {
                if (onDragStart != null)
                {
                    onDragStart.OnNext(position);
                }
            })
            .AddTo(this);

            eventTrigger
            .OnDragAsObservable()
            .TakeUntilDisable(this)
            .Where(eventData => eventData.pointerDrag.gameObject == gameObject)
            .Select(eventData => eventData.position)
            .Subscribe(position =>
            {
                if (onDrag != null)
                {
                    onDrag.OnNext(position);
                }
            })
            .AddTo(this);

            eventTrigger
            .OnEndDragAsObservable()
            .TakeUntilDisable(this)
            .Where(eventData => eventData.pointerDrag.gameObject == gameObject)
            .Select(eventData => eventData.position)
            .Subscribe(position =>
            {
                if (onDragEnd != null)
                {
                    onDragEnd.OnNext(position);
                }
            })
            .AddTo(this);
        }
예제 #18
0
    // Use this for initialization
    void Start()
    {
        foreach (Button b in ControlButtons)
        {
            b.interactable = false;
        }
        ObservableEventTrigger et = SeekBar.gameObject.AddComponent <ObservableEventTrigger>();

        et.OnPointerDownAsObservable().Subscribe(x => { focusOnSeekBar = true; });
        et.OnPointerUpAsObservable().Subscribe(x => { focusOnSeekBar = false; });
        SeekBar.OnValueChangedAsObservable().Where(x => !seekChangingByPlaying).Throttle(new System.TimeSpan(1000))
        .Subscribe(x =>
        {
            if (vp.canSetTime)
            {
                vp.time = lengthSec * x;
            }
        });
        vp.seekCompleted    += OnSeekCompleted;
        vp.prepareCompleted += LoadClip;
    }
    public bool isHand             = false; // trueなら手札のカード

    // Use this for initialization
    void Start()
    {
        _eventTrigger = gameObject.AddComponent <ObservableEventTrigger>();
        _spriteGlow   = GetComponent <SpriteGlowEffect>();
        // _spriteRenderer = GetComponent<SpriteRenderer>();

        //handControl.addClickObserver(this);
        //handControl.addDealObserver(this);

        // typeとcolorElementに合わせて見た目を変える
        _typeSprite = transform.Find("Type").gameObject;
        _typeSprite.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Type/" + Type.ToString());

        _colorElementSprite = transform.Find("ColorElement").gameObject;
        _colorElementSprite.GetComponent <SpriteGlowEffect>().GlowColor = meatColors[(int)Color];

        if (isBack)
        {
            ShowBack();
        }
    }
예제 #20
0
    private void Start()
    {
        playerControllerEventTrigger = this.GetComponent <ObservableEventTrigger>();

    #if UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN
        this.playerControllerEventTrigger.OnPointerDownAsObservable()
        .Subscribe(_ => pushInputController());
        this.UpdateAsObservable()
        .Where(x => Input.GetMouseButtonUp(0))
        .Subscribe(x => InitPlayerMoveController());
        this.UpdateAsObservable()
        .Where(x => isMoveControllerInputing)
        .Subscribe(x => moveFingerPointer(Input.mousePosition));
        #elif UNITY_IOS || UNITY_ANDROID
        this.playerControllerEventTrigger.OnPointerDownAsObservable()
        .Subscribe(pointerEventData => OnPointerDownValidation(pointerEventData));
        this.UpdateAsObservable()
        .Where(x => isMoveControllerInputing)
        .Subscribe(x => moveFingerPointer());
        this.UpdateAsObservable()
        .Where(x => isPointerUp())
        .Subscribe(x => InitPlayerMoveController());
        #endif
    }
 // Use this for initialization
 void Start()
 {
     _eventTrigger = gameObject.AddComponent <ObservableEventTrigger>();
 }
예제 #22
0
 void Awake()
 {
     eventTrigger = this.gameObject.GetComponent <ObservableEventTrigger>();
 }
예제 #23
0
 void Awake()
 {
     _eventTrigger = GetComponent <ObservableEventTrigger> ();
     _modalBack    = GetComponent <Image> ();
 }
예제 #24
0
 private void Rotate(ObservableEventTrigger trigger)
 {
 }
예제 #25
0
 private void PinchOut(ObservableEventTrigger trigger)
 {
 }
예제 #26
0
 private void PressAndTouch(ObservableEventTrigger trigger)
 {
 }
예제 #27
0
 void Awake()
 {
     _eventTrigger = GetComponent <ObservableEventTrigger>();
 }
예제 #28
0
 void Awake()
 {
     _mapRect      = GetComponent <RectTransform> ();
     _mapTextGUI   = GetComponentInChildren <TextMeshProUGUI> ();
     _eventTrigger = GetComponent <ObservableEventTrigger> ();
 }