创建GizmoMoveNode,在下一版中尝度接收鼠标事件
This commit is contained in:
parent
e2a61e175f
commit
1af89ca37b
@ -32,57 +32,32 @@ VK_NAMESPACE_BEGIN
|
|||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
///**
|
/**
|
||||||
//* 移动 Gizmo 节点
|
* 移动 Gizmo 节点
|
||||||
//*/
|
*/
|
||||||
//class GizmoMoveNode:public SceneNode
|
class GizmoMoveNode:public SceneNode
|
||||||
//{
|
{
|
||||||
// struct GizmoMoveAxis
|
struct GizmoMoveAxis
|
||||||
// {
|
{
|
||||||
// MeshComponent *cylinder =nullptr; //圆柱
|
MeshComponent *cylinder; //圆柱
|
||||||
// MeshComponent *cone =nullptr; //圆锥
|
MeshComponent *cone; //圆锥
|
||||||
// MeshComponent *square =nullptr; //双轴调节正方形
|
MeshComponent *square; //双轴调节正方形
|
||||||
// };
|
};
|
||||||
|
|
||||||
// MeshComponent *sphere=nullptr;
|
MeshComponent *sphere=nullptr;
|
||||||
// GizmoMoveAxis axis[3]; //X,Y,Z 三个轴
|
GizmoMoveAxis axis[3]{}; //X,Y,Z 三个轴
|
||||||
|
|
||||||
//public:
|
public:
|
||||||
|
|
||||||
// GizmoMoveNode(RenderFramework *rf)
|
using SceneNode::SceneNode;
|
||||||
// {
|
|
||||||
// //SetName("GizmoMoveNode");
|
|
||||||
|
|
||||||
// Mesh *sphere=GetGizmoMesh(GizmoShape::Sphere,GizmoColor::White);
|
SceneNode *CreateNode()const override
|
||||||
|
{
|
||||||
|
return(new GizmoMoveNode);
|
||||||
|
}
|
||||||
|
|
||||||
// sn_gizmo_move->AttachComponent(rf->CreateComponent<MeshComponent>(sphere));
|
bool Init(RenderFramework *render_framework)
|
||||||
|
{
|
||||||
// for(int i=0;i<3;i++)
|
|
||||||
// {
|
|
||||||
// axis[i].cylinder=nullptr;
|
|
||||||
// axis[i].cone=nullptr;
|
|
||||||
// axis[i].square=nullptr;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
//};//class GizmoMoveNode:public SceneNode
|
|
||||||
|
|
||||||
static SceneNode *sn_gizmo_move=nullptr;
|
|
||||||
}//namespace
|
|
||||||
|
|
||||||
SceneNode *GetGizmoMoveNode()
|
|
||||||
{
|
|
||||||
return sn_gizmo_move;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ClearGizmoMoveNode()
|
|
||||||
{
|
|
||||||
SAFE_CLEAR(sn_gizmo_move);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool InitGizmoMoveNode(RenderFramework *render_framework)
|
|
||||||
{
|
|
||||||
ComponentDataPtr sphere=GetGizmoMeshComponentDataPtr(GizmoShape::Sphere,GizmoColor::White);
|
ComponentDataPtr sphere=GetGizmoMeshComponentDataPtr(GizmoShape::Sphere,GizmoColor::White);
|
||||||
|
|
||||||
ComponentDataPtr cylinder[3]
|
ComponentDataPtr cylinder[3]
|
||||||
@ -121,10 +96,9 @@ bool InitGizmoMoveNode(RenderFramework *render_framework)
|
|||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
CreateComponentInfo cci(this);
|
||||||
sn_gizmo_move=new SceneNode();
|
|
||||||
|
|
||||||
sn_gizmo_move->AttachComponent(render_framework->CreateComponent<MeshComponent>(sphere));
|
render_framework->CreateComponent<MeshComponent>(&cci,sphere);
|
||||||
|
|
||||||
{
|
{
|
||||||
Transform tm;
|
Transform tm;
|
||||||
@ -136,52 +110,88 @@ bool InitGizmoMoveNode(RenderFramework *render_framework)
|
|||||||
{
|
{
|
||||||
tm.SetScale(cylinder_scale);
|
tm.SetScale(cylinder_scale);
|
||||||
tm.SetTranslation(0,0,GIZMO_CYLINDER_OFFSET);
|
tm.SetTranslation(0,0,GIZMO_CYLINDER_OFFSET);
|
||||||
render_framework->CreateComponent<MeshComponent>(tm.GetMatrix(),sn_gizmo_move,cylinder[2]); //Z 向上圆柱
|
cci.mat=tm;
|
||||||
|
render_framework->CreateComponent<MeshComponent>(&cci,cylinder[2]); //Z 向上圆柱
|
||||||
|
|
||||||
tm.SetScale(one_scale);
|
tm.SetScale(one_scale);
|
||||||
tm.SetTranslation(0,0,GIZMO_CONE_OFFSET);
|
tm.SetTranslation(0,0,GIZMO_CONE_OFFSET);
|
||||||
render_framework->CreateComponent<MeshComponent>(tm.GetMatrix(),sn_gizmo_move,cone[2]); //Z 向上圆锥
|
cci.mat=tm;
|
||||||
|
render_framework->CreateComponent<MeshComponent>(&cci,cone[2]); //Z 向上圆锥
|
||||||
|
|
||||||
tm.SetScale(square_scale);
|
tm.SetScale(square_scale);
|
||||||
tm.SetTranslation(GIZMO_TWO_AXIS_OFFSET,GIZMO_TWO_AXIS_OFFSET,0);
|
tm.SetTranslation(GIZMO_TWO_AXIS_OFFSET,GIZMO_TWO_AXIS_OFFSET,0);
|
||||||
render_framework->CreateComponent<MeshComponent>(tm.GetMatrix(),sn_gizmo_move,square[2]);
|
cci.mat=tm;
|
||||||
|
render_framework->CreateComponent<MeshComponent>(&cci,square[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
tm.SetScale(cylinder_scale);
|
tm.SetScale(cylinder_scale);
|
||||||
tm.SetRotation(AxisVector::Y,90);
|
tm.SetRotation(AxisVector::Y,90);
|
||||||
tm.SetTranslation(GIZMO_CYLINDER_OFFSET,0,0);
|
tm.SetTranslation(GIZMO_CYLINDER_OFFSET,0,0);
|
||||||
render_framework->CreateComponent<MeshComponent>(tm.GetMatrix(),sn_gizmo_move,cylinder[0]); //X 向右圆柱
|
cci.mat=tm;
|
||||||
|
render_framework->CreateComponent<MeshComponent>(&cci,cylinder[0]); //X 向右圆柱
|
||||||
|
|
||||||
tm.SetScale(one_scale);
|
tm.SetScale(one_scale);
|
||||||
tm.SetTranslation(GIZMO_CONE_OFFSET,0,0);
|
tm.SetTranslation(GIZMO_CONE_OFFSET,0,0);
|
||||||
render_framework->CreateComponent<MeshComponent>(tm.GetMatrix(),sn_gizmo_move,cone[0]); //X 向右圆锥
|
cci.mat=tm;
|
||||||
|
render_framework->CreateComponent<MeshComponent>(&cci,cone[0]); //X 向右圆锥
|
||||||
|
|
||||||
tm.SetScale(square_scale);
|
tm.SetScale(square_scale);
|
||||||
tm.SetTranslation(0,GIZMO_TWO_AXIS_OFFSET,GIZMO_TWO_AXIS_OFFSET);
|
tm.SetTranslation(0,GIZMO_TWO_AXIS_OFFSET,GIZMO_TWO_AXIS_OFFSET);
|
||||||
render_framework->CreateComponent<MeshComponent>(tm.GetMatrix(),sn_gizmo_move,square[0]);
|
cci.mat=tm;
|
||||||
|
render_framework->CreateComponent<MeshComponent>(&cci,square[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
tm.SetScale(cylinder_scale);
|
tm.SetScale(cylinder_scale);
|
||||||
tm.SetRotation(AxisVector::X,-90);
|
tm.SetRotation(AxisVector::X,-90);
|
||||||
tm.SetTranslation(0,GIZMO_CYLINDER_OFFSET,0);
|
tm.SetTranslation(0,GIZMO_CYLINDER_OFFSET,0);
|
||||||
render_framework->CreateComponent<MeshComponent>(tm.GetMatrix(),sn_gizmo_move,cylinder[1]); //Y 向前圆柱
|
cci.mat=tm;
|
||||||
|
render_framework->CreateComponent<MeshComponent>(&cci,cylinder[1]); //Y 向前圆柱
|
||||||
|
|
||||||
tm.SetScale(one_scale);
|
tm.SetScale(one_scale);
|
||||||
tm.SetTranslation(0,GIZMO_CONE_OFFSET,0);
|
tm.SetTranslation(0,GIZMO_CONE_OFFSET,0);
|
||||||
render_framework->CreateComponent<MeshComponent>(tm.GetMatrix(),sn_gizmo_move,cone[1]); //Y 向前圆锥
|
cci.mat=tm;
|
||||||
|
render_framework->CreateComponent<MeshComponent>(&cci,cone[1]); //Y 向前圆锥
|
||||||
|
|
||||||
tm.SetScale(square_scale);
|
tm.SetScale(square_scale);
|
||||||
tm.SetTranslation(GIZMO_TWO_AXIS_OFFSET,0,GIZMO_TWO_AXIS_OFFSET);
|
tm.SetTranslation(GIZMO_TWO_AXIS_OFFSET,0,GIZMO_TWO_AXIS_OFFSET);
|
||||||
render_framework->CreateComponent<MeshComponent>(tm.GetMatrix(),sn_gizmo_move,square[1]);
|
cci.mat=tm;
|
||||||
}
|
render_framework->CreateComponent<MeshComponent>(&cci,square[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!sn_gizmo_move)
|
return(true);
|
||||||
|
}
|
||||||
|
};//class GizmoMoveNode:public SceneNode
|
||||||
|
|
||||||
|
static GizmoMoveNode *sn_gizmo_move=nullptr;
|
||||||
|
}//namespace
|
||||||
|
|
||||||
|
SceneNode *GetGizmoMoveNode()
|
||||||
|
{
|
||||||
|
return sn_gizmo_move;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ClearGizmoMoveNode()
|
||||||
|
{
|
||||||
|
SAFE_CLEAR(sn_gizmo_move);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool InitGizmoMoveNode(RenderFramework *render_framework)
|
||||||
|
{
|
||||||
|
if(sn_gizmo_move)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
|
sn_gizmo_move=new GizmoMoveNode;
|
||||||
|
|
||||||
|
if(!sn_gizmo_move->Init(render_framework))
|
||||||
|
{
|
||||||
|
delete sn_gizmo_move;
|
||||||
|
sn_gizmo_move=nullptr;
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user