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); }
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 }
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); }
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()); }
public override void Awake() { base.Awake(); target = Fsm.GetOwnerDefaultTarget(gameObject); mainCamera = Camera.main; eventTrigger = target.AddComponent <ObservableEventTrigger>(); }
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); }
void Start() { sweetControllerEventTrigger = this.GetComponent <ObservableEventTrigger>(); itemNum = 0; //ドラッグ等無いためマルチタップ問題なし this.sweetControllerEventTrigger.OnPointerDownAsObservable() .Where(_ => itemNum > 0) .Subscribe(_ => useInput()); }
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); }
void Start() { jumpControllerEventTrigger = this.GetComponent <ObservableEventTrigger>(); isCooldowning = false; initButtonMask(); //ドラッグ等無いためマルチタップ問題なし this.jumpControllerEventTrigger.OnPointerDownAsObservable() .Where(_ => !isCooldowning) .Subscribe(_ => attackInput()); }
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; }
// 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); }
//----- 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); }
// 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(); } }
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>(); }
void Awake() { eventTrigger = this.gameObject.GetComponent <ObservableEventTrigger>(); }
void Awake() { _eventTrigger = GetComponent <ObservableEventTrigger> (); _modalBack = GetComponent <Image> (); }
private void Rotate(ObservableEventTrigger trigger) { }
private void PinchOut(ObservableEventTrigger trigger) { }
private void PressAndTouch(ObservableEventTrigger trigger) { }
void Awake() { _eventTrigger = GetComponent <ObservableEventTrigger>(); }
void Awake() { _mapRect = GetComponent <RectTransform> (); _mapTextGUI = GetComponentInChildren <TextMeshProUGUI> (); _eventTrigger = GetComponent <ObservableEventTrigger> (); }