コード例 #1
0
ファイル: EditView.cs プロジェクト: instr3/WitnessVisualizer
        internal void MouseMove(int x, int y)
        {
            HoveredObjects.Clear();
            Vector mousePosition = new Vector(x, y);

            if (IsDragging)
            {
                Vector deltaPosition = mousePosition - mouseDownPosition;
                Origin           += deltaPosition;
                mouseDownPosition = mousePosition;
            }
            else
            {
                if (ElementMoveStartPosition != null)
                {
                    Vector deltaPosition = mousePosition.MapFromScreen(Scale, Origin) - ElementMoveStartPosition.MapFromScreen(Scale, Origin);
                    // We do not guarantee that points in nodesToMove are unique
                    List <Vector> targetPos = nodesToMove.Select(node => new Vector(node.X, node.Y) + deltaPosition).ToList();
                    for (int i = 0; i < nodesToMove.Count; ++i)
                    {
                        nodesToMove[i].X = targetPos[i].X;
                        nodesToMove[i].Y = targetPos[i].Y;
                    }
                    ElementMoveStartPosition = mousePosition;
                    return;
                }
                Vector       query         = mousePosition.MapFromScreen(Scale, Origin);
                GraphElement havoredObject = QueryPosition(query);
                if (havoredObject != null)
                {
                    HoveredObjects.Add(havoredObject);
                }
                if (IsCreatingMode)
                {
                    if (havoredObject is Node node)
                    {
                        HoveredCreatingNode = node;
                    }
                    else
                    {
                        HoveredCreatingNode = new Node(query.X, query.Y);
                    }
                }
            }
        }
コード例 #2
0
        void FixedUpdate()
        {
            HoveredObjects.Clear();
            HoveredUiObjects.Clear();

            // Scene objects

            RaycastHit hit;
            Ray        ray = Camera.main.ScreenPointToRay(Pointer.Position);

            if (Physics.Raycast(ray, out hit, 100))
            {
                HoveredObjects.Add(hit.transform.gameObject);
            }
            ;

            // UI objects

            _pointerEventData = new PointerEventData(EventSystem)
            {
                position = Pointer.Position
            };

            //Create a list of Raycast Results
            List <UnityEngine.EventSystems.RaycastResult> results = new List <UnityEngine.EventSystems.RaycastResult>();

            //Raycast using the Graphics Raycaster and mouse click position
            Raycaster.Raycast(_pointerEventData, results);

            //For every result returned, output the name of the GameObject on the Canvas hit by the Ray
            foreach (UnityEngine.EventSystems.RaycastResult result in results)
            {
                HoveredUiObjects.Add(result.gameObject);
            }

            DebugList = HoveredUiObjects;
        }