From b9fbab56f1e173e81b338becbc9eba1c4f9a97e2 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Sun, 6 Oct 2024 14:51:38 +0800 Subject: [PATCH] update codes for support new SceneNode --- example/Basic/BillboardTest.cpp | 4 ++-- .../Basic/auto_merge_material_instance.cpp | 6 +++++- example/Gizmo/Gizmo3DMove.cpp | 20 +++++++++---------- example/Gizmo/Gizmo3DRotate.cpp | 6 +++--- example/Gizmo/Gizmo3DScale.cpp | 20 +++++++++---------- example/Gizmo/GizmoTest.cpp | 4 ++-- example/Gizmo/PlaneGrid3D.cpp | 2 +- example/Gizmo/RayPicking.cpp | 2 +- inc/hgl/graph/SceneNode.h | 2 +- 9 files changed, 35 insertions(+), 31 deletions(-) diff --git a/example/Basic/BillboardTest.cpp b/example/Basic/BillboardTest.cpp index 252856be..041f2d10 100644 --- a/example/Basic/BillboardTest.cpp +++ b/example/Basic/BillboardTest.cpp @@ -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)); diff --git a/example/Basic/auto_merge_material_instance.cpp b/example/Basic/auto_merge_material_instance.cpp index b1bada3a..8fab5553 100644 --- a/example/Basic/auto_merge_material_instance.cpp +++ b/example/Basic/auto_merge_material_instance.cpp @@ -96,6 +96,8 @@ private: return(false); db->Add(prim); + + Matrix4f mat; for(uint i=0;i(double(360/DRAW_OBJECT_COUNT*i)),Vector3f(0,0,1)),render_obj[i].r); + mat=rotate(deg2rad(double(360/DRAW_OBJECT_COUNT*i)),AxisVector::Z); + + render_root.Add(new SceneNode(mat,render_obj[i].r)); } render_root.RefreshMatrix(); diff --git a/example/Gizmo/Gizmo3DMove.cpp b/example/Gizmo/Gizmo3DMove.cpp index 6b9429a0..f9e07a53 100644 --- a/example/Gizmo/Gizmo3DMove.cpp +++ b/example/Gizmo/Gizmo3DMove.cpp @@ -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])); } } diff --git a/example/Gizmo/Gizmo3DRotate.cpp b/example/Gizmo/Gizmo3DRotate.cpp index 8e9598a4..3fd67a0c 100644 --- a/example/Gizmo/Gizmo3DRotate.cpp +++ b/example/Gizmo/Gizmo3DRotate.cpp @@ -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])); } { diff --git a/example/Gizmo/Gizmo3DScale.cpp b/example/Gizmo/Gizmo3DScale.cpp index 2d604724..2a22b3b1 100644 --- a/example/Gizmo/Gizmo3DScale.cpp +++ b/example/Gizmo/Gizmo3DScale.cpp @@ -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])); } } diff --git a/example/Gizmo/GizmoTest.cpp b/example/Gizmo/GizmoTest.cpp index 11186f7d..ca4f4b24 100644 --- a/example/Gizmo/GizmoTest.cpp +++ b/example/Gizmo/GizmoTest.cpp @@ -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(); diff --git a/example/Gizmo/PlaneGrid3D.cpp b/example/Gizmo/PlaneGrid3D.cpp index 23d86683..ec84b939 100644 --- a/example/Gizmo/PlaneGrid3D.cpp +++ b/example/Gizmo/PlaneGrid3D.cpp @@ -81,7 +81,7 @@ private: if(!ri) return(nullptr); - render_root.CreateSubNode(mat,ri); + render_root.Add(new SceneNode(mat,ri)); return ri; } diff --git a/example/Gizmo/RayPicking.cpp b/example/Gizmo/RayPicking.cpp index 76d457e1..40252362 100644 --- a/example/Gizmo/RayPicking.cpp +++ b/example/Gizmo/RayPicking.cpp @@ -102,7 +102,7 @@ private: return(nullptr); } - render_root.CreateSubNode(ri); + render_root.Add(new SceneNode(ri)); return ri; } diff --git a/inc/hgl/graph/SceneNode.h b/inc/hgl/graph/SceneNode.h index 7fdf3c90..b50250d9 100644 --- a/inc/hgl/graph/SceneNode.h +++ b/inc/hgl/graph/SceneNode.h @@ -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