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 Center; ///<中心点
|
||||||
Vector4f LocalCenter; ///<本地坐标中心点
|
Vector4f LocalCenter; ///<本地坐标中心点
|
||||||
Vector4f WorldCenter; ///<世界坐标中心点
|
Vector4f WorldCenter; ///<世界坐标中心点
|
||||||
|
|
||||||
|
RenderableInstance *render_obj=nullptr; ///<可渲染实例
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
ObjectList<SceneNode> SubNode; ///<子节点
|
ObjectList<SceneNode> SubNode; ///<子节点
|
||||||
|
|
||||||
RenderableInstance *render_obj=nullptr; ///<可渲染实例
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ namespace hgl
|
|||||||
SceneNode(const Matrix4f &mat ):SceneOrient(mat) {}
|
SceneNode(const Matrix4f &mat ):SceneOrient(mat) {}
|
||||||
SceneNode(const Matrix4f &mat, RenderableInstance *ri ):SceneOrient(mat) {render_obj=ri;}
|
SceneNode(const Matrix4f &mat, RenderableInstance *ri ):SceneOrient(mat) {render_obj=ri;}
|
||||||
|
|
||||||
virtual ~SceneNode(){}
|
virtual ~SceneNode()=default;
|
||||||
|
|
||||||
void Clear()
|
void Clear()
|
||||||
{
|
{
|
||||||
@ -46,6 +46,33 @@ namespace hgl
|
|||||||
render_obj=nullptr;
|
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: //坐标相关方法
|
public: //坐标相关方法
|
||||||
|
|
||||||
virtual void SetBoundingBox (const AABB &bb){BoundingBox=bb;} ///<设置绑定盒
|
virtual void SetBoundingBox (const AABB &bb){BoundingBox=bb;} ///<设置绑定盒
|
||||||
|
@ -1,9 +1,27 @@
|
|||||||
#include<hgl/graph/SceneNode.h>
|
#include<hgl/graph/SceneNode.h>
|
||||||
#include<hgl/graph/RenderList.h>
|
#include<hgl/graph/RenderList.h>
|
||||||
|
#include<hgl/graph/VKRenderableInstance.h>
|
||||||
namespace hgl
|
namespace hgl
|
||||||
{
|
{
|
||||||
namespace graph
|
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 根矩阵
|
* @param root_matrix 根矩阵
|
||||||
|
@ -139,7 +139,9 @@ namespace hgl
|
|||||||
{
|
{
|
||||||
if(!sn)return(false);
|
if(!sn)return(false);
|
||||||
|
|
||||||
if(sn->render_obj)
|
RenderableInstance *ri=sn->GetRI();
|
||||||
|
|
||||||
|
if(ri)
|
||||||
{
|
{
|
||||||
RenderNode *rn=new RenderNode;
|
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_square=length_squared(rn->WorldCenter,camera_info.pos);
|
||||||
// rn->distance_to_camera=sqrtf(rn->distance_to_camera_square);
|
// rn->distance_to_camera=sqrtf(rn->distance_to_camera_square);
|
||||||
|
|
||||||
rn->ri=sn->render_obj;
|
rn->ri=ri;
|
||||||
|
|
||||||
render_node_list.Add(rn);
|
render_node_list.Add(rn);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user