Bool BitmapData::Message(GeListNode *node, LONG type, void *msgdat)
{
	BaseContainer *data = ((BaseShader*)node)->GetDataInstance();

	HandleInitialChannel(node,BITMAPDISTORTIONSHADER_TEXTURE,type,msgdat);
	HandleShaderMessage(node,(BaseShader*)data->GetLink(BITMAPDISTORTIONSHADER_TEXTURE,node->GetDocument(),Xbase),type,msgdat);

	return TRUE;
}
INITRENDERRESULT ColorWeightShader::InitRender	(BaseShader *chn, const InitRenderStruct &irs)
{
	const InitRenderStruct *mirs = &irs;
#else
Int32 ColorWeightShader::InitRender	(BaseShader *chn, InitRenderStruct *irs)
{
	const InitRenderStruct *mirs = irs;
#endif

	BaseContainer *data = chn->GetDataInstance();
	m_shader  = (BaseShader*)data->GetLink(COLORWEIGHT_TEXTURE,mirs->doc,Xbase);
	m_color = data->GetVector(COLORWEIGHT_COLOR);
	if (m_shader) 
		return m_shader->InitRender(irs);
	return INITRENDERRESULT_OK;
}

void ColorWeightShader::FreeRender(BaseShader *sh)
{
	if (m_shader)
		m_shader->FreeRender();
	m_shader=NULL;
}

Vector ColorWeightShader::Output(BaseShader *sh, ChannelData *cd)
{
	if(m_shader)
	{
		Vector v = m_shader->Sample(cd);
		return Vector(v.x*m_color.x, v.y*m_color.y, v.z*m_color.z);
	}
	return m_color;
}
#ifdef C4D_R13
Bool ColorWeightShader::Message(GeListNode *node, LONG type, void *msgdat)
#else
Bool ColorWeightShader::Message(GeListNode *node, Int32 type, void *msgdat)
#endif
{
	BaseContainer *data = ((BaseShader*)node)->GetDataInstance();

	HandleInitialChannel(node,COLORWEIGHT_TEXTURE,type,msgdat);
	HandleShaderMessage(node,(BaseShader*)data->GetLink(COLORWEIGHT_TEXTURE,node->GetDocument(),Xbase),type,msgdat);

	return TRUE;
}