bug - user choices erased when updating the material lists
new code for Populate Material List inside the YafaRay Blend node:
Code: Select all
// Execute
// Called to execute the command
function Execute(params)
{
var MaterialList1 = params.ConValue('MaterialList1');
var MaterialList2 = params.ConValue('MaterialList2');
var oldMatListSel1 = MaterialList1.GetSelectedString();
var oldMatListSel2 = MaterialList2.GetSelectedString();
var newMaterialList1 = System.CreateDO("Common Data Package/String Enum Data");
var newMaterialList2 = System.CreateDO("Common Data Package/String Enum Data");
newMaterialList1.Clear();
scene = Space.CurrentScene();
bmc = scene + "/Blend Material Collection";
if(!Node.Exists(bmc)) return;
var numMaterials = Node.Value(bmc, "NumMaterials");
for(var i=0;i<numMaterials;i++) {
newMaterialList1.SetStringAt(i, "BlendMaterial" + (i+1));
newMaterialList2.SetStringAt(i, "BlendMaterial" + (i+1));
}
//newMaterialList1.SetSelectedString("BlendMaterial" + (i-1));
newMaterialList1.SetSelectedString(oldMatListSel1);
Node.Value(System.ThisOwner(), "MaterialList1") = newMaterialList1;
params.ConValue('MaterialList1') = newMaterialList1;
//newMaterialList2.SetSelectedString("BlendMaterial" + (i));
newMaterialList2.SetSelectedString(oldMatListSel2);
Node.Value(System.ThisOwner(), "MaterialList2") = newMaterialList2;
params.ConValue('MaterialList2') = newMaterialList2;
}