Shader nodes didn't redraw correct on preview-type changes.
Also made shader node previews draw nicely, without flashing empty images.
This commit is contained in:
2012-10-26 11:29:30 +00:00
parent 0e3de1df4b
commit 13af773398
2 changed files with 19 additions and 2 deletions

View File

@@ -403,7 +403,13 @@ bNode *nodeCopyNode(struct bNodeTree *ntree, struct bNode *node)
node->new_node = nnode;
nnode->new_node = NULL;
nnode->preview = NULL;
/* only shader nodes get pleasant preview updating this way, compo uses own system */
if (node->preview && ntree->type == NTREE_SHADER) {
nnode->preview = MEM_dupallocN(node->preview);
if (node->preview->rect)
nnode->preview->rect = MEM_dupallocN(node->preview->rect);
}
if (ntree)
ntree->update |= NTREE_UPDATE_NODES;

View File

@@ -107,6 +107,17 @@ static void rna_Material_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *p
}
}
static void rna_Material_update_previews(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Material *ma = ptr->id.data;
if (ma->nodetree)
ntreeClearPreview(ma->nodetree);
rna_Material_update(bmain, scene, ptr);
}
static void rna_Material_draw_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *ptr)
{
Material *ma = ptr->id.data;
@@ -1757,7 +1768,7 @@ void RNA_def_material(BlenderRNA *brna)
RNA_def_property_enum_sdna(prop, NULL, "pr_type");
RNA_def_property_enum_items(prop, preview_type_items);
RNA_def_property_ui_text(prop, "Preview render type", "Type of preview render");
RNA_def_property_update(prop, 0, "rna_Material_update");
RNA_def_property_update(prop, 0, "rna_Material_update_previews");
prop = RNA_def_property(srna, "ambient", PROP_FLOAT, PROP_FACTOR);
RNA_def_property_float_sdna(prop, NULL, "amb");