update codes for support new SceneNode

This commit is contained in:
hyzboy 2024-10-06 14:51:38 +08:00
parent 4614562929
commit b9fbab56f1
9 changed files with 35 additions and 31 deletions

View File

@ -120,7 +120,7 @@ private:
return(nullptr); return(nullptr);
} }
render_root.CreateSubNode(ri); render_root.Add(new SceneNode(ri));
return ri; return ri;
} }
@ -163,7 +163,7 @@ private:
{ {
Add(prim_plane_grid,mi_plane_grid,pipeline_plane_grid); Add(prim_plane_grid,mi_plane_grid,pipeline_plane_grid);
render_root.CreateSubNode(ro_billboard); render_root.Add(new SceneNode(ro_billboard));
camera->pos=Vector3f(32,32,32); camera->pos=Vector3f(32,32,32);
camera_control->SetTarget(Vector3f(0,0,0)); camera_control->SetTarget(Vector3f(0,0,0));

View File

@ -97,6 +97,8 @@ private:
db->Add(prim); db->Add(prim);
Matrix4f mat;
for(uint i=0;i<DRAW_OBJECT_COUNT;i++) for(uint i=0;i<DRAW_OBJECT_COUNT;i++)
{ {
render_obj[i].r=db->CreateRenderable(prim,render_obj[i].mi,pipeline); render_obj[i].r=db->CreateRenderable(prim,render_obj[i].mi,pipeline);
@ -104,7 +106,9 @@ private:
if(!render_obj[i].r) if(!render_obj[i].r)
return(false); return(false);
render_root.CreateSubNode(rotate(deg2rad<double>(double(360/DRAW_OBJECT_COUNT*i)),Vector3f(0,0,1)),render_obj[i].r); mat=rotate(deg2rad<double>(double(360/DRAW_OBJECT_COUNT*i)),AxisVector::Z);
render_root.Add(new SceneNode(mat,render_obj[i].r));
} }
render_root.RefreshMatrix(); render_root.RefreshMatrix();

View File

@ -84,7 +84,7 @@ bool InitGizmoMoveStaticMesh()
{ {
SceneNode *root_node=new SceneNode(); SceneNode *root_node=new SceneNode();
root_node->CreateSubNode(sphere); root_node->Add(new SceneNode(sphere));
{ {
Transform tm; Transform tm;
@ -96,30 +96,30 @@ bool InitGizmoMoveStaticMesh()
{ {
tm.SetScale(cylinder_scale); tm.SetScale(cylinder_scale);
tm.SetTranslation(0,0,GIZMO_CYLINDER_OFFSET); tm.SetTranslation(0,0,GIZMO_CYLINDER_OFFSET);
root_node->CreateSubNode(tm,cylinder[2]); //Z 向上圆柱 root_node->Add(new SceneNode(tm,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);
root_node->CreateSubNode(tm,cone[2]); //Z 向上圆锥 root_node->Add(new SceneNode(tm,cone[2])); //Z 向上圆锥
tm.SetScale(circle_scale); tm.SetScale(circle_scale);
tm.SetTranslation(GIZMO_TWO_AXIS_OFFSET,GIZMO_TWO_AXIS_OFFSET,0); tm.SetTranslation(GIZMO_TWO_AXIS_OFFSET,GIZMO_TWO_AXIS_OFFSET,0);
root_node->CreateSubNode(tm,circle[2]); root_node->Add(new SceneNode(tm,circle[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);
root_node->CreateSubNode(tm,cylinder[0]); //X 向右圆柱 root_node->Add(new SceneNode(tm,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);
root_node->CreateSubNode(tm,cone[0]); //X 向右圆锥 root_node->Add(new SceneNode(tm,cone[0])); //X 向右圆锥
tm.SetScale(circle_scale); tm.SetScale(circle_scale);
tm.SetTranslation(0,GIZMO_TWO_AXIS_OFFSET,GIZMO_TWO_AXIS_OFFSET); tm.SetTranslation(0,GIZMO_TWO_AXIS_OFFSET,GIZMO_TWO_AXIS_OFFSET);
root_node->CreateSubNode(tm,circle[0]); root_node->Add(new SceneNode(tm,circle[0]));
} }
{ {
@ -127,15 +127,15 @@ bool InitGizmoMoveStaticMesh()
tm.SetRotation(AxisVector::X,-90); tm.SetRotation(AxisVector::X,-90);
tm.SetTranslation(0,GIZMO_CYLINDER_OFFSET,0); tm.SetTranslation(0,GIZMO_CYLINDER_OFFSET,0);
root_node->CreateSubNode(tm,cylinder[1]); //Y 向前圆柱 root_node->Add(new SceneNode(tm,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);
root_node->CreateSubNode(tm,cone[1]); //Y 向前圆锥 root_node->Add(new SceneNode(tm,cone[1])); //Y 向前圆锥
tm.SetScale(circle_scale); tm.SetScale(circle_scale);
tm.SetTranslation(GIZMO_TWO_AXIS_OFFSET,0,GIZMO_TWO_AXIS_OFFSET); tm.SetTranslation(GIZMO_TWO_AXIS_OFFSET,0,GIZMO_TWO_AXIS_OFFSET);
root_node->CreateSubNode(tm,circle[1]); root_node->Add(new SceneNode(tm,circle[1]));
} }
} }

View File

@ -45,13 +45,13 @@ bool InitGizmoRotateStaticMesh()
tm.SetScale(GIZMO_ARROW_LENGTH); tm.SetScale(GIZMO_ARROW_LENGTH);
root_node->CreateSubNode(tm,torus[0]); root_node->Add(new SceneNode(tm,torus[0]));
tm.SetRotation(AXIS::Z,90); tm.SetRotation(AXIS::Z,90);
root_node->CreateSubNode(tm,torus[1]); root_node->Add(new SceneNode(tm,torus[1]));
tm.SetRotation(AXIS::Y,90); tm.SetRotation(AXIS::Y,90);
root_node->CreateSubNode(tm,torus[2]); root_node->Add(new SceneNode(tm,torus[2]));
} }
{ {

View File

@ -84,7 +84,7 @@ bool InitGizmoScaleStaticMesh()
{ {
SceneNode *root_node=new SceneNode(); SceneNode *root_node=new SceneNode();
root_node->CreateSubNode(scale(GIZMO_CENTER_SPHERE_RADIUS*2),center_cube); root_node->Add(new SceneNode(scale(GIZMO_CENTER_SPHERE_RADIUS*2),center_cube));
{ {
Transform tm; Transform tm;
@ -96,30 +96,30 @@ bool InitGizmoScaleStaticMesh()
{ {
tm.SetScale(cylinder_scale); tm.SetScale(cylinder_scale);
tm.SetTranslation(0,0,GIZMO_CYLINDER_OFFSET); tm.SetTranslation(0,0,GIZMO_CYLINDER_OFFSET);
root_node->CreateSubNode(tm,cylinder[2]); //Z 向上圆柱 root_node->Add(new SceneNode(tm,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);
root_node->CreateSubNode(tm,cube[2]); //Z 向上圆锥 root_node->Add(new SceneNode(tm,cube[2])); //Z 向上圆锥
tm.SetScale(plane_scale); tm.SetScale(plane_scale);
tm.SetTranslation(GIZMO_TWO_AXIS_OFFSET,GIZMO_TWO_AXIS_OFFSET,0); tm.SetTranslation(GIZMO_TWO_AXIS_OFFSET,GIZMO_TWO_AXIS_OFFSET,0);
root_node->CreateSubNode(tm,square[2]); root_node->Add(new SceneNode(tm,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);
root_node->CreateSubNode(tm,cylinder[0]); //X 向右圆柱 root_node->Add(new SceneNode(tm,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);
root_node->CreateSubNode(tm,cube[0]); //X 向右圆锥 root_node->Add(new SceneNode(tm,cube[0])); //X 向右圆锥
tm.SetScale(plane_scale); tm.SetScale(plane_scale);
tm.SetTranslation(0,GIZMO_TWO_AXIS_OFFSET,GIZMO_TWO_AXIS_OFFSET); tm.SetTranslation(0,GIZMO_TWO_AXIS_OFFSET,GIZMO_TWO_AXIS_OFFSET);
root_node->CreateSubNode(tm,square[0]); root_node->Add(new SceneNode(tm,square[0]));
} }
{ {
@ -127,15 +127,15 @@ bool InitGizmoScaleStaticMesh()
tm.SetRotation(AxisVector::X,-90); tm.SetRotation(AxisVector::X,-90);
tm.SetTranslation(0,GIZMO_CYLINDER_OFFSET,0); tm.SetTranslation(0,GIZMO_CYLINDER_OFFSET,0);
root_node->CreateSubNode(tm,cylinder[1]); //Y 向前圆柱 root_node->Add(new SceneNode(tm,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);
root_node->CreateSubNode(tm,cube[1]); //Y 向前圆锥 root_node->Add(new SceneNode(tm,cube[1])); //Y 向前圆锥
tm.SetScale(plane_scale); tm.SetScale(plane_scale);
tm.SetTranslation(GIZMO_TWO_AXIS_OFFSET,0,GIZMO_TWO_AXIS_OFFSET); tm.SetTranslation(GIZMO_TWO_AXIS_OFFSET,0,GIZMO_TWO_AXIS_OFFSET);
root_node->CreateSubNode(tm,square[1]); root_node->Add(new SceneNode(tm,square[1]));
} }
} }

View File

@ -81,8 +81,8 @@ private:
root.Clear(); root.Clear();
root.CreateSubNode(sm_move->GetScene()); //root.Add(Duplication(sm_move->GetScene()));
root.CreateSubNode(sm_rotate->GetScene()); root.Add(Duplication(sm_rotate->GetScene()));
//root.CreateSubNode(sm_scale->GetScene()); //root.CreateSubNode(sm_scale->GetScene());
root.RefreshMatrix(); root.RefreshMatrix();

View File

@ -81,7 +81,7 @@ private:
if(!ri) if(!ri)
return(nullptr); return(nullptr);
render_root.CreateSubNode(mat,ri); render_root.Add(new SceneNode(mat,ri));
return ri; return ri;
} }

View File

@ -102,7 +102,7 @@ private:
return(nullptr); return(nullptr);
} }
render_root.CreateSubNode(ri); render_root.Add(new SceneNode(ri));
return ri; return ri;
} }

View File

@ -98,7 +98,7 @@ namespace hgl
// virtual const AABB & GetWorldBoundingBox ()const{return WorldBoundingBox;} ///<取得世界坐标绑定盒 // virtual const AABB & GetWorldBoundingBox ()const{return WorldBoundingBox;} ///<取得世界坐标绑定盒
};//class SceneNode };//class SceneNode
SceneNode *Duplication(const SceneNode *); ///<复制一个场景节点 SceneNode *Duplication(SceneNode *); ///<复制一个场景节点
}//namespace graph }//namespace graph
}//namespace hgl }//namespace hgl
#endif//HGL_GRAPH_SCENE_NODE_INCLUDE #endif//HGL_GRAPH_SCENE_NODE_INCLUDE