Layers: use IDProperty instead of custom property type

Authored by Dalai Felinto (dfelinto) on Mar 17 2017, 12:24 PM.



This could use IDProperty even more, by:

  • Use a IDProperty IDP_GROUP instead of a ListBase to store the per

engine settings (optional)

  • Change the doversion/read code so it actually just merge properties as

we do for regular IDProperty (this is a must)

Diff Detail

rB Blender
Build Status
Buildable 505
Build 505: arc lint + arc unit

note to self: delete this

Everything is an override

This implements the "Layer Collection settings" override system, as
suggested in the "Override Manifesto" document.

The core is working, with Scene, LayerCollection and Object using a
single IDProperty to store all the render settings data.


  • Update not working
  • New layer collection panel should use a system similar to KeyMaps

(where properties are only created when needed).


  • I will get rid of the PROP_USE settings, once I finish

implementing the other missing bits

  • Clay engine "ssao_samples" was removed for now. But it should come

back as part of "Workspace Settings" later.

Fully revamp of code to support the new override design


  • Everything is an override
  • Fixup for idgroup subtype copy
  • Collection Override evaluation (finished, but untested)
  • Cleanup - unused function
  • Initialize subroot idprop for layercollections
  • Temptative RNA for layer collections
  • Collection Override template and interface (wip)
  • Interface wip by Bastien Montagne
  • Passing collection props instead of collections directly
  • Make sure the collections roots are initialized, but not populated
  • Fallback for _get functions
  • UI working nicely
  • Get rid of _use get/set entirely
  • Partial revert IDP_FLAG_USE
  • Remove remaining IDP_FLAG_USE
  • Everything working :) using enabled instead of active
  • cleanup unused code (ui)

This tackles only collection properties, which are the ones that can be overriden per collections.
The next step (after merge) is to implement scene->render_settings that can be overriden per worspaces.

Note 1:
The ssao_samples is hardcoded for 32 for the time being. Once I implement scene->render_settings it will come back.

Note 2:
As you can see from the code now, the duplication was severly reduced. In terms of functionality nothing should change though.

Note 3:
The next step is to bring the collection settings evaluation into the temp-depsgraph branch.