implement duplication SceneNode
This commit is contained in:
parent
c3a1266da6
commit
d5234316ae
@ -31,6 +31,7 @@ namespace hgl
|
||||
public:
|
||||
|
||||
SceneNode()=default;
|
||||
SceneNode(SceneNode *);
|
||||
SceneNode( Renderable *ri ) {render_obj=ri;}
|
||||
SceneNode(const Matrix4f &mat ):SceneOrient(mat) {}
|
||||
SceneNode(const Matrix4f &mat, Renderable *ri ):SceneOrient(mat) {render_obj=ri;}
|
||||
@ -92,6 +93,29 @@ namespace hgl
|
||||
return sn;
|
||||
}
|
||||
|
||||
SceneNode *CreateSubNode(SceneNode *node)
|
||||
{
|
||||
if(!node)
|
||||
return(nullptr);
|
||||
|
||||
SceneNode *sn=new SceneNode(node);
|
||||
|
||||
SubNode.Add(sn);
|
||||
return node;
|
||||
}
|
||||
|
||||
SceneNode *CreateSubNode(const Matrix4f &mat,SceneNode *node)
|
||||
{
|
||||
if(!node)
|
||||
return(nullptr);
|
||||
|
||||
SceneNode *sn=new SceneNode(mat);
|
||||
sn->CreateSubNode(node);
|
||||
|
||||
SubNode.Add(sn);
|
||||
return sn;
|
||||
}
|
||||
|
||||
public: //坐标相关方法
|
||||
|
||||
virtual void SetBoundingBox (const AABB &bb){BoundingBox=bb;} ///<设置绑定盒
|
||||
|
@ -32,6 +32,7 @@ namespace hgl
|
||||
public:
|
||||
|
||||
SceneOrient();
|
||||
SceneOrient(const SceneOrient &);
|
||||
SceneOrient(const Matrix4f &mat);
|
||||
virtual ~SceneOrient()=default;
|
||||
|
||||
|
@ -4,6 +4,24 @@ namespace hgl
|
||||
{
|
||||
namespace graph
|
||||
{
|
||||
SceneNode::SceneNode(SceneNode *node):SceneOrient(*node)
|
||||
{
|
||||
if(!node)
|
||||
return;
|
||||
|
||||
BoundingBox=node->BoundingBox;
|
||||
LocalBoundingBox=node->LocalBoundingBox;
|
||||
|
||||
render_obj=node->render_obj;
|
||||
|
||||
for(SceneNode *sn:node->SubNode)
|
||||
{
|
||||
SceneNode *new_sn=new SceneNode(sn);
|
||||
|
||||
SubNode.Add(new_sn);
|
||||
}
|
||||
}
|
||||
|
||||
void SceneNode::SetRenderable(Renderable *ri)
|
||||
{
|
||||
render_obj=ri;
|
||||
|
@ -15,6 +15,11 @@ namespace hgl
|
||||
InverseLocalMatrix =Identity4f;
|
||||
InverseLocalToWorldMatrix =Identity4f;
|
||||
}
|
||||
|
||||
SceneOrient::SceneOrient(const SceneOrient &so)
|
||||
{
|
||||
hgl_cpy(*this,so);
|
||||
}
|
||||
|
||||
SceneOrient::SceneOrient(const Matrix4f &mat)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user