Example #1
0
    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));
        }
    }
Example #2
0
 public void DisableTeleportCamera()
 {
     proxyNode = null;
     markNode  = null;
     Player.Instance.MainCamera.targetDisplay = 0; // Set main camera to the VR display
     Player.Instance.TeleportCamera.enabled   = false;
 }
Example #3
0
    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);
        }
    }
Example #4
0
 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;
 }
Example #5
0
        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);
        }
Example #6
0
        /// <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);
        }
Example #7
0
 private void Start()
 {
     proxyNode                  = GetComponent <ProxyNode>();
     interactionBehaviour       = GetComponent <InteractionBehaviour>();
     manipulation               = GetComponent <Manipulation>();
     manipulation.OnModeChange += OnManipulationModeChange;
 }
Example #8
0
 void Start()
 {
     Mode                    = ManipulationMode.Inactive;
     lineRenderer            = GetComponent <LineRenderer>();
     proxyNode               = GetComponent <ProxyNode>();
     leap                    = GetComponent <InteractionBehaviour>();
     graspedPoseHandler      = new ProxyGraspedPoseHandler(leap);
     leap.graspedPoseHandler = graspedPoseHandler;
 }
Example #9
0
    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;
    }
Example #10
0
 public void SetHandTransform(ProxyNode proxyNode, MarkNode markNode, HandChirality handChirality)
 {
     if (handChirality == HandChirality.Left)
     {
         proxyNodeLeftHand = proxyNode;
         markNodeLeftHand  = markNode;
     }
     else
     {
         proxyNodeRightHand = proxyNode;
         markNodeRightHand  = markNode;
     }
 }
Example #11
0
        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);
        }
Example #12
0
    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);
    }
Example #13
0
        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);
        }
Example #14
0
 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;
        }
Example #16
0
 public void Enable(ProxyNode proxy)
 {
     LeapProvider.SetHandTransform(proxy, Mark, HandChirality);
     isEnabled = true;
 }
Example #17
0
 public void SetOwner(ProxyNode proxyNode)
 {
     proxy = proxyNode;
 }
Example #18
0
 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);
 }
Example #19
0
        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);
        }