private void TransformHand(Frame frame, ProxyNode proxyNode, MarkNode markNode, HandChirality handChirality) { if (proxyNode == null || markNode == null) { return; } var deltaRotation = Quaternion.FromToRotation(proxyNode.transform.forward, markNode.transform.forward); var localProxyPosition = proxyNode.transform.worldToLocalMatrix.MultiplyPoint(leapRoot.position); var markPosition = markNode.transform.localToWorldMatrix.MultiplyPoint(localProxyPosition); var scaleLeftHand = new Vector( markNode.transform.localScale.x / proxyNode.transform.localScale.x, markNode.transform.localScale.y / proxyNode.transform.localScale.y, markNode.transform.localScale.z / proxyNode.transform.localScale.z); if (handChirality == HandChirality.Left) { frame = frame.TransformLeft(new LeapTransform(-leapRoot.position.ToLeap(), LeapQuaternion.Identity)); frame = frame.TransformLeft(new LeapTransform(Vector.Zero, deltaRotation.ToLeap(), scaleLeftHand)); frame = frame.TransformLeft(new LeapTransform(markPosition.ToLeap(), LeapQuaternion.Identity)); } else { frame = frame.TransformRight(new LeapTransform(-leapRoot.position.ToLeap(), LeapQuaternion.Identity)); frame = frame.TransformRight(new LeapTransform(Vector.Zero, deltaRotation.ToLeap(), scaleLeftHand)); frame = frame.TransformRight(new LeapTransform(markPosition.ToLeap(), LeapQuaternion.Identity)); } }
public void DisableTeleportCamera() { proxyNode = null; markNode = null; Player.Instance.MainCamera.targetDisplay = 0; // Set main camera to the VR display Player.Instance.TeleportCamera.enabled = false; }
private void ActivatingStateHandler() { // Fade in the hand Color opaqe = new Color(0, 0, 0, 1f); Tween tween = HandModel.materials[1].DOColor(opaqe, "_BaseColor", 0.5f).SetOptions(true); // Check if base hand was grasping an object when it entered the proxy if (Player.Instance.GetInteractionHand(HandChirality).isGraspingObject) { // Create a duplicate at mark hand location if the base hand was grasping an object baseHandObject = Player.Instance.GetInteractionHand(HandChirality).graspedObject.gameObject.GetComponent <InteractionWorldObject>(); ProxyNode proxy = LeapProvider.GetProxyNode(HandChirality); // Scale the grasped object to appropriate size Vector3 relativeScale = new Vector3( proxy.transform.localScale.x / Mark.transform.localScale.x, proxy.transform.localScale.y / Mark.transform.localScale.y, proxy.transform.localScale.z / Mark.transform.localScale.z ); baseHandObject.ScaleAroundGraspRel(relativeScale); // Instatniate a duplicate at mark location markHandObject = baseHandObject.InstantiateDuplicate(proxy.transform, Mark.transform); ownership = Ownership.BaseHand; ChangeState(MarkHandState.DuplicateObject); } else // If the base hand wasn not grasping an object go to Idle state { ChangeState(MarkHandState.Idle); } }
public void EnableTeleportCamera(ProxyNode proxy, MarkNode mark) { proxyNode = proxy; markNode = mark; Player.Instance.MainCamera.targetDisplay = 2; // Set main camera to some non-VR display Player.Instance.TeleportCamera.enabled = true; }
private IEnumerable BuildResultTree(object resultsObject, bool moreAvailable) { var results = resultsObject as ICollection <SearchResult>; if (results == null) { return(results); } var root = new Folder(); if (moreAvailable) { root.Children.Add(new ButtonNode { Text = $"Showing first {results.Count} results. Show all results instead (slow).", OnClick = () => searchLogControl.TriggerSearch(searchLogControl.SearchText, int.MaxValue) }); } root.Children.Add(new Message { Text = $"{results.Count} results. Search took: {Elapsed.ToString()}" }); foreach (var result in results) { TreeNode parent = root; if (result.Node is ParentedNode parentedNode) { var project = parentedNode.GetNearestParent <Project>(); if (project != null) { var projectProxy = root.GetOrCreateNodeWithName <ProxyNode>(project.Name); projectProxy.Original = project; if (projectProxy.Highlights.Count == 0) { projectProxy.Highlights.Add(project.Name); } parent = projectProxy; } } var proxy = new ProxyNode(); proxy.Original = result.Node; proxy.Populate(result); parent.Children.Add(proxy); } if (!root.HasChildren) { root.Children.Add(new Message { Text = "No results found." }); } return(root.Children); }
/// <summary> /// Finds the proper text to be used for a tree node /// </summary> /// <param name="node"> node to find name for </param> /// <returns>name of the node to display on tree </returns> public static string TextSelector(Object node) { if (node is ProxyNode) { node = ((ProxyNode)node).Original; } string text = node switch { Project p => p.Name, Target t => "Target " + t.Name, Folder f => f.Name, ProjectEvaluation pe => pe.Name, Microsoft.Build.Logging.StructuredLogger.Task ta => "Task " + ta.Title + " duration " + ta.DurationText, AddItem a => "Add Item " + a.Name, RemoveItem r => "Remove Item " + r.Name, Item i => i.NameAndEquals + " " + i.ShortenedText, Metadata m => m.NameAndEquals + " " + m.ShortenedValue, EvaluationProfileEntry epe => epe.Title + " " + epe.DurationText + " " + epe.ShortenedElementDescription, Property p => p.NameAndEquals + " " + p.ShortenedValue, Parameter p => p.Name, Message m => m.ShortenedText, Import i => "Import " + i.Name + " " + i.Location, NoImport ni => "NoImport " + ni.Name + " " + ni.Location + " " + ni.Text, Error e => e.ToString(), Warning w => w.ToString(), Note n => n.Text, SourceFile sf => sf.Name, SourceFileLine sfl => sfl.LineNumber + " " + sfl.LineText, ProxyNode pn => pn.TypeName, TimedNode t => t.Name, _ => node.ToString() }; return(text); }
private void Start() { proxyNode = GetComponent <ProxyNode>(); interactionBehaviour = GetComponent <InteractionBehaviour>(); manipulation = GetComponent <Manipulation>(); manipulation.OnModeChange += OnManipulationModeChange; }
void Start() { Mode = ManipulationMode.Inactive; lineRenderer = GetComponent <LineRenderer>(); proxyNode = GetComponent <ProxyNode>(); leap = GetComponent <InteractionBehaviour>(); graspedPoseHandler = new ProxyGraspedPoseHandler(leap); leap.graspedPoseHandler = graspedPoseHandler; }
public void Add(ProxyNode proxy) { if (proxies.Count == maxProxies) { proxies.RemoveAt(0); } proxies.Add(proxy); proxy.transform.SetParent(transform.GetChild(proxies.IndexOf(proxy))); proxy.transform.localScale = new Vector3(0.05f, 0.05f, 0.05f); proxy.transform.localRotation = Quaternion.identity; proxy.transform.localPosition = Vector3.zero; }
public void SetHandTransform(ProxyNode proxyNode, MarkNode markNode, HandChirality handChirality) { if (handChirality == HandChirality.Left) { proxyNodeLeftHand = proxyNode; markNodeLeftHand = markNode; } else { proxyNodeRightHand = proxyNode; markNodeRightHand = markNode; } }
private IEnumerable BuildResultTree(object resultsObject) { var results = resultsObject as IEnumerable <SearchResult>; if (results == null) { return(results); } var root = new Folder(); // root.Children.Add(new Message { Text = "Elapsed " + Elapsed.ToString() }); foreach (var result in results) { TreeNode parent = root; var parentedNode = result.Node as ParentedNode; if (parentedNode != null) { var chain = parentedNode.GetParentChain(); var project = parentedNode.GetNearestParent <Project>(); if (project != null) { var projectProxy = root.GetOrCreateNodeWithName <ProxyNode>(project.Name); projectProxy.Original = project; if (projectProxy.Highlights.Count == 0) { projectProxy.Highlights.Add(project.Name); } parent = projectProxy; parent.IsExpanded = true; } } var proxy = new ProxyNode(); proxy.Original = result.Node; proxy.Populate(result); parent.Children.Add(proxy); } if (!root.HasChildren) { root.Children.Add(new Message { Text = "No results found." }); } return(root.Children); }
private void CreateProxy() { creatingSphere = true; //Destroy(markedSpace); //Destroy(proxySpace); //Destroy(proxyNode); //Destroy(markNode); markedSpace = Instantiate(ExitWarp); proxySpace = Instantiate(EntryWarp); proxyNode = proxySpace.GetComponent <ProxyNode>(); markNode = markedSpace.GetComponent <MarkNode>(); floorMarker = markedSpace.transform.Find("Cylinder").gameObject; floorMarker.SetActive(true); proxyNode.Marks.Add(markNode); proxyNode.SetCreationMode(true); SetActiveNodes(false); Vector3 pos = MarkPos(); float size = MarkSize(); Vector3 midPoint = (lIndexTipPos + rIndexTipPos) / 2.0f; float proxyFilteredSize = 0, markFilteredScale = 0; for (int i = 0; i < 100; i++) { markPosFilter.Filter(pos); proxyPosFilter.Filter(midPoint); proxyFilteredSize = proxyScaleFilter.Filter(0.01f); markFilteredScale = markScaleFilter.Filter(0.01f); } markedSpace.transform.position = pos; markedSpace.transform.localScale = new Vector3(markFilteredScale, markFilteredScale, markFilteredScale); proxySpace.transform.position = midPoint; proxySpace.transform.localScale = new Vector3(proxyFilteredSize, proxyFilteredSize, proxyFilteredSize); }
private static TreeNode InsertParent( TreeNode parent, NamedNode actualParent, string name = null, Func <ProxyNode, bool> existingNodeFinder = null) { name ??= actualParent.Name; ProxyNode folderProxy = null; if (existingNodeFinder != null) { foreach (var existingChild in parent.Children.OfType <ProxyNode>()) { if (existingNodeFinder(existingChild)) { folderProxy = existingChild; break; } } if (folderProxy == null) { folderProxy = new ProxyNode { Name = name }; parent.AddChild(folderProxy); } } if (folderProxy == null) { folderProxy = parent.GetOrCreateNodeWithName <ProxyNode>(name); } folderProxy.Original = actualParent; if (folderProxy.Highlights.Count == 0) { folderProxy.Highlights.Add(name); } folderProxy.IsExpanded = true; return(folderProxy); }
void Start() { audioSource = GetComponent <AudioSource>(); proxy = GetComponentInParent <ProxyNode>(); proxy.OnProxyEvent += OnProxyEvent; }
private IEnumerable BuildResultTree(IEnumerable<SearchResult> results) { if (results == null) { return results; } var root = new Folder(); foreach (var result in results) { TreeNode parent = root; var parentedNode = result.Node as ParentedNode; if (parentedNode != null) { var chain = parentedNode.GetParentChain(); var project = parentedNode.GetNearestParent<Project>(); if (project != null) { var projectProxy = root.GetOrCreateNodeWithName<ProxyNode>(project.Name); projectProxy.Original = project; if (projectProxy.Highlights.Count == 0) { projectProxy.Highlights.Add(project.Name); } parent = projectProxy; parent.IsExpanded = true; } } var proxy = new ProxyNode(); proxy.Original = result.Node; proxy.Populate(result); parent.Children.Add(proxy); } if (!root.HasChildren) { root.Children.Add(new Message { Text = "No results found." }); } //root.Children.Add(new Message { Text = "Elapsed " + Elapsed.ToString() }); return root.Children; }
public void Enable(ProxyNode proxy) { LeapProvider.SetHandTransform(proxy, Mark, HandChirality); isEnabled = true; }
public void SetOwner(ProxyNode proxyNode) { proxy = proxyNode; }
public void Remove(ProxyNode proxy) { proxy.transform.SetParent(null, true); // Parent to scene's top order = proxies.IndexOf(proxy); // reorder the proxies next time they are shown proxies.Remove(proxy); }
public static Folder BuildResultTree(object resultsObject, bool moreAvailable = false, TimeSpan elapsed = default) { var root = new Folder(); var results = resultsObject as ICollection <SearchResult>; if (results == null) { return(root); } root.Children.Add(new Message { Text = $"{results.Count} result{(results.Count == 1 ? "" : "s")}. Search took: {elapsed.ToString()}" }); bool includeDuration = false; bool includeStart = false; bool includeEnd = false; foreach (var r in results) { if (r.Duration != default) { includeDuration = true; } if (r.StartTime != default) { includeStart = true; } if (r.EndTime != default) { includeEnd = true; } } if (includeDuration) { results = results.OrderByDescending(r => r.Duration).ToArray(); } else if (includeStart) { results = results.OrderBy(r => r.StartTime).ToArray(); } else if (includeEnd) { results = results.OrderBy(r => r.EndTime).ToArray(); } foreach (var result in results) { TreeNode parent = root; var resultNode = result.Node; bool isProject = resultNode is Project; bool isTarget = resultNode is Target; if (!includeDuration && !includeStart && !includeEnd && !isProject) { var project = resultNode.GetNearestParent <Project>(); if (project != null) { var projectName = ProxyNode.GetNodeText(project); parent = InsertParent( parent, project, projectName, existingProxy => existingProxy.Original is Project existing && string.Equals(existing.SourceFilePath, project.SourceFilePath, StringComparison.OrdinalIgnoreCase)); } var target = resultNode.GetNearestParent <Target>(); if (!isTarget && project != null && target != null && target.Project == project) { parent = InsertParent(parent, target, target.TypeName + " " + target.Name); } // nest under a Task, unless it's an MSBuild task higher up the parent chain var task = resultNode.GetNearestParent <Task>(t => !string.Equals(t.Name, "MSBuild", StringComparison.OrdinalIgnoreCase)); if (task != null && !isTarget && project != null && task.GetNearestParent <Project>() == project) { parent = InsertParent(parent, task, "Task " + task.Name); } if (resultNode is Item item && item.Parent is NamedNode itemParent && (itemParent is Folder || itemParent is AddItem || itemParent is RemoveItem)) { parent = InsertParent(parent, itemParent); } if (resultNode is Metadata metadata && metadata.Parent is Item parentItem && parentItem.Parent is NamedNode grandparent && (grandparent is Folder || grandparent is AddItem || grandparent is RemoveItem)) { parent = InsertParent(parent, grandparent); parent = InsertParent(parent, parentItem, parentItem.Text); } if (parent == root) { var evaluation = resultNode.GetNearestParent <ProjectEvaluation>(); if (evaluation != null) { var evaluationName = ProxyNode.GetNodeText(evaluation); parent = InsertParent(parent, evaluation, evaluationName); } } } var proxy = new ProxyNode(); proxy.Original = resultNode; proxy.SearchResult = result; parent.Children.Add(proxy); } if (!root.HasChildren) { root.Children.Add(new Message { Text = "No results found." }); } return(root); }
private IEnumerable BuildResultTree(object resultsObject, bool moreAvailable = false) { var results = resultsObject as ICollection <SearchResult>; if (results == null) { return(results); } var root = new Folder(); if (moreAvailable) { var showAllButton = new ButtonNode { Text = $"Showing first {results.Count} results. Show all results instead (slow)." }; showAllButton.OnClick = () => { showAllButton.IsEnabled = false; searchLogControl.TriggerSearch(searchLogControl.SearchText, int.MaxValue); }; root.Children.Add(showAllButton); } root.Children.Add(new Message { Text = $"{results.Count} result{(results.Count == 1 ? "" : "s")}. Search took: {Elapsed.ToString()}" }); bool includeDuration = results.Any(r => r.Duration != default); if (includeDuration) { results = results.OrderByDescending(r => r.Duration).ToArray(); } foreach (var result in results) { TreeNode parent = root; if (!includeDuration) { var project = result.Node.GetNearestParent <Project>(); if (project != null) { var projectProxy = root.GetOrCreateNodeWithName <ProxyNode>(project.Name); projectProxy.Original = project; if (projectProxy.Highlights.Count == 0) { projectProxy.Highlights.Add(project.Name); } parent = projectProxy; parent.IsExpanded = true; } } var proxy = new ProxyNode(); proxy.Original = result.Node; proxy.SearchResult = result; parent.Children.Add(proxy); } if (!root.HasChildren) { root.Children.Add(new Message { Text = "No results found." }); } return(root.Children); }