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)); }
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); }
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); }
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)); }
public List <Vector3> GetBoxFaceCornerPoints(BoxFace boxFace) { List <Vector3> modelSpacePoints = _modelSpaceBox.GetBoxFaceCornerPoints(boxFace); return(Vector3Extensions.GetTransformedPoints(modelSpacePoints, TransformMatrix)); }
public List <Vector3> GetCornerPoints() { List <Vector3> points = _modelSpaceBox.GetCornerPoints(); return(Vector3Extensions.GetTransformedPoints(points, TransformMatrix)); }
public Vector3 GetPointClosestToPoint(Vector3 point) { return(Vector3Extensions.GetPointClosestToPoint(GetPoints(), point)); }