diff --git a/CMCore b/CMCore index 0ed44f05..11838e9c 160000 --- a/CMCore +++ b/CMCore @@ -1 +1 @@ -Subproject commit 0ed44f05318c8163dec5353b4ba6bcf7b77ee61a +Subproject commit 11838e9cc813395d57b6bfbc501e99b6526436c0 diff --git a/CMSceneGraph b/CMSceneGraph index b914dbfb..fde1c85a 160000 --- a/CMSceneGraph +++ b/CMSceneGraph @@ -1 +1 @@ -Subproject commit b914dbfb66a2be85b2bcf362f832eb18f44eb179 +Subproject commit fde1c85ad1437123d89971df6ec43e9683e52acc diff --git a/example/Gizmo/Gizmo3DMove.cpp b/example/Gizmo/Gizmo3DMove.cpp index 14f3372d..1f3bc261 100644 --- a/example/Gizmo/Gizmo3DMove.cpp +++ b/example/Gizmo/Gizmo3DMove.cpp @@ -26,8 +26,12 @@ #include #include #include +#include #include #include +#include + +#include VK_NAMESPACE_BEGIN @@ -175,6 +179,51 @@ namespace return(true); } + + bool OnMove(const Vector2i &mouse_coord) override + { + CameraControl *cc=GetCameraControl(); + + if(!cc) + return(false); + + Ray ray; + + cc->SetMouseRay(&ray,mouse_coord); + + Matrix4f l2w=GetLocalToWorldMatrix(); + Vector3f start; + Vector3f end; + Vector3f cross_point; + float dist; + + start=TransformPosition(l2w,Vector3f(0,0,0)); //将原点转换到世界坐标 + + { + end=TransformPosition(l2w,Vector3f(GIZMO_CYLINDER_HALF_LENGTH*20,0,0)); + + cross_point=ray.ClosestPoint(start); + + dist=length(cross_point,start); + + //dist=ray.ToLineSegmentDistance(start,end); + + //dist=ray.ToPointDistance(start); + + MaterialInstance *mi=GetGizmoMI3D(distSetOverrideMaterial(mi); + axis[size_t(AXIS::X)].cone->SetOverrideMaterial(mi); + + std::cout<<"Mouse: "<