// hitpos からrayがくる public void OnClicked(Mouse mouse, RayWrap ray) { if (!mouse.Clicked) { state.EndClick( ); return; } //Util.DebugWrite( $"DraggingState {state.IsDragging}" ); if (state.IsDragging) { //Util.DebugWrite( $"Dragging {state.Axis}" ); Dragging(ray); return; } foreach (Face item in Faces) { HitResult res = ray.IntersectFace(item); if (res.IsHit) { // red redHead // redRot if (res.Info == "red" || res.Info == "redHead") { state.Update(res, ClickedAxis.X); break; } if (res.Info == "redRot") { state.Update(res, ClickedAxis.XRot); break; } if (res.Info == "green" || res.Info == "greenHead") { state.Update(res, ClickedAxis.Y); break; } if (res.Info == "greenRot") { state.Update(res, ClickedAxis.YRot); break; } if (res.Info == "blue" || res.Info == "blueHead") { state.Update(res, ClickedAxis.Z); break; } if (res.Info == "blueRot") { state.Update(res, ClickedAxis.ZRot); break; } //Util.DebugWrite( $"start {res.Info}" ); } } }
public IEnumerable <HitResult> HitPos(RayWrap ray) { foreach (Face item in Faces) { HitResult res = ray.IntersectFace(item); if (res.IsHit) { yield return(res); } } }