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);
}
render_root.CreateSubNode(ri);
render_root.Add(new SceneNode(ri));
return ri;
}
@ -163,7 +163,7 @@ private:
{
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_control->SetTarget(Vector3f(0,0,0));

View File

@ -96,6 +96,8 @@ private:
return(false);
db->Add(prim);
Matrix4f mat;
for(uint i=0;i<DRAW_OBJECT_COUNT;i++)
{
@ -104,7 +106,9 @@ private:
if(!render_obj[i].r)
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();

View File

@ -84,7 +84,7 @@ bool InitGizmoMoveStaticMesh()
{
SceneNode *root_node=new SceneNode();
root_node->CreateSubNode(sphere);
root_node->Add(new SceneNode(sphere));
{
Transform tm;
@ -96,30 +96,30 @@ bool InitGizmoMoveStaticMesh()
{
tm.SetScale(cylinder_scale);
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.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.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.SetRotation(AxisVector::Y,90);
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.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.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.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.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.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);
root_node->CreateSubNode(tm,torus[0]);
root_node->Add(new SceneNode(tm,torus[0]));
tm.SetRotation(AXIS::Z,90);
root_node->CreateSubNode(tm,torus[1]);
root_node->Add(new SceneNode(tm,torus[1]));
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();
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;
@ -96,30 +96,30 @@ bool InitGizmoScaleStaticMesh()
{
tm.SetScale(cylinder_scale);
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.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.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.SetRotation(AxisVector::Y,90);
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.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.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.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.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.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.CreateSubNode(sm_move->GetScene());
root.CreateSubNode(sm_rotate->GetScene());
//root.Add(Duplication(sm_move->GetScene()));
root.Add(Duplication(sm_rotate->GetScene()));
//root.CreateSubNode(sm_scale->GetScene());
root.RefreshMatrix();

View File

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

View File

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

View File

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