12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- # ############################################################
- # Importing - Same For All Render Layer Tests
- # ############################################################
- import unittest
- import os
- import sys
- from view_layer_common import *
- # ############################################################
- # Testing
- # ############################################################
- class UnitTesting(ViewLayerTesting):
- def test_shared_layer_collections_copy_full(self):
- """
- See if scene copying 'FULL_COPY' is keeping collections visibility
- and selectability.
- """
- import os
- import bpy
- scene = bpy.context.scene
- enabled_lookup = [True, False, False, True]
- enabled_lookup_sub = [False, True, False]
- selectable_lookup = [True, True, False, False]
- selectable_lookup_sub = [False, True, False, True]
- new_collections = []
- # clean everything
- for layer in scene.view_layers:
- while layer.collections:
- layer.collections.unlink(layer.collections[0])
- # create new collections
- for i in range(4):
- collection = scene.master_collection.collections.new(str(i))
- new_collections.append(collection)
- for j in range(3):
- sub_collection = collection.collections.new("{0}:{1}".format(i, j))
- # link to the original scene
- for layer in scene.view_layers:
- for i, collection in enumerate(new_collections):
- layer.collections.link(collection)
- self.assertEqual(layer.collections[-1], layer.collections[i])
- layer.collections[i].enabled = enabled_lookup[i]
- layer.collections[i].selectable = selectable_lookup[i]
- for j, sub_collection in enumerate(layer.collections[i].collections):
- sub_collection.enabled = enabled_lookup_sub[j]
- sub_collection.selectable = selectable_lookup_sub[j]
- # copy scene
- bpy.ops.scene.new(type='FULL_COPY')
- new_scene = bpy.context.scene
- self.assertNotEqual(scene, new_scene)
- # update depsgrah
- for view_layer in scene.view_layers:
- view_layer.update() # update depsgraph
- # compare scenes
- for h, layer in enumerate(scene.view_layers):
- new_layer = new_scene.view_layers[h]
- for i, collection in enumerate(layer.collections):
- new_collection = new_layer.collections[i]
- self.assertEqual(collection.enabled, new_collection.enabled)
- self.assertEqual(collection.selectable, new_collection.selectable)
- for j, sub_collection in enumerate(layer.collections[i].collections):
- new_sub_collection = new_collection.collections[j]
- self.assertEqual(sub_collection.enabled, new_sub_collection.enabled)
- self.assertEqual(sub_collection.selectable, new_sub_collection.selectable)
- # ############################################################
- # Main - Same For All Render Layer Tests
- # ############################################################
- if __name__ == '__main__':
- UnitTesting._extra_arguments = setup_extra_arguments(__file__)
- unittest.main()
|