Ejemplo n.º 1
0
        public Box GetEncapsulatingBox()
        {
            List <Vector3> points = GetPoints();

            Vector3 minPoint, maxPoint;

            Vector3Extensions.GetMinMaxPoints(points, out minPoint, out maxPoint);

            return(new Box((minPoint + maxPoint) * 0.5f, maxPoint - minPoint));
        }
Ejemplo n.º 2
0
        public Vector3 GetCellCornerPointClosestToMouseCursor()
        {
            Ray   ray = EditorCamera.Instance.Camera.ScreenPointToRay(Input.mousePosition);
            float t;

            if (Plane.Raycast(ray, out t))
            {
                Vector3        pickPoint        = ray.GetPoint(t);
                List <Vector3> cellCornerPoints = GetCellCornerPoints(GetCellFromWorldXZ(pickPoint.x, pickPoint.z));
                return(Vector3Extensions.GetPointClosestToPoint(cellCornerPoints, pickPoint));
            }

            return(Vector3.zero);
        }
Ejemplo n.º 3
0
        public Vector3 GetCellCornerPointClosestToInputDevPos()
        {
            Ray ray;

            if (!InputDevice.Instance.GetPickRay(EditorCamera.Instance.Camera, out ray))
            {
                return(Vector3.zero);
            }

            float t;

            if (Plane.Raycast(ray, out t))
            {
                Vector3        pickPoint        = ray.GetPoint(t);
                List <Vector3> cellCornerPoints = GetCellCornerPoints(GetCellFromWorldXZ(pickPoint.x, pickPoint.z));
                return(Vector3Extensions.GetPointClosestToPoint(cellCornerPoints, pickPoint));
            }

            return(Vector3.zero);
        }
Ejemplo n.º 4
0
        private Plane CalculateDragPlane()
        {
            if (_targetOOBB == null)
            {
                return(new Plane());
            }

            Matrix4x4 oobbTransform    = _targetOOBB.TransformMatrix;
            Vector3   pointOnDragPlane = _targetOOBB.Center;
            Camera    camera           = EditorCamera.Instance.Camera;

            Vector3 dragPlaneNormal = Vector3.zero;

            if (_dragStartData.DragHandleFace == BoxFace.Front || _dragStartData.DragHandleFace == BoxFace.Back)
            {
                var candidateNormals = new List <Vector3> {
                    oobbTransform.GetAxis(1)
                };
                dragPlaneNormal = Vector3Extensions.GetMostAlignedVector(candidateNormals, camera.transform.forward);
            }
            else
            if (_dragStartData.DragHandleFace == BoxFace.Left || _dragStartData.DragHandleFace == BoxFace.Right)
            {
                var candidateNormals = new List <Vector3> {
                    oobbTransform.GetAxis(1)
                };
                dragPlaneNormal = Vector3Extensions.GetMostAlignedVector(candidateNormals, camera.transform.forward);
            }
            else
            {
                var candidateNormals = new List <Vector3> {
                    oobbTransform.GetAxis(2), oobbTransform.GetAxis(0)
                };
                dragPlaneNormal = Vector3Extensions.GetMostAlignedVector(candidateNormals, camera.transform.forward);
            }

            return(new Plane(dragPlaneNormal, pointOnDragPlane));
        }
Ejemplo n.º 5
0
        public List <Vector3> GetBoxFaceCornerPoints(BoxFace boxFace)
        {
            List <Vector3> modelSpacePoints = _modelSpaceBox.GetBoxFaceCornerPoints(boxFace);

            return(Vector3Extensions.GetTransformedPoints(modelSpacePoints, TransformMatrix));
        }
Ejemplo n.º 6
0
        public List <Vector3> GetCornerPoints()
        {
            List <Vector3> points = _modelSpaceBox.GetCornerPoints();

            return(Vector3Extensions.GetTransformedPoints(points, TransformMatrix));
        }
Ejemplo n.º 7
0
 public Vector3 GetPointClosestToPoint(Vector3 point)
 {
     return(Vector3Extensions.GetPointClosestToPoint(GetPoints(), point));
 }