[working] gizmo3DMove,需要考虑如何绘制变动中的gizmo
This commit is contained in:
2
CMCore
2
CMCore
Submodule CMCore updated: f1a36055e4...dd01d1919a
Submodule CMPlatform updated: 5c4851e586...eec230df6c
@@ -54,11 +54,15 @@ namespace
|
|||||||
MeshComponent *sphere=nullptr;
|
MeshComponent *sphere=nullptr;
|
||||||
GizmoMoveAxis axis[3]{}; //X,Y,Z 三个轴
|
GizmoMoveAxis axis[3]{}; //X,Y,Z 三个轴
|
||||||
|
|
||||||
int CurAXIS=-1; //当前鼠标选中轴
|
protected:
|
||||||
float CurDist=0; //当前距离
|
|
||||||
|
|
||||||
int PickAXIS=-1; //拾取轴
|
int CurAXIS=-1; //当前鼠标选中轴
|
||||||
float PickDist=0; //拾取辆距离轴心的距离
|
float CurDist=0; //当前距离
|
||||||
|
|
||||||
|
int PickAXIS=-1; //拾取轴
|
||||||
|
float PickDist=0; //拾取辆距离轴心的距离
|
||||||
|
|
||||||
|
TransformTranslate3f CurTranslate;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@@ -205,10 +209,12 @@ namespace
|
|||||||
{
|
{
|
||||||
GizmoMoveNode::OnMove(mp);
|
GizmoMoveNode::OnMove(mp);
|
||||||
|
|
||||||
if(CurAXIS>0&&CurAXIS<3)
|
if(CurAXIS>=0&&CurAXIS<3)
|
||||||
{
|
{
|
||||||
PickAXIS=CurAXIS;
|
PickAXIS=CurAXIS;
|
||||||
PickDist=CurDist;
|
PickDist=CurDist;
|
||||||
|
|
||||||
|
CurTranslate.SetOffset(Vector3f(0,0,0)); //重置当前平移偏移
|
||||||
}
|
}
|
||||||
|
|
||||||
return io::EventProcResult::Continue;
|
return io::EventProcResult::Continue;
|
||||||
@@ -269,6 +275,12 @@ namespace
|
|||||||
|
|
||||||
CurAXIS=i;
|
CurAXIS=i;
|
||||||
CurDist=glm::length(p_ls); //计算线段上的点与原点的距离
|
CurDist=glm::length(p_ls); //计算线段上的点与原点的距离
|
||||||
|
|
||||||
|
if(CurAXIS==PickAXIS) //如果当前轴与拾取轴相同
|
||||||
|
{
|
||||||
|
//如果当前轴与拾取轴相同,则计算平移偏移
|
||||||
|
CurTranslate.SetOffset(axis_vector*(CurDist-PickDist));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user