56 lines
1.6 KiB
C
Raw Normal View History

2019-12-10 22:12:09 +08:00
#ifndef HGL_GRAPH_SHADER_PARAM_INPUT_INCLUDE
#define HGL_GRAPH_SHADER_PARAM_INPUT_INCLUDE
#include<hgl/graph/shader/common.h>
2019-12-12 22:25:40 +08:00
#include<hgl/graph/shader/param/out.h>
#include<hgl/graph/shader/param/param.h>
2019-12-10 22:12:09 +08:00
BEGIN_SHADER_PARAM_NAMESPACE
/**
*
*/
class InputParam:public Param
{
bool must_join; //是否必须有接入
protected:
node::Node *join_node;
param::OutputParam *join_param;
protected:
/**
*
*/
virtual bool JoinCheck(node::Node *n,param::OutputParam *op)
{
return(op->GetType()==this->GetType());
}
public: //属性
node::Node * GetJoinNode (){return join_node;} ///<取得接入节点
param::OutputParam *GetJoinParam(){return join_param;} ///<取得接入节点参数
2019-12-12 22:25:40 +08:00
2019-12-18 20:12:56 +08:00
virtual const UTF8String GetDefaultValue()const{return "?";} ///<取得缺省值
public:
InputParam(const bool mj,const UTF8String &n,const ParamType &t):Param(n,t)
{
must_join=mj;
2019-12-13 17:55:20 +08:00
join_node=nullptr;
join_param=nullptr;
}
virtual ~InputParam()=default;
virtual bool Join(node::Node *,param::OutputParam *); ///<增加一个关联节点
virtual void Break(){join_node=nullptr;join_param=nullptr;} ///<断开一个关联节点
virtual bool Check(){return(must_join?join_param:true);} ///<检测当前节点是否可用
2019-12-12 22:25:40 +08:00
};//class InputParam:public Param
2019-12-10 22:12:09 +08:00
END_SHADER_PARAM_NAMESPACE
#endif//#ifndef HGL_GRAPH_SHADER_PARAM_INPUT_INCLUDE