forked from bartvdbraak/blender
Layers: Scene copy should copy selection as well.
We need this for Depsgraph, otherwise CoW scene will have different selection properties.
This commit is contained in:
parent
830df9b33d
commit
32cd8ac710
@ -328,15 +328,17 @@ Scene *BKE_scene_copy(Main *bmain, Scene *sce, int type)
|
||||
BLI_listbase_clear(&new_sl->drawdata);
|
||||
layer_collections_recreate(new_sl, &sl->layer_collections, mcn, mc);
|
||||
|
||||
Object *active_ob = OBACT_NEW;
|
||||
Base *new_base = new_sl->object_bases.first;
|
||||
for (Base *base = sl->object_bases.first; base; base = base->next) {
|
||||
new_base->flag = base->flag;
|
||||
new_base->flag_legacy = base->flag_legacy;
|
||||
|
||||
if (sl->basact) {
|
||||
Object *active_ob = sl->basact->object;
|
||||
for (Base *base = new_sl->object_bases.first; base; base = base->next) {
|
||||
if (base->object == active_ob) {
|
||||
new_sl->basact = base;
|
||||
break;
|
||||
}
|
||||
if (new_base->object == active_ob) {
|
||||
new_sl->basact = new_base;
|
||||
}
|
||||
|
||||
new_base = new_base->next;
|
||||
}
|
||||
new_sl = new_sl->next;
|
||||
}
|
||||
|
@ -169,4 +169,5 @@ RENDER_LAYER_TEST(scene_copy_a)
|
||||
RENDER_LAYER_TEST(scene_copy_b)
|
||||
RENDER_LAYER_TEST(scene_copy_c)
|
||||
RENDER_LAYER_TEST(scene_copy_d)
|
||||
RENDER_LAYER_TEST(scene_copy_e)
|
||||
RENDER_LAYER_TEST(scene_write_read)
|
||||
|
52
tests/python/render_layer/test_scene_copy_e.py
Normal file
52
tests/python/render_layer/test_scene_copy_e.py
Normal file
@ -0,0 +1,52 @@
|
||||
# ############################################################
|
||||
# Importing - Same For All Render Layer Tests
|
||||
# ############################################################
|
||||
|
||||
import unittest
|
||||
import os
|
||||
import sys
|
||||
|
||||
from render_layer_common import *
|
||||
|
||||
|
||||
# ############################################################
|
||||
# Testing
|
||||
# ############################################################
|
||||
|
||||
class UnitTesting(RenderLayerTesting):
|
||||
def test_shared_layer_collections_copy_full(self):
|
||||
"""
|
||||
See if scene copying 'FULL_COPY' is working for scene collections
|
||||
with a shared object
|
||||
"""
|
||||
import os
|
||||
import bpy
|
||||
|
||||
scene = bpy.context.scene
|
||||
layer = bpy.context.render_layer
|
||||
|
||||
original_cube = layer.objects.get('Cube')
|
||||
original_cube.select_set('SELECT')
|
||||
self.assertTrue(original_cube.select_get())
|
||||
|
||||
bpy.ops.scene.new(type='FULL_COPY')
|
||||
new_layer = bpy.context.render_layer
|
||||
|
||||
self.assertNotEqual(layer, new_layer)
|
||||
new_cube = new_layer.objects.get('Cube.001')
|
||||
self.assertNotEqual(original_cube, new_cube)
|
||||
self.assertTrue(new_cube.select_get())
|
||||
|
||||
|
||||
# ############################################################
|
||||
# Main - Same For All Render Layer Tests
|
||||
# ############################################################
|
||||
|
||||
if __name__ == '__main__':
|
||||
import sys
|
||||
|
||||
extra_arguments = sys.argv[sys.argv.index("--") + 1:] if "--" in sys.argv else []
|
||||
sys.argv = [__file__] + (sys.argv[sys.argv.index("--") + 2:] if "--" in sys.argv else [])
|
||||
|
||||
UnitTesting._extra_arguments = extra_arguments
|
||||
unittest.main()
|
Loading…
Reference in New Issue
Block a user