public SelectedBodyState SelectBody(SelectEvent selectEvent) { var posScene = ViewProjection.ProjectCanvasToSceneSystem(selectEvent.selectPositionX, selectEvent.selectPositionY, selectEvent.CanvasWidth, selectEvent.CanvasHeight, selectEvent.Camera.NearPlane, selectEvent.Camera.Frame); var rayOffset = selectEvent.Camera.Frame.Offset; var rayDirection = posScene - rayOffset; var(isIntersected, intersection, body) = Scene.GetIntersectionOfRayAndScene(rayOffset, rayDirection); return(new SelectedBodyState { SelectedBodyId = isIntersected ? body.Id : Guid.Empty, IsBodySelected = isIntersected, BodyIntersection = intersection }); }
public Camera Select(SelectEvent selectEvent) { var posScene = ViewProjection.ProjectCanvasToSceneSystem(selectEvent.selectPositionX, selectEvent.selectPositionY, selectEvent.CanvasWidth, selectEvent.CanvasHeight, selectEvent.Camera.NearPlane, selectEvent.Camera.Frame); var rayOffset = selectEvent.Camera.Frame.Offset; var rayDirection = posScene - rayOffset; var(isintersected, intersection, body) = Scene.GetIntersectionOfRayAndScene(rayOffset, rayDirection); if (isintersected) { selectEvent.Camera.MoveTargetTo(intersection); } return(selectEvent.Camera); }