Esempio n. 1
0
 private void selectWedge(VisibilityContainer con, Visibility vis)
 {
     if (vis == Visibility.Visible)
     {
         wedgeContainer.Children.Where(child => child != con).ToList().ForEach(wedge => wedge.Hide());
     }
 }
Esempio n. 2
0
        private void keyBindingOverlay_StateChanged(VisibilityContainer container, Visibility visibility)
        {
            switch (visibility)
            {
            case Visibility.Visible:
                Background.FadeTo(0.9f, 300, Easing.OutQuint);
                Sidebar?.FadeColour(Color4.DarkGray, 300, Easing.OutQuint);

                SectionsContainer.FadeOut(300, Easing.OutQuint);
                ContentContainer.MoveToX(hidden_width - WIDTH, 500, Easing.OutQuint);

                backButton.Delay(100).FadeIn(100);
                break;

            case Visibility.Hidden:
                Background.FadeTo(0.6f, 500, Easing.OutQuint);
                Sidebar?.FadeColour(Color4.White, 300, Easing.OutQuint);

                SectionsContainer.FadeIn(500, Easing.OutQuint);
                ContentContainer.MoveToX(0, 500, Easing.OutQuint);

                backButton.FadeOut(100);
                break;
            }
        }
Esempio n. 3
0
        private void stateChanged(VisibilityContainer c, Visibility state)
        {
            switch (state)
            {
            case Visibility.Hidden:
                stateBackground.FadeOut(200);
                break;

            case Visibility.Visible:
                stateBackground.FadeIn(200);
                break;
            }
        }
Esempio n. 4
0
        private void OsuFocusedOverlayContainer_StateChanged(VisibilityContainer arg1, Visibility arg2)
        {
            switch (arg2)
            {
            case Visibility.Visible:
                samplePopIn?.Play();
                break;

            case Visibility.Hidden:
                samplePopOut?.Play();
                break;
            }
        }
Esempio n. 5
0
        private void onDialogOnStateChanged(VisibilityContainer dialog, Visibility v)
        {
            if (v != Visibility.Hidden)
            {
                return;
            }

            //handle the dialog being dismissed.
            dialog.Delay(PopupDialog.EXIT_DURATION).Expire();

            if (dialog == currentDialog)
            {
                State = Visibility.Hidden;
            }
        }
    /// <summary>
    /// [CheckVisibility]
    /// 視界の当たり判定を行う
    /// </summary>
    void CheckVisibility(ref Vector3 position)
    {
        //処理負荷軽減
        Vector3 forward = transform.forward;
        //判定用構造体
        VisibilityContainer container = new VisibilityContainer();
        //候補を保存するリスト
        List <VisibilityContainer> markPoints = new List <VisibilityContainer>();
        //Overlap collisions
        var collisions = Physics.OverlapSphere(position, m_visibilityDistance, m_visibilityLayerMask);

        //Collision判定ループ
        for (int i = 0, length = collisions.Length; i < length; ++i)
        {
            //GetComponent
            var point = collisions[i].GetComponent <BaseMarkPoint>();

            //Nullかリンクありでコンティニュー
            if (point == null || (point.isLinked & point.isPauseTimer))
            {
                continue;
            }

            //Point格納
            container.SetPoint(point);
            //リストに存在しなければforwardとのDotを計算してリスト追加
            if (!markPoints.Contains(container))
            {
                container.forwardToPositionDot = Vector3.Dot(forward, (point.transform.position - position).normalized);
                markPoints.Add(container);
            }
        }

        //視界判定ループ
        for (int i = 0; i < markPoints.Count;)
        {
            //視界判定trueなら++i
            if (markPoints[i].forwardToPositionDot > m_angleToCosine)
            {
                ++i;
            }
            //視界判定falseならRemove
            else
            {
                markPoints.RemoveAt(i);
            }
        }

        //この時点でCount0なら終了
        if (markPoints.Count == 0)
        {
            EditVisibilityHitFlag(false);
            return;
        }
        //この時点でCount1ならヒット確定として終了
        else if (markPoints.Count == 1)
        {
            hitVisibilityMarkPoint = markPoints[0].markPoint;
            EditVisibilityHitFlag(true);
            return;
        }

        //forwardとの角度差でソートを行う
        float minDot   = 10000.0f;
        int   minIndex = -1;

        for (int i = 0, count = markPoints.Count; i < count; ++i)
        {
            if (minDot < markPoints[i].forwardToPositionDot)
            {
                minDot   = markPoints[i].forwardToPositionDot;
                minIndex = i;
            }
        }

        //もっとも角度差が小さいものを選択する
        hitVisibilityMarkPoint = markPoints[markPoints.Count - 1].markPoint;
        EditVisibilityHitFlag(true);
    }