Skip to content

Commit

Permalink
Merge pull request #1818 from StephenHodgson/MRTK-Dev-BuildFixes
Browse files Browse the repository at this point in the history
App Bar Build Fixes
  • Loading branch information
SimonDarksideJ authored Mar 17, 2018
2 parents f52a06b + f10a6c9 commit d46126f
Showing 1 changed file with 65 additions and 46 deletions.
111 changes: 65 additions & 46 deletions Assets/MixedRealityToolkit/UX/Scripts/AppBar/AppBar.cs
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See LICENSE in the project root for license information.

using System;
using System.Collections.Generic;
using MixedRealityToolkit.InputModule.EventData;
using MixedRealityToolkit.UX.BoundingBoxes;
using MixedRealityToolkit.UX.Buttons.Profiles;
using MixedRealityToolkit.UX.Receivers;
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.XR.WSA.Input;

namespace MixedRealityToolkit.UX.AppBarControl
{
Expand Down Expand Up @@ -79,20 +78,20 @@ public enum ButtonTypeEnum
Adjust = 2,
Hide = 4,
Show = 8,
Done = 16,
Done = 16
}

public enum AppBarDisplayTypeEnum
{
Manipulation,
Standalone,
Standalone
}

public enum AppBarStateEnum
{
Default,
Manipulation,
Hidden,
Hidden
}

public BoundingBox BoundingBox
Expand Down Expand Up @@ -134,7 +133,9 @@ public ButtonTemplate[] Buttons
get
{
return buttons;
} set {
}
set
{
buttons = value;
}
}
Expand Down Expand Up @@ -171,6 +172,15 @@ public ButtonTemplate[] DefaultButtons
[SerializeField]
private BoundingBox boundingBox;

private ButtonTemplate[] defaultButtons;
private Vector3[] forwards = new Vector3[4];
private Vector3 targetBarSize = Vector3.one;
private float lastTimeTapped = 0f;
private float coolDownTime = 0.5f;
private int numDefaultButtons;
private int numHiddenButtons;
private int numManipulationButtons;

public void Reset()
{
State = AppBarStateEnum.Default;
Expand All @@ -181,12 +191,16 @@ public void Reset()
public void Start()
{
State = AppBarStateEnum.Default;
if (interactables.Count == 0) {
if (interactables.Count == 0)
{
RefreshTemplates();
for (int i = 0; i < defaultButtons.Length; i++) {
for (int i = 0; i < defaultButtons.Length; i++)
{
CreateButton(defaultButtons[i], null);
}
for (int i = 0; i < buttons.Length; i++) {

for (int i = 0; i < buttons.Length; i++)
{
CreateButton(buttons[i], CustomButtonIconProfile);
}
}
Expand All @@ -207,9 +221,9 @@ protected override void InputClicked(GameObject obj, InputClickedEventData event
case "Remove":
// Destroy the target object, Bounding Box, Bounding Box Rig and App Bar
boundingBox.Target.GetComponent<BoundingBoxRig>().Deactivate();
Component.Destroy(boundingBox.Target.GetComponent<BoundingBoxRig>());
GameObject.Destroy(boundingBox.Target);
GameObject.Destroy(this.gameObject);
Destroy(boundingBox.Target.GetComponent<BoundingBoxRig>());
Destroy(boundingBox.Target);
Destroy(gameObject);
break;

case "Adjust":
Expand Down Expand Up @@ -274,9 +288,12 @@ private void CreateButton(ButtonTemplate template, ButtonIconProfile customIconP
case ButtonTypeEnum.Show:
numHiddenButtons++;
break;

default:
throw new ArgumentOutOfRangeException();
}

GameObject newButton = GameObject.Instantiate(SquareButtonPrefab, buttonParent);
GameObject newButton = Instantiate(SquareButtonPrefab, buttonParent);
newButton.name = template.Name;
newButton.transform.localPosition = Vector3.zero;
newButton.transform.localRotation = Quaternion.identity;
Expand Down Expand Up @@ -335,14 +352,10 @@ private void FollowBoundingBox(bool smooth)
finalPosition += (finalForward * -HoverOffsetZ);

// Follow our bounding box
if (smooth)
{
transform.position = Vector3.Lerp(transform.position, finalPosition, 0.5f);
}
else
{
transform.position = finalPosition;
}
transform.position = smooth ?
Vector3.Lerp(transform.position, finalPosition, 0.5f) :
finalPosition;

// Rotate on the y axis
Vector3 eulerAngles = Quaternion.LookRotation((boundingBox.transform.position - finalPosition).normalized, Vector3.up).eulerAngles;
eulerAngles.x = 0f;
Expand All @@ -353,12 +366,11 @@ private void FollowBoundingBox(bool smooth)
private void Update()
{
FollowBoundingBox(true);

switch (State)
{
case AppBarStateEnum.Default:
default:
targetBarSize = new Vector3 (numDefaultButtons * buttonWidth, buttonWidth, 1f);
targetBarSize = new Vector3(numDefaultButtons * buttonWidth, buttonWidth, 1f);
break;

case AppBarStateEnum.Hidden:
Expand All @@ -368,12 +380,15 @@ private void Update()
case AppBarStateEnum.Manipulation:
targetBarSize = new Vector3(numManipulationButtons * buttonWidth, buttonWidth, 1f);
break;

default:
throw new ArgumentOutOfRangeException();
}

backgroundBar.transform.localScale = Vector3.Lerp(backgroundBar.transform.localScale, targetBarSize, 0.5f);
}

private void RefreshTemplates ()
private void RefreshTemplates()
{
int numCustomButtons = 0;
for (int i = 0; i < buttons.Length; i++)
Expand All @@ -383,54 +398,51 @@ private void RefreshTemplates ()
numCustomButtons++;
}
}
List<ButtonTemplate> defaultButtonsList = new List<ButtonTemplate>();

var defaultButtonsList = new List<ButtonTemplate>();

// Create our default button templates based on user preferences
if (UseRemove)
{
defaultButtonsList.Add(GetDefaultButtonTemplateFromType(ButtonTypeEnum.Remove, numCustomButtons, UseHide, UseAdjust, UseRemove));
defaultButtonsList.Add(GetDefaultButtonTemplateFromType(ButtonTypeEnum.Remove, numCustomButtons, UseHide, UseAdjust));
}

if (UseAdjust)
{
defaultButtonsList.Add(GetDefaultButtonTemplateFromType(ButtonTypeEnum.Adjust, numCustomButtons, UseHide, UseAdjust, UseRemove));
defaultButtonsList.Add(GetDefaultButtonTemplateFromType(ButtonTypeEnum.Done, numCustomButtons, UseHide, UseAdjust, UseRemove));
defaultButtonsList.Add(GetDefaultButtonTemplateFromType(ButtonTypeEnum.Adjust, numCustomButtons, UseHide, UseAdjust));
defaultButtonsList.Add(GetDefaultButtonTemplateFromType(ButtonTypeEnum.Done, numCustomButtons, UseHide, UseAdjust));
}

if (UseHide)
{
defaultButtonsList.Add(GetDefaultButtonTemplateFromType(ButtonTypeEnum.Hide, numCustomButtons, UseHide, UseAdjust, UseRemove));
defaultButtonsList.Add(GetDefaultButtonTemplateFromType(ButtonTypeEnum.Show, numCustomButtons, UseHide, UseAdjust, UseRemove));
defaultButtonsList.Add(GetDefaultButtonTemplateFromType(ButtonTypeEnum.Hide, numCustomButtons, UseHide, UseAdjust));
defaultButtonsList.Add(GetDefaultButtonTemplateFromType(ButtonTypeEnum.Show, numCustomButtons, UseHide, UseAdjust));
}
defaultButtons = defaultButtonsList.ToArray();
}

#if UNITY_EDITOR
public void EditorRefreshTemplates ()
public void EditorRefreshTemplates()
{
RefreshTemplates();
}

#endif

private ButtonTemplate[] defaultButtons;
private Vector3[] forwards = new Vector3[4];
private Vector3 targetBarSize = Vector3.one;
private float lastTimeTapped = 0f;
private float coolDownTime = 0.5f;
private int numDefaultButtons;
private int numHiddenButtons;
private int numManipulationButtons;

/// <summary>
/// Generates a template for a default button based on type
/// </summary>
/// <param name="type"></param>
/// <param name="numCustomButtons"></param>
/// <param name="useHide"></param>
/// <param name="useAdjust"></param>
/// <returns></returns>
private static ButtonTemplate GetDefaultButtonTemplateFromType(ButtonTypeEnum type, int numCustomButtons, bool useHide, bool useAdjust, bool useRemove)
private static ButtonTemplate GetDefaultButtonTemplateFromType(ButtonTypeEnum type, int numCustomButtons, bool useHide, bool useAdjust)
{
// Button position is based on custom buttons
// In the app bar, Hide/Show
switch (type)
{
default:
case ButtonTypeEnum.Custom:
return new ButtonTemplate(
ButtonTypeEnum.Custom,
"Custom",
Expand All @@ -441,10 +453,12 @@ private static ButtonTemplate GetDefaultButtonTemplateFromType(ButtonTypeEnum ty

case ButtonTypeEnum.Adjust:
int adjustPosition = numCustomButtons + 1;

if (!useHide)
{
adjustPosition--;
}

return new ButtonTemplate(
ButtonTypeEnum.Adjust,
"Adjust",
Expand All @@ -468,7 +482,7 @@ private static ButtonTemplate GetDefaultButtonTemplateFromType(ButtonTypeEnum ty
"Hide",
"ObjectCollectionScatter", // Replace with your custom icon texture name in HolographicButton prefab
"Hide Menu",
0,// Always the first to appear
0, // Always the first to appear
0);

case ButtonTypeEnum.Remove:
Expand All @@ -477,10 +491,12 @@ private static ButtonTemplate GetDefaultButtonTemplateFromType(ButtonTypeEnum ty
{
removePosition++;
}

if (!useHide)
{
removePosition--;
}

return new ButtonTemplate(
ButtonTypeEnum.Remove,
"Remove",
Expand All @@ -497,6 +513,9 @@ private static ButtonTemplate GetDefaultButtonTemplateFromType(ButtonTypeEnum ty
"Show Menu",
0,
0);

default:
throw new ArgumentOutOfRangeException("type", type, null);
}
}
}
Expand Down

0 comments on commit d46126f

Please sign in to comment.