Example #1
0
 //reset cloud variables on player death
 public void DeathReset()
 {
     indicatorRenderer.enabled = false;
     cloudCollider.enabled     = false;
     _cloudTimer = LifeTime;
     _cloudState = CloudState.Ready;
 }
 public void DeathReset()
 {
     cloudRenderer.enabled = false;
     cloudCollider.enabled = false;
     _timer      = cloudTimer;
     _cloudState = CloudState.Ready;
 }
Example #3
0
    //----------------------------------------------------------------------------------------------------
    /// <summary>
    /// 雲が隕石で消える一連の動き
    /// </summary>
    void CloudMeteoriteDestroy()
    {
        //隕石の回転
        Meteorite.transform.Rotate(Vector3.up);

        //表示するテキストを変更
        if (!m_textChanged)
        {
            TextChange();
        }

        //テキスト移動開始までは隕石が移動
        if (!m_fallDownMeteorite)
        {
            MeteoritePosition            = Meteorite.transform.position;
            MeteoritePosition.y         -= SPEED * Time.deltaTime;
            Meteorite.transform.position = MeteoritePosition;

            //隕石が雲の位置に着くと雲が消える
            if (Meteorite.transform.position.y <= CloudObject.transform.position.y)
            {
                m_cloudState = CloudState.Play;
            }

            //隕石が停止位置に着くと初期位置に戻りテキストの移動を始める
            if (Meteorite.transform.position.y <= TextStopPositionObject.transform.position.y)
            {
                Meteorite.transform.position = MeteoriteStartPositionObject.transform.position;
                m_fallDownMeteorite          = true;
            }
        }
    }
Example #4
0
    //----------------------------------------------------------------------------------------------------
    /// <summary>
    /// 雲がジェットで消える一連の動き
    /// </summary>
    void CloudJetDestroy()
    {
        if (!m_textChanged)
        {
            TextChange();
        }

        if (!m_leftCharacterMoved)
        {
            //左側のキャラクターの動き
            LeftCharacterPosition            = LeftCharacter.transform.position;
            LeftCharacterPosition.z         += Time.deltaTime * SPEED;
            LeftCharacter.transform.position = LeftCharacterPosition;

            //雲の右端で雲が動き始める
            if (LeftCharacterPosition.z >= CloudRightEndObject.transform.position.z)
            {
                m_cloudState = CloudState.Play;
            }

            //画面外へ着くと初期位置へ戻す
            if (LeftCharacterPosition.z >= DisplayOutsideObject.transform.position.z)
            {
                m_leftCharacterMoved             = true;
                LeftCharacter.transform.position = LeftCharacterStartPositionObject.transform.position;
            }
        }
    }
Example #5
0
    //----------------------------------------------------------------------------------------------------
    /// <summary>
    /// テキストの動き
    /// </summary>
    void TextMoving()
    {
        //テキストが下に下がっていく
        CreditText[m_textNum].transform.position = Vector3.MoveTowards(CreditText[m_textNum].transform.position,
                                                                       TextStopPositionObject.transform.position, Time.deltaTime * m_textSpeed);

        //停止位置に着くとリセットする
        if (CreditText[m_textNum].transform.position.y <= TextStopPositionObject.transform.position.y)
        {
            switch (m_cloudDestroyCause)
            {
            case CloudDestroyCause.Jet:
                m_leftCharacterMoved = false;
                break;

            case CloudDestroyCause.Meteorite:
                m_fallDownMeteorite = false;
                break;

            case CloudDestroyCause.Thunder:
                m_thunderTime       = 0;
                m_thunderFlashCount = 0;
                m_lightningStruck   = false;
                break;
            }
            m_cloudState        = CloudState.Non;
            m_cloudDestroyCause = CloudDestroyCause.Non;
            m_textChanged       = false;
            m_textMoving        = false;
            if (m_textNum == MAX_TEXT_NUM)
            {
                m_ending = true;
            }
        }
    }
Example #6
0
    void Start()
    {
        rain = transform.GetChild(0).GetComponent <ParticleSystem>();

        anim       = GetComponent <Animator>();
        targetBird = GameObject.FindGameObjectWithTag("Player").transform;

        anim.SetFloat(State, 0);
        cloudState = CloudState.IDLE;
    }
Example #7
0
    //----------------------------------------------------------------------------------------------------
    /// <summary>
    /// 雲が雷で消える一連の動き
    /// </summary>
    void CloudThunderDestroy()
    {
        m_thunderTime++;

        //表示するテキストを変更
        if (!m_textChanged)
        {
            TextChange();
        }

        if (!m_lightningStruck)
        {
            //雷が落ちるまで点滅する
            if (m_thunderFlashCount < THUNDER_FLASH_COUNT_LIMIT)
            {
                if (m_thunderTime % THUNDER_FLASH_INTERVAL == 0 && m_thunderFlashCount % THUNDER_TWICE == 0)
                {
                    ThunderFlash.SetActive(true);
                    m_thunderFlashCount++;
                }
                if (m_thunderTime % (THUNDER_FLASH_INTERVAL * THUNDER_TWICE) == 0 && m_thunderFlashCount % THUNDER_TWICE != 0)
                {
                    ThunderFlash.SetActive(false);
                    m_thunderFlashCount++;
                }
            }
            else
            {
                //雷が落ちる(稲妻が出現する)
                MySoundManager.Instance.Play(SeCollection.Lightning);
                Thunder.SetActive(true);
                m_lightningStruck = true;
                //落ちた時に雲は消え始める
                m_cloudState = CloudState.Play;
            }
        }
        else
        {
            //雷が落ちた後、稲妻の透明度を下げていく
            ThunderRendererAlpha  = ThunderRendererAlpha - (m_ChangeAlphaSpeed * Time.deltaTime);
            ThunderColor.a        = ThunderRendererAlpha;
            ThunderRenderer.color = ThunderColor;

            if (ThunderRendererAlpha <= 0)
            {
                ThunderRendererAlpha = ALPHA_MAX;
                ThunderColor.a       = ThunderRendererAlpha;

                ThunderRenderer.color = ThunderColor;

                Thunder.SetActive(false);
            }
        }
    }
    void Awake()
    {
        cloudRenderer = CloudPrefab.GetComponent <SpriteRenderer>();
        cloudCollider = CloudPrefab.GetComponent <BoxCollider2D>();

        cloudRenderer.enabled = false;
        cloudCollider.enabled = false;

        _timer = cloudTimer;

        _cloudState = CloudState.Ready;
    }
Example #9
0
    void Awake()
    {
        Indicator                 = Instantiate(Indicator, transform.position, transform.rotation);
        indicatorRenderer         = Indicator.GetComponent <SpriteRenderer>();
        cloudCollider             = Indicator.GetComponent <BoxCollider2D>();
        indicatorRenderer.enabled = false;
        cloudCollider.enabled     = false;

        _cloudTimer = LifeTime;

        _cloudState = CloudState.Ready;
    }
Example #10
0
 public void GetCandy()
 {
     candyGot++;
     nowInThreshold = false;
     CloudState     = CloudState.NotAccepting;
     cloudAnimator.SetTrigger("Chew");
     cloudAnimator.SetTrigger("StopFlashing");
     UpdateColor();
     if (candyGot == targetCandy)
     {
         cloudAnimator.SetTrigger("Success");
     }
 }
Example #11
0
    private void ToggleCloudState()
    {
        _cloudState = _cloudState == CloudState.Normal ? CloudState.Storm : CloudState.Normal;

        if (_cloudState == CloudState.Storm)
        {
            _cloudStyleControl.SetStormMaterial();
        }
        else
        {
            _cloudStyleControl.SetNormalMaterial();
        }
    }
Example #12
0
        public void FindImageOfCloudRecognition()
        {
            if (autoState)
            {
                return;
            }

            new Thread(() => {
                TrackingState trackingState   = TrackerManager.GetInstance().GetTrackingState();
                TrackingResult trackingResult = trackingState.GetTrackingResult();
                TrackedImage trackedImage     = trackingState.GetImage();

                int trackingCount = trackingResult.GetCount();
                if (trackingCount == 0)
                {
                    if (cloudState == CloudState.CLOUDSTATE_TRACKING || cloudState == CloudState.CLOUDSTATE_STOP)
                    {
                        cloudState = CloudState.CLOUDSTATE_FEATURE_COLLECT_READY;
                    }
                }
                else
                {
                    cloudState = CloudState.CLOUDSTATE_TRACKING;
                }

                if (cloudState != CloudState.CLOUDSTATE_FEATURE_COLLECT_READY)
                {
                    return;
                }


                GetCloudRecognition(trackedImage, (bool cloudResult, string featureBase64) =>
                {
                    if (cloudResult)
                    {
                        this.featureBase64 = featureBase64;
                        this.cloudState    = CloudState.CLOUDSTATE_CONNECT;
                    }
                    else
                    {
                        this.cloudState = CloudState.CLOUDSTATE_FEATURE_COLLECT_READY;
                    }

                    if (this.restart)
                    {
                        this.loopState = true;
                        this.restart   = false;
                    }
                });
            }).Start();
        }
Example #13
0
    //----------------------------------------------------------------------------------------------------
    /// <summary>
    /// 雲の動き
    /// </summary>
    void CloudEvent()
    {
        switch (m_cloudState)
        {
        //雲が生成される
        case CloudState.Generate:
            if (m_cloudTime == 0)
            {
                ParticleCloud.Play();
                m_cloudTime += Time.deltaTime;
            }
            else
            {
                ParticleCloud.Pause();
            }

            if (CloudObject.transform.position.y > CloudStopPositionObject.transform.position.y)
            {
                //雲の移動
                CloudNextPosition.x            = CloudObject.transform.position.x;
                CloudNextPosition.y            = CloudObject.transform.position.y - (10f * Time.deltaTime);
                CloudNextPosition.z            = CloudObject.transform.position.z;
                CloudObject.transform.position = CloudNextPosition;
            }
            break;

        //雲の動作
        case CloudState.Play:
            ParticleCloud.Play();
            m_cloudState = CloudState.Progress;
            break;

        //雲が動いている
        case CloudState.Progress:
            m_cloudTime += Time.deltaTime;
            if (m_cloudTime >= CLOUD_LIMIT_TIME)
            {
                m_cloudState = CloudState.Destroy;
                m_cloudTime  = 0;
                CloudObject.transform.position = new Vector3(CloudObject.transform.position.x, DisplayUpOutsideObject.transform.position.y, CloudObject.transform.position.z);
            }
            break;

        //雲が消えた
        case CloudState.Destroy:
            m_cloudState = CloudState.Non;
            m_textMoving = true;
            break;
        }
    }
Example #14
0
    //Tracks when cloud should decay regardless of ability selection
    public void GroundCheck(PlayerController controller)
    {
        if (controller.grounded)
        {
            _groundReset = true;
        }

        switch (_cloudState)
        {
            #region Active
        case CloudState.Active:

            cloudCollider.enabled   = true;
            indicatorRenderer.color = new Color(1, 1, 1, Mathf.Lerp(0, 1, (_cloudTimer / 3.0f)));

            if (_cloudTimer > 0)
            {
                _cloudTimer -= Time.deltaTime;
            }
            else
            {
                _cloudTimer = CloudCD;
                _cloudState = CloudState.Cooldown;
            }
            break;

            #endregion
            #region Cooldown
        case CloudState.Cooldown:

            indicatorRenderer.enabled = false;
            cloudCollider.enabled     = false;

            if (_cloudTimer > 0)
            {
                _cloudTimer -= Time.deltaTime;
            }
            else
            {
                _cloudTimer = LifeTime;
                _cloudState = CloudState.Ready;
            }
            break;
            #endregion
        }
    }
Example #15
0
        public void ShouldUnselectSelectedProvider()
        {
            var provider = new CloudState();

            _state.Clouds.AddOrUpdate(provider);
            _state.SelectedProviderId = provider.Id;

            var model = BuildMainViewModel();

            model.Clouds.Should().NotBeEmpty();
            model.SelectedProvider.Should().NotBeNull();
            model.SelectedProvider.Id.Should().Be(provider.Id);
            model.Unselect.CanExecute().Should().BeTrue();
            model.Unselect.Execute().Subscribe();

            model.Clouds.Should().NotBeEmpty();
            model.SelectedProvider.Should().BeNull();
        }
Example #16
0
        public void ShouldUnselectProviderOnceDeleted()
        {
            var provider = new CloudState();

            _state.Clouds.AddOrUpdate(new CloudState());
            _state.Clouds.AddOrUpdate(provider);
            _state.SelectedProviderId = provider.Id;

            var model = BuildMainViewModel();

            model.Clouds.Count.Should().Be(2);
            model.SelectedProvider.Should().NotBeNull();
            model.SelectedProvider.Id.Should().Be(provider.Id);
            model.Remove.Execute().Subscribe();

            model.SelectedProvider.Should().BeNull();
            model.Clouds.Count.Should().Be(1);
        }
Example #17
0
        public void ShouldSelectProviderFromStateWhenProvidersGetLoaded()
        {
            var provider = new CloudState();

            _state.Clouds.AddOrUpdate(provider);
            _state.SelectedProviderId = provider.Id;

            var model = BuildMainViewModel();

            model.Clouds.Should().NotBeEmpty();
            model.SelectedProvider.Should().NotBeNull();
            model.SelectedProvider.Id.Should().Be(provider.Id);
            model.Refresh.Execute().Subscribe();

            model.Clouds.Should().NotBeEmpty();
            model.SelectedProvider.Should().NotBeNull();
            model.SelectedProvider.Id.Should().Be(provider.Id);
        }
Example #18
0
 internal void startTracker()
 {
     if (this.secretId != null && this.secretKey != null)
     {
         if (cloudState == CloudState.CLOUDSTATE_STOP)
         {
             cloudState  = CloudState.CLOUDSTATE_START;
             cloudThread = new Thread(startCloud)
             {
                 Name = "CloudThread"
             };
             cloudThread.Start();
         }
         else
         {
             restart = true;
         }
     }
 }
Example #19
0
    public void GroundCheck(PlayerController controller)
    {
        if (controller.grounded)
        {
            _groundReset = true;
        }

        switch (_cloudState)
        {
        case CloudState.Active:

            cloudCollider.enabled = true;
            cloudRenderer.color   = new Color(1, 1, 1, Mathf.Lerp(0, 1, (_timer / 3.0f)));

            if (_timer > 0)
            {
                _timer -= Time.deltaTime;
            }
            else
            {
                _timer      = cloudCD;
                _cloudState = CloudState.Cooldown;
            }
            break;

        case CloudState.Cooldown:

            cloudRenderer.enabled = false;
            cloudCollider.enabled = false;

            if (_timer > 0)
            {
                _timer -= Time.deltaTime;
            }
            else
            {
                _timer      = cloudTimer;
                _cloudState = CloudState.Ready;
            }
            break;
        }
    }
Example #20
0
    //----------------------------------------------------------------------------------------------------
    /// <summary>
    /// 進行イベント
    /// </summary>
    void PlayEvent()
    {
        if (!m_eventPlaying && m_textNum < MAX_TEXT_NUM)
        {
            if (m_cloudState != CloudState.Generate)
            {
                m_cloudState = CloudState.Generate;
            }

            m_waitingTime = m_waitingTime + Time.deltaTime;
            if (m_waitingTime > m_textIntervalTime)
            {
                m_randomNum = UnityEngine.Random.Range(0, 3);
                switch (m_randomNum)
                {
                case 0:
                    m_cloudDestroyCause = CloudDestroyCause.Jet;
                    break;

                case 1:
                    m_cloudDestroyCause = CloudDestroyCause.Meteorite;
                    break;

                case 2:
                    m_cloudDestroyCause = CloudDestroyCause.Thunder;
                    break;
                }
                m_waitingTime = 0;
            }
        }

        if (m_ending)
        {
            m_endingImageRendererAlpha = m_endingImageRendererAlpha + (m_ChangeAlphaSpeed * Time.deltaTime);
            EndingImageColor.a         = m_endingImageRendererAlpha;
            EndingImageRenderer.color  = EndingImageColor;
            if (m_endingImageRendererAlpha >= 1)
            {
                MySceneManager.Instance.ChangeScene(MyScene.Title);
            }
        }
    }
 public void PlayAnimation(CloudState cloudState)
 {
     if (cloudState == null)
     {
         cloudState = CloudState.OPENANDCLOSE;
     }
     mCloudState = cloudState;
     if (cloudState == CloudState.OPEN)
     {
         Mask.Play("OpenCloudAnimation", 0, 0);
     }
     else if (cloudState == CloudState.OPENANDCLOSE)
     {
         Mask.Play("OpenCloudAnimation", 0, 0);
     }
     else if (cloudState == CloudState.CLOESE)
     {
         Mask.Play("CloseCloudAnimation", 0, 0);
     }
 }
Example #22
0
 void LateUpdate()
 {
     if (Mathf.Abs(gameObject.transform.position.x - targetBird.position.x) < 1.2f)
     {
         StartCoroutine(TurningToRain(0.4f));
         anim.SetFloat(State, 1);
         if (!rain.isPlaying)
         {
             rain.Play();
         }
     }
     else
     {
         len        = 0f;
         cloudState = CloudState.IDLE;
         anim.SetFloat(State, 0);
         if (rain.isPlaying)
         {
             rain.Stop();
         }
     }
 }
Example #23
0
    public void Activate(PlayerController player)
    {
        switch (_cloudState)
        {
        case CloudState.Ready:

            //get mouse position
            Vector3 mousePos2D = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            mousePos2D.z = 0;
            //set cloud position to mouse
            Indicator.transform.position = mousePos2D;

            indicatorRenderer.enabled = true;
            //make indicator opaque when cloud isn't out
            indicatorRenderer.color = new Color(1, 1, 1, 0.5f);

            if (InputController.Instance.Ability.Down)
            {
                _cloudState = CloudState.Active;
            }
            break;
        }
    }
Example #24
0
    public void Activate(PlayerController player)
    {
        switch (_cloudState)
        {
        case CloudState.Ready:

            //get mouse position
            Vector3 mousePos2D = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            mousePos2D.z = 0;
            //set cloud position to mouse
            CloudPrefab.transform.position = mousePos2D;

            cloudRenderer.enabled = true;
            cloudRenderer.color   = new Color(1, 1, 1, 0.5f);

            if (InputController.Instance.Ability.Down)
            {
                //change state to active
                _cloudState = CloudState.Active;
            }
            break;
        }
    }
Example #25
0
        public CloudViewModel(
            CloudState state,
            CreateFolderViewModelFactory createFolderFactory,
            RenameFileViewModelFactory renameFactory,
            FileViewModelFactory fileFactory,
            FolderViewModelFactory folderFactory,
            IAuthViewModel auth,
            IFileManager files,
            ICloud cloud)
        {
            _cloud = cloud;
            Folder = createFolderFactory(this);
            Rename = renameFactory(this);
            Auth   = auth;

            var canInteract = this
                              .WhenAnyValue(
                x => x.Folder.IsVisible,
                x => x.Rename.IsVisible,
                (folder, rename) => !folder && !rename);

            _canInteract = canInteract
                           .ToProperty(this, x => x.CanInteract);

            var canRefresh = this
                             .WhenAnyValue(
                x => x.Folder.IsVisible,
                x => x.Rename.IsVisible,
                x => x.Auth.IsAuthenticated,
                (folder, rename, authenticated) => !folder && !rename && authenticated);

            Refresh = ReactiveCommand.CreateFromTask(
                () => cloud.GetFiles(CurrentPath),
                canRefresh);

            _files = Refresh
                     .Select(
                items => items
                .Select(file => fileFactory(file, this))
                .OrderByDescending(file => file.IsFolder)
                .ThenBy(file => file.Name)
                .ToList())
                     .Where(items => Files == null || !items.SequenceEqual(Files))
                     .ToProperty(this, x => x.Files);

            _isLoading = Refresh
                         .IsExecuting
                         .ToProperty(this, x => x.IsLoading);

            _isReady = Refresh
                       .IsExecuting
                       .Skip(1)
                       .Select(executing => !executing)
                       .ToProperty(this, x => x.IsReady);

            var canOpenCurrentPath = this
                                     .WhenAnyValue(x => x.SelectedFile)
                                     .Select(file => file != null && file.IsFolder)
                                     .CombineLatest(Refresh.IsExecuting, canInteract, (folder, busy, ci) => folder && ci && !busy);

            Open = ReactiveCommand.Create(
                () => Path.Combine(CurrentPath, SelectedFile.Name),
                canOpenCurrentPath);

            var canCurrentPathGoBack = this
                                       .WhenAnyValue(x => x.CurrentPath)
                                       .Where(path => path != null)
                                       .Select(path => path.Length > cloud.InitialPath.Length)
                                       .CombineLatest(Refresh.IsExecuting, canInteract, (valid, busy, ci) => valid && ci && !busy);

            Back = ReactiveCommand.Create(
                () => Path.GetDirectoryName(CurrentPath),
                canCurrentPathGoBack);

            SetPath = ReactiveCommand.Create <string, string>(path => path);

            _currentPath = Open
                           .Merge(Back)
                           .Merge(SetPath)
                           .Select(path => path ?? cloud.InitialPath)
                           .DistinctUntilChanged()
                           .Log(this, $"Current path changed in {cloud.Name}")
                           .ToProperty(this, x => x.CurrentPath, state.CurrentPath ?? cloud.InitialPath);

            var getBreadCrumbs = ReactiveCommand.CreateFromTask(
                () => cloud.GetBreadCrumbs(CurrentPath));

            _breadCrumbs = getBreadCrumbs
                           .Where(items => items != null && items.Any())
                           .Select(items => items.Select(folder => folderFactory(folder, this)))
                           .ToProperty(this, x => x.BreadCrumbs);

            _showBreadCrumbs = getBreadCrumbs
                               .ThrownExceptions
                               .Select(exception => false)
                               .Merge(getBreadCrumbs.Select(items => items != null && items.Any()))
                               .ObserveOn(RxApp.MainThreadScheduler)
                               .ToProperty(this, x => x.ShowBreadCrumbs);

            _hideBreadCrumbs = this
                               .WhenAnyValue(x => x.ShowBreadCrumbs)
                               .Select(show => !show)
                               .ToProperty(this, x => x.HideBreadCrumbs);

            this.WhenAnyValue(x => x.CurrentPath, x => x.IsReady)
            .Where(x => x.Item1 != null && x.Item2)
            .Select(_ => Unit.Default)
            .InvokeCommand(getBreadCrumbs);

            this.WhenAnyValue(x => x.CurrentPath)
            .Skip(1)
            .Select(_ => Unit.Default)
            .InvokeCommand(Refresh);

            this.WhenAnyValue(x => x.CurrentPath)
            .Subscribe(_ => SelectedFile = null);

            _isCurrentPathEmpty = this
                                  .WhenAnyValue(x => x.Files)
                                  .Skip(1)
                                  .Where(items => items != null)
                                  .Select(items => !items.Any())
                                  .ToProperty(this, x => x.IsCurrentPathEmpty);

            _hasErrorMessage = Refresh
                               .ThrownExceptions
                               .Select(exception => true)
                               .ObserveOn(RxApp.MainThreadScheduler)
                               .Merge(Refresh.Select(x => false))
                               .ToProperty(this, x => x.HasErrorMessage);

            var canUploadToCurrentPath = this
                                         .WhenAnyValue(x => x.CurrentPath)
                                         .Select(path => path != null)
                                         .CombineLatest(Refresh.IsExecuting, canInteract, (up, loading, can) => up && can && !loading);

            UploadToCurrentPath = ReactiveCommand.CreateFromObservable(
                () => Observable
                .FromAsync(files.OpenRead)
                .Where(response => response.Name != null && response.Stream != null)
                .Select(args => _cloud.UploadFile(CurrentPath, args.Stream, args.Name))
                .SelectMany(task => task.ToObservable()),
                canUploadToCurrentPath);

            UploadToCurrentPath.InvokeCommand(Refresh);

            var canDownloadSelectedFile = this
                                          .WhenAnyValue(x => x.SelectedFile)
                                          .Select(file => file != null && !file.IsFolder)
                                          .CombineLatest(Refresh.IsExecuting, canInteract, (down, loading, can) => down && !loading && can);

            DownloadSelectedFile = ReactiveCommand.CreateFromObservable(
                () => Observable
                .FromAsync(() => files.OpenWrite(SelectedFile.Name))
                .Where(stream => stream != null)
                .Select(stream => _cloud.DownloadFile(SelectedFile.Path, stream))
                .SelectMany(task => task.ToObservable()),
                canDownloadSelectedFile);

            var canLogout = cloud
                            .IsAuthorized
                            .DistinctUntilChanged()
                            .Select(loggedIn => loggedIn && (
                                        cloud.SupportsDirectAuth ||
                                        cloud.SupportsOAuth ||
                                        cloud.SupportsHostAuth))
                            .CombineLatest(canInteract, (logout, interact) => logout && interact)
                            .ObserveOn(RxApp.MainThreadScheduler);

            Logout = ReactiveCommand.CreateFromTask(cloud.Logout, canLogout);

            _canLogout = canLogout
                         .ToProperty(this, x => x.CanLogout);

            var canDeleteSelection = this
                                     .WhenAnyValue(x => x.SelectedFile)
                                     .Select(file => file != null && !file.IsFolder)
                                     .CombineLatest(Refresh.IsExecuting, canInteract, (del, loading, ci) => del && !loading && ci);

            DeleteSelectedFile = ReactiveCommand.CreateFromTask(
                () => cloud.Delete(SelectedFile.Path, SelectedFile.IsFolder),
                canDeleteSelection);

            DeleteSelectedFile.InvokeCommand(Refresh);

            var canUnselectFile = this
                                  .WhenAnyValue(x => x.SelectedFile)
                                  .Select(selection => selection != null)
                                  .CombineLatest(Refresh.IsExecuting, canInteract, (sel, loading, ci) => sel && !loading && ci);

            UnselectFile = ReactiveCommand.Create(
                () => { SelectedFile = null; },
                canUnselectFile);

            UploadToCurrentPath.ThrownExceptions
            .Merge(DeleteSelectedFile.ThrownExceptions)
            .Merge(DownloadSelectedFile.ThrownExceptions)
            .Merge(Refresh.ThrownExceptions)
            .Merge(getBreadCrumbs.ThrownExceptions)
            .Log(this, $"Exception occured in provider {cloud.Name}")
            .Subscribe();

            this.WhenAnyValue(x => x.CurrentPath)
            .Subscribe(path => state.CurrentPath = path);

            this.WhenAnyValue(x => x.Auth.IsAuthenticated)
            .Select(authenticated => authenticated ? _cloud.Parameters?.Token : null)
            .Subscribe(token => state.Token = token);

            this.WhenAnyValue(x => x.Auth.IsAuthenticated)
            .Select(authenticated => authenticated ? _cloud.Parameters?.User : null)
            .Subscribe(user => state.User = user);

            this.WhenActivated(ActivateAutoRefresh);
        }
Example #26
0
 public void EnterDroppingState()
 {
     CloudState = CloudState.Dropping;
 }
Example #27
0
    void StartBack()
    {
        this.myState = CloudState.Back;

        Destroy (this.gameObject, duration + 1.0f);
    }
Example #28
0
    void Move()
    {
        Vector3 newpos = new Vector3 (0.0f, this.transform.position.y, this.transform.position.z);

        newpos.x = Mathf.SmoothDamp (this.transform.position.x, this.destinationPoint.x, ref xVelocity, duration);
        //newpos.x = Mathf.Lerp (this.transform.position.x, this.destinationPoint.x, 0.01f);

        this.transform.position = newpos;

        nowTime += Time.deltaTime;

        if (xVelocity <= 0.5f && nowTime >= nextTime && onceFlag == true) {
            myState = CloudState.Spark;
            this.myMecanimAnimator.SetTrigger ("doSpark");

            onceFlag = false;
        }
    }
Example #29
0
    private IEnumerator TurningToRain(float time)
    {
        yield return(new WaitForSeconds(time));

        cloudState = CloudState.RAINNING;
    }
Example #30
0
 internal void StopTracker()
 {
     autoState       = true;
     this.cloudState = CloudState.CLOUDSTATE_STOP;
 }
Example #31
0
        internal void StartCloud()
        {
            loopState       = true;
            this.cloudState = CloudState.CLOUDSTATE_FEATURE_COLLECT_READY;
            while (this.loopState)
            {
                Thread.Sleep(100);

                TrackingState  trackingState  = TrackerManager.GetInstance().UpdateTrackingState();
                TrackingResult trackingResult = trackingState.GetTrackingResult();
                TrackedImage   trackedImage   = trackingState.GetImage();

                int trackingCount = trackingResult.GetCount();
                if (trackingCount == 0)
                {
                    if (cloudState == CloudState.CLOUDSTATE_TRACKING)
                    {
                        cloudState = CloudState.CLOUDSTATE_FEATURE_COLLECT_READY;
                    }
                }
                else
                {
                    cloudState = CloudState.CLOUDSTATE_TRACKING;
                }

                if (trackingCount == 0 && (cloudState == CloudState.CLOUDSTATE_TRACKING || cloudState == CloudState.CLOUDSTATE_FEATURE_COLLECT_READY))
                {
                    if (!TrackerManager.GetInstance().IsTrackerDataLoadCompleted() || cloudState == CloudState.CLOUDSTATE_STOP)
                    {
                        continue;
                    }

                    isGetFeatureState = true;
                    bool isCameraMove = CameraDevice.GetInstance().CheckCameraMove(trackedImage);
                    isGetFeatureState = false;
                    if (isCameraMove)
                    {
                        GetCloudRecognition(trackedImage, (bool cloudResult, string featureBase64) =>
                        {
                            if (cloudResult)
                            {
                                this.featureBase64 = featureBase64;
                                this.cloudState    = CloudState.CLOUDSTATE_CONNECT;
                            }
                            else
                            {
                                this.cloudState = CloudState.CLOUDSTATE_FEATURE_COLLECT_READY;
                            }

                            if (this.restart)
                            {
                                this.loopState = true;
                                this.restart   = false;
                            }
                            cloudSemaphore.Release();
                        });
                        cloudSemaphore.WaitOne();
                    }
                }

                if (this.cloudState == CloudState.CLOUDSTATE_STOP)
                {
                    this.loopState = false;
                }
            }
        }
Example #32
0
        private void Update()
        {
            if (cloudState == CloudState.CLOUDSTATE_CONNECT)
            {
                cloudState = CloudState.CLOUDSTATE_CONNECTING;

                CloudRecognitionAPIController.Instance.Recognize(this.secretId, this.secretKey, featureBase64, (recognitionResult) =>
                {
                    if (this.restart == true && recognitionResult == null)
                    {
                        this.cloudState = CloudState.CLOUDSTATE_FEATURE_COLLECT_READY;

                        return;
                    }

                    CloudRecognitionData cloudRecognitionData = null;
                    try
                    {
                        cloudRecognitionData = JsonReader.Deserialize <CloudRecognitionData>(recognitionResult);
                    }
                    catch (Exception ex)
                    {
                        Debug.Log("error");
                        this.cloudState = CloudState.CLOUDSTATE_FEATURE_COLLECT_READY;
                        return;
                    }

                    if (recognitionResult != null && cloudRecognitionData.ImgId != "" && cloudRecognitionData.ImgGSUrl != "")
                    {
                        Debug.Log(recognitionResult);
                        string fileName = Path.GetFileName(cloudRecognitionData.ImgGSUrl);
                        CloudRecognitionAPIController.Instance.DownloadCloudDataAndSave(cloudRecognitionData.ImgGSUrl, fileName, (localPath) =>
                        {
                            if (this.restart == true)
                            {
                                this.cloudState = CloudState.CLOUDSTATE_FEATURE_COLLECT_READY;
                                return;
                            }

                            if (localPath == null)
                            {
                                this.cloudState = CloudState.CLOUDSTATE_FEATURE_COLLECT_READY;
                                return;
                            }

                            TrackingState trackingState   = TrackerManager.GetInstance().GetTrackingState();
                            TrackingResult trackingResult = trackingState.GetTrackingResult();
                            if (trackingResult.GetCount() > 0)
                            {
                                cloudState = CloudState.CLOUDSTATE_TRACKING;
                            }
                            else
                            {
                                string mapDirectory  = Path.GetDirectoryName(localPath);
                                string mapFilePath   = mapDirectory + "/" + Path.GetFileNameWithoutExtension(localPath) + ".2dmap";
                                string imageFilePath = localPath;

                                string customToBase64 = "";
                                if (cloudRecognitionData.Custom != null)
                                {
                                    byte[] customToByteArray = Encoding.UTF8.GetBytes(cloudRecognitionData.Custom);
                                    customToBase64           = Convert.ToBase64String(customToByteArray);
                                }

                                string command = "";
                                if (File.Exists(mapFilePath))
                                {
                                    command = "{\"cloud\":\"add_image\",\"cloud_2dmap_path\":\"" + mapFilePath + "\",\"image_width\":" + cloudRecognitionData.RealWidth + ",\"cloud_name\":\"" + cloudRecognitionData.Name + "\",\"cloud_meta\":\"" + customToBase64 + "\"}";
                                }
                                else
                                {
                                    command = "{\"cloud\":\"add_image\",\"cloud_image_path\":\"" + imageFilePath + "\",\"output_path\":\"" + mapFilePath + "\",\"image_width\":" + cloudRecognitionData.RealWidth + ",\"cloud_name\":\"" + cloudRecognitionData.Name + "\",\"cloud_meta\":\"" + customToBase64 + "\"}";
                                }

                                if (this.restart == true || command == "")
                                {
                                    this.cloudState = CloudState.CLOUDSTATE_FEATURE_COLLECT_READY;
                                    return;
                                }

                                TrackerManager.GetInstance().StartTracker(TrackerManager.TRACKER_TYPE_IMAGE);
                                CloudRecognizerCache.GetInstance().ADD(fileName, command);
                                CloudRecognizerCache.GetInstance().LOAD();

                                cloudState = CloudState.CLOUDSTATE_TRACKING;
                            }
                        });
                    }
                    else
                    {
                        this.cloudState = CloudState.CLOUDSTATE_FEATURE_COLLECT_READY;
                    }
                });
            }
        }