#include "Framework.h"
using namespace fw;
AbstractShaderSceneNode::AbstractShaderSceneNode(
const std::string& sName,
SceneNode* pParent,
const D3DXVECTOR3& position,
const D3DXVECTOR3& rotation,
const D3DXVECTOR3& scale) :
SceneNode(pParent, position, rotation, scale),
m_bHasShaderParameter(false),
m_bCSPNeedToRefresh(true),
m_bEnableZBuffer(false),
m_pShader(nullptr),
m_sName(sName)
{
}
AbstractShaderSceneNode::~AbstractShaderSceneNode()
{
}
bool AbstractShaderSceneNode::HasCustomShaderParameter()
{
return m_bHasShaderParameter;
}
ShaderTechnique::ShaderParameters& AbstractShaderSceneNode::GetCustomShaderParameter()
{
return m_shaderParam;
}
void AbstractShaderSceneNode::EnableZBuffer(bool bEnable)
{
m_bEnableZBuffer = bEnable;
}
bool AbstractShaderSceneNode::GetZBufferEnabled()
{
return m_bEnableZBuffer;
}
bool AbstractShaderSceneNode::CSPNeedToRefresh() const
{
return m_bCSPNeedToRefresh;
}
void AbstractShaderSceneNode::SetCSPNoNeedToRefresh()
{
m_bCSPNeedToRefresh = false;
}
void AbstractShaderSceneNode::SetCSPNeedToRefresh()
{
m_bCSPNeedToRefresh = true;
}
void AbstractShaderSceneNode::PushCustomShaderParameter(ShaderTechnique::ShaderParameters& param)
{
m_shaderParam += param;
m_shaderParam.SetSceneNode(this);
m_bHasShaderParameter = true;
SetCSPNeedToRefresh();
}
void AbstractShaderSceneNode::SetShaderTechnique(ShaderTechnique* pShader)
{
if (pShader == nullptr)
{
LogMessage("Passage d'un pointeur shader équivalent à nullptr : " << m_sName.c_str(), WARNING);
}
m_pShader = pShader;
}
std::string AbstractShaderSceneNode::GetName()
{
return m_sName;
}
void AbstractShaderSceneNode::SetName(const std::string& sName)
{
m_sName = sName;
}