private void selectWedge(VisibilityContainer con, Visibility vis) { if (vis == Visibility.Visible) { wedgeContainer.Children.Where(child => child != con).ToList().ForEach(wedge => wedge.Hide()); } }
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; } }
private void stateChanged(VisibilityContainer c, Visibility state) { switch (state) { case Visibility.Hidden: stateBackground.FadeOut(200); break; case Visibility.Visible: stateBackground.FadeIn(200); break; } }
private void OsuFocusedOverlayContainer_StateChanged(VisibilityContainer arg1, Visibility arg2) { switch (arg2) { case Visibility.Visible: samplePopIn?.Play(); break; case Visibility.Hidden: samplePopOut?.Play(); break; } }
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); }