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;
}
Beispiel #6
0
Bool PaletteSubDialog::Command(Int32 id,const BaseContainer &msg)
{
	GeDynamicArray<Palette> pals;
    Palette pal;
    Filename fn;
    switch (id)
    {
		case 3:
            switch(msg.GetInt32(BFM_ACTION_VALUE)){
                case ACTION_NEW:
                    pal.SetColor(0, Color(0.f, 0.f, 0.f).SetSource(COLOR_SOURCE_DISPLAY));
                    id = Palette::AddPalette(pal);
                    m_controlsShown = FALSE;
                    LoadPalette(id);
                    SaveSettings();
                    Palette::UpdateAll();
                    return TRUE;
                case ACTION_LOAD:
                    if(fn.FileSelect(FILESELECTTYPE_ANYTHING, FILESELECT_LOAD, "Load")){
                        String s = fn.GetString();
                        if(Palette::LoadASEFile(s, pal)){
                            id = Palette::AddPalette(pal);
                            m_controlsShown = FALSE;
                            LoadPalette(id);
                            SaveSettings();
                            Palette::UpdateAll();
                        }
                    }
                    return TRUE;
                case ACTION_SAVE:
                    if(fn.FileSelect(FILESELECTTYPE_ANYTHING, FILESELECT_SAVE, "Save", "ase")){
                        String s = fn.GetString();
                        Palette::SaveASEFile(s, m_palette);
                    }
                    return TRUE;
                case ACTION_LABEL:
                    ShowControls(!m_showControls);
                    return TRUE;
                    
            }
            if(msg.GetInt32(BFM_ACTION_VALUE) >= ACTION_COUNT){
                m_controlsShown = FALSE;
                LoadPalette(msg.GetInt32(BFM_ACTION_VALUE)-ACTION_COUNT);
                SaveSettings();
            }
            return TRUE;
        case IDC_LAYOUT_DIRECTION:
            m_controlsShown = FALSE;
            LoadPalette(m_paletteID);
            SaveSettings();
            break;
        case IDC_ROWS:
            PaletteLayout();
            SaveSettings();
            break;
        case IDC_LABELCHECKBOX:
            GetBool(m_labelCheckArea, m_showLabel);
            LoadPalette(m_paletteID);
            SaveSettings();
            break;
        case IDC_NAME:
            if(m_nameArea != NULL){
                GetString(m_nameArea, m_palette.m_name);
                Palette::SetPaletteName(m_paletteID, m_palette.m_name);
                LoadPalette(m_paletteID);
            }
            break;
        case IDC_HIDE:
            ShowControls(FALSE);
            break;
        case IDC_SEARCHTEXT:
            PaletteLayout();
            SaveSettings();
            break;
        case IDC_CREATEMATERIAL:
            {
				Bool linkColors;
				GetBool(m_linkColor,linkColors);
                for(Int32 i=m_palette.m_colors.GetCount()-1;i>=0;--i){
                    BaseMaterial *mat = BaseMaterial::Alloc(Mmaterial);
                    String name = "PaletteMaterial";
                    if(m_palette[i].m_name != ""){
                        name = m_palette[i].m_name;
                    }
                    mat->SetName(name);
                    if(mat != nullptr){
                        BaseChannel *chan = mat->GetChannel(CHANNEL_COLOR);
                        if(chan != nullptr){
                            BaseContainer bc;
							if(linkColors){
								bc.SetInt32(BASECHANNEL_SHADERID, PALETTE_SHADER_ID);
								chan->SetData(bc);
								BaseShader *bs = chan->GetShader();
								BaseContainer* data = bs->GetDataInstance();
								data->SetInt32(PALETTESHADER_PALETTE_ID, 1+m_paletteID);
								data->SetInt32(PALETTESHADER_COLOR_ID, 1+i);
							} else {
								// Color Shader ID: 5832
								bc.SetInt32(BASECHANNEL_SHADERID, 5832);
								chan->SetData(bc);
								BaseShader *bs = chan->GetShader();
								BaseContainer* data = bs->GetDataInstance();
								
								data->SetVector(COLORSHADER_COLOR , m_palette.m_colors[i].AsVector());
							}
                            GetActiveDocument()->InsertMaterial(mat);
                            EventAdd();
                        }
                    }
                }
            }
            break;
		default:
			break;
    }
    return GeDialog::Command(id,msg);
}