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; }
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); }