used protected scope it's render_obj of SceneNode
This commit is contained in:
parent
32d895136b
commit
b86eadddb7
@ -24,12 +24,12 @@ namespace hgl
|
||||
Vector4f Center; ///<中心点
|
||||
Vector4f LocalCenter; ///<本地坐标中心点
|
||||
Vector4f WorldCenter; ///<世界坐标中心点
|
||||
|
||||
RenderableInstance *render_obj=nullptr; ///<可渲染实例
|
||||
|
||||
public:
|
||||
|
||||
ObjectList<SceneNode> SubNode; ///<子节点
|
||||
|
||||
RenderableInstance *render_obj=nullptr; ///<可渲染实例
|
||||
|
||||
public:
|
||||
|
||||
@ -38,7 +38,7 @@ namespace hgl
|
||||
SceneNode(const Matrix4f &mat ):SceneOrient(mat) {}
|
||||
SceneNode(const Matrix4f &mat, RenderableInstance *ri ):SceneOrient(mat) {render_obj=ri;}
|
||||
|
||||
virtual ~SceneNode(){}
|
||||
virtual ~SceneNode()=default;
|
||||
|
||||
void Clear()
|
||||
{
|
||||
@ -46,6 +46,33 @@ namespace hgl
|
||||
render_obj=nullptr;
|
||||
}
|
||||
|
||||
RenderableInstance *GetRI(){return render_obj;}
|
||||
void SetRI(RenderableInstance *);
|
||||
|
||||
SceneNode *CreateSubNode()
|
||||
{
|
||||
SceneNode *sn=new SceneNode();
|
||||
|
||||
SubNode.Add(sn);
|
||||
return sn;
|
||||
}
|
||||
|
||||
SceneNode *CreateSubNode(const Matrix4f &mat)
|
||||
{
|
||||
SceneNode *sn=new SceneNode(mat);
|
||||
|
||||
SubNode.Add(sn);
|
||||
return sn;
|
||||
}
|
||||
|
||||
SceneNode *CreateSubNode(const Matrix4f &mat,RenderableInstance *ri)
|
||||
{
|
||||
SceneNode *sn=new SceneNode(mat,ri);
|
||||
|
||||
SubNode.Add(sn);
|
||||
return sn;
|
||||
}
|
||||
|
||||
public: //坐标相关方法
|
||||
|
||||
virtual void SetBoundingBox (const AABB &bb){BoundingBox=bb;} ///<设置绑定盒
|
||||
|
@ -1,9 +1,27 @@
|
||||
#include<hgl/graph/SceneNode.h>
|
||||
#include<hgl/graph/RenderList.h>
|
||||
#include<hgl/graph/VKRenderableInstance.h>
|
||||
namespace hgl
|
||||
{
|
||||
namespace graph
|
||||
{
|
||||
void SceneNode::SetRI(RenderableInstance *ri)
|
||||
{
|
||||
render_obj=ri;
|
||||
|
||||
if(render_obj)
|
||||
{
|
||||
SetBoundingBox(render_obj->GetBoundingBox());
|
||||
}
|
||||
else
|
||||
{
|
||||
BoundingBox.minPoint=vec::zero;
|
||||
BoundingBox.maxPoint=vec::zero;
|
||||
|
||||
WorldBoundingBox=LocalBoundingBox=BoundingBox;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新矩阵
|
||||
* @param root_matrix 根矩阵
|
||||
|
@ -139,7 +139,9 @@ namespace hgl
|
||||
{
|
||||
if(!sn)return(false);
|
||||
|
||||
if(sn->render_obj)
|
||||
RenderableInstance *ri=sn->GetRI();
|
||||
|
||||
if(ri)
|
||||
{
|
||||
RenderNode *rn=new RenderNode;
|
||||
|
||||
@ -150,7 +152,7 @@ namespace hgl
|
||||
rn->distance_to_camera_square=length_squared(rn->WorldCenter,camera_info.pos);
|
||||
// rn->distance_to_camera=sqrtf(rn->distance_to_camera_square);
|
||||
|
||||
rn->ri=sn->render_obj;
|
||||
rn->ri=ri;
|
||||
|
||||
render_node_list.Add(rn);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user