Initial Grease Pencil 3.0 stage #106848

Merged
Falk David merged 224 commits from filedescriptor/blender:grease-pencil-v3 into main 2023-05-30 11:14:22 +02:00
2 changed files with 10 additions and 6 deletions
Showing only changes of commit b1da925d5b - Show all commits

View File

@ -448,7 +448,7 @@ class LayerGroup : public TreeNode {
TreeNode::save_to_storage(&new_group->base);
/* Save number of children. */
new_group->children_num = total_num_children();
new_group->children_num = this->num_children();
/* Store pointer. */
*dst = reinterpret_cast<GreasePencilLayerTreeNode *>(new_group);

View File

@ -534,7 +534,9 @@ static void read_layer_node_recursive(blender::bke::gpencil::LayerGroup &current
switch (node->type) {
case GREASE_PENCIL_LAYER_TREE_LEAF: {
GreasePencilLayerTreeLeaf *node_leaf = reinterpret_cast<GreasePencilLayerTreeLeaf *>(node);
current_group.add_layer(Layer(node_leaf->base.name));
Layer new_layer(node_leaf->base.name);
new_layer.load_from_storage(node_leaf->layer);
current_group.add_layer(std::move(new_layer));
break;
}
case GREASE_PENCIL_LAYER_TREE_GROUP: {
@ -556,10 +558,12 @@ void GreasePencil::load_layer_tree_from_storage()
return;
}
/* The first node should be the root group. */
BLI_assert(
reinterpret_cast<GreasePencilLayerTreeNode *>(this->layer_tree_storage.nodes[0])->type ==
GREASE_PENCIL_LAYER_TREE_GROUP);
read_layer_node_recursive(this->runtime->root_group(), this->layer_tree_storage.nodes, 1);
GreasePencilLayerTreeNode *root = reinterpret_cast<GreasePencilLayerTreeNode *>(
this->layer_tree_storage.nodes[0]);
BLI_assert(root->type == GREASE_PENCIL_LAYER_TREE_GROUP);
for (int i = 0; i < reinterpret_cast<GreasePencilLayerTreeGroup *>(root)->children_num; i++) {
read_layer_node_recursive(this->runtime->root_group(), this->layer_tree_storage.nodes, i + 1);
}
}
void GreasePencil::read_layer_tree_storage(BlendDataReader *reader)