Bool ApplinkImporter::CreateChannelNormal(long i, BaseMaterial* mat)
{
	if(this->matArray[i].norm_map != "")
	{
		BaseChannel *color = mat->GetChannel(CHANNEL_NORMAL);
		if (!color)	return false;

		GeData b;
		mat->GetParameter(DescID(MATERIAL_USE_NORMAL), b, DESCFLAGS_GET_0);
		if(!b.GetBool()) mat->SetParameter(DescID(MATERIAL_USE_NORMAL), true, DESCFLAGS_SET_0);

		mat->SetParameter(DescID(MATERIAL_NORMAL_REVERSEY), true, DESCFLAGS_SET_0);

		BaseContainer cdata = color->GetData();
		if (this->matArray[i].useTextures)
		{
			//GePrint ("Material Use texture: " + this->matArray[i].map_Kd);
			cdata.SetString(BASECHANNEL_TEXTURE, this->matArray[i].norm_map);
			cdata.SetFilename(BASECHANNEL_SUGGESTEDFOLDER, this->pSet.tempPath);
		}
		color->SetData(cdata);
	}
	
	return true;
}
Bool ApplinkImporter::CreateChannelDisplacement(long i, BaseMaterial* mat)
{
	if(this->matArray[i].disp_map != "")
	{
		BaseChannel *color = mat->GetChannel(CHANNEL_DISPLACEMENT);
		if (!color)	return false;
		
		GeData b;
		mat->GetParameter(DescID(MATERIAL_USE_DISPLACEMENT), b, DESCFLAGS_GET_0);
		if(!b.GetBool())	mat->SetParameter(DescID(MATERIAL_USE_DISPLACEMENT), true, DESCFLAGS_SET_0);
		BaseContainer cdata = color->GetData();
		//GePrint("disp: " + RealToString(this->matArray[i].disp_k));
		mat->SetParameter(DescID(MATERIAL_DISPLACEMENT_STRENGTH), this->matArray[i].disp_k/100, DESCFLAGS_SET_0);

		if (this->matArray[i].useTextures)
		{
			//GePrint ("Material Use texture: " + this->matArray[i].map_Kd);
			cdata.SetString(BASECHANNEL_TEXTURE, this->matArray[i].disp_map);
			cdata.SetFilename(BASECHANNEL_SUGGESTEDFOLDER, this->pSet.tempPath);
		}
		color->SetData(cdata);
	}
	
	return true;
}
Bool ApplinkImporter::CreateChannelSpecular(long i, BaseMaterial* mat)
{
	if(this->matArray[i].map_Ks != "")
	{
		BaseChannel *color = mat->GetChannel(CHANNEL_SPECULARCOLOR);
		if (!color) return false;

		GeData b;
		mat->GetParameter(DescID(MATERIAL_USE_SPECULARCOLOR), b, DESCFLAGS_GET_0);
		if(!b.GetBool()) mat->SetParameter(DescID(MATERIAL_USE_SPECULARCOLOR), true, DESCFLAGS_SET_0);
		BaseContainer cdata = color->GetData();
		cdata.SetVector(BASECHANNEL_COLOR_EX, this->matArray[i].Ks);

		cdata.SetData(BAKE_TEX_NORMAL_FLIP_Y, GeData(true));

		if (this->matArray[i].useTextures)
		{
			//GePrint ("Material Use texture: " + this->matArray[i].map_Kd);
			cdata.SetString(BASECHANNEL_TEXTURE, this->matArray[i].map_Ks);
			cdata.SetFilename(BASECHANNEL_SUGGESTEDFOLDER, this->pSet.tempPath);
		}
		color->SetData(cdata);
	}
	
	return true;
}
Bool ApplinkImporter::CreateChannelColor(long i, BaseMaterial* mat)
{
	BaseChannel *color = mat->GetChannel(CHANNEL_COLOR);
	if (!color) return false;	// return some error
	BaseContainer cdata = color->GetData();
	cdata.SetVector(BASECHANNEL_COLOR_EX, this->matArray[i].Kd);

	if (this->matArray[i].useTextures)
	{
		//GePrint ("Material Use texture: " + this->matArray[i].map_Kd);
		cdata.SetString(BASECHANNEL_TEXTURE, this->matArray[i].map_Kd);
		cdata.SetFilename(BASECHANNEL_SUGGESTEDFOLDER, this->pSet.tempPath);
	}
	color->SetData(cdata);
	
	return true;
}
Bool ApplinkImporter::CreateChannelBump(long i, BaseMaterial* mat)
{
	if(this->matArray[i].disp_map != "")
	{
		BaseChannel *color = mat->GetChannel(CHANNEL_BUMP);
		if (!color) return false;

		GeData b;
		mat->GetParameter(DescID(MATERIAL_USE_BUMP), b, 0);
		if(b == FALSE)	mat->SetParameter(DescID(MATERIAL_USE_BUMP), TRUE, 0);
		BaseContainer cdata = color->GetData();

		if (this->matArray[i].useTextures)
		{
			//GePrint ("Material Use texture: " + this->matArray[i].map_Kd);
			cdata.SetString(BASECHANNEL_TEXTURE, this->matArray[i].disp_map);
			cdata.SetFilename(BASECHANNEL_SUGGESTEDFOLDER, this->pSet.tempPath);
		}
		color->SetData(cdata);
	}
	
	return true;
}