예제 #1
0
 public static UniRx.IObservable <T> Catch <T>(this UniRx.IObservable <T> source, Func <Exception, UniRx.IObservable <T> > onError)
 {
     return(Observable.Create(delegate(UniRx.IObserver <T> observer)
     {
         UniRx.IObservable <T> source2 = source;
         Action <T> onNext = delegate(T x)
         {
             observer.OnNext(x);
         };
         Action <Exception> onError2 = delegate(Exception e)
         {
             UniRx.IObservable <T> source3 = onError(e);
             Action <T> onNext2 = delegate(T x)
             {
                 observer.OnNext(x);
             };
             UniRx.IObserver <T> observer3 = observer;
             Action <Exception> onError3 = observer3.OnError;
             UniRx.IObserver <T> observer4 = observer;
             source3.Subscribe(onNext2, onError3, observer4.OnCompleted);
         };
         UniRx.IObserver <T> observer2 = observer;
         return source2.Subscribe(onNext, onError2, observer2.OnCompleted);
     }));
 }
예제 #2
0
 public static void BindToInteractable(this Selectable selectable, UniRx.IObservable <bool> observable,
                                       ICollection <IDisposable> disposables = null)
 {
     if (disposables != null)
     {
         observable
         .Subscribe(enabled => { selectable.interactable = enabled; })
         .AddTo(disposables);
     }
     else
     {
         observable
         .Subscribe(enabled => { selectable.interactable = enabled; })
         .AddTo(selectable);
     }
 }
예제 #3
0
 public static IDisposable SubscribeToText(this UniRx.IObservable <string> source, TextMesh text)
 {
     return(source.Subscribe(delegate(string x)
     {
         text.text = x;
     }));
 }
예제 #4
0
        public void PlayVideoWithStartUrlAndPos(CustomController.VideoCtrl videoCtrl, FairyGUI.FillType fillType, UniRx.IObservable <Tuple <string, float> > videoPathAndStartPos, bool isFullView = false, bool autoVisible = true)
        {
            var g   = gObject;
            var sub = videoPathAndStartPos.Subscribe((t) =>
            {
                if (videoCtrl.IsInited && videoCtrl.LastUrl == t.Item1)
                {
                    Debug.Log("$$ change second");
                    videoCtrl.SetSeconds(t.Item2);
                }
                if (videoCtrl.IsInited && videoCtrl.LastUrl != t.Item1)
                {
                    Debug.Log("$$ change url old:" + videoCtrl.LastUrl + " new:" + t.Item1);
                    videoCtrl.Rewind(true);
                    videoCtrl.PlayVideoWithStartPos(t.Item1, t.Item2, autoVisible);
                }
                else if (!videoCtrl.IsInited)
                {
                    Debug.Log("$$ init player");
                    videoCtrl.Init(g, fillType, isFullView);
                    videoCtrl.PlayVideoWithStartPos(t.Item1, t.Item2, autoVisible);
                }
            });

            uiBase.AddDisposable(sub);
        }
예제 #5
0
 public static UniRx.IObservable <T> Previous <T>(this UniRx.IObservable <T> source)
 {
     return(Observable.Create(delegate(UniRx.IObserver <T> observer)
     {
         bool initialized = false;
         T newest = (T)default(T);
         UniRx.IObservable <T> source2 = source;
         Action <T> onNext = delegate(T x)
         {
             if (!initialized)
             {
                 initialized = true;
             }
             else
             {
                 observer.OnNext((T)newest);
             }
             newest = (T)x;
         };
         UniRx.IObserver <T> observer2 = observer;
         Action <Exception> onError = observer2.OnError;
         UniRx.IObserver <T> observer3 = observer;
         return source2.Subscribe(onNext, onError, observer3.OnCompleted);
     }));
 }
예제 #6
0
 public static IDisposable SubscribeToActive(this UniRx.IObservable <bool> source, GameObject go)
 {
     return(source.Subscribe(delegate(bool active)
     {
         go.SetActive(active);
     }));
 }
예제 #7
0
        public void PlayClip(UniRx.IObservable <bool> o, float delay)
        {
            var g = gObject;

            g.SetPlaySettings(0, -1, 1, -1);
            g.playing = false;
            IDisposable subInner = null;
            var         sub      = o.Subscribe((b) =>
            {
                g.visible = b;
                if (g.visible)
                {
                    var d = Observable.Timer(TimeSpan.FromSeconds(delay));

                    subInner = d.Subscribe(num =>
                    {
                        g.playing = true;
                        g.frame   = 0;
                        Debug.Log("Play Clip");
                    });
                }
                else
                {
                    g.playing = false;
                    g.frame   = -1;
                }
            });

            uiBase.AddDisposable(subInner);
            uiBase.AddDisposable(sub);
        }
예제 #8
0
        public static void Name(this IUnirxBind s, UniRx.IObservable <string> o)
        {
            var sub = o.Subscribe((str) =>
            {
                s.GetGObject().name = str;
            });

            s.GetUIBase().AddDisposable(sub);
        }
예제 #9
0
        public void Editable(UniRx.IObservable <bool> editable)
        {
            var g   = gObject;
            var sub = editable.Subscribe((b) =>
            {
                g.asTextInput.editable = b;
            });

            uiBase.AddDisposable(sub);
        }
예제 #10
0
        public void Title(UniRx.IObservable <string> title)
        {
            var g   = gObject;
            var dis = title.Subscribe((str) =>
            {
                g.title = str;
            });

            this.uiBase.AddDisposable(dis);
        }
예제 #11
0
        public void Touchable(UniRx.IObservable <bool> o)
        {
            var g   = gObject;
            var sub = o.Subscribe((b) =>
            {
                g.touchable = b;
            });

            uiBase.AddDisposable(sub);
        }
예제 #12
0
        public void SpriteIdx(UniRx.IObservable <int> index)
        {
            var g   = gObject;
            var sub = index.Subscribe((idx) =>
            {
                g.frame = idx;
            });

            uiBase.AddDisposable(sub);
        }
예제 #13
0
        public static void Alpha(this IUnirxBind s, UniRx.IObservable <float> alpha)
        {
            var g   = s.GetGObject();
            var sub = alpha.Subscribe((a) =>
            {
                g.alpha = a;
            });

            s.GetUIBase().AddDisposable(sub);
        }
예제 #14
0
        public void SetSelectIndex(UniRx.IObservable <int> selectedIdx)
        {
            var g   = gObject;
            var sub = selectedIdx.Subscribe((idx) =>
            {
                g.selectedIndex = idx;
            });

            uiBase.AddDisposable(sub);
        }
예제 #15
0
        public void Text(UniRx.IObservable <string> text)
        {
            var g   = gObject;
            var sub = text.Subscribe((str) =>
            {
                g.text = str;
            });

            uiBase.AddDisposable(sub);
        }
예제 #16
0
        public void URL(UniRx.IObservable <string> url)
        {
            var g   = gObject;
            var sub = url.Subscribe((str) =>
            {
                g.url = str;
            });

            uiBase.AddDisposable(sub);
        }
예제 #17
0
        //TODO 设置进度 秒数
        public void Seconds(CustomController.VideoCtrl videoCtrl, UniRx.IObservable <float> seconds)
        {
            var g   = gObject;
            var sub = seconds.Subscribe((s) =>
            {
                videoCtrl.SetSeconds(s);
            });

            uiBase.AddDisposable(sub);
        }
예제 #18
0
        public void PlayVideo(UniRx.IObservable <Texture> videoTexture)
        {
            var g   = gObject;
            var sub = videoTexture.Subscribe((texture) =>
            {
                g.texture = new FairyGUI.NTexture(texture);
            });

            uiBase.AddDisposable(sub);
        }
예제 #19
0
        public void Alpha(UniRx.IObservable <float> alpha)
        {
            var g   = gObject;
            var sub = alpha.Subscribe((a) =>
            {
                g.alpha = a;
            });

            uiBase.AddDisposable(sub);
        }
예제 #20
0
        public void Visible(UniRx.IObservable <bool> visible)
        {
            var g   = gObject;
            var sub = visible.Subscribe((a) =>
            {
                g.visible = a;
            });

            uiBase.AddDisposable(sub);
        }
예제 #21
0
        //[UIAttributes.UIBindPropertyInfo("name")]
        public void Name(UniRx.IObservable <string> o)
        {
            var g   = gObject;
            var sub = o.Subscribe((str) =>
            {
                g.name = str;
            });

            uiBase.AddDisposable(sub);
        }
예제 #22
0
        public void Gray(UniRx.IObservable <bool> gray)
        {
            var g   = gObject;
            var sub = gray.Subscribe((v) =>
            {
                g.grayed = v;
            });

            uiBase.AddDisposable(sub);
        }
예제 #23
0
        public void Editable(UniRx.IObservable <bool> editable)
        {
            var g   = gObject;
            var sub = editable.Subscribe((b) =>
            {
                g.richTextField.touchable = true;
            });

            uiBase.AddDisposable(sub);
        }
예제 #24
0
        public void StateIsSelectedDisabled(UniRx.IObservable <bool> isDisabled)
        {
            var g   = gObject;
            var sub = isDisabled.Subscribe((b) =>
            {
                if (b)
                {
                    g.relatedController.SetSelectedPage("selectedDisabled");
                }
            });

            this.uiBase.AddDisposable(sub);
        }
예제 #25
0
        //对任意控制器进行状态绑定
        public static void State(this IRxComponent rxCom, string controllerName, UniRx.IObservable <int> state)
        {
            var sub = state.Subscribe((s) =>
            {
                var controller = rxCom.GObject.asCom.GetController(controllerName);
                if (controller != null)
                {
                    controller.SetSelectedIndex(s);
                }
            });

            rxCom.UiBase.AddDisposable(sub);
        }
예제 #26
0
        public static void Visible(this IUnirxBind s, UniRx.IObservable <bool> o, bool publish = false, bool initValue = false)
        {
            var sub = o.Subscribe((str) =>
            {
                s.GetGObject().visible = str;
            });

            if (publish)
            {
                s.GetGObject().visible = initValue;
                //o.Publish(initValue);
            }
            s.GetUIBase().AddDisposable(sub);
        }
예제 #27
0
        public void StateIsDisabled(UniRx.IObservable <bool> isDisabled)
        {
            var g   = gObject;
            var sub = isDisabled.Subscribe((b) =>
            {
                var btnCtrl = g.GetController("button");
                if (btnCtrl != null)
                {
                    btnCtrl.SetSelectedIndex(b?2:0);
                }
            });

            this.uiBase.AddDisposable(sub);
        }
예제 #28
0
        public void Interactive(UniRx.IObservable <bool> interactive, bool hasDefaultValue = false, bool defaultValue = false)
        {
            var g   = gObject;
            var sub = interactive.Subscribe((b) =>
            {
                g.touchable = b;
            });

            if (hasDefaultValue)
            {
                g.touchable = defaultValue;
            }
            this.uiBase.AddDisposable(sub);
        }
예제 #29
0
    public void PostInit()
    {
        SceneLoader instance = SceneLoader.Instance;

        UniRx.IObservable <int> source = from i in (from runner in DelayedCurrentGoal
                                                    select runner.GoalAction.CompletedStars).Switch()
                                         where i > 0
                                         select i;

        source.Subscribe(delegate
        {
            NextTutorialGoal();
        }).AddTo(instance);
    }
예제 #30
0
        public static void Interactive(this IUnirxBind s, UniRx.IObservable <bool> interactive, bool hasDefaultValue = false, bool defaultValue = false)
        {
            var g   = s.GetGObject();
            var sub = interactive.Subscribe((b) =>
            {
                g.touchable = b;
            });

            if (hasDefaultValue)
            {
                g.touchable = defaultValue;
            }
            s.GetUIBase().AddDisposable(sub);
        }